The alSurface shader on the Wikihuman data
Based on some of the implementations it was wise for the Digital Human League to test the new shader against the Wikihuman shader developed during the our work on Emily 2.1. As you may know the Wikihuman shader was build based on reverse engineering the data acquired from the Light Stage data at ICT. However, the Digital Human League always knew that a few compromises were made, such as how it used the single scatter map and how the specular was added on top. At the same time, it was fairly simple and clean and meant to be adaptable to any rendering solution.
When we looked at the new alSurface shader we believed that it was well suited for the Light Stage data out of the box. Therefore, we decided to explore how it would treat our current Wikihuman data.
Let us recap the data we get from the Light Stage:
For a description on how this data fits into the Wikihuman shader developed earlier, please refer to this earlier post.
As we are in the middle of developing a new data set, Digital Mike, which is based on a scan of Digital Human League member Mike Seymour, we decided to use it to test the new shader.
Here are some key differences:
Diffuse: The original Wikihuman shader mixed in a pure white lambertian diffuse though the single scatter map. It did this by compensating the “diffuse” map to be darker and more saturated and separated the SSS and diffuse contributions. The alSurface shader uses the same color map for SSS and diffuse lambertian contributions and uses the single scatter map to separate how much of the light is a deep scatter and how much has a single scatter.
Sub Surface Scatter: The Wikihuman shader assumed a single level SSS since the user only had a single map for the overall color. The alSurface shader assumes a three level SSS but, in our use, we only use the diffuse color as a default map and use the default constant colors for each of the SSS levels. Additionally, the alSurfacr shader uses either Diffusion or Directional SSS for the subsurface SSS. We used the Directional SSS in the following exampless
Specular: This area probably has the most change from the Wikihuman shader to the alSurface shader. First off, the Wikihuman shader uses a Phong BRDF primarily driven by the fact that the very high resolution of the displacement map would primarily drive the roughness of the specular map. The alSurface shader only allows for Beckman or GGX as a BRDF which has it’s own micro faceting. Additionally, the alSurface shader has glossy fresnel, which effects the sharpness of the reflections at glancing angles. And last but not least, as we noted earlier, the Wikihuman shader added as opposed to mixed the reflection on top of the SSS and diffuse as to not block their effects. The alSurface shader does not block the diffuse and SSS at the glancing angles while still keeping with preservation of energy.
Based on the renderings you can see that several improvements with the alSurface shader. The overall SSS is more balanced and does not have any extra glows around the nose and lips as we experienced from the older shader. Additionally, we know that the specular is blended correctly through the SSS. While the GGX BRDF insures that we get retro reflection at glancing angles, it is debatable if this is correct since the micro displacement should take care of this on it’s own.
These are early results using a data set that is still very much under development. We are still investigating all the results.
The eyes are temporary as we are working on some extremely high quality eyes.
The hair, eyebrows, and eyelashes have not yet been addressed.