Shading


Leather Shader

The leather shader I developed for Star Wars Outlaws is part of the character cloth shader family. The main goal was to hit a high-fidelity “cinematic” look even during tight close-ups, but without the massive memory cost of unique, high-resolution textures for every single character.

The system essentially shifts the heavy lifting from the textures to the shader logic. By using relatively low-res base textures along with low-res unique control maps and layering micro-details directly in the code, I can ensure the surface remains sharp at any distance. This approach drastically cuts down on texture memory overhead, which is a major win for a game with this many characters and variations.

What’s particularly useful about this setup is the level of control it provides for character and crowd variety on a per-mesh basis. Instead of needing custom bakes for every garment, we drive almost everything through shader properties. An artist simply defines where they want a certain feature using a low-resolution control map, and the shader translates that into high-resolution logic.

This includes everything from base leather colors and roughness to dynamic wear, specific cracks, and leather fade. We can even swap stitch types on the fly. On top of that, there’s a dedicated layer for dirt buildup, allowing us to ground a character in the environment or create distinct looks for a massive crowd using the same underlying asset library.