Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

nVidia vyvinula C pro grafiku

17.6.2002, Zdeněk Kabát, článek
nVidia vyvinula C pro grafiku
Společnost nVidia vyvinula programovací jazyk Cg, který zjednoduší programovaní v 3D prostředí. Umožňuje tak programátorům a vývojářům vytvářet renderované animace jednodušeji, než tomu bylo doposud.
Dostali jsme se do doby, kdy jsou grafické čipy vybaveny nejmodernějšími technologiemi - plně programovatelný HW, transformační enginy, plně hardwarové osvětlení, full screen anti-aliasing a mnoho dalších funkcí. Prakticky všechen výkon nutný pro grafický výstup je přenesen z procesoru na grafickou kartu. Cestou od prvotního přímého psaní instrukcí k programovacím jazykům, kterým musely projít procesory, nyní procházejí grafické karty. Proto společnost nVidia představila vysokoúrovňový jazyk Cg pro programování v 3D.

Jazyk Cg je jakýmsi prostředníkem mezi GPU a grafickým API a přenáší funkce grafického čipu do programovacího jazyka. Podle činitelů společnosti nVidia je kompatibilní se shader jazykem pro DirectX 9.0 od Microsoftu, protože po počátečním odděleném vývoji se tyto firmy dohodly na spolupráci. Vysokoúrovňový zápis v jazyce Cg urychlí práci vývojářů a umožní vytvářet kvalitnější animace.



Obr.1 - Bude počítačová grafika k nerozeznání od filmu ?

Dnes mají DirectX 8 a OpenGL 1.3 schopnost ovládat kompatibilní shader hardware. Program napsaný jazykem Cg je schopný detekovat možnosti hardwaru a když zjistí, že grafický čip je plně kompatibilní se shaderem, může nadefinovat DX8 tak, aby dokázala použít více funkcí. V praxi to znamená, že pokud program dokáže pozměnit DX8 podle schopností grafické karty. Velká výhoda tohoto systému je v tom, že pokud je hra naprogramována tímto způsobem, přizpůsobuje se sama novějšímu hardwaru bez nutnosti upgradu či aktualizace.

Program, který musel být dříve zapsán dvaceti řádky instrukcí, je nyní možné přepsat do dvou krátkých řádků v Cg. Je tedy velice podobný klasickému C/C++ a mnoho od něj přebral. Velice dobrá věc je také možnost použití více shader programů na jeden objekt:



Obr. 2 - Použití více shaderů najednou

Na první pohled se zdá, že Cg je speciálně vyvinutý nástroj pro programování hardwaru od společnosti nVidia, ale ukázalo se něco nevídaného. Jakýkoli shader hardware podporovaný DirectX 8/9 a OpenGL 1.3/1.4 bude kompatibilní s Cg! Takže je například možné programovat pro ATI Radeon 8500 či R300. Na druhou stranu je to asi velice dobrá strategie, protože kdo by používal tento jazyk např. pro programování her, když by pak šly spustit pouze vlastníkům grafických karet s čipy od nVidie? Nvidia tedy chce, aby se jazyk Cg stal standardem pro vysokoúrovňové 3D programování.

Ale až tak jednoduché to není. Jednotlivé "konkurenční" společnosti (Matrox, ATi, 3Dlabs) si musí vytvořit vlastní Cg compiler. Na veřejnost bylo avšak vypuštěno dostatek informací, takže by nemělo jít o být příliš velký problém. Mimo jiné již údajně stovky vývojářů přislíbily podporu jazyku Cg, např. Blizzard, Bioware, Bethesda, CodeWorks, Epic Megagames, Ion Storm, LithTech, Valve Software a jiné. Jediná povšimnutíhodná výjimka je id Software s Johnem Caramackem. Cg Compiler podporuje dokonce širší škálu platforem: Windows, OS X, Linux, Mac a Xbox.



Obr.3 - Zažije Cg podobnou revoluci jako C ?

Cg se skládá z několika částí: Je to programovací jazyk samotný, dále Cg Compiler, Cg Standard Library, Cg Runtime Libraries, Cg Browser 4.0 a Cg Manual. Současná beta verze, která je k dispozici od 13. června obsahuje podporu DirectX 8 Vertex a Pixel Shaderu a OpenGL 1.3. Připravovaná "gold" verze bude vypuštěna na podzim a bude obsahovat DirectX 9 kompatibilní shadery, více shaderů v knihovnách a Cg plug-in moduly pro 3DstudioMax, Maya a Softimage|XS|.

Celkově vzato je programovací nástroj Cg velkou revolucí, o které funkcionáři nVidie prohlašují, že je největší za posledních deset let a nejdůležitější na dalších deset let. Uvidíme, zda to není přehnané, ale v každém případě se tím pravděpodobně velice zjednoduší programování grafického rozhraní a jestli se splní sen o bezchybné podpoře grafických čipů všech výrobců, máme tu vskutku jeden z největších pokroků za poslední dobu.

Doporučujeme náš velký přehled desktopových grafických čipů.