While my car is coming along nicely, I have an update on the detail layer that I was working on a few weeks ago. I asked for some help and found the “right” way to do what I was trying to do. Instead of doing odd workarounds with Unity’s Standard shader, the right way to go about a detail mask is with a custom built substance shader. Luckily, a shader that places a texture on top of a color is pretty simple, and served as a great introduction to substance designer for me.
This is the tree that I made with the help of one of my instructors, Justin.
This tree takes a color, a texture, and a mask as parameters. blends the color and texture into one color map, and then sends the mask to blend with a secondary mask. These things then combine together in the final node, to make a masked and combined albedo. Something important to note, however, is the load time. This entire tree is adding about ~14ms of load time to the game. While this isn’t much, if I had multiple versions of this texture, and it was on lots of objects, it could add up. But it’s not for nothing.
The final result was basically a much better version of what I was trying to do with Unitys shader. The downside is slightly longer loading, where as Unity’s standard shader is undoubtedly faster, but I think that an argument for using the substance method could definitely be made. Luckily, while texturing the object the workflow that you use doesn’t really change at all, this just seems to be the more advanced version of implementing to the game engine. Compared to the way I did this in my previous post, there is no bleed through.
Where as the way that I did it previously did have a pretty significant amount of bleed through. I’m not sure if there’s some way around this or not using Unity’s shader, but it seems the substance shader is the superior option if you aren’t worried about min maxing load times. Either way, this seems like a great method for making a variance of asserts without taking up more texture space.