I literally found your channel today and I cant stop watching all your videos, you are SO DAMN HELPFUL ENTERTAINING AND GOOD. THANKS YOU A LOT FOR ALL THE TUTORIALS, YOU ARE HELPING SO MUCH, also, I'm stunned by the ratio of beautiful/simpleness of your project, like its amazing
Thank you Alejandro! I'm glad they've helped you out :) I have a lot of fun making videos, I'm currently editing one about my Wind system that I'll be uploading later tonight.
the main reason I'm so happy is that unreal is really good for PBR rendering and realistic stuff, and the artistic side is a little bit harder to see how to do it because mostly all the documentation focuses on PBR, you are basically giving what it is missing by sharing how you express yourself artistically and the techniques you use, enabling a lot of people like me and others to be more free and saving us so much time ♥
For you who like me tried to make everything in the landscape material and not noticing he switched to the foliage material at 4:41. Save four hours and make sure you switch materials. You only need the "Runtime Virtual Texture Output"-node within the landscape material, rest is done in the foliage material.
Oh lordy hahaha I should have been a bit clearer. I do say "this is my master material for my Ground Foliage" but ground might be interpreted as landscape etc so I can definitely see some confusion there. Hopefully no one else runs in to this issue :')
Make sure you go into Project Settings and not Editor Preferences to enable Virtual Textures. Editor Preferences just shows you keybind shortcuts, or something like that. Hahah! I know he says it, but I still made a dumb and couldn't find what he was talking about for a second. Don't worry, I've only been playing with Unreal since UDK and still don't know wtf I'm doing half the time. Hahaha! GREAT VIDEOS PRIS! You always give great lessons. Appreciate you.
Glad I could help out!! Another trick I didn't mention in this video is to set your grass material to have "Tangent Space Normals" disabled and plug a 0,0,1 vector into the Normal channel - this will make your grass shading look much more cohesive.
if you dont have the MM_Landscape node with just one input. click on your "end node" (with +10 inputs) and check the box "Use MAterial Attributes". That was my stone in the way.
Is there a way to populate assets on the terrain in a utilitarian way? Kind of like solders in formation side by side not overlapping with an X and Y rectangular space? Then color the soldiers based on the color of the terrain like you have done so beautifully?
Love your content! I am having trouble with complicated marketplace landscape materials and was wondering if you could point me towards what landscape resources were helpful for you?
Hi Dan! I haven't used any 3rd party landscape materials as of yet because I've been really keen to build everything from the ground up to learn. For my project I'm only using Normal Map textures and 3-vector colour values instead of colour textures so my setup is very very simple. Some people like to have all of their separate landscape layers in separate Material Functions and then plug them all in inside the Landscape Material, but I find it's a lot easier to create a simple system when it's all out in the open, which also gives you the benefit of being able to re-use the same textures for different layers (eg. my Snow normal map and Sand normal map are the exact same just with a different colour) As for tutorials/videos on RU-vid, I ~highly~ recommend Ryan Laley's channel - he has a few videos on very simple landscape setups which would be a great start that include automatic cliff/grass setups and height-based texturing. In terms of creating your own landscape textures, download Quixel Mixer (it's free for UE4 users!). It's incredibly powerful once you find your way around the program for creating textures (including normal maps etc) very easily. Hope some of this points you in the right direction :)
@@PrismaticaDev awesome man! This will for sure help me get some direction. Sometimes you just drown in information and need a little guidance to get back on track. I really appreciate it. Keep on your project and UE4 discovery journey, I'll be watching!
@@danh1962 That is the story of my life haha. I spent a month just absorbing info before I really even touched the engine. Another incredible resource is Mathew Wadstein's channel - he has a short video for -literally- every single goddamn Node in the engine.
@@RainyGames Yeah I have a cel-shader type process over the entire scene, although it has 8 layers as opposed to the usual 3 so it can range from pitch-darkness to blinding white while maintaining the effect. I actually cover it in an early episode of my Devlog which I will start uploading soon, so let's keep in touch! :)
@@PrismaticaDev I know... I just do not have enough time for everything. Currently learning to code, learning Godot, learning 3D modeling with Blender. Then Substance Painter and have a one year old kid... Maybe I need to switch to Unreal. I even found an awesome asset in Unreal Market Place which would help with my project idea... Anyway, again, awesome content.
@@Simon-ik1kb Unreal is definitely very beginner friendly using Blueprints, I find it so easy to understand code when it's laid out visually. And I also find it really helpful to learn a bunch of different areas like you are (Blender + Substance + Godot) because if you start to get stuck or burnt out with one program, you can switch it up and still be making progress! Learning at your own pace and having patience is the most important thing when learning new skills :)
Cool stuff. I’m an absolute noob with this, so could you point me towards some stylized grass assets like these? I know how to use Quixel scans for foliage but I’d like something like this
Hi, i just find out your channel and it's incredible! I'm just wondering if you could point me to a tutorial/video for this kind of foliage! It seems really performant! However, good job, super informative! Thanks!
I use the auto-cliff material which you showed in a different tutorial, and multiple terrain paint layers. It all just plus into a "LandscapeMaterial" node. How do I do this whilst still keeping that?
Is anyone having issues with glowing bright white textures on the grass, or is it just me? I've been troubleshooting for awhile and I've just moved on to wanton experimentation to see if I can get this to work. Edit: I solved this issue. I'm using a tiled landscape and I needed to set the LandscapeStreamingProxy's Draw in Virtual Textures to the Runtime Virtual Texture. My bad. If anyone is as silly as me, I'll leave this here just in case :)
@@PrismaticaDev if you gave the time could you please do a tutorial with that for unity as there is a high demand for it including me plus unity’s terrain system compared to ue4’s terrain system is wackpus even though it is better, there are a lot of people who use unity which includes me
@@davetgv126 unfortunately I’ve only actually been doing Gamedev for about 6 months and UE4 is the only engine I know. I’d suggest just try learning about RVT implementation - the terrain isn’t necessarily the important part - it could just be a big object with a texture on it and would still function the same :)
Hi really like the video, i have tried setting this up but every time i plug in my opacity mask texture and click apply this cause Unreal to crash. What node are you plugging in to the opacity mask in this video? Do you know why it would be crashing? Thanks
Hey Ryan! I have a custom function in my Opacity Mask for when the player is being occluded by objects so for you, you won't need anything in there. Unless you're using Grass Cards with an Alpha texture, in which case just plug that straight in :)
Is there perhaps a way to shrink the grass based on specific textures instead of contrast? I'm just finding that using more complex textures it's having trouble. Though to be fair, I am using a more complicated grass material ('ultra stylized grass' asset).
There is indeed! Look up my "Grass Occlusion" tutorial and it will cover that and more! But instead of plugging 0 into your Landscape RVT you'll plug in your Grass layer sample.
Hi PrismaticaDev, thank you for this tutorial. I manage to create an awesome looking grass that blends really nicely with the ground. However, I run into a problem when I try to create another landscape with another runtime virtual texture within the same level. It looks like I have to duplicate an entire separate landscape material that points to a separate grass mesh (under LandscapeGrassType asset) that points to a duplicate grass material that has the new runtime virtual texture selected in it's master material. Have you tried making another level or another landscape with the same material and did you also have to duplicate everything for it to work? Thanks :)
Hey Seph! I have actually run into the same issue before - usually by having another RVT Volume in the new level writing to the same Texture is fine as long as you Update the RVT (you can do this by going into the RVT object and switching the resolution back and forth) so I assume there would be a way to refresh it in Blueprint (maybe make a Blueprint of the RVT Volume and update in Construction script or something?) Hope that helps a little - I'll definitely be finding a proper solution when I start working with multiple landscapes :)
@@PrismaticaDev Hey! Yes I have 2 different landscape in the same level. And I am finding that I have to create 2 separate master landscape material because the Landscape Grass Output node only accepts grass static mesh in its grass type, so I have to duplicate my grass's static mesh, assign a diff Material instance into it with the corresponding RVT, and then reassign it in a new Landscape Grass-type. Did you figure a workaround for this? Or perhaps you are using a different method to display your grass? The only way I know now is to use Landscape Grass Output Material Expression to quickly display grasses as oppose to placing them manually as foliage. As a result I need to duplicate a new grass static mesh every time I want to use a new RVT on a new landscape mesh. I have not explored level streaming/chunks yet.
@@PrismaticaDev I'm currently working on a side scroller and I am experimenting with using landscape meshes for it's near background since they allow for much more stylized grass (as opposed to vertex color/painting and then manually placing foliage) and I am thinking of using multiple landscape meshes for when players go up in the level vertically and I can create a separate landscape mesh up there instead of manually sculpting/pulling a part of the landscape mesh to reach a really high vertical area. Currently the area where the player actually "walks" on are made of spline meshes to allow for quick editing and landscape mesh in the background to add details . But it might look like it's more trouble than it's worth, I might just have to create a big landscape mesh that covers my entire level and just design it that way :) Thanks for your input tho!
Hmm, for some reason when blending my grass, my darker green colour is affected by this and is pushed under the landscape instead of just simply colouring it (as well as my brown dirt colour) - is there a way to fix this by maybe excluding certain colours from being affected by this and it only changes the grass colour? e.g. What if I wanted some red, yellow or even blue grass - would I have to make a completely different grass material for each? I wonder if there is a way to make it so that only a VERY specific colour/material causes the grass to go down and fade whilst others just cause it to simply change colour. EDIT: Oh wait nvm, I think it was my "Desaturation" node that was causing problems. I changed the "R" & "G" values to 1 and the others to 0 and that seemed to fix the issue - must have missed it because your face cam was in the way, but you did mention to set it between "1" & "0" so it was my fault for not paying attention haha. I think I might be able to figure out how to get some blue blending grass though, I'll do a couple of test later on. Keep up the great work man, your vids are the best for GameDev!!
@@PrismaticaDev haha no way! I am actually already watching that one right now! I recently just finished your wind video but I like to take notes so I can learn better and for future reference (probably the reason why its taking me so long to implement something new haha). Grass is so important for giving a wild atmospheric feeling so I really want to make it the best I can. Thanks a lot man, I'll give it a watch now!
it seems UE4 4.26.1 is a bit different than the version you used here for the "Transform from Bounds" drop-down. Now you select the "Bounds Align Actor" (same thing), but when I do that the "Set Bounds" button is grayed out and I can't actually set the bounds. Am I missing something?
aha, you just have to select the virtual texture (the thingo) before setting the bounds now, then the button will light up. I'll just leave this here in case anyone else is as silly as me lol
im new to UE4 and i couldnt follow your instructions because my landscape material didnt look like yours so i couldnt connect the nodes correct :( are there somewhere any simpler instructions how we do this?
Heya Olizol! Unfortunately I don't have a tutorial about making a landscape material from scratch as I tend to focus on more intermediate techniques that I find really fun to explain. If you like however, you can join our Discord and send me a message and I'll try and get you sorted :)
Does the grass thing changing color only work if you're laying your grass out via your landscape material (grass types)? For instance, I'm trying to make it so my grass is interactable with my player, so using grass types on landscape materials won't allow for that, right? Does that mean I can't do the color blend thing? I'm not painting hill sides, etc., manually like you show here. I'm using an auto-material that I made using a bunch of material functions and blending them together with a layer blend in my landscape material. Would I need to set up the virtual texture for each material function (grass, rock, dirt, etc.)? Or do I need to simplify it, or possibly am I thinking of this incorrectly ? I'm still relatively new to Unreal. I don't have 2 separate materials like you show here. I have 1 single main landscape material, and a few material functions that plug in to it. Hopefully I'm explaining that right.
You can still inherit the colour from the landscape - all of it is done inside the shader/material. There are also shader-only methods of grass interaction that will work with Landscape grass, however if you wanted to do stuff like cutting grass then you might have to use Instanced Foliage, since landscapegrass can't have collision
@@PrismaticaDev But I'm confused on where I "call" to the virtual texture sample like you do in the "MM Master Ground Foliage" at 5:28. I don't have anything other than my Master Landscape material which I am outputting my base color to the virtual texture like you do in your first step. The trouble is, my Master landscape material is made up of 4 different material functions (grass, rock, mud, forest) all blended together with a layer blend node. Each of those material functions consists only of a the rock texture, the normal, roughness map, and a parameter that allows me to tile/size them as needed. Maybe I just have a different set up from what you have, and I need to get on your same page before moving forward with this. Idk if I want to be able to cut the grass, really, so much as mask it out when I place objects, and maybe have it get trampled temporarily when I walk over it, like the other tutorials you have.
@@PrismaticaDev now that I'm watching your tutorial again, is the "MM Master Ground Foliage" material you're using at 5:28 the actual grass material? Maybe I got confused there? I thought you were still on landscape materials.
@@PrismaticaDev nevermind. haha. I got it. I didn't realize you had jumped over to your actual grass material in the second step. I just needed sleep. =-P
When I plug the remap value into base color, the color of the grass is reversed. So the bulk of my grass is pushed down instead of the edges. Any idea where I went wrong?
Same, if I figure it out, I'll let you know. Perhaps something with the desaturation node's Luminance Factors? I'm in UE5, so there may be some change between versions.
Ok, so here's what I found so far. If you add a OneMinus node right before the RemapValueRange, you can reverse the mask. Then, I had to mess around with the RemapValueRange InputLow and InputHigh. I set mine to .63 and .66. I am probably going to see if there is a way that I can create another Virtual Texture which maps a mask to my landscape layers (in the landscape material) and then use that output to be able to control the falloff of the mask much better.
Last update on this, I also tried using a mask (as mentioned above). I just added together LandscapeLayerSample nodes corresponding with the layers that I wanted grass to be on, and if needed (I'm using a non-wb auto landscape layer as well as paintable wb landscape layers) subtracting layers that shouldn't have the grass on it. I was doing this mask anyway to place the grass automatically as I'm sure you probably are as well. Anyway, I took that and plugged it into the VRT roughness channel - telling the VRT object itself that it should support BaseColor, Normal, and Roughness. This adds more memory for the VRT, of course, but it gives me an accurate mask that is not dependent on what colors I use for my grass. This makes the system flexible and removes issues where some of my grass was being masked into the WPO when it shouldn't because the color of my grass gets somewhat more yellowish brown in areas. So then I take that roughness channel in the grass material and use that in the Lerp Alpha (as shown in Prismatica's vid) and put that in the WPO. Works a charm.
I'm literally losing my mind on this. Yesterday this worked fine for me, but today I am using it in a different new project. For some reason all the foliage is the color of my sand layer. Even the virtual texture displays the yellow and if I change the colour of my 'Layer Sand' in Layer Blend Node in the Master Material it changes the colour of the grass mesh too.
Just to add, it's really hard to follow what nodes to keep from this video and what nodes to get from the video you link in the discription and how to make them work in unison. Also can't figure out for the life of me how to change the nodes when I change the colour of the grass to a darker shade and still have it be long, because as soon as the grass becomes darker it gets pushed down on the Z axis and I have not been able to figure out which node is responsible for this. Anyway, love your vids, just trying to learn is pretty difficult.
darn... sadly it does not work in UE5, as you are no longer allowed to plugin the nodes you used in your tutorial because it says "material attributes not compatible with float".
Hey there! It still works - I think you're just plugging in a node from a "make material Attributes" into something that is expecting a float (or vice versa)
@@PrismaticaDev yep I figured it out, sorry. Now I'm working on getting the landscape to actually appear, right now I just have floating grass even though I did what you did, so I'm sure it's a material issue on my end
Heya Ram! So a texture/vector is made up of 3 values - Red, Green and Blue. When you "Mask" something, you're just isolating the specified channel and ignoring the others. I'll make a video on Mask pretty soon :)
Damm, I was trying to follow this to make a visibility mask on the material, but I simple can't make it to work. There are some steps that are missing, and the difference in engine make it really hard. So basically tyring to hide the landscape with virtual texture, comming from a blue print, with a mesh writing to that virtual texture. It is done in this video "v=1U-5zxJCIN4", but he also have the same issue, skip some steps :(
@@PrismaticaDev Hey, I'm trying to do exactly that, using the vertex color but it doesn't work, just gives me a grey color. Can you explain how to make it work using the vertex color?
@@scoly6132 You might need to double-check your import settings when importing your grass meshes. Unreal likes to set it to "override". Or if you mean the Grey is happening when you're debugging the push-down effect, it might not be green enough haha. You can use the Distance node comparing the intended colour of your grass and the vertex colour/actual colour of the grass, and then apply the push-down using the resulting mask
Great information and video but from the viewer perspective don’t shake your mouse back and forth so much. I’ve seen many people complain on other videos about that. Apparently it makes them queasy.
It surprises me that there would be no better way to control the fall-off density of the foliage when going from one texture to another. I find this method of hiding the grass 'under' the mesh of the landscape ... janky.
You can change the spawn density, but not the scale. You could possibly get around it by having long + short grass as different types and then using some math to only spawn short grass at the edges, and long grass in the middle. But I agree, the whole system needs some loving haha. There's a great plugin I'll be getting by Errant Photon that can do all kind of foliage/grass spawning