I've just updated the shader page of my web site with a new HLSL skin shader for the 3ds Max viewport. This shader simulates sub-surface scattering by blurring the diffuse lighting. It's very similar to the shader used by ATI on the Ruby model. Here's a screen shot of the Max viewport:
(The face model and diffuse texture shown here are by Bobo.)
The shader also supports normal mapping, three light sources, a specular color map, and a glossiness map. There are lots of controls for getting just the skin look that you want.
You can download the shader and learn more details on my web site:
Ben's Shader Page
Give it a try and let me know what you think!
Replies
Great work! Thanks so much!
The biggest drawback I noticed was the UV channel 3 thing and how that creates bad seams. I'm assuming you're creating some sort of lightmap using that channel? The only thing that bugs me is that I guess if you need to have a full head with SSS you're going to have a bad seam somewhere no matter what right?
The shader works by rendering the model's diffuse lighting in UV space, then blurring it, and then using that blurred render as a texture. I'm using the unwrap in channel 3 as the UV space since it requires that you not mirror or overlap anything. That way you can mirror and overlap all you want for the diffuse and normal maps - which use channel one - and then put a different unwrap in map channel three with no mirroring or overlapping.
It is true that you'll have to have a seam somewhere and that is definatly a drawback. For a lot of models you can just hide them, but for some it's not possible - so you get a pretty ugly black line on your model. I know that there is a way to code it so that the seams don't happen, because they talk about it in the ATi paper on the topic. I just haven't figured out how to implement it yet. If anybody on here knows something about shader writing and wants to give me a hand with it, I'd love to hear from you.
respect