Graphics Reference
In-Depth Information
1.4.6 Alternative BRDF Factoring
There are other possible BRDF factoring approaches when working with the pre-
computed lookup textures. One alternative is to use the angle between normal
and half-vector (
)—
ideal for storing different approximations of the Cook-Torrance model developed
by [Schuler 11].
N · H
) and the angle between view and light vectors (
V · L
1.4.7 Selective Gamma Correction
As discussed earlier, linear lighting is an important aspect of skin shading and
requires an inverse gamma correction of the input albedo textures and a gamma
correction of the output. We use a couple of tricks to speed these steps on mobile
GPUs.
First we use a gamma of 2.0, which allows us to use square (multiplication
with self) and square root operations for compression and decompression .Multi-
plication and square root operations are significantly faster than calculating the
power of 2.2 or 2.4.
Second we do gamma correction only on the most important pixels on the
screen instead of doing it fullscreen as we would on a desktop or console. We
implement the correction explicitly in the pixel shader.
1.4.8 Reflecting Environment
On top of the analytical specular reflections, we use a pre-rendered cube-map for
reflecting light coming from all the surrounding environment. Reflected environ-
ment light is factored by both a Fresnel term and artist-defined reflectivity map
and is mostly used for characteristic rim reflections on the skin.
1.4.9 Scattering for Eyes
Eyes were initially one of our biggest challenges. They seemed to “stick out” of
the character shading. The solution we ended up with is to neglect simulation
of the subsurface scattering inside the eyes. We simply do not render eyes into
the light accumulation buffer. Possible issues are hidden by the typically very
high amount of reflectivity when shading eyes (see Figure 1.3). For close ups, we
added a small amount of parallax offset to model the eye lens refractions.
1.4.10 Skin Level of Detail
To avoid waxy and very flat-looking skin in the distance, the size of the scattering
kernel needs to be decreased according to the distance from the viewer. However,
using very small blur kernels with the accumulation buffer can result in a low-
resolution look. Hence, along with decreasing the effect of blur at a distance,
we also fade into a simpler single pass skin shader. A single pass skin shader
Search WWH ::




Custom Search