The limit of 16 texture samples is actually connected to hardware restrictions, not the number of texture files being used. GPUs have 16 physical samplers on them which is where we get the "16 texture sampler" restriction. You can turn on Shared: Wrap/Clamp in sampler source to use more than 16 textures. What you are doing is making a queue of textures that will all get passed through a single texture sampler on the GPU. The downside of this is that each texture gets read sequentially, so you can slow your shader down. The upside is that you're going to be freeing up other texture samplers so the GPU can be sampling textures for other shaders as well.
How is the implication of this exactly? 16 samples without branching is already terrible, will this prevent the long lookup time the GPU has to wait for the samples from cache and just make it 1 lookup? If we talk "slow down" - 16 samples is already brutally slow, is that relative to 16 samples or relative to 1 sample? You could use an atlas but it requires some fixing of the seams
@@ShrikeGFX I think you're getting things mixed up. Think of it like this, you have 16 gates. A texture can pass through each gate one at a time. Now if your material has 16 textures to read, it can do so in two ways, either each texture gets sent to its own gate and they all pass through at the same time OR the textures queue up based on how they are used. Will sending all the textures to different gates be faster? Yes. But what if you have 17 textures to read? What about other shaders trying to execute? If all the gates are occupied then you've bottlenecked the GPU. You should absolutely NOT use all the samplers available in a shader, but you absolutely can use more than 16 textures in a material if you want. To be clear I'm not saying that you should use 100s of textures and there are other ways you can stack textures like texture arrays or like you mentioned, atlases. Everything has pros and cons, its about finding the balance.
I almost forgot how to hook everything up again until I saw this video, just have to use time stamps to skip the Blender part😁 great explanation! Thanks!
To bypass the limit of 16 textures in unreal, in every Texture Sample node you need to change the "Sampler Source" to Shared: Wrap. Found your channel not long ago but your videos are very helpful. Cheers
If you find yourself bypassing a limit of 16 textures you hopefully make a terrain shader with layer based culling or offline cinematics Dont make the mistake of building game assets like this and then later have to redo everything
Been working with Unreal since 2015.... LEARNED A TON watching this. Thx man :) BUT... Makes ya wonder if in like 5 years everyones gonna be bashing all the models we make now with RUST EVERYWHERE like rounded corners in UIs in 2010's Let the Rustenning BEGIN 🤪
Very powerful. But if you make a game, you have to optimize this alot. Callisto Protocol used the same workflow in UE4 and were quite limited on how many assets could be loaded in. One way is to bake down your masks to vertex color instead and use a high resolution model with nanite. The maps might not be as accurate as a texture map but will free up more memory.
it is worth mentioning that you're trading in the VRAM of having more textures for the overhead of having a more complex shader. That being said a fairly basic blending setup like this won't impact performance too much compared to other GPU intensive tasks even with a hundred variants in a scene. I've been seeing alot more material layering in moder games and for good reason, like you explained it adds alot more flexibility and less jumping between your modeling software, texturing software and game engine.
I have a habit of skimming before I watch and landed on 9:10. I thought you were a real-time render and the settings on the left were render settings. I was very impressed by the detail and light scattering on the hair but then realized it was a video... I feel like such a goober. Ok now watching for real hahaha.
Keep in mind that this is a cinematic workflow For games you at the very least have already 5 to 9 texture samples for just 2 layers, and texture samples are hands down the most costly part of a surface shader 9 samples for this is extremely inefficient, then if you want to add a baked normal or such it is getting pretty crazy. Also keep in mind that samples get increasingly more costly the more you have and you cannot cull samples based on texture masks for performance. If you were willing to use 9 or so samples, you could do very advanced things in a monolithic shader, so this is a very brute-force approach. TLDR Id stay below 6-7 samples for sure, thats already quite expensive, no matter the texture size, so 2 layers are doable, 3 get very expensive if you do the naive approach. You need to know what you are doing there and how the shading pipeline works.
This is good to know but I'm conflicted, I watched a whole other video by Sumo Digital and that guy is using material layers for every asset in the game and says it's far far more performant than a traditional master material type setup with duplicated material instances everywhere. His setup isn't for cinematics either it's for the actual game itself and he shows how this is industry standard practice for huge games, especially open world ones. He's a Tech Art lead and he seems very confident about his assertions. Oh an don't forget, if you played Elden Ring they clearly use material layers for almost everything in the environment from the huge structures to the terrain and you can see where the materials have been blended in specific areas using vertex painting. I think it would be ludicrous to use baked out textures for every building and prop since they're mostly all modular and constructed in engine, and require unique material blends.
@@MonsterJuiced What he surely meant is draw calls. Many games dont have drawcall issues however. Im sure it is usable if you optimize it well but you should really know what you are doing there. You cannot just use 10 samples for your every day props that is mental. Using 2 layers the naive way will be fine but if you want to use this properly you need to find optimizations for you so you can have 3 layers without using more than 6-8 samples. Its possible but you cant just naively slot 3-4 materials and call it a day, thats spelling disaster. Texture samples are hands down the most expensive in your shader as the GPU needs to wait for the cache to return the sample. You need to be extra careful because with this setup you cannot just remove a layer to optimize on lower end hardware, doing so will drastically change the look. So try use layering but without using a sample for everything. Do you really need an albedo? Do you really need a roughness? Is my rust really needing a normal map and all or can it just be derived from something else? etc. Then you can use this. But being this "blunt" requires also to be smart. If you just slot in normal materials with 3-5 samples each you will get into big trouble.
@@MonsterJuiced In his video he uses highly stripped layers, unlike in this video. Using the Naive approach and just slotting different fully stacked layers will get you into big trouble. Rendering performance wise nothing will beat a stupid old standard shader setup, but drawcall wise this might be superior for sure, although if you do have a unique layer per asset I dont think it really can be as you will still have a new drawcall, however your folders will be way cleaner. You definitely need to do your homework and know how shaders are optimized before jumping into something like this for a real production.
@@MonsterJuiced about elden ring, many companies use things that look like layered shaders but are monolithic, of course you wouldnt uniquely texture a mountain. People have been using layered shaders for a very long time but these are usually very optimized and reuse textures from one layer in another, while this is a system for combining unique materials into layers, which is not the same thing but has a lot of convenience and project cleanness benefits and yes some companies also adopted this but they will definitely not go over a handful samples and it will look more like in the Sumo video than in this video.
@ShrikeGFX I will definitely need to learn some more about this layered materials workflow. I have done quite a lot of modding for sekiro and elden ring and I can see how extensive their use of layered materials is. The optimisation you're talking about is likely how the guy in the sumo video is doing it. Using textures that is around 1024 resolution and tiled a lot. In elden ring these can be as low as 128 for albedos, 512 to 1024 for normal maps and a separate layer altogether for a channel packed sample that contains AO, metallic, roughness, ID mask. And then placing a height in the blue channel of the normal map for blending or anything really. In Elden Ring they use the blue channel for metallic maps. Do you mean this kind of optimisation?
This is amazing! Great presentation. I’ve been ignoring materials for a long time, but recently started digging in and have been amazed how much you can do to improve them. Though the more I learn, the more I discover just how deep the rabbit hole goes!!
@@rileyb3d Ooo good question! I'd love to see more on the breakdown of World Position texturing you mentioned at the end, perhaps combined with adding in some decals to add further breakup
13:00 the value step node is not giving me good gradient control, id love a node like the ColorRamp node from blender where i can easily control my gradient, what is the best node in unreal for that?
Thats true, it works better turned off. With it turned on, I see absolutely sharp edges. Is there a better way to still have a bit of control and still create a gradient?
Does unreal have any equivalent edge and cavity mask nodes that'd be worth using? Or would that quickly become too expensive. I'd imagine having a seperate cavity mask for each asset in a large scene would also become quite expensive. I suppose you could make a cavity map trim sheet of sorts. I suppose you're managing tradeoffs whichever method you chose 🧐
I ask myself if with the new Modeling Tools, which have an AO baker integrated already, Unreal will may at some point offer the ability to author or even paint masks right inside the editor for immediate and flexible use with Material Layering.
Very nice contribution. I would like to add to mind directionality when making these materials. So either build that feature into the master material, or make sure to lay out UV shells with that in mind. Especially with things like drips, you don't want them going horizontal.
pretty good tutorial, thanks!, however I feel like this whole thing is redundant since you could still possibly achieve the exact same thing with material functions ? a one material could be a material function and blend two functions with alpha , maybe the advantage here is instancing but you could still instance material functions , what am I not seeing here ? and thanks again!
Thanks for your tutorial!I noticed that ValueStep function made the edge of mask very sharp so maybe not good for some texture like dirt. Do you know another way to spread mask with smooth edge?
Great video! But I would also like to see a tutorial with an analysis of Substrate material, its pros and cons in comparison with standard material sets. Thank you
Crazy! Good to know when I get back into game making (or is this better for film production?) Also, fluent materalizer seems like an absolutely amazing add-on I will definitely check that out
I think the principles are useful for a wide variety of uses. Game and film alike. Thanks for stopping by! Yes, fluent is a must have! If not for procedural textures, the edge and cavity mask alone is great.
When it comes to having your asset UVd, is the blender bake attached to the UVs? The ones in substance painter rely on the bake, so i can't have UVs outside the 0-1 quadrant, thereby reducing the quality of the procedurals from substance painter.
I am kinda dissapointed that I have to use Material Layer and cannot just plug a material instance instead since I already have my materials ready and this way I have to created the (drag the textures and so on)
it would also be great if you could make a future vid going more in depth about the world space driven layers, i have been stuck trying to get rvt to work
Just found your channel and loving your videos man. Also considering your store as I always love new assets! I was wondering how you know Blue Prints so well? I'm trying to learn how to use them but just don't understand so much of this stuff. Although its visual scripting it feels like its still coding and maybe that's why I'm struggling to understand Blueprints... cause I've never been a coder 😂 A video teaching Blueprints would be killer man!
And this dude only got 32k follower, srly ytb your algorithm sucks. Clean explanation, smooth, calm and not speedy as hell with great result information and god damn good voice ans music. I just follow man. 👍
I just found your videos and I will definitely subscribe to your website to check out your asset creation videos! I really want to get into game asset creation and I hope to learn from you!
This is fine but until you generate the masks in Unreal, this is still only half a solution. In the modelling tools in recent versions of the engine, you can select meshes and bake AO…. I know that’s not the same as cavity, and it’s CPU-based, but it’s a start. If it had a cavity option, then Blender could be eliminated from this particular process altogether. Also, I can see Strata superseding the current model and then things will be different again. Well-explained and well-produced video however. Nice one.
@@ahmadjames151 Yeah, Blender was a used here to help explain concepts, but it could be built in Unreal just with the tileable maps. The only piece of the puzzle Unreal is missing alone is the edge mask. As far as I know you'll need substance or Blender or some other texturing program to at least bring over edge, cavity specifically.
UE 5.4 Texture Graph Plugin, some tutorials available. Currently simple but really eager to see where it goes. Epic promised Quixel Mixer would be back in a totally different for, maybe this is the start.
I mean I got it to work...after I changed my 'mask' texture to Use only as Mask no sRGB...but it looks a lil underwhelming...maybe I can play around with height maps to get the textures feeling a lil less just floating on top the mesh...ya know what I mean... Edit: nevermind...I just baked a normal map with my B/W mask...then lerped it with my original normal map...so now I've got my base metal normal, rust normal, and basically a third normal map 'digging' the rust into the metal...looks a lot better now...
11:40 what are you doing? what are you doing? whyyyyyyyyyy... you literally got R node. and RGBA node :D (or maybe im overthinking and you jsut wanted to show others how to combine channels) Clamp is with C button. 12:30 I often use "remap normalized", it works for my materials, maybe will also work in your case. Overall good job. I likes that vid :)
Hi, you should show full build for blender texture setup. I dont know anything about blender texture setups and this tutorial wont be useful ppl just like me. Also there is jump seen about ue sections new comers also will confuse about creating materials in ue.
One thing that Unreal really lacks is similar procedural texturing tools that blender has. No geometry based edge detection methods, ambient occlusion, noises, etc. really would be awesome to bridge that gap in unreal.
@@lizkeres2593 I'm saying you can use the modelling tools and new mode to bake curvature, ao, etc. to drive material layers. There's nothing complex about it. One DX5 texture can store all of it.
if i understand well this is what i could interprete from unreal to substance painter ? Material = texture set Material Layer = Layer Material Layer Blend = Layer Mask
I find it very educational and it is calmly explained. I just wish that you could just do only a voice over or put a little window with you talking, I find the shift from the video and you talking to be distracting. Other than that, it is perfect.
Love your stuff always, but you really should also add the word "Blender" in your title, as to do the thing in this video in UE you HAVE to do al that baking setup in Blender regardless, or it won't work. Would've saved me time since I personaly don't know Blender and was led by the title of this video "MATERIAL LAYERING SYSTEMS in UE5 🔥 (Advanced Materials Tutorial)"
That's pretty cool but is it optimized for real time too? I can see a reduced draw call utilizing that as a master material, but isn't the layering too expensive? It would be great to see a comparison with a big map and a lot of props
To answer simply; yes. More and more modern games go with in-engine layering and tiling approaches for a reason. Imagine not compiling 50,000 shaders with all of their map groups. The leather material on a sofa can be the same leather on your character, yet still have variety and be visually differentiated. Use the instances approach I’ve shown here. Unreal is calling on very few resources to populate materials on a massive amount of potential assets. Not only is it acceptable, it’s an improvement, and one of the strengths of this approach. As with anything there are trad-offs. I suggest using a combination of techniques you’re comfortable with. Layering and tiling are must-have at one point or another though. Especially on large assets.
@rileybrown3d Great response! What sort of materials would you think benefit most for this? I'm thinking a lot of organic, repeating patterns like leather and concrete, but is this also more efficient for one-off texture use?
Texture samples are the most expensive in your shader. It depends on your sample count. Id not go over 6-7 samples total. This approach is quite sample inefficient but can definitely work for a 2 layer with some optimized extras approach using highly packed maps but id be very careful and you should know what you are doing.
To talk more about this theory, because i believe in the same thing, and this is the way that i thought about it: Imagine in front of you, you have a 6 sided cube, each side has a unique texture assignment for a total of 6 4k textures. Say that you unwraped the UV of this cube, so as to show how all 6 of these unique textures are mapped one to one to the faces of the cube. Consider now, each 4k texture is like say 10mb of memory space. 6 x 10mb = 60 mb of memory space. Now imagine an entire room full of cubes...lets just say 600 of them, each with unique 4k textures assigned to their faces. 600 x 10mb = 6000 mb (6 gigs) of memory space. We can also display these cubes like unwrapped UV...so in the extent of many cubes, we can imagine all of it as a single, large scale, complex unwrapped UV map. Extrapolate : A scene, like a room is just a bunch of faces like this cube, that you can imagine unwrapping in the same way. If every face of this scene has a unique texture assignment... we can just generalize, that the scene is going to have N(S) where N is the number of unique texture assignments (faces of the UV) and S is the memory size of the texture. It now becomes pretty obvious how inefficient unique texture assignments are. Going further : Lets say that for the cube we don't assign unique textures to each face, but instead repeated the same texture...say that for every 3 faces we use one texture. In the example, our 600 faces goes to 200 resulting in 2 gigs of memory instead of 6. Generalized : N/A*S where A is the number of uses of the same texture. Imagine the most efficient cases : What would a system be like if all materials in a scene, just sampled from the same materials all the time? Then would it not make sense to just have a library of materials...like Metal, Wood, Plastic, etc...and then repeat those textures as many times as possible in a scene, having all of our different models just quarry the same list of materials. Imagine spending only 30 mb of memory to produce the entirety of a scene, simply because every object is mapping to the same high quality library of materials. Further observations : Scale Transformations, is effectively the same thing with no incurred cost. Scaling a texture from 1x to 100x is an effective increase in resolution by 100x. Because this operation is equivalent to repeating the texture (exclamation point). imagine taking the scene with 600 faces, sampling from a library of 4096x4096 materials and we decide to 100x the scale of its textures -- the effective resolution of this scene goes from 10,066,329,600 pixels(10 billion) to 1,006,632,960,000 pixels (1 trillion) without increasing memory. That's 600 gigs worth of pixels...for the cost of 6 gigs. What is there to learn : 1) Using a library of universal materials that a scenes geometry samples from, is the biggest optimization you can think of. 2) That the key to more effective resolution and to this optimization is learning how to tile and how to hide it tiling artifacts effectively. In some sense, this is trivially easy to do, given how many anti-tiling tools one can produce, and has access to. This video, is a good example of how to think in this way. Big picture : Big picture is that memory size in some sense is illusory. We already live in a world where everything is made of the same stuff (electrons protons neutrons) so effective resolution and optimization seems to be more about the story of our perception of repetition in geometry.
I think i created a monster, im tring to do a material layer with a subsurface profile shading model if someone want to know if it work well work for human skin ill post if i succed here
The only problem with this that i have in blender, is that dynamic blending in most cases just doesn't give realistic natural results. It's always too obvious that it's some procedural method. Also the algorithms for sharpness, edge detection, cavity and occlusion in blender are pretty bad compared to say substance. They have too little control and nuance and are too reliant on topology.. Baked blending masks from substance still look better imo.
Trade-offs for sure. Do you see any benefit for layered and “in engine” tiling in Blender? Obviously in something like a game it’s impossible to get by without at some point on a project. I’m interested if you see a use-case in blender though.
"optimitze our scene" is kinda a lie, given the GPU is being both filled with GBs of memory and told to calculate the same fragment 100 times, sampling a texture every 5 steps or so :/
Can you read my mind? This Blender -> Unreal workflow info is gold and what I've been looking for.
The limit of 16 texture samples is actually connected to hardware restrictions, not the number of texture files being used. GPUs have 16 physical samplers on them which is where we get the "16 texture sampler" restriction. You can turn on Shared: Wrap/Clamp in sampler source to use more than 16 textures. What you are doing is making a queue of textures that will all get passed through a single texture sampler on the GPU.
The downside of this is that each texture gets read sequentially, so you can slow your shader down. The upside is that you're going to be freeing up other texture samplers so the GPU can be sampling textures for other shaders as well.
How is the implication of this exactly? 16 samples without branching is already terrible, will this prevent the long lookup time the GPU has to wait for the samples from cache and just make it 1 lookup?
If we talk "slow down" - 16 samples is already brutally slow, is that relative to 16 samples or relative to 1 sample?
You could use an atlas but it requires some fixing of the seams
@@ShrikeGFX I think you're getting things mixed up. Think of it like this, you have 16 gates. A texture can pass through each gate one at a time. Now if your material has 16 textures to read, it can do so in two ways, either each texture gets sent to its own gate and they all pass through at the same time OR the textures queue up based on how they are used.
Will sending all the textures to different gates be faster? Yes. But what if you have 17 textures to read? What about other shaders trying to execute? If all the gates are occupied then you've bottlenecked the GPU.
You should absolutely NOT use all the samplers available in a shader, but you absolutely can use more than 16 textures in a material if you want.
To be clear I'm not saying that you should use 100s of textures and there are other ways you can stack textures like texture arrays or like you mentioned, atlases. Everything has pros and cons, its about finding the balance.
damn I really like this workflow, the only UV specific texture is the detail mask and everything else is modular
I almost forgot how to hook everything up again until I saw this video, just have to use time stamps to skip the Blender part😁 great explanation! Thanks!
To bypass the limit of 16 textures in unreal, in every Texture Sample node you need to change the "Sampler Source" to Shared: Wrap.
Found your channel not long ago but your videos are very helpful. Cheers
If you find yourself bypassing a limit of 16 textures you hopefully make a terrain shader with layer based culling or offline cinematics
Dont make the mistake of building game assets like this and then later have to redo everything
WOW, the most efficient and clear breakdown about material layering across the entire internet! THANK YOU!
Been working with Unreal since 2015.... LEARNED A TON watching this. Thx man :)
BUT... Makes ya wonder if in like 5 years everyones gonna be bashing all the models we make now with RUST EVERYWHERE like rounded corners in UIs in 2010's
Let the Rustenning BEGIN 🤪
Small tip: you can use the "saturate" node instead of "Clamp(0,1)" node. It's computationally cost free, since it's an hardware operation
Unreal automatically replaces 0-1 clamps with saturates under the hood.
You can see it if you read the compiled hlsl file
@ thank you, didn’t know that
Amazing workflow clearly explained. Thank you!
11:35 why don't you use the RGBA channel under the alpha channel of the texture instead of RGB + A channel with the "append" node? :)
Maybe he didnt realize. That output was only added in the last few versions of Unreal I think. Append method is oldschool
Very powerful. But if you make a game, you have to optimize this alot. Callisto Protocol used the same workflow in UE4 and were quite limited on how many assets could be loaded in.
One way is to bake down your masks to vertex color instead and use a high resolution model with nanite. The maps might not be as accurate as a texture map but will free up more memory.
it is worth mentioning that you're trading in the VRAM of having more textures for the overhead of having a more complex shader. That being said a fairly basic blending setup like this won't impact performance too much compared to other GPU intensive tasks even with a hundred variants in a scene. I've been seeing alot more material layering in moder games and for good reason, like you explained it adds alot more flexibility and less jumping between your modeling software, texturing software and game engine.
This is really a genius way to reuse texture!
This method will not work with Trimsheet though (in Trimsheet UV will overlap)
I have a habit of skimming before I watch and landed on 9:10. I thought you were a real-time render and the settings on the left were render settings. I was very impressed by the detail and light scattering on the hair but then realized it was a video... I feel like such a goober. Ok now watching for real hahaha.
I appreciate the way you communicate this subject. Thanks!
Keep in mind that this is a cinematic workflow
For games you at the very least have already 5 to 9 texture samples for just 2 layers, and texture samples are hands down the most costly part of a surface shader
9 samples for this is extremely inefficient, then if you want to add a baked normal or such it is getting pretty crazy.
Also keep in mind that samples get increasingly more costly the more you have and you cannot cull samples based on texture masks for performance.
If you were willing to use 9 or so samples, you could do very advanced things in a monolithic shader, so this is a very brute-force approach.
TLDR Id stay below 6-7 samples for sure, thats already quite expensive, no matter the texture size, so 2 layers are doable, 3 get very expensive if you do the naive approach.
You need to know what you are doing there and how the shading pipeline works.
This is good to know but I'm conflicted, I watched a whole other video by Sumo Digital and that guy is using material layers for every asset in the game and says it's far far more performant than a traditional master material type setup with duplicated material instances everywhere. His setup isn't for cinematics either it's for the actual game itself and he shows how this is industry standard practice for huge games, especially open world ones. He's a Tech Art lead and he seems very confident about his assertions.
Oh an don't forget, if you played Elden Ring they clearly use material layers for almost everything in the environment from the huge structures to the terrain and you can see where the materials have been blended in specific areas using vertex painting. I think it would be ludicrous to use baked out textures for every building and prop since they're mostly all modular and constructed in engine, and require unique material blends.
@@MonsterJuiced What he surely meant is draw calls. Many games dont have drawcall issues however. Im sure it is usable if you optimize it well but you should really know what you are doing there. You cannot just use 10 samples for your every day props that is mental. Using 2 layers the naive way will be fine but if you want to use this properly you need to find optimizations for you so you can have 3 layers without using more than 6-8 samples. Its possible but you cant just naively slot 3-4 materials and call it a day, thats spelling disaster.
Texture samples are hands down the most expensive in your shader as the GPU needs to wait for the cache to return the sample.
You need to be extra careful because with this setup you cannot just remove a layer to optimize on lower end hardware, doing so will drastically change the look. So try use layering but without using a sample for everything. Do you really need an albedo? Do you really need a roughness? Is my rust really needing a normal map and all or can it just be derived from something else? etc. Then you can use this. But being this "blunt" requires also to be smart. If you just slot in normal materials with 3-5 samples each you will get into big trouble.
@@MonsterJuiced In his video he uses highly stripped layers, unlike in this video. Using the Naive approach and just slotting different fully stacked layers will get you into big trouble.
Rendering performance wise nothing will beat a stupid old standard shader setup, but drawcall wise this might be superior for sure, although if you do have a unique layer per asset I dont think it really can be as you will still have a new drawcall, however your folders will be way cleaner.
You definitely need to do your homework and know how shaders are optimized before jumping into something like this for a real production.
@@MonsterJuiced about elden ring, many companies use things that look like layered shaders but are monolithic, of course you wouldnt uniquely texture a mountain. People have been using layered shaders for a very long time but these are usually very optimized and reuse textures from one layer in another, while this is a system for combining unique materials into layers, which is not the same thing but has a lot of convenience and project cleanness benefits and yes some companies also adopted this but they will definitely not go over a handful samples and it will look more like in the Sumo video than in this video.
@ShrikeGFX I will definitely need to learn some more about this layered materials workflow. I have done quite a lot of modding for sekiro and elden ring and I can see how extensive their use of layered materials is. The optimisation you're talking about is likely how the guy in the sumo video is doing it. Using textures that is around 1024 resolution and tiled a lot. In elden ring these can be as low as 128 for albedos, 512 to 1024 for normal maps and a separate layer altogether for a channel packed sample that contains AO, metallic, roughness, ID mask. And then placing a height in the blue channel of the normal map for blending or anything really. In Elden Ring they use the blue channel for metallic maps.
Do you mean this kind of optimisation?
This is amazing! Great presentation. I’ve been ignoring materials for a long time, but recently started digging in and have been amazed how much you can do to improve them. Though the more I learn, the more I discover just how deep the rabbit hole goes!!
Such a well put together tutorial. Great work and thank you for sharing :)
Thank you! Any topic in particular you’d hope to see covered?
@@rileyb3d Ooo good question! I'd love to see more on the breakdown of World Position texturing you mentioned at the end, perhaps combined with adding in some decals to add further breakup
13:00 the value step node is not giving me good gradient control, id love a node like the ColorRamp node from blender where i can easily control my gradient, what is the best node in unreal for that?
Thats true, it works better turned off. With it turned on, I see absolutely sharp edges. Is there a better way to still have a bit of control and still create a gradient?
Does unreal have any equivalent edge and cavity mask nodes that'd be worth using? Or would that quickly become too expensive. I'd imagine having a seperate cavity mask for each asset in a large scene would also become quite expensive. I suppose you could make a cavity map trim sheet of sorts. I suppose you're managing tradeoffs whichever method you chose 🧐
I ask myself if with the new Modeling Tools, which have an AO baker integrated already, Unreal will may at some point offer the ability to author or even paint masks right inside the editor for immediate and flexible use with Material Layering.
I wanted to mention that, I usually bake those maps straight in Unreal
wow! materials blends finally explained simply. thanks :)
the highest quality tutorial I've watched
Very nice contribution.
I would like to add to mind directionality when making these materials. So either build that feature into the master material, or make sure to lay out UV shells with that in mind. Especially with things like drips, you don't want them going horizontal.
Thank you for the tutorial. I’ll incorporate it into my workflow 😊
Good walkthrough, I think this is just what I needed for a river project. Now to see if I can get it to behave...
Fully awesome process, thank you Riley! Look forward to Unreal having the same blend power as Fluent, maybe in the future.
Thank you so much!
pretty good tutorial, thanks!, however I feel like this whole thing is redundant since you could still possibly achieve the exact same thing with material functions ? a one material could be a material function and blend two functions with alpha , maybe the advantage here is instancing but you could still instance material functions , what am I not seeing here ? and thanks again!
wow interesting the way you bake an emit in blender! i would use substance painter for that
Would love to see more videos on this topic, as there are very few videos on creating more useful parameters or systems such as falloff masks etc.
Thanks for your tutorial!I noticed that ValueStep function made the edge of mask very sharp so maybe not good for some texture like dirt. Do you know another way to spread mask with smooth edge?
Great video! But I would also like to see a tutorial with an analysis of Substrate material, its pros and cons in comparison with standard material sets. Thank you
Thanks for the workflow
Crazy! Good to know when I get back into game making (or is this better for film production?)
Also, fluent materalizer seems like an absolutely amazing add-on I will definitely check that out
I think the principles are useful for a wide variety of uses. Game and film alike. Thanks for stopping by! Yes, fluent is a must have! If not for procedural textures, the edge and cavity mask alone is great.
Thank's for great informations about material editor of Unreal Engine!
Nice tutorial! Thank you man!
What features does your PC have? Processor, graphics card?
Hey thanks mate! this video really helps, keep it up!
Awesome Video!
thx you
Thanks this is great!
When it comes to having your asset UVd, is the blender bake attached to the UVs? The ones in substance painter rely on the bake, so i can't have UVs outside the 0-1 quadrant, thereby reducing the quality of the procedurals from substance painter.
I am kinda dissapointed that I have to use Material Layer and cannot just plug a material instance instead since I already have my materials ready and this way I have to created the (drag the textures and so on)
So much more complex in Unreal 😮
Im having a issue where the layer parameters in not appearing in the instance material
is there a way to blend in a glass material?
it would also be great if you could make a future vid going more in depth about the world space driven layers, i have been stuck trying to get rvt to work
how do u set-up overall world space driven layers??
wow i hope you get more into this.
Just found your channel and loving your videos man. Also considering your store as I always love new assets!
I was wondering how you know Blue Prints so well? I'm trying to learn how to use them but just don't understand so much of this stuff. Although its visual scripting it feels like its still coding and maybe that's why I'm struggling to understand Blueprints... cause I've never been a coder 😂
A video teaching Blueprints would be killer man!
You're a pro at this
Why didn't you export from blender to usd? Is it better to export to fbx?
gracias,super util la verdad
i was searching for sometinhs like paint landscape but for objects , i dont know i exists
And this dude only got 32k follower, srly ytb your algorithm sucks. Clean explanation, smooth, calm and not speedy as hell with great result information and god damn good voice ans music. I just follow man. 👍
Finally a Pro - instead of the typical „multiplier and Lerp“ Worlflows. ❤❤
please talk about texture bombing set up in substrate. please please please
I just found your videos and I will definitely subscribe to your website to check out your asset creation videos! I really want to get into game asset creation and I hope to learn from you!
This is fine but until you generate the masks in Unreal, this is still only half a solution.
In the modelling tools in recent versions of the engine, you can select meshes and bake AO…. I know that’s not the same as cavity, and it’s CPU-based, but it’s a start.
If it had a cavity option, then Blender could be eliminated from this particular process altogether.
Also, I can see Strata superseding the current model and then things will be different again.
Well-explained and well-produced video however. Nice one.
Great video. New sub😊
Great Video!
Thanks for the visit
pretty good tutorial.
Can we just make texture only in UE ? and how ?
thanks!
Can you clarify the question a bit? Do you mean like we did here, but without the step of baking edge masks?
@@rileyb3d Modeling raw without texture it in blender and then texture it in UE 😐
@@ahmadjames151 Yeah, Blender was a used here to help explain concepts, but it could be built in Unreal just with the tileable maps.
The only piece of the puzzle Unreal is missing alone is the edge mask. As far as I know you'll need substance or Blender or some other texturing program to at least bring over edge, cavity specifically.
UE 5.4 Texture Graph Plugin, some tutorials available. Currently simple but really eager to see where it goes. Epic promised Quixel Mixer would be back in a totally different for, maybe this is the start.
What a video!!
I mean I got it to work...after I changed my 'mask' texture to Use only as Mask no sRGB...but it looks a lil underwhelming...maybe I can play around with height maps to get the textures feeling a lil less just floating on top the mesh...ya know what I mean...
Edit: nevermind...I just baked a normal map with my B/W mask...then lerped it with my original normal map...so now I've got my base metal normal, rust normal, and basically a third normal map 'digging' the rust into the metal...looks a lot better now...
would be cool if substance would be able to export this as an unreal material like the one you made in one click
or just substance inside of unreal
11:40 what are you doing? what are you doing? whyyyyyyyyyy... you literally got R node. and RGBA node :D (or maybe im overthinking and you jsut wanted to show others how to combine channels)
Clamp is with C button.
12:30 I often use "remap normalized", it works for my materials, maybe will also work in your case.
Overall good job. I likes that vid :)
Hi, you should show full build for blender texture setup. I dont know anything about blender texture setups and this tutorial wont be useful ppl just like me. Also there is jump seen about ue sections new comers also will confuse about creating materials in ue.
nice!
One thing that Unreal really lacks is similar procedural texturing tools that blender has. No geometry based edge detection methods, ambient occlusion, noises, etc. really would be awesome to bridge that gap in unreal.
you can bake AO, edge, bent normals inside Unreal using modeling tools.
5.4 actually introduces some tools for baking that data. It's a new texturing mode inside the editor.
You can't really do that, as complex materials really impact performance in games by a lot.
@@lizkeres2593 I'm saying you can use the modelling tools and new mode to bake curvature, ao, etc. to drive material layers.
There's nothing complex about it. One DX5 texture can store all of it.
if i understand well this is what i could interprete from unreal to substance painter ?
Material = texture set
Material Layer = Layer
Material Layer Blend = Layer Mask
grreat video
I find it very educational and it is calmly explained. I just wish that you could just do only a voice over or put a little window with you talking, I find the shift from the video and you talking to be distracting. Other than that, it is perfect.
Love your stuff always, but you really should also add the word "Blender" in your title, as to do the thing in this video in UE you HAVE to do al that baking setup in Blender regardless, or it won't work. Would've saved me time since I personaly don't know Blender and was led by the title of this video "MATERIAL LAYERING SYSTEMS in UE5 🔥 (Advanced Materials Tutorial)"
Good call, thanks! I made an initial title change, but will review this more closely later.
That's pretty cool but is it optimized for real time too? I can see a reduced draw call utilizing that as a master material, but isn't the layering too expensive? It would be great to see a comparison with a big map and a lot of props
To answer simply; yes.
More and more modern games go with in-engine layering and tiling approaches for a reason. Imagine not compiling 50,000 shaders with all of their map groups. The leather material on a sofa can be the same leather on your character, yet still have variety and be visually differentiated. Use the instances approach I’ve shown here. Unreal is calling on very few resources to populate materials on a massive amount of potential assets. Not only is it acceptable, it’s an improvement, and one of the strengths of this approach.
As with anything there are trad-offs. I suggest using a combination of techniques you’re comfortable with. Layering and tiling are must-have at one point or another though. Especially on large assets.
@@rileyb3d Thank you very much, I'll defintely try that
@rileybrown3d Great response! What sort of materials would you think benefit most for this? I'm thinking a lot of organic, repeating patterns like leather and concrete, but is this also more efficient for one-off texture use?
Texture samples are the most expensive in your shader. It depends on your sample count. Id not go over 6-7 samples total.
This approach is quite sample inefficient but can definitely work for a 2 layer with some optimized extras approach using highly packed maps but id be very careful and you should know what you are doing.
Jesus teachs Unreal. :) Great
Let he who is without bug cast the first physics object.
@@rileyb3d 🤣 Loved. But, for real. loved the sytle and the teaching. Lots of work on it I know. Just subscribed.
Thanks for the kind words on a few vids this morning! Any topic in particular you'd hope to have covered on the channel?@@lucianodaluz5414
To talk more about this theory, because i believe in the same thing, and this is the way that i thought about it:
Imagine in front of you, you have a 6 sided cube, each side has a unique texture assignment for a total of 6 4k textures. Say that you unwraped the UV of this cube, so as to show how all 6 of these unique textures are mapped one to one to the faces of the cube. Consider now, each 4k texture is like say 10mb of memory space. 6 x 10mb = 60 mb of memory space.
Now imagine an entire room full of cubes...lets just say 600 of them, each with unique 4k textures assigned to their faces. 600 x 10mb = 6000 mb (6 gigs) of memory space. We can also display these cubes like unwrapped UV...so in the extent of many cubes, we can imagine all of it as a single, large scale, complex unwrapped UV map.
Extrapolate :
A scene, like a room is just a bunch of faces like this cube, that you can imagine unwrapping in the same way. If every face of this scene has a unique texture assignment... we can just generalize, that the scene is going to have N(S) where N is the number of unique texture assignments (faces of the UV) and S is the memory size of the texture. It now becomes pretty obvious how inefficient unique texture assignments are.
Going further :
Lets say that for the cube we don't assign unique textures to each face, but instead repeated the same texture...say that for every 3 faces we use one texture. In the example, our 600 faces goes to 200 resulting in 2 gigs of memory instead of 6. Generalized : N/A*S where A is the number of uses of the same texture.
Imagine the most efficient cases :
What would a system be like if all materials in a scene, just sampled from the same materials all the time? Then would it not make sense to just have a library of materials...like Metal, Wood, Plastic, etc...and then repeat those textures as many times as possible in a scene, having all of our different models just quarry the same list of materials. Imagine spending only 30 mb of memory to produce the entirety of a scene, simply because every object is mapping to the same high quality library of materials.
Further observations :
Scale Transformations, is effectively the same thing with no incurred cost. Scaling a texture from 1x to 100x is an effective increase in resolution by 100x. Because this operation is equivalent to repeating the texture (exclamation point). imagine taking the scene with 600 faces, sampling from a library of 4096x4096 materials and we decide to 100x the scale of its textures -- the effective resolution of this scene goes from 10,066,329,600 pixels(10 billion) to 1,006,632,960,000 pixels (1 trillion) without increasing memory. That's 600 gigs worth of pixels...for the cost of 6 gigs.
What is there to learn :
1) Using a library of universal materials that a scenes geometry samples from, is the biggest optimization you can think of.
2) That the key to more effective resolution and to this optimization is learning how to tile and how to hide it tiling artifacts effectively. In some sense, this is trivially easy to do, given how many anti-tiling tools one can produce, and has access to. This video, is a good example of how to think in this way.
Big picture :
Big picture is that memory size in some sense is illusory. We already live in a world where everything is made of the same stuff (electrons protons neutrons) so effective resolution and optimization seems to be more about the story of our perception of repetition in geometry.
I think i created a monster, im tring to do a material layer with a subsurface profile shading model if someone want to know if it work well work for human skin ill post if i succed here
The only problem with this that i have in blender, is that dynamic blending in most cases just doesn't give realistic natural results. It's always too obvious that it's some procedural method.
Also the algorithms for sharpness, edge detection, cavity and occlusion in blender are pretty bad compared to say substance. They have too little control and nuance and are too reliant on topology..
Baked blending masks from substance still look better imo.
Trade-offs for sure. Do you see any benefit for layered and “in engine” tiling in Blender?
Obviously in something like a game it’s impossible to get by without at some point on a project. I’m interested if you see a use-case in blender though.
"optimitze our scene" is kinda a lie, given the GPU is being both filled with GBs of memory and told to calculate the same fragment 100 times, sampling a texture every 5 steps or so :/
Good thing, Blender folks doesn't think like you.
This is great, thank you