login

Cg

Published 1 July 2003
William R. Mark, R. Steven Glanville, Kurt Akeley, Mark J. Kilgard
Citations541

TL;DR

A programming language and supporting system that are designed for programming programmable floating-point vertex and fragment processors, with support for data-dependent control flow in the vertex processor.

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.

Keywords

Computer Science