Subsurface Skin Shading of New Characters in Survival Ascension
I have continued to work on the new character models for Survival Ascension over the past few weeks. I've been hard at work building out body morphs for the models and re-architecting the meshes for being driven by the character system I'm using in the game. With that work essentially complete, I have begun the work of importing the first character and rigging it in game.
When you render a character in a game, the biggest factor in the "realism" of the character beyond the general physical likeness to a real person is how the skin renders. Most games use a standard lit shader which renders a rather flat and featureless skin. However, skin is incredibly complex in real life. Not only does it have interesting bumps and patterns which need to be replicated in game for a more realistic rendering, it is also translucent and diffuses light throughout its structure. Much of the color actually comes from the light passing through the skin and reflecting off of things behind the skin (like blood vessels, muscle, etc). Pigmentation of the skin plays a role in how the colors blend as the light diffuses through the skin.
To achieve this complex interaction with light and properly render the complex color profile of real skin, many higher end games now use a Subsurface Scattering Shader. Essentially, the shader is designed to replicate the way light diffuses through the skin and how the colors blend and mix. Survival Ascension uses Unity as the 3D game engine, and the default rendering system in Unity (along with the newer Universal Rendering Pipeline or URP) does not support a native subsurface shading system. The new High Definition Rendering Pipeline (HDRP) does allow for this type of rendering, but it is not compatible with mobile devices or with lower end graphics hardware commonly found on budget PCs and laptops.
While I would like to eventually support an HDRP build of Survival Ascension, for now I am using a custom implementation of a subsurface shader for rendering the skin of characters in game. This shader comes at a hefty performance cost, so there will be an option available to disable this type of skin shading if you are in need of additional performance. However, the shader does provide pretty good results, even in the non-optimized scene view rendering of the models. Check out the skin rendering of the new Evita character below.
