next up previous
Next: Results Up: Implementation Previous: Bump Mapping

Self Shadowing

With bump mapping, there are actually two surface normals that should be considered for lighting. The unperturbed normal $ \vec{N}$ is based on the surface's large-scale geometry, while the perturbed normal $ \vec{N}^{\prime}$ is based on the small-scale structure. Either normal can create self-shadowing situations. Figure 8 shows a situation where the perturbed normal $ \vec{N}^{\prime}$ is subject to illumination. However, the point on the surface should not receive illumination from the light because the unperturbed normal $ \vec{N}$ indicates that the point is in shadow due to the large-scale geometry [10].

Figure 8: Self Shadowing
\includegraphics[]{D:/Studium/Per-Pixel-Lighting/text_cescg/image/self-shadow-2.eps}
In order to account for self-shadowing due to the perturbed surface normal and the unperturbed normal the lighting equation 1 should be rewritten as in Equation 7.

$\displaystyle I_{out}=I_{Light}s_{self}k_{d}\max(0,\vec{N}^{\prime}\cdot\vec{L}...
...ent_mark>63 )+I_{Light}s_{self}k_{s}\max(0,\vec{N}^{\prime}\cdot\vec{H})^{n}%%
$ (7)

where

\begin{displaymath}
s_{self}=\left\{
\begin{array}[c]{cc}%%
1 & \vec{L}\cdot\vec{N}>0\\
0 & \vec{L}\cdot\vec{N}\leq0
\end{array}\right.
\end{displaymath}

Without this extra level of clamping, bump-mapped surfaces can show false illumination artifacts in otherwise dark regions. In practice, the step function of $ s_{self}$ shown above can lead to temporal aliasing artifacts, as pixel along the self-shadowing boundary may pop on and off abruptly. Therefore it is better to replace the step function by a steep ramp [10].


next up previous
Next: Results Up: Implementation Previous: Bump Mapping
Gerald Schröcker 2002-03-21