OpenGL 1.5 Programovaná grafika Moorův zákon, který říká, že rychlost hardwaru se zdvojnásobuje každých 18 měsíců, už dávno přestal platit ve vývoji grafických karet, kde je zrychlení podstatně vyšší. Dobrá zpráva pro uživatele, špatná pro vývojáře. Status quo Zmatek je nejbližší slušné slovo, které se dá pro stávající situaci na trhu s grafickými kartami použít. Vzájemně si konkurující firmy se snaží ovládnout trh pomocí dvou základních strategií - zrychlováním základních funkcí a vývojem a vymýšlením funkcí nových. První směr je jednoznačný: čím více osvětlených a texturovaných trojúhelníků za sekundu, tím lépe. Rychleji se zobrazí více detailů, vědecké vizualizace se zobrazí rychleji a lépe, příšerky ve hrách budou nahánět více strachu atd. Druhý směr, vývoj nových funkcí, je přinejmenším hodně polemický, rozhodně však vnáší do všeho zmatek. Technicky je totiž na úrovni hardwaru možné podporovat leccos, jde jen o to, zda o to někdo stojí. Příkladem mohou být N-patches používané v grafických kartách od různých firem. Nová funkce byla propagována patřičnou reklamní kampaní a barevnými obrázky na webu. Později se však od N-patches potichu upustilo. Není to jediný případ. Zdá se, že i ve vývoji grafických karet platí klasický zákon 2 : 8. To znamená, že 80 % funkcí se použije ve 20 % aplikací a naopak, 20 % funkcí obsahuje 80 % chyb, 20 % funkcí spotřebovává 80 % výkonu atd. Je poměrně obtížné odlišit, které z nových funkcí jsou skutečně nutné, co je potřebné, co je jen reklamní trik a co je zbytečnost. Bohužel nové nestandardní funkce vedou ke starému známému jevu. Aby určitý program fungoval dobře a rychle, musíte mít příslušnou grafickou kartu. Pokud ji nemáte, program se v horším případě nespustí, v lepším se nesnesitelně courá, neboť dotyčná funkce je simulována na procesoru a není prováděna hardwarově na grafické kartě. Tato situace vážně připomíná staré špatné časy, kdy si člověk nainstaloval například 3D Studio či nějakou hru a musel nejprve určit, jakou kartu má k dispozici - jinak vše běželo v rozlišení 320 x 200 pixelů v šestnácti barvách. Zakoupení nové a lepší karty pak nevedlo ke zrychlení, ale ke konstatování programu, že karta není podporována. Jak by také mohla být, když ji vývojáři programu v době jeho vývoje nemohli znát! Nynější situace se této v mnohém podobá. Standardy Jak se s překotným vývojem nových funkcí vyrovnávají existující standardy pro 3D grafiku? Direct3D (D3D) jde klasickou cestou rychlých inovací a nových verzí. Prakticky každé tři měsíce se objeví nová verze a je na vás, abyste si ji stáhli a nainstalovali. Vývojářům z toho jde hlava kolem, neboť nové funkce nejsou vždy zpětně kompatibilní, nejsou ani příliš dobře dokumentované, navíc vzhledem k závratnému tempu vývoje obsahuje poměrně dosti chyb. Rozhodně je však D3D vynikající platforma pro hračičky, kteří musejí okamžitě vyzkoušet nejnovějších výdobytky. Nevýhodou je, že standard D3D je provozován pouze pod MS Windows. Výhodou je bezesporu jeho flexibilita. Starší standard OpenGL, který běží prakticky na všem, se chová konzervativněji. Jen tak snadno se nenechá inovovat a jde cestou rozšíření. Pokud si chcete s nějakou novou funkcí pohrát, musíte použít klasický standard OpenGL a k tomu některá z rozšíření, která jsou schována v souboru glext.h a rozlišují se podle koncovek, například glActiveTextureARB je rozšíření od Architecture Review Board. OpenGL Architecture Review Board (ARB) je nezávislé konsorcium významných firem působících v oboru počítačové grafiky, které bylo ustaveno v roce 1992 a které dohlíží na rozvoj OpenGL. Zatímco rozšíření jsou k dispozici celkem rychle, každá skutečně nová verze OpenGL je připravována poměrně dlouhou dobu a v podstatě je reflexí toho, co je na trhu stálé a kudy s největší pravděpodobností půjde další vývoj. Rozšíření OpenGL jsou výborně dokumentována a přehledná, bohužel už je jich více než základních funkcí OpenGL, takže by asi nějaká změna byla vhodná. Navíc standard OpenGL téměř vůbec nereagoval na nejnovější trend ve vývoji, jímž je programovatelnost grafického hardwaru. OpenGL 1.5 a OpenGL Shading Language 1.0 Dne 28. července společnost SGI, která je vlastníkem ochranné známky OpenGL, oznámila novou verzi OpenGL. Tato verze obsahuje některá ne příliš podstatná rozšíření, například konečně podporuje textury, které nemají velikost strany rovné mocnině dvou. Významnou změnou je však podpora OpenGL Shading Language 1.0. Shading Language je programovací jazyk, který slouží k programování grafických karet. Toto nové rozšíření by mělo sjednotit to, co existuje, a usměrnit (nikoli však diktovat) nový směr vývoje. V podstatě každá současná grafická karta obsahuje programovatelné obvody. Přístup k nim si jednotlivé firmy určovaly samy na úrovni jazyka ne nepodobnému assembleru. Existují pokusy o vyšší programovací jazyky, například Nvidia má svůj CG, tyto jazyky však podporují právě jen grafické karty příslušné firmy. OpenGL se pokouší vše sjednotit, vytvořit standard a tím i pořádek. Dobrou zprávou je, že v podstatě všechny důležité firmy jsou součástí konsorcia ARB zodpovědného za vývoj OpenGL, takže lze předpokládat, že nové rozšíření, ač od firmy SGI, je jakýmsi konsensem. Ostatně oficiální tisková zpráva SGI, která specifikaci OpenGL 1.5 uvádí, přináší pozitivní komentáře od firem Nvidia a 3DLabs. Zatím není znám postoj ostatních firem, důležitá bude především reakce ATI. Co tisková zpráva bohužel neuvádí, je datum, kdy bude implementace k dispozici. Závěr Vývojáři, kteří dávají přednost standardnímu a stabilnějšímu OpenGL, již dlouhou dobu kritizovali ARB za poměrně pasivní postoj k vývoji grafických karet a cesta rozšiřování OpenGL pomocí různých extenzí je rozhodně jen dočasným řešením. Implementace návrhu OpenGL 2.0 je zatím pouze na papíře. Proto by verze OpenGL 1.5 mohla být vynikajícím mezikrokem mezi zcela novou technologií a starou, již více než jedenáct let osvědčenou a dokonale fungující verzí. O tom, že k nějaké změně dojít musí, není mezi odborníky sporu. Zda jsou OpenGL 1.5 a především OpenGL Shading Language 1.0 tím pravým lékem, rozhodne čas. Bedřich Beneš, bedrich.benes@itesm.mx INFOTIPY www.sgi.com/newsroom/press_releases/ 2003/july/opengl15.html www.opengl.org