Cg (programovací jazyk)

Cg (z anglického C for graphics) je vyšší programovací jazyk pro psaní shaderů vyvinutý společností NVIDIA (od roku 2002). Syntakticky je velmi podobný jazyku High Level Shader Language (HLSL) od společnosti Microsoft.

Cg Shading Language
VývojářNVIDIA, microsoft
DialektyCg, HLSL, Playstation Shading Language
Ovlivněn jazykyC , RenderMan Shading Language
Ovlivnil jazykyGLSL

Z důvodu možnosti dvoustupňového překladu může být pro běh zapotřebí Cg runtime (překlad programu pak probíhá i dynamicky, tj. až v době běhu aplikace pro konkrétní GPU). V této souvislosti se hovoří o cílových profilech (konkrétní verze shaderů a tedy instrukční sady).

Syntaxe jazyka Cg je odvozena od jazyka C. Mezi důležitá rozšíření jazyka patří vektorové operace, operátor swizzle, další datové typy (half, fixed, vektorové a maticové typy, sampler* typy pro textury).

Syntaxe a použití jazyka editovat

Jazyk Cg je z hlediska syntaxe i použití velmi podobný (ve spoustě aspektů identický) jazyku High Level Shader Language (HLSL) od společnosti Microsoft.

Související informace naleznete také v článku High Level Shader Language.

Příklad editovat

Vertex shader v Cg:

 // vstupní vrchol
 struct VertIn {
     float4 pos   : POSITION;
     float4 color : COLOR0;
 };
 
 // výstupní vrchol
 struct VertOut {
     float4 pos   : POSITION;
     float4 color : COLOR0;
 };
 
 // vstup vertex shaderu
 VertOut main(VertIn IN, uniform float4x4 modelViewProj) {
     VertOut OUT;
     OUT.pos     = mul(modelViewProj, IN.pos); // spočítej výstupní souřadnice
     OUT.color   = IN.color; // zkopíruj vstupní barvu do výstupní
     OUT.color.z = 1.0f; // modrá složka barvy = 1.0f
     return OUT;
 }

Související články editovat

Externí odkazy editovat