Need Help Creating a True Sating Shader

Hello there ladies and gents.

I’ve been trying to get this to work for some time, and have been tearing my hair out over it. It’s just refusing to go anywhere.

It doesn’t help that this is more or less the first time I’ve actually made the switch to cycles, so you know, ambitious lighting project is the way to go.

Anyway. Here’s one part of the shader. It’s just been refusing to work. I’ve tried lots of versions, this is the current one. And it’s sucking. Pink is for WIP reasons.


Those observant peoples of you will notice that there is a whole bunch of unnattached stuff. This is what that looks like:


That’s the highlights layer. I can’t mix it on top of the shader chain, and I’ve no idea how to do that properly. A standard opacity mix (the current version) simply does not do as the blacks and whites ruin the colour rather than highlighting it.

This is the target:


What I’ve noted:

Satin is a complex material (duh!). It has extremely sharp highlights and strong contrast in shadow regions. The highlights operate on a very narrow band at the tops of folds and have a sharp falloff. This can be approximated with anisotropic filtering, but the multiple colour layers cause this to breakdown when you get to the colour level.

The threads highlight very brightly in satin. So far I’ve found no way to procedurally create a thread count like this. The threads also highlight in isolation, so there’s a randomised speckle pattern across the material.

The colours are bright and vibrant and tend to pearlesce (meaning they blend between different colours.). In this case it’s between aqua blue, yellow green (tree green) and deep green (shadows).

The clincher is that Satin has such bright reflections that it bounces light onto itself. But doesn’t really have much in the way of subsurface scattering.

It handles only superficially like velvet. (I did make a nice procedural velvet material, which I’ll share when I have time.)

Anyway, I’d really like some help, particularly with controlling light falloff and direction in the specular highlights, and properly layering shader chains - that’s the huge downside to cycles atm. Those mix shaders just aren’t that powerful for mixing stuff together.

I’m trying to make this as procedural as possible.

This is for a professional project, so I’d like to get it done as soon as possible, time is of the essence!

Cheers all!