skip to main content
10.1145/1201775.882362acmconferencesArticle/Chapter ViewAbstractPublication PagessiggraphConference Proceedingsconference-collections
Article

Cg: a system for programming graphics hardware in a C-like language

Published:01 July 2003Publication History

ABSTRACT

The latest real-time graphics architectures include programmable floating-point vertex and fragment processors, with support for data-dependent control flow in the vertex processor. We present a programming language and a supporting system that are designed for programming these stream processors. The language follows the philosophy of C, in that it is a hardware-oriented, general-purpose language, rather than an application-specific shading language. The language includes a variety of facilities designed to support the key architectural features of programmable graphics processors, and is designed to support multiple generations of graphics architectures with different levels of functionality. The system supports both of the major 3D graphics APIs: OpenGL and Direct3D. This paper identifies many of the choices that we faced as we designed the system, and explains why we made the decisions that we did.

Skip Supplemental Material Section

Supplemental Material

mark_cg.mp4

mp4

36.4 MB

References

  1. 3DLABS. 2002. OpenGL 2.0 shading language white paper, version 1.2, Feb.Google ScholarGoogle Scholar
  2. AKELEY, K. 1993. RealityEngine graphics. In SIGGRAPH 93, 109--116. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. BOLTZ, J., FARMER, I., GRINSPUN, E., AND SCHRODER, P. 2003. The GPU as numerical simulation engine. In SIGGRAPH 2003.Google ScholarGoogle Scholar
  4. BUCK, I., AND HANRAHAN, P. 2003. Data parallel computation on graphics hardware. unpublished report, Jan.Google ScholarGoogle Scholar
  5. CHAN, E., NG, R., SEN, P., PROUDFOOT, K., AND HANRAHAN, P. 2002. Efficient partitioning of fragment shaders for multipass rendering on programmable graphics hardware. In SIGGRAPH/Eurographics workshop on graphics hardware. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. CODEPLAY CORPORATION. 2003. VectorC documentation, Jan. Available at http://www.codeplay.com/support/documentation.html.Google ScholarGoogle Scholar
  7. COOK, R. L. 1984. Shade trees. In SIGGRAPH 84, 223--231. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. DALLY, W. J., AND POULTON, J. W. 1998. Digital Systems Engineering. Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. FERNANDO, R., AND KILGARD, M. J. 2003. The Cg Tutorial: The definitive guide to programmable real-time graphics. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. HANRAHAN, P., AND LAWSON, J. 1990. A language for shading and lighting calculations. In SIGGRAPH 90, 289--298. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. HERWITZ, P. S., AND POMERENE, J. H. 1960. The Harvest system. In Proc. of the AIEE-ACM-IRE 1960 Western Joint Computer Conf., 23--32.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. JAQUAYS, P., AND HOOK, B. 1999. Quake 3: Arena Shader Manual, Revision 10, Sept.Google ScholarGoogle Scholar
  13. JOY, B., STEELE, G., GOSLING, J., AND BRACHA, G. 2000. Java(TM) Language Specification, 2nd ed. Addison-Wesley.Google ScholarGoogle Scholar
  14. KAPASI, U. J., DALLY, W. J., RIXNER, S., OWENS, J. D., AND KHAILANY, B. 2002. The Imagine stream processor. In Proc. of IEEE Conf. on Computer Design, 295--302.Google ScholarGoogle ScholarCross RefCross Ref
  15. KERNIGHAN, B. W., AND RITCHIE, D. M. 1988. The C Programming Language. Prentice Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. KESSENICH, J., BALDWIN, D., AND ROST, R. 2003. The OpenGL Shading Language, version 1.05, Feb.Google ScholarGoogle Scholar
  17. LALONDE, P., AND SCHENK, E. 2002. Shader-driven compilation of rendering assets. In SIGGRAPH 2002, 713--720. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. LARSEN, S., AND AMARASINGHE, S. 2000. Exploiting superworld level parallelism with multimedia instruction sets. In Proc. of ACM SIGPLAN PLDI 2000, 145--156. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. LEECH, J. 1998. OpenGL extensions and restrictions for PixelFlow. Technical Report UNC-CH TR98-019, Univ. of North Carolina at Chapel Hill, Dept. of Computer Science, Apr.Google ScholarGoogle Scholar
  20. LEVINTHAL, A., HANRAHAN, P., PAQUETTE, M., AND LAWSON, J. 1987. Parallel computers for graphics applications. In Proc. of 2nd Intl. Conf. on architectural support for programming languages and operating systems (ASPLOS '87), 193--198. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. LINDHOLM, E., KILGARD, M. J., AND MORETON, H. 2001. A user-programmable vertex engine. In SIGGRAPH 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. MARK, W. R., AND PROUDFOOT, K. 2001. Compiling to a VLIW fragment pipeline. In SIGGRAPH/Eurographics workshop on graphics hardware. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. MATTSON, P. 2001. A Programming System for the Imagine Media Processor. PhD thesis, Stanford University. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. MCCOOL, M. D., QIN, Z., AND POPA, T. S. 2002. Shader metaprogramming. In Eurographics/SIGGRAPH workshop on graphics hardware, 57--68. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. MICROSOFT CORP. 2002. DirectX 9.0 graphics, Dec. Available at http://msdn.microsoft.com/directx.Google ScholarGoogle Scholar
  26. MICROSOFT CORP. 2002. High-level shader language. In DirectX 9.0 graphics. Dec. Available at http://msdn.microsoft.com/directx.Google ScholarGoogle Scholar
  27. MICROSOFT CORP. 2003. Common type system. In .NET framework developer's guide. Jan. Available at http://msdn.microsoft.com/.Google ScholarGoogle Scholar
  28. MITCHELL, J. L. 2002. RADEON 9700 Shading (ATI Technologies white paper), July.Google ScholarGoogle Scholar
  29. MOLNAR, S., EYLES, J., AND POULTON, J. 1992. PixelFlow: high-speed rendering using image composition. In SIGGRAPH 92, 231--240. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. MOTOROLA CORP. 1999. AltiVec Technology Programming Interface Manual, June.Google ScholarGoogle Scholar
  31. NVIDIA CORP. 2003. Cg Toolkit, Release 1.1. Software and documentation available at http://developer.nvidia.com/Cg.Google ScholarGoogle Scholar
  32. NVIDIA CORP. 2003. NV_fragment_program. In NVIDIA OpenGL Extension Specifications. Jan.Google ScholarGoogle Scholar
  33. NVIDIA CORP. 2003. NV_vertex_program2. In NVIDIA OpenGL Extension Specifications. Jan.Google ScholarGoogle Scholar
  34. OLANO, M., AND LASTRA, A. 1998. A shading language on graphics hardware: The PixelFlow shading system. In SIGGRAPH 98, 159--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. PEERCY, M., OLANO, M., AIREY, J., AND UNGAR, J. 2000. Interactive multi-pass programmable shading. In SIGGRAPH 2000, 425--432. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. PERLIN, K. 1985. An image synthesizer. In SIGGRAPH 85, 287--296. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. PROUDFOOT, K., MARK, W. R., TZVETKOV, S., AND HANRAHAN, P. 2001. A real-time procedural shading system for programmable graphics hardware. In SIGGRAPH 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. RITCHIE, D. M. 1993. The development of the C language. In Second ACM SIGPLAN Conference on History of Programming Languages, 201--208. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. ROHLF, J., AND HELMAN, J. 1994. IRIS performer: A high performance multiprocessing toolkit for real--time 3D graphics. In SIGGRAPH 94, 381--394. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. SEGAL, M., AND AKELEY, K. 2002. The OpenGL Graphics System: A Specification (Version 1.4). OpenGL Architecture Review Board. Editor: Jon Leech.Google ScholarGoogle Scholar
  41. STEPHENS, R. 1997. A survey of stream processing. Acta Informatica 34, 7, 491--541.Google ScholarGoogle ScholarCross RefCross Ref
  42. STROUSTRUP, B. 2000. The C++ Programming Language, 3rd ed. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. THIES, W., KARCZMAREK, M., AND AMARASINGHE, S. 2002. StreamIt: a language for streaming applications. In Proc. Intl. Conf. on Compiler Construction. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Cg: a system for programming graphics hardware in a C-like language

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            SIGGRAPH '03: ACM SIGGRAPH 2003 Papers
            July 2003
            683 pages
            ISBN:1581137095
            DOI:10.1145/1201775

            Copyright © 2003 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 1 July 2003

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • Article

            Acceptance Rates

            SIGGRAPH '03 Paper Acceptance Rate81of424submissions,19%Overall Acceptance Rate1,822of8,601submissions,21%

            Upcoming Conference

            SIGGRAPH '24

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader