Presentation is loading. Please wait.

Presentation is loading. Please wait.

Cg – C for Graphics Eric Vidal CS 280. History General graphics processing languages – Renderman shading language (1988) Assembly languages for graphics.

Similar presentations


Presentation on theme: "Cg – C for Graphics Eric Vidal CS 280. History General graphics processing languages – Renderman shading language (1988) Assembly languages for graphics."— Presentation transcript:

1 Cg – C for Graphics Eric Vidal CS 280

2 History General graphics processing languages – Renderman shading language (1988) Assembly languages for graphics card processing – DirectX 8/9 vertex shaders and pixel shaders (2000, 2002) – OpenGL ARB_vertex_program/ARB_fragment_program (2002) High-level languages for graphics card processing – DirectX High Level Shading Language (HLSL) (2002) – OpenGL Shading Language (glslang) (2003) – Cg – C for Graphics (2002)

3 History Cg – C for Graphics – Developed in 2002 by NVIDIA Corporation in close collaboration with Microsoft – Supports OpenGL and DirectX (does not replace them) – Supported in Windows, Mac OS X and Linux – Proprietary (but language specification is open) – Cg compiler technology is open-source

4 Rationale Do graphics-related processing (“shading”) in graphics card – Offloads work from the main processor – Higher performance Cg is a high-level language – Easier to understand than graphics card “assembly language” (DirectX vertex/pixel shaders, OpenGL vertex/fragment programs) – Code portability across graphics cards

5 Features Two types of Cg programs: – Vertex programs – Fragment programs On-the-fly compilation supports several target graphics assembly language formats: – DirectX 8 vertex/pixel shaders (vs_1_1, ps_1_3) – DirectX 9 vertex/pixel shaders (vs_2_0, ps_2_x) – OpenGL vertex/fragment program extensions (arbvp1, arbfp1) – NVIDIA proprietary OpenGL extensions (vp20, fp20, vp30, fp30)

6 Features First class support for vector data types – float4 – vector of four floats – float4x4 – square matrix with 16 elements Same operators as C – Works with vectors as well as with scalars float scalar = 4.0; float4 vector = float4(1.0, 2.0, -1.0, 3.0), result; /* this properly scales “vector” by “scalar” */ result = scalar * vector;

7 Features uniform parameters input semantics (for non-uniform parameters) out, inout parameters void simpleTransform(float4 objectPosition : POSITION, float4 color : COLOR, float4 decalCoord : TEXCOORD0, float4 lightMapCoord : TEXCOORD1, out float4 clipPosition : POSITION, out float4 oColor : COLOR, out float4 oDecalCoord : TEXCOORD0, out float4 oLightMapCoord : TEXCOORD1, uniform float brightness, uniform float4x4 modelViewProjection)

8 Features Structures and arrays (including multidimensional arrays) All of C’s arithmetic operators boolean type Boolean/relational operators ( ||, &&, !, etc.) Increment/decrement operators ( ++, -- ) Conditional expressions ( ?, : ) Assignment expressions ( =, +=, etc.)

9 Features User-defined functions – But no recursive functions! Control flow constructs – do, while, for, if, break, continue – No switch and goto ! Data types – float, half, double – int – fixed

10 Features #include, #define, #ifdef C and C++-style comments Swizzling and write-masking float4 vec1 = float4(1.0, 2.0, 3.0, 4.0); float2 vec2 = vec1.yx; // vec2 = (2.0, 1.0); float scalar = vec1.w; // scalar = 4.0; float3 vec3 = scalar.xxx; // vec3 = (4.0, 4.0, 4.0); vec1.xw = vec3; // vec1 = (4.0, 2.0, 3.0, 4.0); discard keyword (similar to return, but no return value)

11 Features Built-in library functions for graphics math – abs() – log2() – mul() – dot() – normalize() – lerp() – specular() – reflect() –... and more! (No need to #include )

12 (Non-)Features Pointers Bitwise operations Unions Function variables String processing File I/O Memory allocation/deallocation C++ classes, templates, overloading, exceptions

13 Sample Programs

14 Applications Using Cg Unreal engine (Epic Games, Inc.) Aurora engine (Bioware Inc.) Storm engine (Blizzard Entertainment) Other game companies (Electronic Arts, Ensemble Studios, Ion Storm, LithTech, Maxis, Microsoft Games) Third party content creation tools – Alias Wavefront Maya 4.5 – Discreet 3ds max 5 – SOFTIMAGE|XSI v.3.0

15 Where to Get Cg Main Cg Website: – http://developer.nvidia.com/page/cg_main.html Cg Language Specification: – http://developer.nvidia.com/object/cg_specification.html Cg Compiler and Toolkit: – http://developer.nvidia.com/object/cg_toolkit.html


Download ppt "Cg – C for Graphics Eric Vidal CS 280. History General graphics processing languages – Renderman shading language (1988) Assembly languages for graphics."

Similar presentations


Ads by Google