Multimediaexpo.cz je již 18 let na českém internetu !!
V tiskové zprávě k 18. narozeninám brzy najdete nové a zásadní informace.
Cg
Z Multimediaexpo.cz
Verze z 12. 11. 2011, 19:32
Cg (z anglického C for graphics) je vyšší programovací jazyk pro programování vertex a pixel shaderů od firmy NVidia (od roku 2002). Syntakticky je velmi podobný HLSL.
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. Důležitými rozdíly jsou např. tzv. operátor „swizzle” („.“), vektorové operace, další datové typy (half
, fixed
, vektorové a maticové typy, sampler
* typy pro textury).
Obsah |
Swizzle operátor
Tento oprátor slouží k přístupu ke složkám vektorů a matic. Složky mohou být duplikovány nebo vynechány. Pro vektory jsou vyhrazeny dvě rovnocenné sady znaků „xyzw“ a „rgba”. Pro matice jsou vyhrazeny číslice „_m<řádek><sloupec>”, například a = b.wzyy;
.
Identifikace dat procházejících skrze pipeliny probíhá pomocí identifikátorů oddělených od parametru dvojtečkou, například in float4 norm : NORMAL;
.
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
- (anglicky) Tutoriál Cg
- (anglicky) Cg FAQ
- (anglicky) domovská stránka jazyka Cg
Náklady na energie a provoz naší encyklopedie prudce vzrostly. Potřebujeme vaši podporu... Kolik ?? To je na Vás. Náš FIO účet — 2500575897 / 2010 |
---|
Informace o článku.
Článek je převzat z Wikipedie, otevřené encyklopedie, do které přispívají dobrovolníci z celého světa. |