Shadermaps
Most current 3D rendering systems are very inefficient in their operation. Rendered scenes seldom change much between frames, but rendering engines treat each frame as if it were entirely different from the previous one, rendering it from scratch. Shadermaps takes advantage of frame-to-frame coherence in graphics animations by breaking the shader computation into multiple phases. Dramatic improvements in rendering times can be realized by offloading expensive computations on the early phases, and reusing the results of those computations for many frames afterward. Because the early complex phases can use the system CPU, the latter phases are simple and much more amenable to hardware.
Background & Objective: The number of interactive 3D graphics applications is increasing dramatically, driving an insatiable market for high-quality, high-speed 3D rendering engines. The creative content market, particularly the game market, is forever pushing the speed limits of existing engines. Additionally, the increased use of computer generated imagery in feature films and television is pushing the quality limits of even the high-end engines available today. Consequently, there is a need for high-speed, high-quality rendering engines that is not being fulfilled adequately by the market.
In this project we are developing procedural shading rendering methods for generating very high-quality computer generated images at interactive rates. Systems able to produce animations with these effects have been either unbearably slow (taking minutes or days to render each frame of a feature film) or prohibitively expensive. Shadermaps aim to provide full procedural shading in a consumer-level system that operates at interactive rates.
Technical Discussion: Animated scenes are comprised of multiple geometric objects with complex appearance provided by procedural shaders. Shadermaps factor each shading computation into static and dynamic phases. The static phase produces an intermediate representation which is processed by the dynamic phase to produce a frame. Due to a clever factorization, the output of the static phase is valid for many frames after its generation, allowing the static phase to run infrequently or even only once for some objects. Since the dynamic phase must run for all objects in each frame, the intermediate representation is chosen so that it can be processed efficiently. To provide interactive frame rates, the intermediate representation and the dynamic phase are designed to be implemented in hardware.
Technology Area: Graphics
Modification Date: October 30, 2002
