I feel blessed finding this channel, almost every vid is something that I can't skip. I watch it and learn 🙂 Oskar is a great instructor 100% I don't know why youtube algorithm does not give Oskar more suggestions, the material is superb
I noticed you packed Rough into Blue. In UE4 DXT compression, the Green channel has the most data and because the Roughness map is the most important, Green is best for it. Also, good idea to drop the Metal map(if it's just a black/white value) and save without the alpha. That way you'll be using DXT1 compression rather than DXT5, which is 2X the memory footprint.
That's right. I moved from 'MOR' to 'MRO' maps in newer tutorials because of that. Thank you for the comment. I marked it, so it should be more visible.
musashidanmcgrath I didn't know UE4 gave more data to the green channel. I've already been using green for roughness out of habit but that's a good tip
Where can I learn more about UE4 DXT compression, and which channels bear the most and least data? I am very interested therein; and would greatly appreciate if you could refer me to a lengthy article or video on this subject, and any other qualities of this type of compression. Many thanks
You explained that you could paint different vertex colours on each instance, I wasnt able to do that when setting up instances from the blueprint editor so i want to know how you're done it. Also amazing videos man, best UE4 channel out there, seriously good work.
+Jake Dunlop My pleasure! I understand the confusion I made here. I used the word "instance" thinking of "an object's occurrence on the level", not a GPU-instanced clone. The latter can't use individual vertex color, because of their lightweight nature (store only a transformation, ID and a PerInstanceRandom number). I show techniques to deal with it, like global noise textures, in "Good-Looking Randomization" tutorial.
Yeah, I'd watch them too :D btw, I'll update the playlist today with things I watched from my previous account ua-cam.com/play/PLF8ktr3i-U4DH3Wh-zJAxsCncINRoi3U4.html
Dzięki Oskar! Fajnie, że szybko ale też ze szczegółami... Houdini przyzwyczaił mnie do nieskończonego budżetu czasowo poligonowego a teraz musze odświeżyć realtimowe techniki :) Pozdrawiam!
Dzięki! Powodzenia z realtimem! Bywa ciężko, ale jaka satysfakcja, kiedy uzyskasz efekt pomimo ograniczeń. Jest to dodatkowy aspekt kreatywności, często ją też napędzający ;] Do zobaczenia na kanale, discordzie i... kiedyś na WarHUGu
Yes, there is material baking in UE4 and 5. But of course this bakes it to a specific resolution, while having this on a material allows for tiled textures
@@TechArtAid thank you for your fast answer, I really appreciate it. The idea was that I want to have nice environment walls but with vertex paint, you need a lot of geometry, so I was thinking just to create a high-poly for the vertex paint and then apply the same material to the low poly mesh. Don't know if that I explain correctly
Excellent tutorial! However, I am having issues packing my roughness, metallic, and AO maps from B2M into the RGB channels in Photoshop/Krita. Anyone know how?
+JUTTMFD Use a solid black color as the background. Then paste your textures as layers. Set their blending modes to Addition (Linear Dodge in PS). Now, you have two ways :) Either go to color adjustment curves and flatten every color except of red/green/blue. Or (the non-destructive way) create solid red, green and blue layers, set their mode to multiply, then assign them to the respecitve texture layers. I can send you a screenshot later if it doesn't make sense ;)
+JUTTMFD :) by the way, I just realized something. Check out the LazySave extension for PS, sold on Gumroad. It has this functionality if I recall correctly
Hello Tech Art Aid, thanks for this awesome video! I am also having issues packing those 3 in PS. Would you mind making a video on it or posting that screenshot? im stuck on the nondestructive way step. here is what i have so far ibb.co/jZCBZ6
Guys, anyone knows whats going on. I tried several times doing this. But furthest I went is set all up, but I cannot paint white color in R channel, I have to paint pure green in red channel if I want it to blend. I literally did everything he does in video, but cannot paint specific channel itself, I have to paint INVERTED color in order to work?
What if I'm using an alpha texture as My second texture? I would plug it into the alpha lerp to get a graphity like effect, but if I need the alpha for the vertex how do I plug it it?
Hello Can I ask a question please. How can I set it up so that I have a BAKED NORMAL +AO applied to the LOWPOLY MODEL so that I can have that BAKED INFORMATION from the EDGES and the HIGHPOLY on the Lowpoly model in UV1and then BLEND a TILLING MATERIAL and a MOSS Material on top of this unique baked information? Please I would appreciate your help
You used a depth map to paint the moss. What if I don't have a depth map. How can I generate one from my static mesh ? For example I am using a rock from the starterContent, it has all the crevices built into the mesh and then on top of that I apply a rock texture and normal map. Using the rock texture normal map (red Channel) is not enough I would also like to get the depth map information of the static mesh. Any ideas how to generate this ?
+mustin jettam You can obtain it from a normal map using Knald, Bitmap2Material or Substance Designer. But you can also paint this map in Photoshop with brushes. It doesn't have to be accurate
Will this work with animated textures? For example, if i had an animated plant texture of ivy blowing in the wind that i wanted to blend with the brick wall.
+Graham With SubUVs? Should work perfectly. You can also try some flow map magic - I mean distorting the UVs of ivy, like in my Stealth Invisiblity tutorial, using several sines of Time as strength (or a noise in a form of a gradient texture).
Great video! But i'm confused a little, what better to use, heightlerp in material, or use material functions and blend between materials in matlayerblend_simple? Sorry, if question is stupid :)
I think they will be similar? With maybe a little better performance from manual blending with HeightLerp, as you can skip some channels (for example metalness). You can easily check, though :) In viewport change Lit to Shader Complexity ( docs.unrealengine.com/en-us/Engine/UI/LevelEditor/Viewports/ViewModes )
Question can i create this as my master material and then instance it out with any of the two material set as in for example you made this as a combination of wall and moss what is i want to use iron and also the rust and also this wall and the moss so what i will do is make one material, instance the texture and connect all the nodes as you have done and then save as a master material and then create two material instances in instance 1) i will have wall texture and the moss texture AND in instance 2) i will have iron texture and the rust texture and then control everything in the instance parameter is this possible? Just thought about this so i asked because this will save in the material cost and also you can make a new heightlerp material just by making a new instance of the master material so it's easy to make, less of work to make a new material and easily optimised
Use Texture Sample Parameter nodes instead of just Texture Sample. Then in the content browser right-click the material and Create Material Instance. Is this what you asked about? Cheers
So this worked for me, up until I bake lighting. It seems like in 4.21, using this method breaks it. The vertex painting and everything works just fine, but then once you bake the lighting, everything goes straight black except where lights are directly affecting the meshes. I went back to 4.19 and it worked, so either 4.20 or 4.21 this had some kind of issue. Any ideas? Its driving me up a wall.
@@TechArtAid How would I use this node? I'm not sure where the output is suppose to go. I've plugged a white vector parameter to the realtime and lightmass inputs.
Yes. White in lightmass and whatever you had to the realtime. Now the output goes to Base Color in material output. The idea is that it changes the output depending whether it's baking light or displaying the realtime viewport. Edit: I just read that it worked in 4.19. That's not good ;) One idea - try putting these meshes on an new empty scene with default skybox.
It's just a texture. I put 3 grayscale textures into the R, G and B channels, to save memory. They are Metalness, Occlusion and Roughness - M,O,R :) Please find a comment about "channel packing" for instructions.
It's a standard mesh, so maybe it's thanks to carefully done UVs? imgur.com/a/qIkA1 I also added a parameter in the material for controlling UV scale. Powodzenia :)
+Seba Seba Seba To ma znaczenie tylko dla UV dla lightmapy. Dlatego mam 2 kanały UV: jeden dla tekstury (ten co widzisz) i drugi dla wypalania oświetlenia (faktycznie mieszczący się w obrębie kwadratu). Potrzebujesz wtedy wybrać Lightmap Coordinate Index na 1 (zamiast 0) - docs.unrealengine.com/latest/INT/Engine/Content/Types/StaticMeshes/LightmapUnwrapping/
Cool :) Yes, it's possible. The HeightLerp node won't be necessary. The functionality is already there in Layer Blend, the node typically used in landscape materials. Just change the blend type (3) to "Height" - docs.unrealengine.com/latest/images/Engine/Landscape/Materials/Landscape_LayerBlend.jpg
I found my issue. I was using the height blend, but I forgot to apply the landscape coords to the height map texture; that's why I couldn't see it. Thank you.
Do you know how to make sharper transitions in layer blend node? Using height maps for blending gives kinda soft transition, which doesnt suit well for gravel/rock textures blending. I've tried clamping height map, which gives shorter blend distance, but that's not what I wish for (maybe I should try to figure out how to clamp height map vertically, not globally?)
Thanks for the tip, it certainly gave me more control (cheapcontrast -> clamp -> blend input of layer blend node). Journey of blending parameters is still going on, need more control/finetuning, for example, with high contrast on cheapcontrast, it gives single rocks appearing on blending area - similiar to what I wanted, but edges are too harsh, need to blur them a bit. Or that cheapcontrast seems to affect whole painted area (just more profoundly on blending areas), I need to somehow limit the cheapcontrast effect only to blending area, not sure yet how, probably with lerps sampling from height map. Cheers!
each StaticSwitch param node creates a double of the shader? so if I use it 4 times in a shader.. I get essentially 8 shaders to compute? that's madness, why would they put it as a function? oO
+Tzur Hoch What I said is wrong. Actually it's much worse than that. An additional shader to compile is produced for every possible combination of static switches. That's madness squared
Awesome tut thanks. I do have a question. If I wanted to blend 3 materials but put limits on where on the heightmap of the mesh they can spawn can I do that? Like material 1 is the brick is the base at 0height then material 2 is concrete layer and material 3 is paint always on top of concrete and each of them off have their own heightmap for details. So basically can you like divide the heightmap in zones and limit each material to a height?
First do (height)lerp between brick and concrete, then between the result and paint layer. For each, use a part of the full height range as the mixing factor. First blending should use 0.0 - 0.5 range (remapped to 0-1), second blending 0.5 - 1.0 (again to 0-1). Like here: imgur.com/a/8Unli To remap the ranges, use the Remap node like I show here: ua-cam.com/video/J5LXIApQmzA/v-deo.html
+AnAncient76 In a landscape material it's even simpler - instead of HeightLerp, just use a LayerBlend node with Height blending type in its settings. I answered this already in the comments, so you can find a full answer under another comment :)
I'm new to UE4, so still learning :) I still don't understand many things about material creation. Can you share your material, i mean the one for landscape?
Ah, but here the landscape is simple. So it doesn't feature this height blending. There's a comment under this video where I reply to a person with an image screenshot how to do it.
Quick question about the Height map you used in your image, it looks like its from an entirely different texture from the bricks and the moss, correct?
+David Corzine Yes. It doesn't need to be anything precise (unlike albedo and roughness). It's just whatever gives you the desired result. In this case, I started with a height map that Bitmap2Material generated for me from a bricks photo
+Abey Miranda Thanks ;) The biggest cost won't come from computation but from texture sampling. If you can use a small, tiled texture for the 2nd set, then it should be fine. I'm just guessing, though - I don't have experience with UE mobile
That's the point of the eternal debate for or against static switches. They create more permutations of a shader but on the other hand, they save you unnecessary calculations or samplers. I no longer have such a hard opinion about them ;) but still I use them mostly for excluding big features, not for simple settings.
So, you're saying in the shader it's more efficient to use a howjsay.com/pronunciation-of-linear interpolation than a basic if-else comparison switch? That's very counter-intuitive.
+Waterboi505 'If' is okay. Not as efficient as in CPU programming, because of nature of branching on the GPU, but still fine for short branches. There's a node for 'if'. You can see how to use it in my Stealth tutorial. StaticSwitch is for static branching. It splits your shader into separate versions, using disk space and VRAM.
As a UE novice, I was excited about this video until the comment related to channel packing that said it has to be done in an external texture editing or 2D graphic program without an explanation or example included. That seems to have stopped me from following along.
the weak point of this technology is - GPU can't instancing painted meshes. So each painted actor will be new drawrcall. If you delete vertex color from instanced actors - GPU will batched the same meshes it into one drawcall.
Great tutorial, thank you. Just pointing out for your English - which is generally excellent by the way, "height" is pronounced "H-eye-tuh" and not "h-eye-th" and "three" is pronounced "th-ree" not as "ff-ree". Just some pointers, I know how tough a second or third language can be :)
Thanks for the correction. Much appreciated :) From comments I learned that I was wrong about the pronounciation of "variable", "linear" and texturing "suite"
I feel blessed finding this channel, almost every vid is something that I can't skip. I watch it and learn 🙂 Oskar is a great instructor 100%
I don't know why youtube algorithm does not give Oskar more suggestions, the material is superb
I noticed you packed Rough into Blue. In UE4 DXT compression, the Green channel has the most data and because the Roughness map is the most important, Green is best for it. Also, good idea to drop the Metal map(if it's just a black/white value) and save without the alpha. That way you'll be using DXT1 compression rather than DXT5, which is 2X the memory footprint.
That's right. I moved from 'MOR' to 'MRO' maps in newer tutorials because of that. Thank you for the comment. I marked it, so it should be more visible.
musashidanmcgrath I didn't know UE4 gave more data to the green channel. I've already been using green for roughness out of habit but that's a good tip
Where can I learn more about UE4 DXT compression, and which channels bear the most and least data? I am very interested therein; and would greatly appreciate if you could refer me to a lengthy article or video on this subject, and any other qualities of this type of compression. Many thanks
+Project Verna R,G,B are 5,6,5 bits accordingly. www.sjbrown.co.uk/2006/01/19/dxt-compression-techniques/
Many thanks for quickly replying :D
I'd been looking for a video that vertex blended with a packed texture and this was it, thank you!
Great video! A lot of creators talk and talk without saying anything, I like how you don't waste any time, explaining write away alongside examples
Great to hear that, thanks!
Still relevant to this day. Love your channel!
You, sir, are such a good and kind person.
You've saved my life, I've been searching for hours how to do this, thank you for your service.
I'm glad to know it was clear! Cheers
Great video, helps a lot when you explain the process and why you do certain things.
You explained that you could paint different vertex colours on each instance, I wasnt able to do that when setting up instances from the blueprint editor so i want to know how you're done it.
Also amazing videos man, best UE4 channel out there, seriously good work.
+Jake Dunlop My pleasure! I understand the confusion I made here. I used the word "instance" thinking of "an object's occurrence on the level", not a GPU-instanced clone. The latter can't use individual vertex color, because of their lightweight nature (store only a transformation, ID and a PerInstanceRandom number). I show techniques to deal with it, like global noise textures, in "Good-Looking Randomization" tutorial.
Love your videos keep em coming they are a great help with me and my team. We use them extensively! :D
+Element I/O Great 😊 And what you're working on?
Working on an mmorpg design with survival elements. still in prototype phases but its coming along.
Did anything come of this?
Saw you on reddit. Moore channels like this one please. MOORE TECHART TO THE PEOPLE
Yeah, I'd watch them too :D btw, I'll update the playlist today with things I watched from my previous account ua-cam.com/play/PLF8ktr3i-U4DH3Wh-zJAxsCncINRoi3U4.html
Nice Greentooth reference in there. Polycount represent!
Very good tutorial, very clear and to the point. Congrats and many thanks
Thanks for the comment. I'm especially glad to hear that clarity is OK
Thanks for the Walktrought! would love to see more of this kind of video of tips in Unreal :)
Great work. Very easy to follow. I think I'll try this myself :)
Could somebody please explain to me the difference between painting color or weights?
Dzięki Oskar! Fajnie, że szybko ale też ze szczegółami... Houdini przyzwyczaił mnie do nieskończonego budżetu czasowo poligonowego a teraz musze odświeżyć realtimowe techniki :) Pozdrawiam!
Dzięki! Powodzenia z realtimem! Bywa ciężko, ale jaka satysfakcja, kiedy uzyskasz efekt pomimo ograniczeń. Jest to dodatkowy aspekt kreatywności, często ją też napędzający ;] Do zobaczenia na kanale, discordzie i... kiedyś na WarHUGu
Awesome job on these tutorials. Keep up the good work!
How much tessellation is needed on the mesh for a good result?
Thanks for the great tutorial. This works like a charm!
Thank you for sharing the files, very helpful stuff!!
Sure :) thanks for letting know
Great stuff mate! I subscribed to your channel and can't wait to see more of your work ;) thanks
+Arthurboy777 Thanks for subscribing :)
Great! Just great!
What happens to the vertex data that you paint on the model when the lower LODs switch in?
The engine tries to preserve them. Painting is always at LOD0, transfer is automatic. It actually suprised me that devs implemented this
thank's for the video! is there any way that you can save the blend as a texture/material? and use it to different mesh? thank you!
Yes, there is material baking in UE4 and 5. But of course this bakes it to a specific resolution, while having this on a material allows for tiled textures
@@TechArtAid thank you for your fast answer, I really appreciate it. The idea was that I want to have nice environment walls but with vertex paint, you need a lot of geometry, so I was thinking just to create a high-poly for the vertex paint and then apply the same material to the low poly mesh. Don't know if that I explain correctly
Thank you for your interesting work man!
Fantastic tutorial! Really great! Thankyou!
Thank you, can't wait to try this !!!
:) It has many nice applications. "Water" (reflective material), damaged tiles - oskarswierad.com/maxi/TomorrowTiles.jpg
THIS IS SO AWESOME!!
thanks for the tutorial, will be handy for my project. :) Gave you a little tip on gumroad, wish I could give more. Keep up with your great content!
+isoran I really appreciate it! More content is being prepared, though it will take a while. I want to bring a unique approach as always :)
Excellent tutorial! However, I am having issues packing my roughness, metallic, and AO maps from B2M into the RGB channels in Photoshop/Krita. Anyone know how?
+JUTTMFD Use a solid black color as the background. Then paste your textures as layers. Set their blending modes to Addition (Linear Dodge in PS). Now, you have two ways :) Either go to color adjustment curves and flatten every color except of red/green/blue. Or (the non-destructive way) create solid red, green and blue layers, set their mode to multiply, then assign them to the respecitve texture layers. I can send you a screenshot later if it doesn't make sense ;)
It's working great! Thank you for the swift reply. (I chose the non destructive method) Cheers! ;)
+JUTTMFD :) by the way, I just realized something. Check out the LazySave extension for PS, sold on Gumroad. It has this functionality if I recall correctly
Hello Tech Art Aid, thanks for this awesome video! I am also having issues packing those 3 in PS. Would you mind making a video on it or posting that screenshot? im stuck on the nondestructive way step. here is what i have so far
ibb.co/jZCBZ6
ua-cam.com/video/uWJYmL_msXI/v-deo.html
hope it helps you
How do I do this for terrain
Terrain has a special node, Layer Blend, where you can set Blend Type to Height. Please look for a comment where I explained that
cant find it its like a 2 year old video can you just copy paste it @@TechArtAid
I'd have to spend my time too ;) Google ue4 Layer Blend node
Excellent tutorial. Many thanks!
Nice to hear that! Thanks for letting know
@@TechArtAid Thanks mate! :D
Hello, good tutorial! How can I blend 2 materials? Like an add blending mode I mean, to combine it's information into 1
Thanks! Lerp or HeightLerp node, like in the video
Guys, anyone knows whats going on. I tried several times doing this. But furthest I went is set all up, but I cannot paint white color in R channel, I have to paint pure green in red channel if I want it to blend. I literally did everything he does in video, but cannot paint specific channel itself, I have to paint INVERTED color in order to work?
is it possible to put more than two materials with this method?
Sure! Add more HeightLerps after that. This time use vertex color channel green or blue
@@TechArtAid but can i blend example 10 materials? it does not force to be bound to the green or red channels
Nope, not really
@@TechArtAid THANK YOU
Thank you, very good explanation and example.
+Peter Matejovsky Glad you liked it!
Amazing tutorial, thank you
nice tuto dude ! very usefull and well explained ;)
+Elvira Madigan Thanks! Tutorial about generating UVs coming soon. We'll see if I can explain vector math as easily as this ;)
xDD i wish you luck on this one ^^
i need help?
by doing this technique my fps goes form 120 to 60-75
what is going on?
Hard to guess just by the number :) I recommend my videos about profiling. They will help you find the exact cause of performance problems
@@TechArtAid could you please take a look at
ua-cam.com/video/OIfF-Xei5Os/v-deo.html
imgur.com/gallery/BvDChwG
hopefully you have a solution
Awesome tutorial - thank you for sharing!
Great that it's helpful, thanks for the comment
What if I'm using an alpha texture as My second texture? I would plug it into the alpha lerp to get a graphity like effect, but if I need the alpha for the vertex how do I plug it it?
Hello
Can I ask a question please.
How can I set it up so that I have a BAKED NORMAL +AO applied to the LOWPOLY MODEL so that I can have that BAKED INFORMATION from the EDGES and the HIGHPOLY on the Lowpoly model in UV1and then BLEND a TILLING MATERIAL and a MOSS Material on top of this unique baked information?
Please I would appreciate your help
What if you used your baked texture set instead of bricks here? Doesn't it work?
Thanks for this great explanation. Is it possible to bake the height LERP after you have used it to break up the tiling?
Excellent tutorial! Note: I wonder if you could use a 'clamp' function instead of 'round? Probably works the same either way.
Thanks. You're right I shouldn't use Round here, it's too complex. `Ceil(x-0.5)` would be enough.
Thanks again for this tutorial! very easy to follow. ^_^
Exactly what i needet, thx a lot ^^
You used a depth map to paint the moss. What if I don't have a depth map. How can I generate one from my static mesh ?
For example I am using a rock from the starterContent, it has all the crevices built into the mesh and then on top of that I apply a rock texture and normal map. Using the rock texture normal map (red Channel) is not enough I would also like to get the depth map information of the static mesh. Any ideas how to generate this ?
+mustin jettam You can obtain it from a normal map using Knald, Bitmap2Material or Substance Designer. But you can also paint this map in Photoshop with brushes. It doesn't have to be accurate
Will this work with animated textures? For example, if i had an animated plant texture of ivy blowing in the wind that i wanted to blend with the brick wall.
+Graham With SubUVs? Should work perfectly. You can also try some flow map magic - I mean distorting the UVs of ivy, like in my Stealth Invisiblity tutorial, using several sines of Time as strength (or a noise in a form of a gradient texture).
Great video! But i'm confused a little, what better to use, heightlerp in material, or use material functions and blend between materials in matlayerblend_simple? Sorry, if question is stupid :)
I think they will be similar? With maybe a little better performance from manual blending with HeightLerp, as you can skip some channels (for example metalness). You can easily check, though :) In viewport change Lit to Shader Complexity
( docs.unrealengine.com/en-us/Engine/UI/LevelEditor/Viewports/ViewModes )
perfect .... thanks for your time
Question
can i create this as my master material and then instance it out with any of the two material set as in for example you made this as a combination of wall and moss
what is i want to use iron and also the rust and also this wall and the moss
so what i will do is make one material, instance the texture and connect all the nodes as you have done and then save as a master material and then create two material instances
in instance 1) i will have wall texture and the moss texture AND
in instance 2) i will have iron texture and the rust texture
and then control everything in the instance parameter
is this possible? Just thought about this so i asked because this will save in the material cost and also you can make a new heightlerp material just by making a new instance of the master material
so it's easy to make, less of work to make a new material and easily optimised
Use Texture Sample Parameter nodes instead of just Texture Sample. Then in the content browser right-click the material and Create Material Instance. Is this what you asked about? Cheers
This tuto is great Thank you !!
amazing! you help me a lot!
So this worked for me, up until I bake lighting. It seems like in 4.21, using this method breaks it.
The vertex painting and everything works just fine, but then once you bake the lighting, everything goes straight black except where lights are directly affecting the meshes.
I went back to 4.19 and it worked, so either 4.20 or 4.21 this had some kind of issue. Any ideas? Its driving me up a wall.
Sounds strange. Can you try using a LightmassReplace node in a material, connecting a straight white color to it?
@@TechArtAid How would I use this node? I'm not sure where the output is suppose to go. I've plugged a white vector parameter to the realtime and lightmass inputs.
Yes. White in lightmass and whatever you had to the realtime. Now the output goes to Base Color in material output. The idea is that it changes the output depending whether it's baking light or displaying the realtime viewport.
Edit: I just read that it worked in 4.19. That's not good ;) One idea - try putting these meshes on an new empty scene with default skybox.
@@TechArtAid So I've done that, and now my scene is extremely blown out. It almost looks like I've set the viewport to Unlit.
Huh. No idea, sorry
Hello! what's the MOR card? how to create this card?
It's just a texture. I put 3 grayscale textures into the R, G and B channels, to save memory. They are Metalness, Occlusion and Roughness - M,O,R :) Please find a comment about "channel packing" for instructions.
this is so not working. I have to use multiple after lerp if I want it to work
. WHY?
+Darko Dobrić I don't know. Please download the project and check there
how did you make that you can use one seamless texture on static mesh like that? Thx for help kolego :)
It's a standard mesh, so maybe it's thanks to carefully done UVs? imgur.com/a/qIkA1
I also added a parameter in the material for controlling UV scale. Powodzenia :)
I nie masz erroru, ze uv jest "out of bounds"? :D
+Seba Seba Seba To ma znaczenie tylko dla UV dla lightmapy. Dlatego mam 2 kanały UV: jeden dla tekstury (ten co widzisz) i drugi dla wypalania oświetlenia (faktycznie mieszczący się w obrębie kwadratu). Potrzebujesz wtedy wybrać Lightmap Coordinate Index na 1 (zamiast 0) - docs.unrealengine.com/latest/INT/Engine/Content/Types/StaticMeshes/LightmapUnwrapping/
Rozumiem sprawdzę jak będę miał czas... Uv to trudna rzecz :/
I love this tutorial
;]
This is such a great video. Well done.
Have you been able to apply this technique to landscapes?
Cool :) Yes, it's possible. The HeightLerp node won't be necessary. The functionality is already there in Layer Blend, the node typically used in landscape materials. Just change the blend type (3) to "Height" - docs.unrealengine.com/latest/images/Engine/Landscape/Materials/Landscape_LayerBlend.jpg
I found my issue. I was using the height blend, but I forgot to apply the landscape coords to the height map texture; that's why I couldn't see it. Thank you.
Do you know how to make sharper transitions in layer blend node? Using height maps for blending gives kinda soft transition, which doesnt suit well for gravel/rock textures blending. I've tried clamping height map, which gives shorter blend distance, but that's not what I wish for (maybe I should try to figure out how to clamp height map vertically, not globally?)
+Michał Miłkowski Maybe try a CheapContrast node on the height input
Thanks for the tip, it certainly gave me more control (cheapcontrast -> clamp -> blend input of layer blend node). Journey of blending parameters is still going on, need more control/finetuning, for example, with high contrast on cheapcontrast, it gives single rocks appearing on blending area - similiar to what I wanted, but edges are too harsh, need to blur them a bit. Or that cheapcontrast seems to affect whole painted area (just more profoundly on blending areas), I need to somehow limit the cheapcontrast effect only to blending area, not sure yet how, probably with lerps sampling from height map. Cheers!
This is a beautiful video, thanks!!
each StaticSwitch param node creates a double of the shader? so if I use it 4 times in a shader.. I get essentially 8 shaders to compute? that's madness, why would they put it as a function? oO
+Tzur Hoch What I said is wrong. Actually it's much worse than that. An additional shader to compile is produced for every possible combination of static switches. That's madness squared
Holy smokes.. Good to know, thank you!
What file type are you saving these texture files as ??? and is it done in photoshop ???
Yes, PNG (or TGA or TIF). There was a comment about texture packing (from MusashiDanMcGrath if I recall correctly)
hi do you use displacement map in rocks? or just normal map? thanks
Just normal map. Height map is for HeightLerp. You can get example files to see how it's done
Awesome tut thanks. I do have a question. If I wanted to blend 3 materials but put limits on where on the heightmap of the mesh they can spawn can I do that? Like material 1 is the brick is the base at 0height then material 2 is concrete layer and material 3 is paint always on top of concrete and each of them off have their own heightmap for details. So basically can you like divide the heightmap in zones and limit each material to a height?
First do (height)lerp between brick and concrete, then between the result and paint layer. For each, use a part of the full height range as the mixing factor. First blending should use 0.0 - 0.5 range (remapped to 0-1), second blending 0.5 - 1.0 (again to 0-1). Like here: imgur.com/a/8Unli To remap the ranges, use the Remap node like I show here: ua-cam.com/video/J5LXIApQmzA/v-deo.html
Thank you very much!
Beautiful!
Can this be used to paint landscape textures?
+AnAncient76 In a landscape material it's even simpler - instead of HeightLerp, just use a LayerBlend node with Height blending type in its settings. I answered this already in the comments, so you can find a full answer under another comment :)
I'm new to UE4, so still learning :) I still don't understand many things about material creation.
Can you share your material, i mean the one for landscape?
+AnAncient76 Sure, I do :) please get it for free at gumroad.com/techartaid
Ah, but here the landscape is simple. So it doesn't feature this height blending. There's a comment under this video where I reply to a person with an image screenshot how to do it.
Well i put a wall and start to paint, and it crashes?
This is what i would like to achieve with landscape: i.imgur.com/HHcwrsM.jpg
amazing!
Is there a hotkey you use to increase/decrease the radius of the brush? I've never managed to find it D:
Square brackets [ and ], if I recall correctly ;)
Not on my UE 4.12, apparently :(
Works for me in UE 4.12 on Windows. I had to click on the object first - like, do a first stroke. Then it worked
You're right, I've tried an English keyboard and I can see it working... but no way with the Italian layout. Thanks anyway :)
Quick question about the Height map you used in your image, it looks like its from an entirely different texture from the bricks and the moss, correct?
+David Corzine Yes. It doesn't need to be anything precise (unlike albedo and roughness). It's just whatever gives you the desired result. In this case, I started with a height map that Bitmap2Material generated for me from a bricks photo
Sweet. Thanks for the quick reply.
best youtube channel ever! question... would the heightLerp method be a good idea on mobile? (metal devices)
+Abey Miranda Thanks ;) The biggest cost won't come from computation but from texture sampling. If you can use a small, tiled texture for the 2nd set, then it should be fine. I'm just guessing, though - I don't have experience with UE mobile
Great stuff. Subbed ! :)
Thanks for this :)
Thank you!!!
magnificent
9:40 I believe what you are looking for here is a static switch
That's the point of the eternal debate for or against static switches. They create more permutations of a shader but on the other hand, they save you unnecessary calculations or samplers. I no longer have such a hard opinion about them ;) but still I use them mostly for excluding big features, not for simple settings.
Thank You
So, you're saying in the shader it's more efficient to use a howjsay.com/pronunciation-of-linear interpolation than a basic if-else comparison switch? That's very counter-intuitive.
+Waterboi505 'If' is okay. Not as efficient as in CPU programming, because of nature of branching on the GPU, but still fine for short branches. There's a node for 'if'. You can see how to use it in my Stealth tutorial.
StaticSwitch is for static branching. It splits your shader into separate versions, using disk space and VRAM.
That sounds terrible, thanks for the tips!
As a UE novice, I was excited about this video until the comment related to channel packing that said it has to be done in an external texture editing or 2D graphic program without an explanation or example included. That seems to have stopped me from following along.
Search for "channel packing" on UA-cam. You should be able it easily find a tutorial
A+
doesn't work on 4.18
You mean the example files don't open?
the interface is different in .18
the weak point of this technology is - GPU can't instancing painted meshes. So each painted actor will be new drawrcall. If you delete vertex color from instanced actors - GPU will batched the same meshes it into one drawcall.
So would you say it's better to use material instances with different Mask textures?
Great tutorial, thank you. Just pointing out for your English - which is generally excellent by the way, "height" is pronounced "H-eye-tuh" and not "h-eye-th" and "three" is pronounced "th-ree" not as "ff-ree". Just some pointers, I know how tough a second or third language can be :)
Thanks for the correction. Much appreciated :) From comments I learned that I was wrong about the pronounciation of "variable", "linear" and texturing "suite"
It is comments that also helped me with Spanish, pronunciation is a funny thing! @@TechArtAid
o well, it doesnt work...
It works. The proof is in the downloadable project, right?
Transistion Phase.
you are so fucking coo;;;!!!
Видео хорошее, жалко на английском(
Спасибо! :) Уверена, вы знаете кого-нибудь, кто может помочь в переводе.
Okay not for beginners. He was moving way to fast and sometimes he didn't explain what he did.
awesome ,thanks dude :)