Shadow Terminators
Normal/bump mapping can be used to add surface detail missing from the base geometry. However, this results in a shading
normal Ns
that deviates from the true geometric normal Ng
of the surface. This can cause harsh shadow terminator
effects, as seen below.
Left: no normal mapping applied, no harsh terminators, right: normal mapping applied, causing harsh terminators
Visualization of the harsh shadow terminator. The x-axis represents the angle (in radians) between Ns
and Ng
, and the
y-axis represents the angle (in radians) between Ns
and the incoming light direction wi
. The purple color represents
no visibility, while the yellow color represents full visibility.
In order to mitigate these harsh termination effects, we provide a scene setting called shadow_terminator_fix that will soften the shadow terminators. There are four different options we provide, and they all have their tradeoffs.
Targeted Shadow Terminator
This terminator preserves the shape of the lobe. This means it maintains its highlights, while also softening the shadow terminators.
Left: harsh terminator, right: targeted terminator
Left: harsh terminator, right: targeted terminator
You will see above that the shadow termination edge has softened, while also maintaining the existing visibility hemisphere.
Cosine Terminator
This terminator is based on Chang et al, “Taming the Shadow Terminator”. It has no effect on the unoccluded part of the hemisphere, which is important, but it does dampen the BRDF response for small deviations from the geometric normal.
Left: harsh terminator, right: cosine terminator
Left: harsh terminator, right: cosine terminator
Sine Terminator
This terminator is a modification of Chang et al.
GGX Terminator
This terminator is based on Estevez et al, “A Microfacet-Based Shadowing Function to Solve the Bump Terminator Problem”.
Left: harsh terminator, right: ggx terminator