Wind mechanics coming in the next video. If helpful, leave a like or subscribe! DOWNLOAD THE SHADER ►► stayathomedev.com/product/stylized-grass-shader/ DOWNLOAD GRASS MESH ►► stayathomedev.com/product/stylized-grass-mesh/
Wow!!! 😲 I can't believe how much I've learnt from such a short tutorial. Thanks for sharing your knowledge with the community. This is what I call a priceless tutorial. So much from this short 5min can be applied to many other case scenarios. Very clean and detailed straight to the point tutorials. I'm loving your channel's content, even the brilliant Godot song!!! 👌 Well done, man, keep the great work up. THANK YOU!!! 🙏
Thanks! I do feel that once you get into how they work (vertex, pixel/fragment) and just a little bit of the graphical pipeline process, they make more sense. But obviously, you have simple shaders and really complex shaders.
I watched Unreal and Unity Tutorials, never found a good Godot tutorial. This is really great work. Please create more videos like this Small clips / Series in specific niche topics. Like Stylized Grass, Cool Animations, Procedural Character Parts etc.
Wonderful, as usual. I watch a video like this and it reminds me why I love gamedev (especially 3D). There's so much magic in the small details. The color gradient, the noise texture, the wind. Combine that with a nice breezy audio clip and you can get some great immersion for your players.
Awesome! I had seen the multimesh instance but hadn't played with it yet to see what it did. Also I've been opening the imported scene and doing make local and then copying the mesh to other scenes. I like that you can save it via the menus to a resource.
For anyone having the issue that the grass shader shows up fine in the editor but not when previewing or exporting: For some reason, when I imported the Mesh ressource (grass.res) using "Save To File", it had 2 surfaces. Surface 1 had a white material attached to it, which didn't show up inside the editor but was visible when previewing. Removing this material (click on the arrow right next to it -> Clear) solved the issue!
I'm stumbling into this before I know much at all, my initial question is "is this performant way to do this? should I figure out a way to do this only around my player and load/unload the grass as it gets further away from the player?"
Try not to use if statements in shaders, they can lead to branching which hurts performance. In this specific case, use: NORMAL = NORMAL * (FRONT_FACING*2 - 1); this avoids branching and has the same result.
Do you still plan on making another video covering wind mechanics for the grass? I've being trying to adapt 3.x shader code but I keep running into problems 😅
Wow I am happy to find your channel, you are very good as an instructor, and you teach very useful topics, I'm grateful, you have a new subscriber, a great future awaits you
I really appreciate these videos. And I do watch them. But with all gamedev videos. everything after step 3 is magic and insanely hard to me. I want to make a game some day but I just can’t phantom how people understand what they’re doing, writing these codes and solving problems. I’m impressed and kind of sad I probably never make my own game.
This was great but I feel all godot shader tutorials should come with a link to the version glsl api. I had to go through reddit to find it, but once I did it became much more doable.
I'm very curious about the performance impact of that multimesh node! It's crazy to me that these days we can literally just draw thousands of grass meshes, but what is the cost of this approach?
Old comment, but mutlimesh is designed to have a lot of meshes by batching the draw call that is sent to the GPU. Individual MeshInstance3D nodes have to have draw calls sent one at a time. The drawback is it is treated as one object by the engine. So its always rendered when one part of the mesh is rendered.
I followed your video tutorial and created the grass, and it looks good in the editor, but when I run my game the meshes are all white, but green in the editor. Do you have any tips to help solve this issue?
Yo, the reason is because the model has 2 materials in it. The other one shows when you run the game. You can either remove it or make a shader that just makes it invisible because it screws with the grass if you try to for example add wind to it! So if you are gonna do that i recommend hiding it with a shader, cheers!
Thanks! There's a built-in variable for whether the pixel is front-facing or not in the fragment shader. If you show the backface, it keeps the frontface normal. But you want the inverse of that normal, so you make it negative, or the inverse.
@@stayathomedev I understand your explanation in the video very clearly, I just don't know how you figured that out! I haven't seen it in the documentation. I am very lazy when it comes to reading though so I might have given up too soon
Where would a person find potential collaborators for a game? I have an idea but no coding skill. I’m willing to learn but would love to work with a more senior creator if possible.
you technically dont even have to use multi mesh since gd4 does automatic instancing on meshes(this is the biggest feature i heard almost none mention)
Why provide links that require some kind of registration in order to download something? Provide a direct link to the resources, it will be easier for everyone.
Wind mechanics coming in the next video. If helpful, leave a like or subscribe!
DOWNLOAD THE SHADER ►► stayathomedev.com/product/stylized-grass-shader/
DOWNLOAD GRASS MESH ►► stayathomedev.com/product/stylized-grass-mesh/
where's the next video?
come on, it's been 4 months!
you forgot to make part 3
he forgor 💀
bro frogot
Wow!!! 😲 I can't believe how much I've learnt from such a short tutorial. Thanks for sharing your knowledge with the community. This is what I call a priceless tutorial. So much from this short 5min can be applied to many other case scenarios. Very clean and detailed straight to the point tutorials. I'm loving your channel's content, even the brilliant Godot song!!! 👌 Well done, man, keep the great work up. THANK YOU!!! 🙏
Thanks for the tutorial!
Love the breakdown of the shader.. they are still like magic to me lol
Thanks! I do feel that once you get into how they work (vertex, pixel/fragment) and just a little bit of the graphical pipeline process, they make more sense. But obviously, you have simple shaders and really complex shaders.
I watched Unreal and Unity Tutorials, never found a good Godot tutorial. This is really great work. Please create more videos like this
Small clips / Series in specific niche topics. Like Stylized Grass, Cool Animations, Procedural Character Parts etc.
Awesome! Thanks! It's always a fight between slow and all encompassing vs short and to the point. This one was the later.
Wonderful, as usual. I watch a video like this and it reminds me why I love gamedev (especially 3D). There's so much magic in the small details. The color gradient, the noise texture, the wind. Combine that with a nice breezy audio clip and you can get some great immersion for your players.
Amazing video!
Please make a terrain series including this kinda stuffs please
Thanks! And terrain is coming!
Please make terrain next
Terrain in Godot without a plugin is nontrivial
there is a super good terrain add on, but I forgot the name.
Easiest way to make a terrain is to sculpt it.
Top notch breakdown and pace, thank you
Thank you for the tutorial, you have explained perfectly and you have helped me a lot, you are a hero ❤
Awesome! I had seen the multimesh instance but hadn't played with it yet to see what it did. Also I've been opening the imported scene and doing make local and then copying the mesh to other scenes. I like that you can save it via the menus to a resource.
For anyone having the issue that the grass shader shows up fine in the editor but not when previewing or exporting:
For some reason, when I imported the Mesh ressource (grass.res) using "Save To File", it had 2 surfaces. Surface 1 had a white material attached to it, which didn't show up inside the editor but was visible when previewing.
Removing this material (click on the arrow right next to it -> Clear) solved the issue!
"Baby want wind" - I say, pounding my fists at the table
With such a good work you might become the Brackeys of Godot! Keep on such awesome work it will pay sooner or later.
You spoke too soon... HE CAME FOR GODOT
@@patty4449 Yes I came for godot, because it's about Godot :)
Thank you for sharing you knowledge with the community! I was just looking for a way to add the same style of grass to my hobby project.
I'm stumbling into this before I know much at all, my initial question is "is this performant way to do this? should I figure out a way to do this only around my player and load/unload the grass as it gets further away from the player?"
You are amazing, I can't wait for your video
God bless you ❤
Thank you for doing this. Did the wind tutorial ever release? I don't see it in your list of videos.
Try not to use if statements in shaders, they can lead to branching which hurts performance.
In this specific case, use:
NORMAL = NORMAL * (FRONT_FACING*2 - 1);
this avoids branching and has the same result.
nuh uh that not good
@@EvanPilb would you like to elaborate?
This just gives me the error "error(56): Invalid arguments to operator '*': 'bool, int'."
@@GabrielRodriguez-mq6ly
NORMAL = NORMAL * (float(FRONT_FACING) * 2.0 - 1.0);
I think using the plugin Scatter, would also make for good grass, especially after adding some stones, and flowers too.
Thanks, this is cool. Where's the next video on this. You have made many other video's afterwards, but can't find the wind one. Thanks
I was hoping for the wind one as well!
im looking for the wind tutorial :/ any update ?
Do you still plan on making another video covering wind mechanics for the grass? I've being trying to adapt 3.x shader code but I keep running into problems 😅
maybe make it an animation instead? plays every few seconds.
@@DeathMothhh Wonder if it's possible to add random variation or noise to the animation itself? Just tossing ideas around.
if you want to rescale it, adjust the plane size (in the plane mesh NOT the plane transform) and then click the populate button
Could you show a grass example using a particle emitter instead of multimesh?
Absolutely! The multimesh was a quick way to show it. When I cover the grass system setup, it'll be one of the options.
@@stayathomedev Thank you
Wow I am happy to find your channel, you are very good as an instructor, and you teach very useful topics, I'm grateful, you have a new subscriber, a great future awaits you
You are a legend
😎👍
I went to like this video but I'd already liked it so I figured I'd comment. Thanks for teaching cool stuff ✍️✍️
Okay back and I can say with a strong understanding of shaders and godot shaders this video is not ridiculously simple to parse.
hey there! did you ever made part 2? I don't seem to find it xD
I really appreciate these videos. And I do watch them. But with all gamedev videos. everything after step 3 is magic and insanely hard to me. I want to make a game some day but I just can’t phantom how people understand what they’re doing, writing these codes and solving problems. I’m impressed and kind of sad I probably never make my own game.
This video is amazing. Thank you for your share.
Thanks for the amazing tutorial.
Awesome job, so easy to follow along with.
Did the wind tutorial ever materialise? (Excuse the pun ;-])
I can't seem to find it on your channel.
great tutorial! it really helped me. how can i make the grass move?
where's the wind shader tutorial?
This was great but I feel all godot shader tutorials should come with a link to the version glsl api. I had to go through reddit to find it, but once I did it became much more doable.
Great tutorial. When I play the game, the grass is not colored. Other objects have their color. Any tips?
Colors showed in the export just not in the Godot game preview. All good!
what happened to the next vid?
I'm very curious about the performance impact of that multimesh node! It's crazy to me that these days we can literally just draw thousands of grass meshes, but what is the cost of this approach?
Old comment, but mutlimesh is designed to have a lot of meshes by batching the draw call that is sent to the GPU. Individual MeshInstance3D nodes have to have draw calls sent one at a time. The drawback is it is treated as one object by the engine. So its always rendered when one part of the mesh is rendered.
I followed your video tutorial and created the grass, and it looks good in the editor, but when I run my game the meshes are all white, but green in the editor. Do you have any tips to help solve this issue?
Yo, the reason is because the model has 2 materials in it. The other one shows when you run the game. You can either remove it or make a shader that just makes it invisible because it screws with the grass if you try to for example add wind to it! So if you are gonna do that i recommend hiding it with a shader, cheers!
EHMMM... how did you figure out this NORMAL = -NORMAL!
Great tutorial. Thanks. Waiting for wind (and character interaction) :)
Thanks! There's a built-in variable for whether the pixel is front-facing or not in the fragment shader. If you show the backface, it keeps the frontface normal. But you want the inverse of that normal, so you make it negative, or the inverse.
@@stayathomedev I understand your explanation in the video very clearly, I just don't know how you figured that out! I haven't seen it in the documentation. I am very lazy when it comes to reading though so I might have given up too soon
Ah I got you, there was a mention in git repo somewhere of the FRONTFACING variable and I went with it. It's not the most elegant but it works
Elegant is a rare thing when it comes to programming games.
Is it possible to make grass in blender and the shade in godot later?(sorry, huge noob here lol.) I just want to make the wind/sway effect really
How would you turn this multimesh into a mesh instance so I can use that patch of grass in a multimesh?
Thanks my friend
great video, thanks
Thanks for watching! Hope it's helpful
Why do we use that noise?
I'on see any difference 😅.
There's a bit of dark spots on top of the grass..
But.. does stylized games use that too? Woah!
Bääääm! AWESOME!
How can this be set up to not render when too far from the camera?
I'm not sure why, but the only way I could get the shader to actually show up was to change the Render Priority to 1 instead of 0.
You did a great job, thanks for this tutorial.
Where would a person find potential collaborators for a game? I have an idea but no coding skill. I’m willing to learn but would love to work with a more senior creator if possible.
Can you do it but uploading a custom texture in albedo?
Is it possible to blend the base of the grass with the ground texture it "sprouts" from?
Could you please please share the entire project folder?
🔥🔥🔥🔥🔥
I think Godot lacks tutorials showing grass in a larger scope.
So stylised just meabs cel-shaded now?
Is there another part?
you technically dont even have to use multi mesh since gd4 does automatic instancing on meshes(this is the biggest feature i heard almost none mention)
Can you remake this using compute shaders?
Yes we need good grass. but, also game must run fluently in mobile .
Why provide links that require some kind of registration in order to download something? Provide a direct link to the resources, it will be easier for everyone.
Problem is actually scaling this bigger than a simple tiny plane for me 😭
good way to fuck up your fps... just use sprites for grass
you genuinely do not need my house address for the shader. im finding a different tutorial
1:43 ?????
Weird audio artifact. Sorry about that.
I don't think this tutorial works in Godot 4.2+