I know how shadow mapping works but I am not getting the cause of shadow acne! Can anyone tell me cause of shadow acne in a simple way and how is it related to depth map resolution?


enter image description here

Image 1: A bad case of shadow acne. (Synthetic and a bit exaggerated)

Shadow acne is caused by the discrete nature of the shadow map. A shadow map is composed of samples, a surface is continuous. Thus, there can be a spot on the surface where the discrete surface is further than the sample. The problem does persist even if you multi sample, but you can sample smarter in ways that can nearly eliminate this at significant cost.

enter image description here

Image 2: A side cutaway of a shadow function and its discrete samples.

The canonical way to solve this is to offset the shadow map slightly so the object no longer self shadows itself. This offset is called a bias. One can use more smart offsets than just a fixed value but a fixed value works quite well and has minimal overhead.

enter image description here

Image 3: Shadow function biased (offset) forward.

  • $\begingroup$ And this discrete nature of depth map is created because of floating point precision. Right? $\endgroup$ Mar 16 '16 at 20:12
  • 1
    $\begingroup$ No its created because images are discrete as in have only one value for a area that varies. $\endgroup$
    – joojaa
    Mar 16 '16 at 21:00
  • $\begingroup$ Images are different in camera and light space? $\endgroup$ Mar 16 '16 at 21:04
  • $\begingroup$ Ok is that zigzag line represents depth map? $\endgroup$ Mar 17 '16 at 14:14
  • $\begingroup$ It represents the function of the depth map, the dashed lines represent the pixel samples of the depth map. $\endgroup$
    – joojaa
    Mar 17 '16 at 14:16

As an addition to the answer of joojaa: Using a bias to offset the shadow function does indeed solve the problem with shadow acne, but it can introduce an additional problem: Peter Panning

Sample image that has Peter Panning

As you see in the picture on the left the shadow is disconnected from the shadow casting wall. This gives the impression that the geometry hovers over the ground (just like Peter Pan can hover, hence the name Peter Panning).

To solve this problem you have to use "thick" geometry that has a volume and then render the shadow map using the back-faces. If the offset is smaller than the thickness of the geometry there will be no Peter Panning.

Scene with thick geometry and thereby no Peter Panning

Both images are taken from this tutorial where you can also learn more about how shadow mapping works, how shadow acne is created and solved and what Peter Panning is.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.