Submind YouTube summaries
Thumbnail for Your first rusted diamond plate - Material Maker 1.6 tutorial

Your first rusted diamond plate - Material Maker 1.6 tutorial

Watch on YouTube

Video summary

In this tutorial, the creator demonstrates how to procedurally generate a realistic diamond plate texture by first establishing a geometric base using shape nodes and normal maps. The process begins with creating a classic diamond pattern through tiling and adjusting parameters like resolution and smoothing to refine the edges. A key technical step involves calculating surface curvature and occlusion to understand which parts of the geometry are convex, sticking out, or concave, protected by surrounding elements. By comparing different nodes such as smooth curvature, occlusion, and HBAO (Horizon-Based Ambient Occlusion), the creator learns how to isolate specific areas like crevices versus exposed peaks, which is essential for applying realistic wear and tear that mimics real-world physics rather than a uniform distribution. The core of the tutorial focuses on simulating rust and corrosion by leveraging these geometric insights to mask where damage should occur naturally. Instead of applying rust uniformly, the creator uses the curvature and occlusion data to concentrate rust in the darker, sheltered crevices while keeping the exposed tops cleaner, as moisture and dirt accumulate more easily in protected areas. To achieve a convincing look, various noise types including Perlin, Simplex, and Voronoi are blended using fractal brownian motion (FBM) to create grainy, organic textures. The creator experiments with different blending modes like overlay, screen, and lighten to ensure the rust pattern respects the underlying diamond geometry without destroying the visual clarity of the plate's shape. Finally, the texture is enhanced by adding scratches that tell a story of usage and age, further deepening the realism. Shallow scratches are introduced to affect roughness and metallic properties, representing areas where protective coatings have been worn away, while deeper dents are created using difference nodes to simulate heavy impacts like dropped slag. These physical deformations are crucial because they allow secondary effects, such as rust accumulation inside dents, to occur naturally based on the new geometry. The video concludes with a highly detailed, weathered floor texture that combines rust, scratches, and dents into a cohesive scene, showcasing the power of procedural generation to create complex, believable materials from simple geometric inputs.
Read the full video transcript
Hi, I'm Anfa. Welcome to this material maker tutorial. Today we're going to continue with our brick texture. And as I promised in the first video, we're going to change the underlying brick structure and see what we can do. So, let's zoom out a bit and get back to our bricks. Now, to easily reroute these outputs, I'm going to insert a reroute node. So, I'm going to hold shift and right click on both of them. And now I'm going to find some other bricks. Bricks. And we have different things. For example, uneven bricks. Now, an interesting thing that we can do is there is something called a switch node. Right click, switch. And we can actually use the switch node to dynamically switch between two two pairs of different inputs. So input A and input B1. So that would be our existing brick. And let's connect it here. And output A2 and B2. Now, if I flip the switch, um, if I flip the switch, you can see we get uneven bricks. Now, we might want to adjust the mortar and the bevel and around the corners a bit, increase the randomness, etc. We can also randomize the random seed. basically minimum size. Oh yeah, that's cool. Wow, I love that iterations. Now that starts to look like a city. Um, I think we need to greatly decrease mortar and bevel if we want even rounding if we want this to work. Okay, that's too much. Right, we have our uneven bricks. This would work for some kind of pavement, but well, the grouds seem to be too deep for a pavement really. We would stumble upon something like that and fall. So, not the best. Uh, I think we would have to greatly reduce the amount of spaces between our bricks and maybe lower the depth so that it doesn't look like it's such a deep thing. No, now this looks like a pavement. Um yeah. So this is the power of being procedural. We can replace the the initial inputs and everything else adapts. That's very very powerful. Okay, we can try and work on this further or we can make something new. I think I make something new. This was just um to finish up the previous video. So, I'm going to create a new file. CtrlN. And what can we make now? Well, we can make a very classic thing, which is a diamond plate. So, we want to make some steel. I'm going to make the metallic to one and roughness decrease roughness. So this is our basic thing. Now maybe there is a pattern for that diamond plate. No plate. No pattern. Maybe we can find some kind of diamond plate pattern. Oh wait, look. Mesh. That is exactly what we want. Uh diagonal. Yes, please. Shape one, shape two, input. Interesting. Uh, let's go and find a pattern. No, sorry. Let's use this thing, a shape. Polygon. Okay, let's decrease the size, I guess. How does this work? Tiling. Okay. Um, okay. Hey, we can do something like that. Interesting. Well, that's cool. But we're going to use this diamond shape. Okay. So, in this video, we're going to learn about curvature and do some rustiness and scratches maybe. Let's see. Well, we we'll see how long that does it take. So our first thing, this is our diamond plate base line. So let's uh add a normal map node. Connect it to our output. I'm going to change the output resolution to 1024. Okay, that doesn't look very good. Honestly, it's kind of crap. So I think what we need to do is clamp this um so that we don't have this overlap between different things because it seems like Well, doesn't Yeah, it's not right. Okay, let's do remap. Okay, so remap is a node that well, it remaps. Now, what it does by default is it remaps a normalized float input and normalized means it's the values are between zero and one. and it turns it into uh it t it turns the range to a negative one to one. So if I turn this to zero now there is no change between the two. What we'd like to do what I would like to do is actually yes offset this and I want to clamp it. So I'm going to use math and use clamp and I'm adding zero. So nothing really. I'm just using this to clamp. And look, just doing this creates our diamond PL pattern. What I like to do is round off the top edges a little bit. So I'm going to increase the max. See if I can clamp the tops as well. Okay. And I need to decrease the low. All right. And like to round this off a little bit. So maybe I'm going to turn this into a smooth step now. Maybe less. You can see we can tweak this quite a bit. And the smooth step makes it so it's a little less sharp. But if I say decrease the the strength of the normal map, that's even better. Okay, that's nice. But it looks kind of sparse. I think we need to increase the density. Okay, let's reset this view. And I'm going to change it so it's not tiling. So, not repeat, but clamp. Okay, now we see how much texture do we actually get in our 1024x 1024 pixels. I think that's a good amount. Okay. So now what we'd like to do, what I'd like to do is calculate the curvature of this. A good way to calculate curvature is of course using the curvature nodes. And we have two smooth curvature and smooth curvature too. I will use smooth curvature too because it gives us more control. So I'm going to connect this thing and I will zoom right in. Mhm. I'm going to reduce the radius. Um yeah, interesting. There is some ringing, but if I increase the strength, uh by ringing, I mean there is a black point here, but there is a white edge here. So, it seems like it's bouncing back. Bouncing back. So, I'm going to decrease the strength to hopefully cut back on the ringing a bit. There's quality 16. What if we just decrease it? Okay, now we see why the ringing happens, I think. Okay, we do need to increase the this quality. That should be enough. All right. So, what this tells us is which parts of the height map, because this is a height map, which parts of the height map are sticking out and which are sticking in. So which parts are convex like the sharp edges here the top edges of our uh diamond shapes and which are concave which means they are um poking inwards they're protected or surrounded by other things. Now another way we could extract something similar and that is find out where which parts are kind of in the shadow is by using occlusion. So let's use occlusion and see what it does for us and how it compares. Okay, looks like I need to increase the strength. I'm going to increase it much more. Okay. Quality we need a bit more. All right. So now what this looks is it this is is a bit similar but the flat surface is not middle gray like here because a flat surface has no curvature. And so it's the curvature is zero. So it's using the neutral value 0.5. Things that are poking out are whiter, white, brighter, and things that are poking in are darker. Now, the occlusion node gives us only the darker parts, but it doesn't have this ringing, which is something I like. So, I think I will combine the two. Now, there is yet another one which is HBAO. This is a a shortcut for horizonbased ambient occlusion. And what this note does is kind of like path tracing or ray marching. I don't know. It is using a determin no sorry a stochastic uh process to to find what ed what points are oluded and we can increase the quality and we can actually crank the quality way up. Uh well that's is if you actually type a number. Now, this is even nicer because it gives us partial occlusion of the sides. So, I like that. I increase the resolution to two times what we have in our output because this node kind of gives a noisy blurry result. If you use the uh same resolution with occlusion here, we can actually go lower. It doesn't matter that much. I think it's actually really it's it's very sharp. Okay, so we have three different things. Now, why do I even try to find this out? Well, we are going to add wear and tear to this because a diamond plate like this is pretty boring. It's too perfect. Nothing looks like this in real life. You have scratches, you have dirt, you have rust, you have um some grime that you know just accumulated dirt, water that flew here and like corroded parts of that. And the thing is that this kind of wear and tear or how we could call it distress is not distributing uniformly across surfaces. It usually occurs in certain parts of this. So for example, if I have this curvature map, then the bright parts are more prone to being scratched because they are poking out. The dark parts are less common to being less less likely to be scratched or dented because they're protected by things around them. They are shielded somewhat. However, the parts that are in the dark are actually more likely to accumulate dust and rust because there's going to be um water that is not going to evaporate as quickly because there it's a it's in a crevice. There's going to be more dirt because it's the surface is occluded. So, it's less likely to be wiped off, wiped away. Even if you try to mop this the the floor, some dirt, some some moisture is going to resid keep stay in this in these crevices and will corrode your plates and stuff. So we can use this information about the geometry of our height map to wear it down in a way that is closer to reality than if we just applied it uniformly. And well, we'll first apply our wear and tear uniformly and then we will mask it out based on the curvature and the occlusion of our base pattern. And you'll see what happens and how what the difference that does it make. So let's go ahead and create uh a mix a blend node. And I'm going to blend colors so uniform. My diamond plate is going to be a bit of a darker thing with a tiny tiny hint of blue cuz it's going to be steel or aluminum. Actually, we could do metal. And we could take uh some values from this. So, let's go with uh iron. Iron. This is going to be our color. Now, I need a color of rust cuz that's what I'm going to do first. And well, rust is kind of well, it's an iron oxide, so it's a bit of a brownish brownie reddish thing. Something like that, let's say. Okay. Now, rust doesn't usually accumulate fully. um uniformly. So, we do need some noise because otherwise it's going to be just like this, which is kind of nah. I'm also going to um actually the new version of multi maker has something called portals or aperture. Uh portals aperture. Yeah. And so we can have apertures. We can have a multiple. It's kind of like a reroute node, but it's uh doesn't clog the view as much. So, I'm going to actually Whoa, sorry. Uh I'm going to actually use first I'm going to use an FPM noise. So, we can click here. I'm going to connect it to the aperture. And another thing I want to do is colorize. Actually, I'm going to do contrast. Brightness contrast. So here, let's say that what is white, what is bright on this is going to be our rusty thing and what is dark is going to be our clean thing. So I want to actually invert this because what we're trying to set here is the metalness is the metallic map. So rust is non-metallic. Now I'm going to copy this contrast and put it here. But I'm just going to reset this. And I'm going to actually increase the contrast. Let's go for eight. Right. So you can see now part of our plate is rusty and non metallic. That is correct. It should also be more rough. So I'm going to duplicate this contrast node again. And let's see. So rust is white, metal is black. I think I'm going to decrease the contrast a little bit because I want my diamond plate baseline to also be a bit rough. So, I'll just connect it to the roughness. And it seems I got it wrong. You can see that our metal parts are more diffused, rough, and our This looks like a rough diamond plate that is splattered with ketchup or some other liquid. So, I'm going to invert the contrast. Okay. And that looks better. So, our rust is actually rough. And maybe it's too rough. No, it's okay. Rust is rough. Now, another thing I want to do is add some grainy noise to the rust part so we can show that it is um rusty. I'm going to copy this aperture out. And what I'm going to do is add a blend node. And I'm going to generate another noise. Uh so let's go FPM frequency. Let's go up. And now this is normal. So it will overwrite our our texture. And so you can see that our our rust is kind of grainy, but we are losing the diamond plate pattern. So I need to tweak two things. First I want to tweak the frequency or scale of the noise. So the grain is much higher frequency. That looks much better. And second thing I want to change the blending mode because if I look at this you can see that well our diamond pattern disappears here and I don't want that. So let's change this to overlay. Okay. So our diamond pattern is there still but we have some rusty grimy um dilation happening the I mean the rust is like expanding you know now it's not perfect because part of our noise is being clamped down I think by the normal map node. So what we could do is instead of overlay we could multiply we could apply to a screen so that it's always brighter. Now screen is a little bit like additive only that screen is kind of sort of smoothing the highlights I think but we could do additive and we could also maybe tone it down a bit. Also I think I would increase the frequency even more. Um what we can do is increase the iterations or decrease them first. So as you can see iterations is how many times do we take the frequent the fractal brownian motion. If I change this to four and four you can see we have four values in each axis. One 2 3 4 and then it repeats to the same thing. And again 1 2 3 4. And the fifth one is looping back here. So if I have one that means it's the same color. If I have two that means one two and repeating again one one two and again repeating one. Now iterations. If I do two iterations you can see now we have a blend of our one two again one and 1 2 3 4 and again four. So it multiplies our uh size by two that's the lacunarity um factor and it blends it in by a factor of 0.5 which is persistence. So now if I do three we have three layers of FBM four layers five layers etc. Now if I increase the persistence, it's going to give more power to the higher frequency versions. So if I increase the persistence to ridiculous values, we only see the last iteration. So if I increase this, you can see we're only seeing the last iteration. So 10, we don't have any of the low frequency components, which is what we might want. I'm going to do persistence of one. So, we still have some of the low frequency content. And now we can increase the bass frequency to Oh, sorry. If I right click, you can actually open expression editor. Uh, but we're going to expressions are Let's not get into that just yet. That's that's an advanced topic. Let's not jump the gun. So, I'm going to increase the scale to 32 by 32. And you can see if I even remove persistence, that's already this is our base frequency. So yeah, this is nice and rough. I like that. Maybe it's a bit too uniform. We could actually reduce the persistence a little bit to get a little bit more low frequency content. Okay, now you can tell that this noise is kind of weird and blocky and we can change the type of noise. There's multiple types of noise. You can try perin. Perlin is smoother. If we disable, if we decrease persistence, you can see that Perllin has like these small blobs and value noise is blocks. There's also simplex noise that's a different algorithm and you can see it's at the same scale. It's higher frequency. Simplex is higher frequency than than parallel noise. However, I'm not sure of simplex noise because it looks like it's kind of repeating itself. Perilin is also kind of but less so. Now noise I like most is called voron noise because it has the most interesting look. It's the most non it looks the most natural to me. So I really like voron noise. Now all of these noises can also be tweaked with the offset parameter. The offset parameter um is like a imagine that this is a slice of a three-dimensional cube of noise and offset is shifting our Zcoordinate. So we are scanning through this cube of noise. Now what is interesting is for example if we duplicate the noise I can change the frequency and we put it into the offset and now one noise is controlling the zcoordinate of another noise scanning this cube of noise. So we get a bit more interesting patterns. Now this slider is not active when anything is connected here. But this creates some interesting things like you know it's not just these blocks. Still value noise is a little bit blocky. So we can use perin uh or maybe use simplex on this thing. And you see noises different noises merged together give our different lizards. This looks kind of like a liquid or like some kind of growth. I don't know. Let's increase the persistence of our of our final noise. And well, this is our rust pattern. Now, I'm don't not a fan of this exact pattern. Let's get to our FBM noise that is providing us with a information of where does our rust happens. I'm going to increase the scale to maybe five by five. And I'm going to copy the seed. And so we can go back and just randomize a bit. Okay, I already like this better. Now maybe I need to decrease the contrast a little bit cuz this seems like the no there's just the rust is starting too abruptly. Okay, another thing I see, another problem is that even in places where the rust barely barely is there, we already have a lot of bumpiness. That's not what we want. So, I'm going to add a math node because this is our this is our height map which we're converting to a normal map here. So what I want to do is modify this mask and I want to insert a math node here. So I'm going to connect the math nodes output here to to have it insert. And now what I can do is switch this to power. Now the power is neutral at one because that's the input to the power of one which equals the p the input. Now watch what happens when I change this to two. You see that? Let's go back to one and two. Our spots that are darker than bright than white are getting more dark. Now, why is that? Well, if a value here of any pixel, if a value here is less than one, that means that value times itself, which is what power of two gives is still clo farther away from one. So basically 0.5 *.5 equals 255. This is what power uh function does to a normalized float input. That's why we it's very important that you understand what is the range of values in your input because this is a normalized input. I can say okay I want higher power and now everything that isn't bright white is going to be less of if of it it's going to be diminished. And this gives me the effect that I want, which is only the parts that are really rusty become bumpy, which is what we observe in the real world usually. Now, another thing I can think of is that what is kind of strange is that this rust should kind of overgrow the the diamonds because it looks like it's so thick that it overgrows them. So, what I'm going to change here is the editive mode. I'm going to switch it to lighten. That might be a bit subtle. So, let's zoom in, stop the rotation, and look very very closely. So, let's even blend it more so we can see this um better. Now look at the difference between this part and this part and we can correspond it here. Okay, that's I don't have so much zooming precision but same thing here. Here is a clean diamond more or less and here is a overgrown with rust diamond. If I change this to screen that's kind of between honestly that's interesting. If I switch it to additive, you can see that our diamond is entirely here. We can see the small peak here. We can see all the ramp. If we switch to lighten, you can see that this thing shrunk as this did as did this thing. And that is because the lighten mode is basically a max operation. So filter max. If I reroute the inputs here. Oh wait, actually I should reroute this input. Now the the value max value is um yeah the max function is taking the highest of two inputs. It's not merging anything. It's deciding which one to use. Lighten seems to be a bit more subtle about this. Um, but that's because we're also using this noise. So, if I didn't use the noise and used uniform, I'm going to go grayscale and just one. We should get exactly the same result. So, lighten and What is this? It's a diamond plate. Huh? It's not the same. That's interesting. So, lighten seems to be a bit smoother still. Well, play around with the mixing modes and you can discover some interesting things. Uh, I'm going to again connect our noise. Now, hard mix doesn't seem to be doing our us any favors. I'm going to use lighten again. And so this looks like our uh rust is overtaking the diamond shape. Now, maybe that's not what you want. We're going to cut down on the amount of rust in a moment when we add a mask, but this is our baseline. Okay, this isn't the best rusty diamond plate you've ever seen, but this is your first one. But it's it's already you know conveying the message. Okay. Now our mask is this. It has no correlation with the underlying geometry which is kind of crap. So, I'm going to take this aperture input portal uh and I'm going to use our wh our curvature and blend that with our mask in different ways. We'll have some experimentation. Okay, now it's going to blend this default gradient. Let's not do that curvature. Okay, so we want rust to be in the crevices. So I would invert this. I'm going to connect drop it here and do filter invert. Let's click. Yeah, that's great. So now the top of the diamonds are black and the crevices near them are bright. Let's do that. And now I'm going to just blend between that. Now look, let's switch this to overlay. And just look how much better this looks like. How much better this works. We actually have rust in the crevices and less rust on the tops. Um, this is a bit too extreme, I think, but a little bit of it does wonders. Okay, let's add another layer. That's our curvature occlusion. Let's invert this one, too. Connect it here. I'm going to select all of these and move them to the left so we have a better view of what's going on here. I could again do overlay Now, because most of this is black, it's going to greatly reduce the amount of the rust that is not in the crevices, which honestly I'm okay with. I think that's okay. Now, the cool thing is because the blend mode provides us with mask inputs, we can add some extra noise in here to make things more interesting. So, let's go and do that. I'm going to enter. Enter. I'm going to add another FBM node and I'm going to switch it to Voronoise, my favorite kind of noise. And let's do a high frequency. So, let's go maybe 48 by 48. Let's connect this to the opacity and see what happens. Neat. That's that seems a bit more organic now. I think it's a bit too selective. So maybe I'll dial this back a bit. It's not It's a little bit. It's a bit too much. Should be a bit more uniform, I think. Well, okay. Let's see what have we with our HPIO. Okay. Same deal. We can invert that. Add a new input to our blend node. Click here. Uhhuh. Let's go overlay. And it further decreases the amount of rust we have in non-luded areas. Okay. So this is our rust. We are 35 minutes in. So we can still do something more. Maybe some scratches. So the basic basic thing is that roughness of surfaces varies because parts that are oluded are getting less contact with other objects in the world. So if we want to go with scratches, well we can do right click scratches and material maker provides us with this kind of node that generates this pattern. Now I think I need to reduce the width quite a lot and the length as well. Maybe increase reduce the winess. Increase randomness. Add more layers. More layer. Okay, maybe that's too much layers. Okay, that's let's try that. So now we can add scratches as part of our rust mask. That would mean we will have scratches. We have more rust where scratches are. Let's just plug this in and look. Okay, that looks like someone dropped a bunch of rusty needles on top of the floor. That's weird. But if we just do maybe screen still. Oh, it's because we're also using this for in our normal map. Well, that's going to look weird. I mean, with a super super low amount so that we don't see it on the normal map. That actually looks cool because you can see there's a tiny tiny bit of this. Yeah, but the fact that it's be it's visible on the normal map. No, I don't like that. That's uh let's disconnect that. And we can right click here and select the number of inputs. So, we can reduce it to three. That's going to remove the extra channel ends. Okay. So, we want to introduce our scratches after we apply our normal map or at least not connected here. So, let's maybe do something interesting with this. Well, um we can add another blend mode here. Blend mode. Blend node. connect this here to our roughness and to our metalleness and roughness. Where's our scratches? There it is is and connect scratches here. Now, our scratches are not taken into account with the normal map, just the other things. Okay, so we can add them in and they add some rust. Now, why would that make sense in the real world? Well, because steel is steel is uh suspect to corrosion. So, um susceptible to corrosion. So, you generally try to protect steel with something that will help keep the water away, water and salt to make it not develop uh corrosion. Well, that something is usually either paint or some kind of coat. So, for example, this diamond plate because it looks like it's metal, it's probably coated with some other kind of metal uh or some oxide layer. But when you scratch that oxide layer or that maybe it's zinc, zinc plating is is a common thing. Uh so zinc plating creates some interesting patterns which we could explore later. maybe in a different video. And so when you scratch uh the surface of this diamond plate, you remove that protective coating and so you make it easier for rust to corrode it because well there's a a bit of a thinner thinner uh surface. So we can make our scratches this way. Now, it would make sense to have scratches on the bumpy paintings and not have them in the crevices cuz like the crevices are protected cuz there's like things they're covering. So, I'm going to use our age HBAO. I'm going to drag it here into a math node because I want to in I'm going to just change the gamma on this. So, I'm going to use power and I'm going to use well one is um neutral, two darkens the dark things. I could go with a four. And now I can invert this. No, wait. Actually, no, don't invert. This is good. This is good. This is where the scratches can be. So now here we are merging in the scratches. Let's move this up and make it our opacity mask. Let's see what happens. Okay, we get less scratchy in the crevices and still scratchy on the flat parts and on the tops. That's that makes sense. One thing I don't like is that our rust seems to be really really um blooming in the corners. looks like a mold or something. I think that's a bit much. So, um I think I'm going to lay off this to maybe 0 255. Um now that we could have a little bit more.5. Uh okay, let's go with 04. All right, that's better. Cool. So, we have some scratches. Now, these are u thin or rather thin. These are shallow scratches. they don't show up on the normal map, but we can have some deeper scratches. Um, deeper scratches that would show on the normal map. Now, to do that, we need to kind of remap our normal map. Sorry, our height map because our height map goes from pure black to pure white. Um, we need to offset that. So, we're going to actually use a Well, there's a then there's another node that you can use. It's called tones map. Um, it's a different node from remap. Remap only takes float input, so one channel grayscale to map tones. Map takes color input, so RGB. And it also defaults to not changing anything. It has a bit of a different way. So, input output minimum. So, we're remapping the input minimum to be somewhere here. Let's go here. That should not change much about our look other than decrease the depth of our normal map a little bit, but should be pretty much invisible. Let's switch this to zero. You can see there is not that much difference. Okay, let's go one, two. It's not dramatic. So what we can do now is blend in something that will like create actual dents in our in our surface. So let's create scratches again. And this time they're going to be deep scratches. I'm going to reduce the layers to one. Maybe increase winess. I'll decrease the length. randomness angle. Okay, I want to randomize this further. And also, I don't like this quite regular. So, I'm going to create some noise. Mhm. Now, I'm going to Oh, if we right click, we get an a preview on this. Interesting. That's cool. So, I'm going to click and drag to a blend. I'm going to click and drag here. So, it's applying to everything. Uh, I'm going to turn this down zero. So, scratches. And I'm going to use some noise as our mask for the scratches. Now, this is white. The scratches are white are bright on dark and I would like to um make these dents. So, okay, I'm going to first switch to add so you can see what happens. So now we can add our scratches and they will look like someone dropped some hot slag or like there was like melted wire dropped on this or something. This is really weird. Um, so first thing is I'm going to change the noise pattern to be more high frequency. Okay, I'm going to decrease the persistence so it's a bit lower frequency. Um, I think I want to increase the contrast honestly. So, I'm going to go with contrast to increase the contrast, please. Maybe even more. Yeah, I really want to chop these things. And I'm going to lower the height. Okay, that makes that looks cool. I mean, this this now looks like someone was welding and dropped some hot slag on this. But well, we'll not want to don't want to be additive. We want to be subtractive. So, where is subtraction? Well, we don't have subtraction. We have difference. And that should be the same. So now we have deep dents. Something heavy fell on the floor and make a dent. Made a dent. And honestly that looks pretty cool. And because we're doing this upstream, all of our other nodes like HPAO, occlusion, and smooth curvature, they all take note of these dents. And so we have natural things like rust occurring inside of a dent, which makes sense because there's going to be more moisture in a crevice, etc. So this is our very dented floor. I like how this thing looks. Yeah. Okay. I think uh I think we'll call it a day cuz we're approaching 50 minutes and I don't want to go as long. So this is our final result. It's a nice little rusty floor. So yeah, thanks for watching and I'll see you in the next video. Take care.