Cg (programovací jazyk)

Tento článek se bude zabývat problémem Cg (programovací jazyk), který v poslední době nabyl značného významu. Cg (programovací jazyk) se stal tématem zájmu širokého spektra lidí, protože jeho vliv zasahuje do různých oblastí každodenního života. Od osobní až po profesionální úroveň se Cg (programovací jazyk) umístil jako bod diskuse a reflexe v různých oblastech. V tomto článku budou analyzovány různé aspekty související s Cg (programovací jazyk) s cílem nabídnout ucelenou a obohacující vizi tohoto aktuálního problému.

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

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.

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

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

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

Externí odkazy