Computer Science Colloquia
Wednesday, April 27, 2011
Advisor: Jason Lawrence
Attending Faculty: Westely Weimer; Mircea Stan; Jack Davidson; Pedro V. Sander
Olsson 236D, 11:00:00
A Ph.D. Defense
Methods for Optimizing Procedural Shaders in Interactive 3D Rendering Systems
Many applications require interactive 3D rendering systems ranging from computer-aided design (CAD) to entertainment. In order to reproduce photorealistic effects, these systems must evaluate complex program called "shaders'' at each pixel. Pixel shaders in modern rendering systems comprise hundreds to thousands of instructions and have become a significant portion of the computation budget. In this dissertation, I propose two approaches for reducing the amount of per-pixel computation in scanline-based rendering systems at an adjustable loss of visual detail. The first approach exploits spatio-temporal coherence of animated image sequences. Many previous ray-based rendering systems have exploited spatio-temporal coherence. However, these algorithms do not map well to commodity scanline-based graphics hardware. A recent technique called reverse reprojection allows computations performed in previous frames to be reused in the current frame. This dissertation presents a new framework and prototype system for automatically finding the optimal set of parameters for a reprojection cache and a input pixel shader. This dissertation also presents a novel algorithm for aniti-aliasing procedural shaders that use a similar reprojection framework. This method is more efficient than traditional super-sampling commonly used today and converges to the ground truth in a static scene.
The second optimization technique is based on code simplification. Code simplification is the process of creating a sequence of simpler variants of an input shader with a reduction in complexity and rendering time. Previous works in this area were limited to a small set of code simplification rules and guided the search strategy based on non-perceptual error metric. By contrast, we present a code simplification framework that considers arbitrary statement- and expression-level modifications and uses both error and rendering time to guide our multi-objective Genetic Programming (GP) optimization.