UE 5.2: I had a strange thing happen where the Roughness input would do nothing until I also enabled Specular in the RVT for some reason. That is to say "Base Color, Normal, Roughness" would not work, but "Base Color, Normal, Roughness, Specular" would work, despite me using Roughness for the occlusion Base Color worked correctly in both cases.
Is there a way to increase the volume that it would draw to the the RVT? I have some objects that are relatively thin but they don't occlude the grass until they're lifted above the grass. Ideally I'd like it to not have to be lifted up to do this, but I'm not sure how I might do this, without basically having an invisible version of the material on a larger mesh in the BP or something. Edit: I figured it out! Didn't need to increase the volume at all actually. There is an option in the RVT volume to Snap To Landscape, and this solved it. I guess it was slightly off otherwise.
I was having problems keeping the grass down with the wind... so I lerped the RVT result in the grass material with the opacity mask and a black texture - and it's even better than dropping the grass under the mesh - it simply disappears instead. :D
so your material isnt opaque ? i dont really understand how you did and as my grass model has a problem i cant vertex offset it to make the occlusion works im trying to find solutions and yours seems nice but i dont know how you did xd
UE5 and Nanite Note: It seems like Nanite Meshes aren't able to draw into Virtual Textures yet. So if u want to use this in UE4, make sure it is a regular Mesh :)
Spent 3 hours to find out why I couldn't mask my road properly, then I realize that the speculat have a default value of 0.5 if its not used. Thank you!
@@PrismaticaDev I have not implemented it yet but yes this will save me tons of work! I would have no idea what to search for if this hadn't popped up! :D
@@Mcreator121 Haha I try to put as many possible search terms in the Tags of my video like "ue4 how do I hide my grass under rocks" and "ue4 grass poking through my floors" so I'm sure you would have found it eventually :)
I cannot seem to get this to work in UE5.4; I'm not sure if I'm doing something wrong, or if something is different with RVT in 5.4. I've tried everything I see here as suggestions. I didn't create my RVT Landscape material, I'm using one from someone else, but if I manually set the incoming value to the multiply to 1 with the GrassHidingOffset, then all of my grass drops below the surface, so I know the issue is the RVT passed from the mesh. I'm using a static mesh object, which does not have nanite enabled. I created a new Runtime Virtual Texture to avoid conflicts, it's RVT_Occlusion, and that is selected in the RVT Sample node in the grass material, and in the Draw in Virtual Textures for the mesh. The mesh material has the RVT Output node with Roughness=1, and the RVT and RVT Sample node are both set to Base, Normal, Roughness, Specular. The RVT Sample node has the Absolute World Position (Excluding) coming in (I've also tried without this). Nothing seems to work to get the RVT through to exclude the grass. Any ideas what could be wrong?
I decided to try the test you suggested to Nemesiser89 below, and I find the grass is still green. So it appears that despite creating my own RVT to avoid conflicts with the original landscape RVTs it is still somehow being overwritten by something else. I'm not sure how to debug textures, is it possible to watch values and trace through texture graphs? I've generally stuck to basic materials, but recently I've started watching some of your tuts and have seen the power, so I'm starting to scratch the surface a bit. For now though I want to stick with this landscape material and not create my own as I'd like to focus efforts elsewhere, but since I'm building my level with PCG and it can change size, I'd like to occlude the grass correctly as painting it out won't be correct much of the time. Any help that can be given is appreciated.
Oh, actually it was the subsurface color that was continuing to turn it green, unhooking that and connecting the Roughness and all the grass is black, so zero everywhere. So my mesh is not writing to the RVT as I initially thought.
I got this figured out by reading through the RVT docs. For some reason the base setup I'm using doesn't have an RVT Volume, I'm not sure how it works without it, but I needed to add that then link my textures with the volume as well as add the landscape to the draw setup so that I writes 0 everywhere. Without the volume it wasn't drawing the textures. It was a little confusing, but that's often how it is when you modify something you didn't build in the first place, which is my case here. I'll have to dive in and get a full understanding of RVT sometime soon.
@@CarisTheGypsy Hi. have you solved this issue? I am also struggling with similar issue on my project. It seems my target object doesnt affect level's RVT, since no grass is going down.
Hey! Thank you for a great tutorial! Though i simply cant get this to work in UE5, and i do not know what might be the issue. The Grass Hiding Offsett uniformly hides the grass even though i have set up everything the same as you. Seems like the roughness value in the prop master material isnt writing 1 to the rvt... The landscap set "default value" of 0 seems to take prio...
The problem with this approach is that you no longer can make use of the "World Position Offset Disable Distance" as an optimisation in foliage type settings, because the grass will pop back out once you exceed that distance
Hey, thanks for the tutorial. Instead of lowering the grass, could not we use the roughness channel in landscape material itself and prevent the grass spawning at that position?
Sure could! However I'm not sure if it would work AFTER the grass has already been spawned (eg. placing a building at runtime might not invalidate the Grass Maps, which are precomputed)
THIS IS AMAZING!!!! I made an auto material and used landmass blueprints and splines to make dirt paths and used RVT to colour my grass meshes, basically did everything right, but still had this annoying problem of the grass spawning just past the boundaries between where I want it and where I don't. I tried to stop my grass meshes spawning a little farther away from the dirt but when each mesh is a big patch of grass and it gets removed I get too much flat green landscape texture. The worst part is that the dirt paths are where the player will actually look because they're part of my gameplay. The big open fields are nice, but after you've seen and enjoyed it, it becomes background noise while you focus on gameplay. Making grass disappear under props is great, but that last tip to do the same thing on layer samples fixes everything! Now I can use the RVT which is already in my grass material to gradually shrink or remove it on a roughly per-vertex basis (haha, roughness) rather than accidentally deleting entire meshes that I wanted to keep!
It can take a REALLY long time, does it get stuck at 37%? Maybe restart your computer and make sure nothing else is running. What grade of hardware are you running?
Great video! The tutorial does however work a bit different then I expected because the grass does indeed lower itself but my grass will always stick above the terrain a little bit.... I tried adjust the parameter (-40) but that didnt seem to help (cranked it to -10000)
I was having trouble getting Nanite meshes in UE5 to render to the runtime virtual texture. Did not find a solution, but disabling Nanite on the static meshed to want to occlude the grass seems to be a workaround. 🤷🏻♂
i know this is slightly necro, but i'm stumped. like a couple of others i see here, all my grass is affected, not just the grass under the mesh (my road mesh). my grass is instanced static meshes via the LS material grass node. have set up as per the tute but using the Mask of the rvt as my Colour, Spec, Rough & Normal are already used by my materials. added to the grass Master mat WPO after the wind logic. Mask line set to 1 in my road material. Mask line set to 0 in my LS material. fantastic vids btw. keep up the good work mate :)
Hey hey! The best way to debug it would be to plug it in to the BaseColour of your grass material so you can see if it's coming through or not. You might have to change some settings on the RVT itself to allow for the Mask channel to be used etc
@PrismaticaDev and anyone who has struggles there. Since UE5.1 Nanite Meshes cannot draw into virtual textures. So this practice unfortunately cannot be used with Nanite rocks. You will get this warning: Rendering a nanite mesh to a runtime virtual texture isn't yet supported. Please disable this option on primitive component
Correct, unfortunately. However the "supported YET" is promising haha. I know that Nanite meshes are required to have a fallback mesh, so I'm sure they could just use that to draw to the RVT. Not sure why it's taking so long...
Followed this adding it to an existing grass and landscape setup already using RVT. Plopped a static mesh into the grass, set its material to one outputting to RVT with roughness 1 (and set it to draw to my RVT), my landscape sets roughness to 0 and my grass samples the RVT's roughness and I added the WPO to my wind setup .. and nothin'. Grass still pops through the mesh. And also, when I actually PLAY, the grass changes color to the color of my static mesh. Just for testing I added a red color to my static mesh RVT output and confirmed it's being set/sampled by the grass (the grass that pokes through the mesh is now red). Something must be wrong with my RVT roughness sampling though. Also removed my wind and just had the RVT roughness sampling (with the multiply and MakeFloat3) feed right into my WPO .. still nothing.
Hey Jer! If you jump in our Discord you can share some screenshots and we'll get you sorted out :) I'd say that you need to increase the intensity of the WPO effect in the downwards direction
Hello, may i ask, how did you place your grass? You just painted the landscape ? or used a foliage spawner ? or they came with the landscape material? I asking because i have got an asset and tried to make that but if you painted or spawned i think i will give another try . thank you
@@PrismaticaDev Hello, I have watched the amazing video with extra landscape data video and wow! But i am still lost about how i can remove grass, when i build something on landscape in real time :) thank you so much ! really nice recaps!
You could! However you'd need to disable them on your Landscape so that ALL the grass doesn't disappear, which can make distance field shadows look very... Odd
@@O_Obsidious I had the same issue in 5.4.2, but I figured it out, the issue was the Runtime Virtual Texture in the content browser for the landscape had a "Virtual Texture Context" property set to "Base Color" when it needed to be "YCoCg Base Color, Normal, Roughness, Specular" so it actually reads from the mask. The same must be set for the Runtime Virtual Texture Sample in the grass master material.
Thank you for this! Oh by the way, can you show us how you made the leaves for your bushes and trees? I'm modeling trees for my game, and the style of your trees reminds me of the game called "The Witness" which is absolutely amazing! Thank you again!
Heyo DesT! The trees are generated in a free program called "TreeIT" which I find incredibly powerful - the leaves are from a free-to-use CC0 pack by Kenney which you can find here www.kenney.nl/assets/foliage-sprites
Hi, Thanks for the tutorial. I noticed that you use fully 3D model instead of 2D cards for grass. Do you have any hint about the decision logic between grass card and grass model?
Grass cards use more gpu cost if there's a lot of opacity left, you have to cut the card so that there will be minimum of opacity, so in this case(when the grass is actually a triangle) it;s better to use a model
In UE5 when you have a big landscape(like 8k) and use world partition, landscape bounds for virtual texture are not created for each tile (like in world composition) but for the whole landscape. That's why virtual texture not correct enough for this method, I mean you have grass go down Z around each brick and I have grass go down around the whole mesh and not always, in some positions grass does not respond. I didn't find any inf about virtual texture bounds for each levelstreamingproxy in world partition. Hope you understand what i mean, and probably you've tried world partition and have an answer. Thanks. P.S. I found another method using rendertarget, but still, vir tex is much simplier to use.
Ahhh first tutorial where i've run into issues. Will have to figure out what I am doing wrong... but great nonetheless. The Grass Hiding Offset is applying everywere
@@PrismaticaDev ah - it may take me a bit to get back to you! Apologies... I was having issues getting this, blending actors materials with landscapes & wind all working together so I scrapped the virtual runtime textures until I can get more free time to learn... I will give an update at some point for anyone who runs into a similar problem.
All fixed! Thanks for the heads up - not sure why it was busted since it works in the rest of the videos... HMMM. Anyway just double checked and the new link works :)
So, I have used this in the past so I know it works. However, I am trying to use this in a different project and no matter what I do, I cannot get this to work. I have followed all three of the related tutorials and I cannot find my error. I currently set my project to use Virtual Textures. I set a Virtual Texture Output in my Master Material for my "props" and set a constant value of 1 in the Roughness. I set my Master Foliage Material to use the Virtual Texture Sample with Absolute World Position Excluding material shader. I set the Virtual Texture Output in my Landscape Material with a Constant value of 0 in the roughness. I added Draw Virtual Texture on both my landscape and my Prop. What could possibly be wrong?
Figured it out, The resolution of the virtual texture needed to be increased quite a bit. the default which was 256 was not working. I put it up to 1024 with virtual texture tile size to 512 and it works great
Hi Charlie, When I sculpt the landscape the grass that is within the sculpted area darkens if its height gets above a certain point and some of the grass seems to go under the actual gourd. Any idea how that can be solved or what it can be? Thanks
Hey (sorry double comment today^^) do you know if there is a way to completely kill the grass instead of pushing it down (for performances sake)? Thanks!
Hey Falko, sorry I didn't get around to answering this! You could take the RVT channel you're drawing to and also use it to Subtract from whatever you're putting into the Landscape Grasstype output. eg. Grass Layer sample -> Subtract RVT channel -> GrassType Output The only issue with this is that if your grass meshes are too wide, it will still overlap. So you could always do both!
Hey, looking for some help with occluding landscape grass. Is it possible to get pivot of each grass instance? Because if the world position is used as coordinates for sampling from RVT it produces a really bad result, half of the bush is discarded and half not.
For example? I notice a few things but not sure if thats what you mean, all of the issues around RVT were resolved when I reload the map, for now. What problems are permanent?
I use the Brushify m_landscape material (for my main landscape). I have a whole town made up and just wanted to hide the grass from coming through the whole thing. You think you could help me with it to see what it is? I even tried emailing Brushify and they linked your video haha. I'm sure it's something small. I'd be happy to buy you a coffee or something. May@@PrismaticaDev
The King of Ue4 materials strikes again!
Thank you for this bro. I would have never thought this was possible.
The deeper I dive in to Materials the more I realise that ANYTHING is possible hahaha. Glad it helped you my man :)
You're doing god's work here. Grass in indie games has never looked better!!!
I've looked at grass in UE4 for so long that I don't even recognize what that weird green spiky stuff outside is anymore.
I've been casually looking into solutions for exactly this for -years-, and failing. RVTs are a powerful newish tool. So happy I found your video!
Haha that's so good to hear!! RVT's are the bee's knees - so much cool stuff you can do with them aside from colour transfer!
I guess this is nearly the most useful tut for everyone who makes games
Cheers Sandbox! I'm sure you'll come up with a better solution though ;)
nice, this is really useful, usually we have to manually repaint that to prevent it from clipping, this is such a time saver :D, thanks ^^
Glad you found it helpful! Definitely saves a tonne of time haha
UE 5.2:
I had a strange thing happen where the Roughness input would do nothing until I also enabled Specular in the RVT for some reason.
That is to say "Base Color, Normal, Roughness" would not work, but "Base Color, Normal, Roughness, Specular" would work, despite me using Roughness for the occlusion
Base Color worked correctly in both cases.
Is there a way to increase the volume that it would draw to the the RVT? I have some objects that are relatively thin but they don't occlude the grass until they're lifted above the grass. Ideally I'd like it to not have to be lifted up to do this, but I'm not sure how I might do this, without basically having an invisible version of the material on a larger mesh in the BP or something.
Edit: I figured it out! Didn't need to increase the volume at all actually. There is an option in the RVT volume to Snap To Landscape, and this solved it. I guess it was slightly off otherwise.
You can also increase the RVT volume manually by scaling it in X/Y/Z :)
Good to know! @@PrismaticaDev
Awesome video, thanks so much! Your cat is really loving the taste of their bed btw :P
lovely nails charlie, and also, im loving all your tutorials
I was having problems keeping the grass down with the wind... so I lerped the RVT result in the grass material with the opacity mask and a black texture - and it's even better than dropping the grass under the mesh - it simply disappears instead. :D
Ingenious! There's always a million solutions to the same issue - good to hear some alternatives :)
This.
so your material isnt opaque ? i dont really understand how you did and as my grass model has a problem i cant vertex offset it to make the occlusion works im trying to find solutions and yours seems nice but i dont know how you did xd
@@dieudelgado1582 It's been a minute since I did this one, but I'm pretty sure I was using an opacity mask on the grass to get the individual blades.
@@aurintalik yes a year 😂😂 okay ill try to find out i never used opacity mask before thanks for the idea
SO UNDERRATEEEEEEEEEEEEED!
Thanks so much
@@PrismaticaDev did ;) keep it up
UE5 and Nanite Note:
It seems like Nanite Meshes aren't able to draw into Virtual Textures yet.
So if u want to use this in UE4, make sure it is a regular Mesh :)
Awesome!!
No wukkas!
You really are the best. Awesome! Thank you!
Spent 3 hours to find out why I couldn't mask my road properly, then I realize that the speculat have a default value of 0.5 if its not used. Thank you!
ooooops haha. Glad you got it sorted!
Awesome as usual!
Thank you very much :) Hope it helped out!
@@PrismaticaDev I have not implemented it yet but yes this will save me tons of work! I would have no idea what to search for if this hadn't popped up! :D
@@Mcreator121 Haha I try to put as many possible search terms in the Tags of my video like "ue4 how do I hide my grass under rocks" and "ue4 grass poking through my floors" so I'm sure you would have found it eventually :)
I cannot seem to get this to work in UE5.4; I'm not sure if I'm doing something wrong, or if something is different with RVT in 5.4. I've tried everything I see here as suggestions. I didn't create my RVT Landscape material, I'm using one from someone else, but if I manually set the incoming value to the multiply to 1 with the GrassHidingOffset, then all of my grass drops below the surface, so I know the issue is the RVT passed from the mesh. I'm using a static mesh object, which does not have nanite enabled. I created a new Runtime Virtual Texture to avoid conflicts, it's RVT_Occlusion, and that is selected in the RVT Sample node in the grass material, and in the Draw in Virtual Textures for the mesh. The mesh material has the RVT Output node with Roughness=1, and the RVT and RVT Sample node are both set to Base, Normal, Roughness, Specular. The RVT Sample node has the Absolute World Position (Excluding) coming in (I've also tried without this). Nothing seems to work to get the RVT through to exclude the grass. Any ideas what could be wrong?
I decided to try the test you suggested to Nemesiser89 below, and I find the grass is still green. So it appears that despite creating my own RVT to avoid conflicts with the original landscape RVTs it is still somehow being overwritten by something else. I'm not sure how to debug textures, is it possible to watch values and trace through texture graphs? I've generally stuck to basic materials, but recently I've started watching some of your tuts and have seen the power, so I'm starting to scratch the surface a bit. For now though I want to stick with this landscape material and not create my own as I'd like to focus efforts elsewhere, but since I'm building my level with PCG and it can change size, I'd like to occlude the grass correctly as painting it out won't be correct much of the time. Any help that can be given is appreciated.
Oh, actually it was the subsurface color that was continuing to turn it green, unhooking that and connecting the Roughness and all the grass is black, so zero everywhere. So my mesh is not writing to the RVT as I initially thought.
I got this figured out by reading through the RVT docs. For some reason the base setup I'm using doesn't have an RVT Volume, I'm not sure how it works without it, but I needed to add that then link my textures with the volume as well as add the landscape to the draw setup so that I writes 0 everywhere. Without the volume it wasn't drawing the textures. It was a little confusing, but that's often how it is when you modify something you didn't build in the first place, which is my case here. I'll have to dive in and get a full understanding of RVT sometime soon.
@@CarisTheGypsy Hi. have you solved this issue? I am also struggling with similar issue on my project. It seems my target object doesnt affect level's RVT, since no grass is going down.
@@daybrick2513 yeah, if you see my last comment, I had to add and rvt volume as my project didn’t have one
Good content, like always :)
Very appreciated :) Hope you found it useful!
So Aphex Twin is done with music career and just chills learning unreal
Haha I'm more of a Venetian Snares guy myself, although the resemblance is uncanny :P
Super Helpful! Liked!
Cheers! Glad I could help out! :)
Hey! Thank you for a great tutorial! Though i simply cant get this to work in UE5, and i do not know what might be the issue. The Grass Hiding Offsett uniformly hides the grass even though i have set up everything the same as you.
Seems like the roughness value in the prop master material isnt writing 1 to the rvt... The landscap set "default value" of 0 seems to take prio...
a little late but, i unplugged the world position node and it worked for me
Genius and fun as usual! S2
Cheers Rob :)
Good stuff
Cheers Ricochet :) Thanks for tuning in!
The problem with this approach is that you no longer can make use of the "World Position Offset Disable Distance" as an optimisation in foliage type settings, because the grass will pop back out once you exceed that distance
@@deyama2012 that’s a great point! Using opacity mask is probably a better option if you’re using WPO disable distance
@@PrismaticaDev Oh my god, I've got noticed by senpai! Thank you, I'll try that
Can I use mask node? or do I have to sacrifice roughness?
You can use any spare channel :)
Great then! Thank you :)
For some reason it's not working for me :( I'm already talking in the material chat
@@PrismaticaDev maybe because I'm using grass node in the landscape material, idk
lol the end xD
Me the other 99% of the time*
Hey, thanks for the tutorial. Instead of lowering the grass, could not we use the roughness channel in landscape material itself and prevent the grass spawning at that position?
Sure could! However I'm not sure if it would work AFTER the grass has already been spawned (eg. placing a building at runtime might not invalidate the Grass Maps, which are precomputed)
@@PrismaticaDev Ahh I see. Yes that makes sense. Thank you very much! Love your tutorials, learned a lot!
Really good tutorial ! However, is it possible to create a falloff on the roughness map? I’ve tried a few things, but nothing seems to work :(
THIS IS AMAZING!!!! I made an auto material and used landmass blueprints and splines to make dirt paths and used RVT to colour my grass meshes, basically did everything right, but still had this annoying problem of the grass spawning just past the boundaries between where I want it and where I don't. I tried to stop my grass meshes spawning a little farther away from the dirt but when each mesh is a big patch of grass and it gets removed I get too much flat green landscape texture. The worst part is that the dirt paths are where the player will actually look because they're part of my gameplay. The big open fields are nice, but after you've seen and enjoyed it, it becomes background noise while you focus on gameplay. Making grass disappear under props is great, but that last tip to do the same thing on layer samples fixes everything! Now I can use the RVT which is already in my grass material to gradually shrink or remove it on a roughly per-vertex basis (haha, roughness) rather than accidentally deleting entire meshes that I wanted to keep!
Really glad to hear this solved your issue! It's definitely a life and time saver, and ends up looking nicer haha
Dear Charlie, would you kindly show non-RVT version of these methods, please?
When i enable virtual texture it doesn't load the project it gets stuck in loading screen and it is been a hour, nothing changed.
It can take a REALLY long time, does it get stuck at 37%? Maybe restart your computer and make sure nothing else is running. What grade of hardware are you running?
@@PrismaticaDev ok i did what you said because it go stuck in 37% and it worked at 3th time but thank you!
@@sirgwindortvinuel YAY!
Great video! The tutorial does however work a bit different then I expected because the grass does indeed lower itself but my grass will always stick above the terrain a little bit.... I tried adjust the parameter (-40) but that didnt seem to help (cranked it to -10000)
that doesn't do shit but bring the landscape down.
winderfull m aterial man, everythings is wonderfull but the last part is mind
blowing, thank you
Thanks so much mate :) Hope it was useful!
I was having trouble getting Nanite meshes in UE5 to render to the runtime virtual texture. Did not find a solution, but disabling Nanite on the static meshed to want to occlude the grass seems to be a workaround. 🤷🏻♂
Nanite is very feature-restricted at the moment. I didn't realise they couldn't write to RVT's as well yet!
i know this is slightly necro, but i'm stumped.
like a couple of others i see here, all my grass is affected, not just the grass under the mesh (my road mesh).
my grass is instanced static meshes via the LS material grass node.
have set up as per the tute but using the Mask of the rvt as my Colour, Spec, Rough & Normal are already used by my materials. added to the grass Master mat WPO after the wind logic. Mask line set to 1 in my road material. Mask line set to 0 in my LS material.
fantastic vids btw. keep up the good work mate :)
Hey hey! The best way to debug it would be to plug it in to the BaseColour of your grass material so you can see if it's coming through or not. You might have to change some settings on the RVT itself to allow for the Mask channel to be used etc
rgr tht, thankyou sir, much appreciated :)@@PrismaticaDev
@PrismaticaDev and anyone who has struggles there. Since UE5.1 Nanite Meshes cannot draw into virtual textures. So this practice unfortunately cannot be used with Nanite rocks.
You will get this warning:
Rendering a nanite mesh to a runtime virtual texture isn't yet supported. Please disable this option on primitive component
Correct, unfortunately. However the "supported YET" is promising haha. I know that Nanite meshes are required to have a fallback mesh, so I'm sure they could just use that to draw to the RVT. Not sure why it's taking so long...
@@PrismaticaDev thank you for replying for my necropost :) if there'll be alternative/workaround let me know
Followed this adding it to an existing grass and landscape setup already using RVT. Plopped a static mesh into the grass, set its material to one outputting to RVT with roughness 1 (and set it to draw to my RVT), my landscape sets roughness to 0 and my grass samples the RVT's roughness and I added the WPO to my wind setup .. and nothin'. Grass still pops through the mesh. And also, when I actually PLAY, the grass changes color to the color of my static mesh.
Just for testing I added a red color to my static mesh RVT output and confirmed it's being set/sampled by the grass (the grass that pokes through the mesh is now red). Something must be wrong with my RVT roughness sampling though. Also removed my wind and just had the RVT roughness sampling (with the multiply and MakeFloat3) feed right into my WPO .. still nothing.
Hey Jer! If you jump in our Discord you can share some screenshots and we'll get you sorted out :) I'd say that you need to increase the intensity of the WPO effect in the downwards direction
@@PrismaticaDev I increased it by a ridiculous amount, around 10,000 I think but saw no impact. Let me see if I can find the discord server...
Hello, may i ask, how did you place your grass? You just painted the landscape ? or used a foliage spawner ? or they came with the landscape material? I asking because i have got an asset and tried to make that but if you painted or spawned i think i will give another try . thank you
@@tgykurtulus hey hey - have a look at my Landscape Grass video :)
@@PrismaticaDev Hello, I have watched the amazing video with extra landscape data video and wow! But i am still lost about how i can remove grass, when i build something on landscape in real time :) thank you so much ! really nice recaps!
couldn't you just use Distance Fields for this? or am i wrong :o
You could! However you'd need to disable them on your Landscape so that ALL the grass doesn't disappear, which can make distance field shadows look very... Odd
@@PrismaticaDev ah yeah, because i cant seem to get it to read the specular map i give it. my grass just stays under the terrain always
@@O_Obsidious I had the same issue in 5.4.2, but I figured it out, the issue was the Runtime Virtual Texture in the content browser for the landscape had a "Virtual Texture Context" property set to "Base Color" when it needed to be "YCoCg Base Color, Normal, Roughness, Specular" so it actually reads from the mask. The same must be set for the Runtime Virtual Texture Sample in the grass master material.
Hey, is there a way to scale a area around the mesh also to hide? so maybe 20-30 cm around the mesh no grass?
Thank you for this! Oh by the way, can you show us how you made the leaves for your bushes and trees? I'm modeling trees for my game, and the style of your trees reminds me of the game called "The Witness" which is absolutely amazing! Thank you again!
Heyo DesT! The trees are generated in a free program called "TreeIT" which I find incredibly powerful - the leaves are from a free-to-use CC0 pack by Kenney which you can find here www.kenney.nl/assets/foliage-sprites
@@PrismaticaDev Oh, didn’t expect it to be that easy ahahahah. Thank you yet again! 🥳
Can you use RVT to paint texture or mat layer to a small portion or selected area in a landscape?
I have a question - does this technique also work with grass generated from landscape material, or only with foliage instances?
Hi, Thanks for the tutorial. I noticed that you use fully 3D model instead of 2D cards for grass. Do you have any hint about the decision logic between grass card and grass model?
Grass cards use more gpu cost if there's a lot of opacity left, you have to cut the card so that there will be minimum of opacity, so in this case(when the grass is actually a triangle) it;s better to use a model
In UE5 when you have a big landscape(like 8k) and use world partition, landscape bounds for virtual texture are not created for each tile (like in world composition) but for the whole landscape. That's why virtual texture not correct enough for this method, I mean you have grass go down Z around each brick and I have grass go down around the whole mesh and not always, in some positions grass does not respond. I didn't find any inf about virtual texture bounds for each levelstreamingproxy in world partition. Hope you understand what i mean, and probably you've tried world partition and have an answer. Thanks.
P.S. I found another method using rendertarget, but still, vir tex is much simplier to use.
sorry this is a dumb question but how do you go about setting up a master prop material?
It would be the material the the material instances point to, you would edit model's material directly instead of the instance.
How big's your world?
Thank you for this tutorial! For some reason for me it's just takes all the grass down instead of just where's the rock for example.
same here
hey wanted to use that with my alpha from niagara VFX is it possible or have you a solution to hide / push grass when a VFX appear on ground?
Ahhh first tutorial where i've run into issues. Will have to figure out what I am doing wrong... but great nonetheless. The Grass Hiding Offset is applying everywere
Hey hey - if you plug in the channel to the Base Colour of the grass, are some bits black while others are white? Or is it all one colour
@@PrismaticaDev ah - it may take me a bit to get back to you! Apologies... I was having issues getting this, blending actors materials with landscapes & wind all working together so I scrapped the virtual runtime textures until I can get more free time to learn... I will give an update at some point for anyone who runs into a similar problem.
Hey, I think your discord link is broken btw
All fixed! Thanks for the heads up - not sure why it was busted since it works in the rest of the videos... HMMM. Anyway just double checked and the new link works :)
So, I have used this in the past so I know it works. However, I am trying to use this in a different project and no matter what I do, I cannot get this to work. I have followed all three of the related tutorials and I cannot find my error. I currently set my project to use Virtual Textures. I set a Virtual Texture Output in my Master Material for my "props" and set a constant value of 1 in the Roughness. I set my Master Foliage Material to use the Virtual Texture Sample with Absolute World Position Excluding material shader. I set the Virtual Texture Output in my Landscape Material with a Constant value of 0 in the roughness. I added Draw Virtual Texture on both my landscape and my Prop. What could possibly be wrong?
Figured it out, The resolution of the virtual texture needed to be increased quite a bit. the default which was 256 was not working. I put it up to 1024 with virtual texture tile size to 512 and it works great
Hi Charlie,
When I sculpt the landscape the grass that is within the sculpted area darkens if its height gets above a certain point and some of the grass seems to go under the actual gourd. Any idea how that can be solved or what it can be?
Thanks
Hey there! It might be that your RVT bounding box isn't tall enough, so when the landscape goes outside of it it will return a result of 0
@@PrismaticaDev Omg, love you! Thanks so much :D
Hey (sorry double comment today^^) do you know if there is a way to completely kill the grass instead of pushing it down (for performances sake)? Thanks!
Hey Falko, sorry I didn't get around to answering this! You could take the RVT channel you're drawing to and also use it to Subtract from whatever you're putting into the Landscape Grasstype output.
eg. Grass Layer sample -> Subtract RVT channel -> GrassType Output
The only issue with this is that if your grass meshes are too wide, it will still overlap. So you could always do both!
@@PrismaticaDev Hey, no worries! Thank you for the reply, I will try this! :)
Hey, looking for some help with occluding landscape grass.
Is it possible to get pivot of each grass instance? Because if the world position is used as coordinates for sampling from RVT it produces a really bad result, half of the bush is discarded and half not.
Did you manage to solve this issue? I'm having it right now
Has anyone tried this out on UE5.4?
I have :) it should work as normal
Keep in mind that Nanite meshes currently can’t draw to RVT’s, only read from them
Problem is RVT is sooooo wonky :( Well...In UE5
For example? I notice a few things but not sure if thats what you mean, all of the issues around RVT were resolved when I reload the map, for now. What problems are permanent?
This just lowers the landscape down for me and doesn't fix the REAL problem.
I think you might be applying the effect on the wrong material :)
I use the Brushify m_landscape material (for my main landscape). I have a whole town made up and just wanted to hide the grass from coming through the whole thing. You think you could help me with it to see what it is? I even tried emailing Brushify and they linked your video haha. I'm sure it's something small. I'd be happy to buy you a coffee or something. May@@PrismaticaDev
Terrible tutorial. Do this, connect this.. too fast, not precise, not explained enough.
soz
Seems to be your prob. Just stop the video when you need. its literally so straight to the point