Game Development Reference
For our game Remember Me , targeting current generation console hardware (DX9/
PS3/Xbox 360), we tried to find a reflection technique similar in cost to precom-
puted techniques, but with improved accuracy and realism.
This chapter introduces a new algorithm with a set of artist tools that allow
simulating planar glossy/specular reflections. The goal of our method is to replace
the accurate but costly real-time planar reflection with a cheaper approximation
that does not require re-rendering the scene geometry. In our game, we mostly
use these tools for ground reflections.
The principle of the algorithm is to render an approximation of the reflected
scene into a 2D reflection texture, then use this texture during the scene rendering.
In order to build the approximated reflected scene, we provide our artists with
several tools that let them combine the reflected scene with oine-generated
elements: environment maps and image proxies. To increase quality, we parallax-
correct elements of the reflected scene for the current view when they are rendered
in the reflection texture. In order to update the parallax-correction, the reflection
texture is updated for each frame.
We will start the description of our algorithm and tools with the generation
of the reflection texture. We will describe how our algorithm fits within a local
image-based lighting (IBL) strategy, following the work we presented in [Lagarde
and Zanuttini 12]. We will conclude with the processing and usage of this 2D
reflection texture for the scene rendering.
Generating Reflection Textures
Cubemap Reflection Environment
Our algorithm begins by generating an approximation of the reflected scene. We
are trying to avoid the cost of re-rendering the scene geometry at runtime. In this
case, the common technique for approximating reflections is to create an environ-
ment map, such as a cubemap, that is the parameterization of choice due to its
hardware eciency. However, the reflectionstoredinthecubemap is correct only
from a single point in space. Applying a cubemap onto a planar geometry such as
The graphics literature proposes several algorithms to fix this problem. All these
algorithms share the requirement of a geometry proxy to represent the reflec-
tion environment: simple sphere volumes [Bjorke 04], box volumes [Czuba 10] or
cube depth buffers [Szirmay-Kalos et al. 05]. The reflected view vector by the
surface normal is used to intersect the proxy geometry. A corrected reflected
view vector is created from the pixel's world position, which can then be used
to fetch the right cubemap sample. Cost and quality increase with the geometry
proxy's complexity. For completeness, we note that other cheap parallax correc-
tion methods without a geometry proxy are available [Geiss 05, Brennan 02], but
they require manual tuning for each object. Our solution to the parallax problem