|
Cg or C for Graphics is a high-level shading language developed by NVIDIA in close collaboration with Microsoft[1][2] for programming vertex and pixel shaders. It is very similar to Microsoft's HLSL. A shading language is a special programming language adapted to easily map on shader programming. ...
NVIDIA Corporation (NASDAQ: NVDA) (pronounced IPA: ) is a U.S. corporation specializing in the manufacture of graphics processor technologies for workstations, desktop computers, and handhelds. ...
Microsoft Corporation, (NASDAQ: MSFT, HKSE: 4338) is a multinational computer technology corporation with global annual revenue of US$44. ...
Computer programming (often simply programming) is the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program. ...
Shaders are a set of different technologies. ...
Microsoft Corporation, (NASDAQ: MSFT, HKSE: 4338) is a multinational computer technology corporation with global annual revenue of US$44. ...
The High Level Shader Language (HLSL) is a shader language developed by Microsoft for use with DirectX, and is very similar to Cg. ...
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. C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ...
âGPUâ redirects here. ...
The Cg compiler outputs DirectX or OpenGL shader programs. 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: - High level code is easier to learn, program, read, and understand than assembly code.
- Cg code is portable to a wide range of hardware and platforms, unlike assembly code, which usually depends on hardware and the platforms it's written for.
- The Cg compiler can optimize code and do lower level tasks automatically, which are hard to do and error prone in assembly.
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: - float - a 32bit floating point number
- half - a 16bit floating point number
- int - a 32bit integer
- fixed - a 12bit fixed point number
- bool - a boolean variable
- sampler* - represents a texture object
Cg also features vector and matrix data types that are based on the basic data types, such as float3 and 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 their 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. In logical calculus, logical operators or logical connectors serve to connect statements into more complicated compound statements. ...
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. API may refer to: In computing, application programming interface In petroleum industry, American Petroleum Institute In education, Academic Performance Index This page concerning a three-letter acronym or abbreviation is a disambiguation page â a navigational aid which lists other pages that might otherwise share the same title. ...
OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform API for writing applications that produce 2D and 3D computer graphics. ...
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. ...
In addition to being able to compile Cg source to assembly code, the Cg runtime also has the ability to compile shaders during execution of the supporting program. This allows the runtime to compile the shader using the latest optimizations available for hardware that the program is currently executing on. However, this technique allows the user of the program to access the source-code for the shader (since it needs to be present in order to be compiled), this has been the major drawback of this technique. To avoid exposing the source code of the shader, and still maintain some of the hardware specific optimizations, the concept of profiles was developed. Shaders can be compiled to suit different graphics hardware platforms (according to profiles). When executing the supporting program, the best/most optimized shader is loaded according to its profile. For instance there might be a profile for a graphics card that supports complex pixel shaders, and another profile for one that supports only minimal pixel shaders. By creating a pixel shader for each of these profiles a supporting program enlarges the number of supported hardware platforms without sacrificing picture quality on powerful systems.
A sample Cg vertex shader // input vertex struct VertIn { float4 pos : POSITION; float4 color : COLOR0; }; // output vertex struct VertOut { float4 pos : POSITION; float4 color : COLOR0; }; // vertex shader main entry VertOut main(VertIn IN, uniform float4x4 modelViewProj) { VertOut OUT; OUT.pos = mul(modelViewProj, IN.pos); // calculate output coords OUT.color = IN.color; // copy input color to output OUT.color.z = 1.0f; // blue component of color = 1.0f return OUT; } Applications and games that use Cg Crystal Space is a framework for developing 3D applications written in C++ by Jorrit Tyberghein and others. ...
This article is about the computer game. ...
OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce applications utilising hardware-accelerated 3D graphics. ...
Unity is an integrated authoring tool for creating 3D video games or other interactive content such as architectural visualizations or real-time 3D animations. ...
Further reading - Randima Fernando, Mark J. Kilgard, The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics, Addison-Wesley Professional, ISBN 0-321-19496-9
- Randima Fernando, GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics, Addison-Wesley Professional, ISBN 0-321-22832-4
- William R. Mark, R. Steven Glanville, Kurt Akeley, Mark J. Kilgard, Cg: A System for Programming Graphics Hardware in a C-like Language, Proceedings of SIGGRAPH 2003.
- Mark J. Kilgard, Cg in Two Pages, 2003.
Mark J. Kilgard is a graphics software engineer working at NVIDIA. Mark has written two books OpenGL for the X Window System (1996) and The Cg Tutorial (2003), co-authored with Randima Fernando. ...
Kurt Akeley is a computer graphics engineer. ...
Mark J. Kilgard is a graphics software engineer working at NVIDIA. Mark has written two books OpenGL for the X Window System (1996) and The Cg Tutorial (2003), co-authored with Randima Fernando. ...
Mark J. Kilgard is a graphics software engineer working at NVIDIA. Mark has written two books OpenGL for the X Window System (1996) and The Cg Tutorial (2003), co-authored with Randima Fernando. ...
See also Programming redirects here. ...
This article is about the scientific discipline of computer graphics. ...
Vertex and pixel (or fragment) shaders are shaders that run on a graphics card, executed once for every vertex or pixel in a specified 3D mesh. ...
The High Level Shader Language is a shader language developed by Microsoft for use with DirectX, and is very similar to Cg. ...
GLSL - OpenGL Shading Language also known as GLslang is a high level shading language based on the C programming language. ...
A shader is a program used in 3D computer graphics to determine the final surface properties of an object or image. ...
OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform API for writing applications that produce 2D and 3D computer graphics. ...
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. ...
External links References - ^ http://www.fusionindustries.com/default.asp?page=cg-hlsl-faq
- ^ http://www.creativepro.com/story/news/18489.html
|