ABSTRACT

Rendering reflective and refractive objects or their caustics is a challenging problem in real-time applications. It requires non-local shading, which is intricate with the incremental rendering pipeline, where a fragment shader can only work with local, interpolated vertex data and textures to find the color of a surface point. The above effects are usually associated with ray-tracing, which does not offer the same performance as incremental rendering. Typically, ray-tracing effects are added into real-time scenes using specialized tricks based on texturing. These usually assume that there is only one reflective or refractive object in the scene, and that it is enough to consider only one or two bounces of light. In this article, we follow a similar practical philosophy, but remove these limitations in order to be able to render scenes like a complete chessboard full of glass pieces, or even refractive objects submerged into animated liquids.