You copied the Doc URL to your clipboard.

Results of the cubemap shadow technique

In traditional techniques, rendering shadows can be quite expensive because it involves rendering the whole scene from the perspective of each shadow-casting light source. The cubemap shadow technique described here delivers improved performance because it is mostly pre-baked.

This technique is also independent of output-resolution. It produces the same visual quality at 1080p, 720p and other resolutions.

The softness filtration is calculated in hardware so the smoothness comes at almost no computational cost. The smoother the shadow, the more efficient the technique is. This is because the smaller mipmap levels result in less data than traditional shadow map techniques. Traditional techniques require a large kernel to make shadows smooth enough to be more visually appealing. This requires high memory bandwidth and this reduces performance.

The quality you get with the cubemap shadow technique is higher than you might expect. It provides realistic softness and stable shadows with no shimmering at the edges. Shimmering edges can be observed when using traditional shadow map techniques because of rasterization and aliasing effects. However, none of the anti-aliasing algorithms can fix this problem entirely.

The cubemap shadow technique does not have a shimmering problem. The edges are stable even if you use a much lower resolution than that used in the render target. You can use four times lower resolution than the output and there are neither artifacts nor unwanted shimmering. Using four times lower resolution also saves memory bandwidth and this improves performance.

This technique can be used on any device on the market that supports shaders such as those with OpenGL ES 2.0 or higher. If you already know where and when to use the reflections based on local cubemaps technique, then you can easily apply the shadow technique to your implementation.


The technique cannot be used for everything in your scene. Dynamic objects, for instance, receive shadows from the cubemap but they cannot be pre-baked to the cubemap texture. For dynamic objects, use shadow maps for generating shadows, blended with the cubemap shadow technique.

The following figure shows the Ice Cave with shadows:

Figure 6-38 Ice Cave with shadows

The following figure shows the Ice Cave with smooth shadows:

Figure 6-39 Ice Cave with smooth shadows

The following figure shows the Ice Cave with smooth shadows:

Figure 6-40 Ice Cave with smooth shadows