Game Development Reference
traversal for each filter kernel sample. Note that this technique scales well with
the complexity of the hair model (the more complex, the larger the speedup),
because the lookup times become roughly constant as long as there is sucient
coherence. Also observe that this technique even scales well with larger filter
kernels, since spatial coherence is only required between neighboring pixels. In
case of small transmittance functions (e.g., due to high opacity), the gain from the
links are minor, which nevertheless only results in a barely noticeable constant
overhead due to the links (of about 2%).
Apart from PCF, we also adapted another antialiasing algorithm, exponential
shadow mapping, for use with DSM.
Exponential shadow mapping. The standard binary shadow map test causes an-
tialiasing artifacts since it is effectively a step function that jumps between 0
and 1. Hence exponential shadow mapping (ESM) [Annen et al. 08] approxi-
mates the shadow test with an exponential function (yielding continuous results
between [0 .. 1]). This continuous value is subsequently used to attenuate the
shading of a pixel.
The DSM algorithm can be combined with ESM in a straightforward fashion,
and we denote this combination as exponential deep shadow mapping (EDSM).
The resulting transmittance is weighted with the continuous shadow test value.
visual quality. Note that while the original ESM algorithm supports prefiltering,
this feature cannot be used in combination with DSM since the lookup depth
along the transmittance function is not known beforehand.
We computed all our results on an Intel Core i7-2700K Processor (using one core)
and using a Geforce GTX 680. All images were rendered in resolution 1 , 280 × 720
and using a deferred rendering pipeline with four 32-bit render targets. The hair
model used in our experiments has 10 , 000 individual strands of hairs and about
Tab l e 1 . 1 . This table compares typical FPS values for binary shadow mapping by using
only the first fragment of a DSM for shading (SM), our method without filtering (DSM)
and with PCF (DSM3 and DSM5), and our EDSM algorithm using different filter kernel
footprints. The number after the algorithm's name is the filter kernel size (e.g., a 3 × 3
kernel for EDSM3).