| Na současných grafických kartách máme ukryt druhý počítač - a
        v některých ohledem dokonce výkonnější než ten na hlavní desce.
        Díky široké a rychlé paměťové sběrnici a vysoce paralelní architektuře
        dosahují grafické procesory (GPU - Graphics Processing Unit)
        nepřekonatelných datových toků a vysokých výkonů při výpočtech
        s plovoucí řádovou čárkou (jsou obvykle optimalizovány pro
        4-bytová float čísla). Např. GPU NVidia GF6800 má 220 milionů
        tranzistorů, 256-ti bitovou sběrnici, 6 paralelních vertexových
        procesorů a 16 paralelních fragmentových procesorů. Výkon a možnosti
        jsou skvělé, na druhé straně se ale GPU vyrovná nejvýkonnějším CPU
        také ve spotřebě elektrické energie (a to už tak skvělé není). Ale asi
        nemůžeme chtít, aby výkonnější motor měl menší spotřebu než motor
        slabší. Co získá uživatelZískáváme stručně řečeno kvalitnější obraz. Pomocí kódu pro GPU
            lze vytváře obrazové efekty, které nebyly s grafickými
            akcelerátory s pevně danou funkčností dosažitelné nebo lze
            efektivně řešit problémy, které by dříve představovaly neúměrnou
            zátěž pro CPU. Jedním z obvykle nejvíce viditelných použití shaderů je
            bumpmapping. Osvětlení povrchy textur v tangenciálním
            prostoru bylo možno do jisté míry možno řešit i pomocí
            rozšíření OpenGL na grafických kartách s pevnou funkčností.
            Použití shaderů zde odstraňuje řadu omezení a umožňuje použít
            lepší algoritmy a dosáhnout tak kvalitnějšího obrazu než
            u jakýchkoliv jiných řešení. Dalším příkladem užitečnosti shaderů může být zdánlivě docela
            prostá animace kymácení stromů ve větru. Zde by bylo možno
            v principu vše řešit i bez programovatelné GPU. Úloha
            však vede na takové množství algebraických výpočtů (násobení
            vektorů maticemi), že počítat vše pomocí CPU by nebylo příliš
            rozumné. Výkon paralelních vertexových procesorů přináší pro CPU
            (a tím pro celou v reálném čase běžící aplikaci) velmi
            přínosné odlehčení. 
 stromy se kymácejí ve větru - scéna vypadá živěji
              (i když na statickém obrázku to tak nevypadá)Zajímavou ukázkou využití shaderu pro zdokonalení obrazu jinými
            způsoby nedosažitelného je vyřešení kombinace prostorového stínu,
            vytvořeného ve stencil bufferu jednoprůchodovým algoritmem,
            s mlhou. Obvykle se u těchto technik vytváření stínů
            využívá dvou vykreslovacích průchodů, jeden pouze pro ambientní
            světlo a druhý pro kompletní osvětlení. U jednoprůchodového
            algoritmu, použitého ve vykreslovacím stroji systému Control Web,
            ušetříme cenný výkon eliminací nutnosti ambientního vykreslovacího
            průchodu. Oba postupy mají své přednosti i nevýhody,
            jednoprůchodový algoritmu je však vždy rychlejší, a náš
            vykreslovací stroj je silně orientován a optimalizován na
            maximalizaci výkonu. Obvykle se řídíme pravidlem, že výkon má
            přednost - vše je nutno vykreslovat v reálném čase. Významnou
            chybou jednoprůchodového algoritmu je jeho neslučitelnost se
            zamlženým obrazem scény. V okamžiky zatmavovaných míst se
            stíny již běžným způsobem není k dispozici informace
            o míře zamlžení jednotlivých fragmentů (pixelů) obrazu.
            Dochází tak k nesprávnému temnutí i vzdálených a tedy
            hodně zamlžení pixelů. Tento problém lze opět vyřešit pomocí
            fragmentového shaderu. Každé pro má i svá protiPřínosy programovatelných GPU pochopitelně silně převažují nad
            nevýhodami, přesto zde ale můžeme zmínit několik aspektů těchto
            jinak skvělých technologií. Uživatele se týká nevýhoda jen jediná - povrchy jsou shaderem
            vykreslovány obvykle o něco pomaleji, než je tomu
            v případě pevné grafické pipeline. A to i tehdy,
            je-li shader napsán docela dobře (navíc je zde riziko nekvalitně
            napsaného kódu, to je ale věc programátora a uživatel to nemůže
            nijak ovlivnit). Pro úplnost je ale zde třeba dodat, že na druhé
            straně lze kódem shaderu řešit mnoho výpočtů, které dříve musela
            řešit CPU, a to naopak může přinést výrazné urychlení. Pro architekturu systému Control Web přináší shadery řadu
            komplikací (to nás jako uživatele naštěstí vůbec netíží :-).
            Především systém musí fungovat na veškerých počítačích i se
            starými a málo výkonnými grafickými kartami. Proto veškeré
            vykreslovací mechanismy využívající programovatelnost GPU musí mít
            v systému alternativu i pro grafiku s pevnou
            funkčností. Dokonce často musí být těchto alternativ několik. To
            proto, že každá grafická karta má jiná rozšíření a jiné
            schopnosti, kterých vykreslovací stroj umí využívat. Vždy však
            musí být k dispozici varianta, kdy grafická karta neumí nic
            navíc. 3D grafika tedy vždy funguje, někdy však mohou některé
            efekty vypadat hůře, někdy mohou být vykreslovány pomaleji nebo
            mohou být nahrazeny jednodušším povrchem. Široký rozsah platforem
            a zpětná kompatibilita je i zde jedním z hlavních
            návrhových cílů systému. Jaká bude budoucnost?Budoucnost počítačové grafiky bude určitě patřit
            programovatelným grafickým procesorům. Moderní počítač má dnes
            všeobecně použitelnou CPU (samozřejmě s více jádry :-)
            a programovatelnou GPU, která se relativně samostatně stará
            o tvorbu obrazu. To, že počítač dokáže vytvářet
            fotorealistický třírozměrný obraz v tzv. filmové kvalitě bude
            brzy naprostou samozřejmostí. RC mailto:rc@mii.cz |