Opentopia Directory Encyclopedia Tools

Cg programming language

Encyclopedia : C : CG : CGP : Cg programming language


Cg or C for Graphics is a High level shader language created by NVIDIA for programming vertex and pixel shaders.

Cg is based on the C programming language and although they share the same syntax, some features of C were modified and new data types were added to make Cg more suitable for programming graphics processing units.

Background

As a result of technical advancements in graphics cards, some areas of 3D graphics programming have become quite complex. To simplify the process, new features were added to graphics cards, including the ability to modify their rendering pipelines using vertex and pixel shaders.

In the beginning, vertex and pixel shaders were programmed at a very low level with only the assembly language of the graphics processing unit. Although using the assembly language gave the programmer complete control over code and flexibility, it was fairly hard to use. A portable, higher level language for programming the GPU was needed, so Cg was created to overcome these problems and make shader development easier.

Some of the benefits of using Cg over assembly are:

Details

Data types

Cg has six basic data types, some of them are the same as in C, others are especially added for GPU programming, these types are: Cg also features vector and matrix data types that are based on the basic data types, such as float3, float4x4, such data types are quite common when dealing with 3D graphics programming, Cg also has struct and array data types, which work in a similar way to C equivalents.

Operators

Cg supports a wide range of operators, including the common arithmetic operators from C, the equivalent arithmetic operators for vector and matrix data types, and the common logical operators.

Functions and control structures

Cg shares the basic control structures with C, like if/else, while, and for. It also has a similar way of defining functions.

The standard Cg library

As in C, Cg features a set of functions for common tasks in GPU programming. Some of the functions have equivalents in C, like the mathematical functions abs and sin, while others are specialized in GPU programming tasks, like the texture mapping functions tex1D and tex2D.

The Cg runtime library

Cg programs are merely vertex and pixel shaders, and they need supporting programs that handle the rest of the rendering process, Cg can be used with two APIs, OpenGL or DirectX, each has its own set of Cg functions to communicate with the Cg program, like setting the current Cg shader, passing parameters, and such tasks.

A sample Cg vertex shader

// input vertex
struct VertIn ;
// output vertex
struct VertOut ;
// vertex shader main entry
VertOut main(VertIn IN, uniform float4x4 modelViewProj) 

Applications and games that use Cg

Further reading

See also

External links


NVIDIA Gaming Graphics Processors
Early Chips: NV1NV2
DirectX 5/6: RIVA 128RIVA TNTRIVA TNT2
DirectX 7.x: GeForce 256GeForce2
DirectX 8.x: GeForce3GeForce4
DirectX 9.x: GeForce FX • GeForce 6 Series>GeForce 6 • GeForce 7
Direct3D 10: GeForce 8 Series>GeForce 8

Other NVIDIA Technologies
nForce: nForce>220/415/420 • 234500SoundStorm
Professional Graphics: Quadro
Software: Gelato (software)>Gelato • Cg
Consumer Electronics: GoForce
Video game console>Game Consoles: XboxPlayStation 3

 


From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.

Search Titles
0123456789
ABCDEFGHIJ
KLMNOPQRST
UVWXYZ?

E-mail this article to:

Personal Message: