“A real-time procedural shading system for programmable graphics hardware” by Proudfoot, Mark, Tzvetkov and Hanrahan

  • ©Kekoa Proudfoot, William R. Mark, Svetoslav Tzvetkov, and Patrick (Pat) Hanrahan




    A real-time procedural shading system for programmable graphics hardware



    Real-time graphics hardware is becoming programmable, but this programmable hardware is complex and difficult to use given current APIs. Higher-level abstractions would both increase programmer productivity and make programs more portable. However, it is challenging to raise the abstraction level while still providing high performance. We have developed a real-time procedural shading language system designed to achieve this goal. Our system is organized around multiple computation frequencies. For example, computations may be associated with vertices or with fragments/pixels. Our system’s shading language provides a unified interface that allows a single procedure to include operations from more than one computation frequency. Internally, our system virtualizes limited hardware resources to allow for arbitrarily-complex computations. We map operations to graphics hardware if possible, or to the host CPU as a last resort. This mapping is performed by compiler back-end modules associated with each computation frequency. Our system can map vertex operations to either programmable vertex hardware or to the host CPU, and can map fragment operations to either programmable fragment hardware or to multipass OpenGL. By carefully designing all the components of the system, we are able to generate highly-optimized code. We demonstrate our system running in real-time on a variety of hardware.


    1. A. A. Apodaca and L. Gritz. Advanced RenderMan: Creating CGI for Motion Pictures. Morgan Kaufmann, 2000.

    2. D. Banks. Illumination in Diverse Codimensions. In SIG- GRAPH 94 Conference Proceedings, pages 327-334, July 1994.

    3. R. L. Cook. Shade Trees. In Computer Graphics (SIGGRAPH 84 Conference Proceedings), pages 223-231, July 1984.

    4. C. Fraser and D. Hanson. A Retargetable C Compiler: Design and Implementation. Addison-Wesley, 1995.

    5. P. Hanrahan and J. Lawson. A Language for Shading and Lighting Calculations. In Computer Graphics (SIGGRAPH 90 Conference Proceedings), pages 289-298, Aug. 1990.

    6. W. Heidrich and H.-P. Seidel. Realistic, Hardware-accelerated Shading and Lighting. In SIGGRAPH 99 Conference Proceedings, pages 171-178, Aug. 1999.

    7. P. Jaquays and B. Hook. Quake 3: Arena Shader Manual, Revision 10, Sept. 1999.

    8. M. J. Kilgard. A Practical and Robust Bump-mapping Technique for Today’s GPU’s. Technical report, NVIDIA Corporation, July 2000. Available at http://www.nvidia.com/.

    9. E. Lindholm. Vertex Programs for Fixed Function Pipeline. NVIDIA Technical Presentation (from www.nvidia.com), Nov. 2000.

    10. E. Lindholm, M. J. Kilgard, and H. Moreton. A User- Programmable Vertex Engine. In SIGGRAPH 01 Conference Proceedings, Aug. 2001.

    11. W. R. Mark and K. Proudfoot. Compiling To a VLIW Fragment Pipeline. In Eurographics/SIGGRAPH Workshop on Graphics Hardware, Aug. 2001.

    12. W. R. Mark and K. Proudfoot. The F-Buffer: A Rasterization- Order FIFO Buffer for Multi-Pass Rendering. In Eurographics/SIGGRAPH Workshop on Graphics Hardware, Aug. 2001.

    13. M. D. McCool. SMASH: A Next-Generation API for Programmable Graphics Accelerators. Technical Report CS- 2000-14, University of Waterloo, Aug. 2000.

    14. Microsoft. DirectX 8.0 Programmer’s Reference, Oct. 2000.

    15. S. Molnar, J. Eyles, and J. Poulton. PixelFlow: High-Speed Rendering Using Image Composition. In Computer Graphics (SIGGRAPH 92 Conference Proceedings), pages 231-240, July 1992.

    16. NVIDIA Corporation. NVIDIA OpenGL Extension Specifications, May 2001. http://www.nvidia.com/developer/.

    17. M. Olano. A Programmable Pipeline for Graphics Hardware. PhD thesis, University of North Carolina at Chapel Hill, 1998.

    18. M. Olano and A. Lastra. A Shading Language on Graphics Hardware: The PixelFlow Shading System. In SIGGRAPH 98 Conference Proceedings, pages 159-168, July 1998.

    19. M. S. Peercy, M. Olano, J. Airey, and P. J. Ungar. Interactive Multi-Pass Programmable Shading. In SIGGRAPH 00 Con-ference Proceedings, pages 425-432, July 2000.

    20. K. Perlin. An Image Synthesizer. In Computer Graphics (SIGGRAPH 85 Conference Proceedings), pages 287-296, July 1985.

    21. M. Segal, K. Akeley, C. Frazier, and J. Leech. The OpenGL Graphics System: A Specification (Version 1.2), Mar. 1998.

    22. X. Tu and D. Terzopoulos. Artificial Fishes: Physics, Locomotion, Perception, Behavior. In SIGGRAPH 94 Conference Proceedings, pages 43-50, July 1994.

    23. S. Upstill. The RenderMan Companion: A Programmer’s Guide to Realistic Computer Graphics. Addison-Wesley, 1990.

ACM Digital Library Publication:

Overview Page: