Advanced Character Rendering with Unity URP
C#, HLSL, Compute Shader
To achieve high fidelity character rendering, we implement multiple rendering techniques in Universal Render Pipeline, including a highly optimized screen-space subsurface scattering render feature, specialized PBR skin shader, and complicated eye shader that simulates refractions. All of these features are highly performance-optimized to support mobile and VR platforms.
Screen-Space Subsurface Scattering
To render the subsurface scattering effect, I developed a Custom Render Feature to extend the Universal Render Pipeline. The specular and diffuse light contributions of the skin are stored separately in two textures and passed to the next render pass. A Compute Shader is implemented to calculate the final blurry scattered image using Burley’s normalized diffusion model.
We use the Diffusion Profile to control the subsurface scattering. I developed the supporting shader GUI and profile management system.
Physically Based Skin Shading
To shade the complicated skin structure, I implemented multiple shading features in the skin shader. Including using a specialized BRDF that has two specular lobes, detail maps that blends Albedo and Normal, color-bleeding AO, using powered AO as SO, etc.
Physically Based Eye Shading
In the eye shader, I implemented parallax mapping to simulate the refraction effect. AO and SO maps are supported to mimic the natural human structure.
GUI Development
I built the GUI for the render feature and shaders. They are very user-friendly, we used to diffusion profile to manage the subsurface scattering effect. Diffusion profile: Defines how far light travels below the surface. This affects the color bleeding and blurring behavior of Subsurface Scattering, as well as the color tint of Transmission.