Real-time programmable shading

One of the main techniques used by software renderers to produce stunningly realistic images is programmable shading—executing an arbitrarily complex program to compute the color at each pixel. Thus far, programmable shading has only been available on software rendering systems that run on general-purpose computers. Rendering each image can take from minutes to hours. Parallel rendering engines, on the other hand, have steadily increased in generality and in performance. We believe that they are nearing the point where they will be able to perform moderately complex shading at real-time rates. Some of the obstacles to this are imposed by hardware, such as limited amounts of frame-buffer memory and the enormous computational resources that are needed to shade in real time. Other obstacles are imposed by software. For example, users generally are not granted access to the hardware at the level required for programmable shading. This paper first explores the capabilities that are needed to perform programmable shading in real times. We then describe the design issues and algorithms for a prototype shading architecture on PixelFlow, an experimental graphics engine under construction. We demonstrate through examples and simulation that PixelFlow will be able to perform high-quality programmable shading at real-time (30 to 60 Hz) rates. We hope that our experience will be useful to shading implementors on other hardware graphics systems.

[1]  David Salesin,et al.  Rendering antialiased shadows with depth maps , 1987, SIGGRAPH.

[2]  Lance Williams,et al.  Pyramidal parametrics , 1983, SIGGRAPH.

[3]  Ivan E. Sutherland,et al.  A characterization of ten rasterization techniques , 1989, SIGGRAPH.

[4]  Ulrich Neumann,et al.  Parallel Architectures and Algorithms for Real-Time Synthesis of High Quality Images Using Deferred Shading , 1989 .

[5]  Pat Hanrahan,et al.  A language for shading and lighting calculations , 1990, SIGGRAPH.

[6]  Henry Fuchs,et al.  Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories , 1989, SIGGRAPH.

[7]  Ned Greene,et al.  Environment Mapping and Other Applications of World Projections , 1986, IEEE Computer Graphics and Applications.

[8]  Robert L. Cook,et al.  The Reyes image rendering architecture , 1987, SIGGRAPH.

[9]  Kurt Akeley,et al.  Reality Engine graphics , 1993, SIGGRAPH.

[10]  Kenneth R. Smith,et al.  The OpenGL Reference Manual , 1992 .

[11]  Ulrich Neumann,et al.  Real-time procedural textures , 1992, I3D '92.

[12]  John G. Eyles,et al.  PixelFlow: high-speed rendering using image composition , 1992, SIGGRAPH.

[13]  James F. Blinn,et al.  Simulation of wrinkled surfaces , 1978, SIGGRAPH.

[14]  Ken Perlin,et al.  An image synthesizer , 1988 .

[15]  Neil Hunt,et al.  The triangle processor and normal vector shader: a VLSI system for high performance graphics , 1988, SIGGRAPH.

[16]  Lance Williams,et al.  Casting curved shadows on curved surfaces , 1978, SIGGRAPH.

[17]  Robert L. Cook,et al.  Shade trees , 1984, SIGGRAPH.

[18]  Turner Whitted,et al.  A Software Testbed for the Development of 3D Raster Graphics Systems , 1982, ACM Trans. Graph..