Graphics Reference
In-Depth Information
OpenGL ES2.0 and varying performance can be expected in the case of OpenGL
ES3.0 depending on the device.
However, we can be smart and gamma correct only when it is absolutely
necessary, i.e., only for skin pixels. The rest of scene geometry can be shaded
without gamma correction.
We expect this optimization to be unnecessary in the relatively close future
when OpenGL ES3.0 takes over and performance differences between GPU fam-
ilies become smaller.
1.4 Implementation
1.4.1 Screen-Space Light Accumulation Buffer
Our approach to subsurface scattering is to use a temporary low-resolution screen-
space buffer where we accumulate all incoming light, both diffuse and ambient
(see Figure 1.1). By default we use quarter resolution of the screen for the light
accumulation buffer.
We start by rendering all skin shaded characters in the scene, evaluating
incoming light and storing results in the buffer. Note that we want to store the
light as it hits the surface and disregard albedo of the skin at this step. We mark
covered pixels with alpha values to distinguish them from the background for
further use in the blur step.
Precomputed 2D
Lookup Texture
(Factored BRDF)
1st Step
Diffuse and Ambient lighting
3rd Step
Subsurface Scattering +
Specular + Fresnel + Reflections
Screen-Space Light
Accumulation Buffer
Frame Buffer
2nd Step
Blur (Subsurface Scattering)
Figure 1.1. Block diagram of skin shading steps.
 
Search WWH ::




Custom Search