Hi, Just wanted to show you guys a skin shading system I built a while back in the Unreal Engine 3.0 based on the GPU Gems 3 - Advanced Techniques for Realistic Real-Time Skin Rendering. I implemented most of the effects described in the paper including the multilayered diffusion scattering in skin. Originally the first pass of the shader had all 3-layers as described in the paper, but with experimentation I managed to figure out that 1-layer was sufficient enough to capture the color-bleeding and surface blurring. This also allowed me to cut down code to keep the shader production friendly. Along with the subsurface I also implemented the physically based specular term to better capture the specularity of skin. Hope you guys like.
Nice work, I didn’t actually know UT3 really had such flexibility, they remind me of Maya’s render nodes which I love so dearly - maybe UT3 is really all that everyone tells me it is :D:
Good work on the subsurface scattering effect too, it’s interesting to see how games do it.
:tear: Ohh Snap my balls just got broken LoL! No worries thedour, the screen I just showed is running on an old UE3 build. Even on that build we’ve had six or more characters at a time and never really dealt with any performance issues, but at work we are developing for pc platform also. In my opinion UE3’s shader system is very efficient and optimized as far as the performance I’ve seen. Epic also seems to stay on the ball by continuing this with newer builds. Because on the old build the shader registered at 196, but I’ve been working with it in the latest February Build on the UDK and now it only runs at 127. That is just from jumping to the latest build, I could still also knock out a few effects to cut it down or just replace the physically based specular term with a lesser code generic one etc… Even have the higher code for close up shots and for game play have a simpler one.
This is maybe wandering a bit OT… but I’d be careful about paying too much attention to the instruction count. While it’s useful to check if a shader is doing anything too crazy, the down side is that it’s only loosely related to actual performance. Some instructions are more costly than others in often unexpected ways, and the only way to reliably judge a shader’s performance is to use your chosen platform’s low-level profiling tools.
Also, you’re looking at the figure for static lightmapped surfaces :]. I’d guess the point light count (next one down) is what you’re after.
:nod: Nice insight Tim! I’ve always wondered about which one I should be going with, I’ve had a couple debates with our LD’s. Now finally I have the fire to win the argument. Usually my method of testing has been play testing and stat fps’s alot to make sure my shaders aren’t pushing down the performance. Would be nice to get deeper into it with low-level profiling tools.
DT3D UDK skin shader is a real-time multi-layered skin model implementation in the Unreal 3.x Engine. The shader is based on research from “Efficient Rendering of Human Skin,” implementing most of the effects described in the paper including the multi-layered diffusion scattering in skin. Along with the multi-layered subsurface scattering the shader implements the physically based specular term to better capture the specularity of skin. This is a great shader for the artist that wants to push there characters to that next level. Also can be quite usefull for those artist using the UDK for pre-vis work.