home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 February / Chip_2004-02_cd1.bin / redakce / chip_txt / txt / 96-100.txt < prev   
Text File  |  2003-12-25  |  20KB  |  66 lines

  1. Mo₧nosti modernφch 3D grafick²ch akcelerßtor∙ 
  2. Hardwarov² fotorealismus
  3. GrafickΘ akcelerßtory prod∞laly za poslednφ t°i roky neuv∞°iteln² pokrok. Hlavnφ podφl na tΘto skuteΦnosti mß slibn∞ se rozvφjejφcφ trh s poΦφtaΦov²mi hrami a zejmΘna s hernφmi konzolami. Obrovsk² rozvoj hernφho pr∙myslu vedl k zßsadnφm rozÜφ°enφm pr∙myslov²ch standard∙ DirectX a OpenGL, co₧ usnadnilo a otev°elo cestu pro v²voj na poli grafick²ch akcelerßtor∙. V nßsledujφcφm povφdßnφ si ukß₧eme novΘ mo₧nosti grafick²ch akcelerßtor∙ vzhledem k poslednφm verzφm standard∙, tedy vzhledem k verzφm DirectX 9.0 a OpenGL 2.0. 
  4.  
  5. Grafick²m akcelerßtorem rozumφme grafickou kartu, kterß umo₧≥uje krom∞ rastrovΘho v²stupu na obrazovku i hardwarovΘ urychlenφ n∞kter²ch grafick²ch operacφ. Je naprosto samoz°ejmΘ, ₧e dneÜnφ grafick² akcelerßtor (dßle jen GA) urychluje operace, jako jsou prßce s okny (vykreslovßnφ, posuv, zv∞tÜovßnφ, p°ekr²vßnφ), s obrßzky (BitBlt, zv∞tÜovßnφ, p°evody barevn²ch palet), s fonty (vyhlazovßnφ, rasterizace, rotace...), s vektory, s videem, s kurzorem myÜi aj., tedy struΦn∞ °eΦeno 2D obrßzkovΘ a vektorovΘ operace. 
  6. Pro kancelß°skou prßci tyto operace jist∞ dostaΦujφ, ale nßroΦnφ u₧ivatelΘ a pokroΦilΘ programovΘ nßstroje ji₧ vy₧adujφ vφce. V²robci hardwaru si u₧ivatele pohotov∞ rozd∞lili na kancelß°sky orientovanΘ u₧ivatele (GA mß jen 2D podporu), na pr∙myslovΘ u₧ivatele (GA podporuje i 3D operace, ale bez nßroku na vizußlnφ kvalitu v²stupu) a na hrßΦe (GA podporuje mimo°ßdn∞ nßroΦnΘ 3D operace s d∙razem na grafickou kvalitu v²stupu). Paradoxn∞ nejv∞tÜφ nßroky na HW vybavenφ majφ prßv∞ "hrßΦi", co₧ ale nenφ v souladu se skuteΦnostφ, ₧e pr∙myslovφ u₧ivatelΘ za vyÜÜφ v²kon v CAD aplikacφch p°iplatφ snßze ne₧ domßcφ u₧ivatelΘ. Postupem Φasu se tedy hranice p°irozen∞ posunuly a v²kon GA pro pr∙myslovou a hernφ sfΘru je srovnateln². Jako vedlejÜφ efekt modernizace a pokroku v operaΦnφch systΘmech se posunula la¥ka i u kancelß°sk²ch aplikacφ, a tak se pokroΦilΘ GA s 3D akceleracφ vyskytujφ i v Φist∞ "kancelß°skΘ" komunit∞. V praxi to znamenß, ₧e dnes ji₧ nenajdete GA bez alespo≥ zßkladnφ podpory 3D zobrazenφ. 
  7. 3D akcelerace operacφ je zalo₧ena na pr∙myslov²ch standardech DirectX (Microsoft) a OpenGL (SGI). Bez t∞chto standard∙ by nebylo mo₧nΘ programovat aplikace s tφm, ₧e p°i pou₧itφ p°φsluÜnΘho GA budou jejich 3D a 2D operace v²znamn∞ urychleny. Pro in₧en²rskΘ aplikace je pravidlem po₧adavek standardu OpenGL, zejmΘna pro jeho portabilitu (je p∙vodn∞ napsßn pro unixovΘ prost°edφ a dnes je navφc k dispozici na platformßch Mac i PC) a p°ehlednost (v²vojß°∙m se jednoduÜeji tvo°φ novΘ aplikace). V hernφm pr∙myslu se setkßvßme zejmΘna s po₧adavkem na DirectX, kde je nejv∞tÜφ devizou Üirokß podpora firmy Microsoft a s tφm spojenΘ konsekvence. Oba zmi≥ovanΘ standardy majφ prakticky shodnΘ vlastnosti a v²vojß°i jsou Φasto nuceni vyvφjet pro ob∞ platformy. Je velmi smutnΘ, ₧e se nepoda°ilo realizovat projekt Fahrenheit, kter² m∞l za ·kol oba standardy spojit v jeden (Microsoft z projektu odstoupil s odkazem na nedostateΦn∞ rychl² v²voj na stran∞ SGI...). 
  8.  
  9. 3D AKCELERACE "MINULOSTI" 
  10. Zßkladem 3D akcelerßtoru je grafick² procesor - GPU (Graphics Processor Unit) -, kter² je ulo₧en spolu s grafickou pam∞tφ na kart∞ grafickΘho akcelerßtoru. ┌kolem GPU je zpracovßnφ operacφ s geometrick²mi a rastrov²mi daty a zobrazovat je na monitoru. Zobrazenφ 3D scΘny pomocφ GA p°edpoklßdß, ₧e povrch 3D objektu je aproximovßn v²hradn∞ pomocφ troj·helnφk∙ (nebo N-·helnφk∙). P°i zobrazovßnφ grafick²m akcelerßtorem se pro ka₧dou 3D scΘnu opakuje nßsledujφcφ postup: Troj·helnφky slo₧enΘ z vrchol∙, texturovacφch sou°adnic a normßlov²ch vektor∙ (kolmice k povrchu) jsou spolu s texturami p°eneseny do GA, kde jsou nejprve transformovßny do obrazov²ch sou°adnic, pak rasterizovßny (tj. jsou vykresleny do pam∞ti hloubky), nßsledn∞ jsou stφnovßny (je pou₧ita textura a zjednoduÜenΘ stφnovßnφ) a v²sledek je prolnut s ji₧ vykreslenou scΘnou (je °eÜena viditelnost a zßkladnφ obrazovΘ operace jako zv∞tÜenφ apod.). 
  11. Uveden² zp∙sob zobrazenφ 3D scΘny pomocφ pam∞ti hloubky (Z-buffer nebo takΘ Depth-buffer) se v HW akceleraci pou₧φvß ji₧ od ran²ch zaΦßtk∙ grafiky (osmdesßtß lΘta). Standardnφ 3D zobrazenφ povrchu t∞les pomocφ GA bylo d°φve zalo₧enΘ pouze na zjednoduÜenΘm stφnovßnφ pomocφ Phon gova a Gourardova modelu. Tyto matematickΘ modely jsou vÜak na hony vzdßleny od fotorealistickΘho zobrazenφ. Pro dosa₧enφ kvalitativn∞ vyÜÜφho v²sledku v²robc∙m her nezbylo ne₧ rozÜi°ovat zobrazenφ nejr∙zn∞jÜφm nestandardnφm obchßzenφm GA nebo kompletnφm v²poΦtem zobrazenφ na CPU poΦφtaΦe. 
  12. V roce 2000 vÜak doÜlo k v²znamnΘmu zlomu na poli GA, kter² umo₧nil programßtor∙m zasßhnout do v²slednΘho 3D zobrazenφ scΘny pomocφ CPU. Tento zlom byl zap°φΦin∞n zejmΘna vydßnφm balφku Microsoft DirectX 8, kter² byl logick²m d∙sledkem p°φpravy hernφ konzoly Microsoft XBox ve spoluprßci s p°ednφmi v²robci grafickΘho hardwaru. Balφk DirectX 8 v²znamn∞ posunul i v²voj (do tΘ doby znaΦn∞ strnulΘho) standardu OpenGL, jeho₧ rozÜφ°enφ do verze 1.2 a pozd∞ji 2.0 (zejmΘna na popud firmy Apple a v²vojß°∙ grafickΘho hardwaru) vytvo°ilo ·pln∞ novΘ mo₧nosti multiplatformnφch grafick²ch aplikacφ. 
  13. Firmy ATI a nVidia, hlavnφ "hrßΦi" na trhu, jako prvnφ implementovaly nov² koncept do sv²ch grafick²ch akcelerßtor∙ a tφm zaΦal jejich boj o nejrychlejÜφ implementaci grafickΘho procesoru, sb∞rnic a pam∞tφ. SpoleΦnost ATI zasadila firm∞ nVidia zßsadnφ rßnu, kdy₧ p°ekvapila vΦasnou a kvalitnφ HW implementacφ rozÜφ°enφ DirectX 9.0 (a OpenGL 2.0), ale nVidia svou ztrßtu postupn∞ dotßhla a novΘ grafickΘ procesory obou renomovan²ch v²robc∙ se dr₧φ na srovnatelnΘ v²konovΘ hladin∞. 
  14.  
  15. NOV┴ GENERACE GRAFICK▌CH AKCELER┴TOR┘ 
  16. Architektura novΘ generace grafick²ch akcelerßtor∙ (obr. 1) je zalo₧ena na proudovΘm zpracovßnφ dat (data streams), kde lze pevn∞ zakotvenΘ funkce pro geometrickß data ovlivnit pomocφ tzv. Vertex Shaders (VS, obr. 2) a pro rastrovß data pomocφ tzv. Pixel Shaders (PS, obr. 3). V²vojß°i tak mohou pomocφ VS a PS aktivn∞ programßtorsky zasßhnout do architektury p°edchozφ generace GA a tφm mφt plnou kontrolu nad grafick²m v²stupem. 
  17. Vlastnφ idea programovßnφ VS a PS je znaΦn∞ p°evzata z jazyk∙ pro stφnovßnφ, jako je Pixar RenderMan (RIB) nebo Stanford Real-time Shading Language (SRSL). Tyto jazyky umo₧≥ujφ kompletn∞ p°eprogramovat elementßrnφ stφnovacφ algoritmy pro existujφcφ grafickΘ programy. Dφky nim lze dosßhnout maximßlnφ obecnosti ·rovn∞ renderingu, a to od jednoduchΘho zobrazovßnφ ploÜek a₧ po nejslo₧it∞jÜφ simulaci anizotropickΘho nebo sklen∞nΘho povrchu. Prßv∞ psanφ "shaders", jak se t∞mto elementßrnφm stφnovacφm program∙m °φkß, je zßkladem v²vojov²ch center uvnit° velk²ch firem, jako jsou Pixar, ILM, Dream Works, Digital Domain, Weta Digital aj. 
  18. VS a PS jsou elementßrnφ programy urΦenΘ pro zmφn∞nΘ samostatnΘ v²poΦetnφ jednotky GA, kterΘ pracujφ s omezenou instrukΦnφ sadou podobnou assembleru. Vzhledem k tomu, ₧e VS a PS jsou souΦßstφ slo₧it∞jÜφ, proudovΘ struktury, oznaΦujφ se tyto programy jako fragmentovΘ programy (Fragment Programs, Codes). 
  19. Vstupem fragmentov²ch program∙ je tzv. vertex stream (sada vrchol∙ troj·helnφk∙ pro VS) a pixel stream (pixely troj·helnφk∙ pro PS). VS a PS jsou omezeny nejen velikostφ vstupnφch dat, ale i pam∞tφ GA a maximßlnφ dΘlkou programu, proto₧e hardware GA musφ provΘst elementßrnφ program shaderu pouze v omezenΘm Φase. ProblΘm kapacity programu je °eÜen na ·rovni paralelnφho zpracovßnφ vφce v²poΦetnφmi jednotkami (GA zpravidla obsahuje Φty°i a vφce paralelnφch jednotek pro PS a pro VS). InstrukΦnφ sada pro VS a PS pracuje pln∞ vektorov∞ (tj. barva je reprezentovßna Φtve°icφ RGBA, vrchol troj·helnφku je dßn sou°adnicemi XYZ a p°φpadn∞ dalÜφm parametrem), navφc je p°izp∙sobena pro stφnovßnφ, tudφ₧ lze v jednom kroku poΦφtat elementßrnφ operace, jako je vzdßlenost vektor∙, maticovΘ nßsobenφ, ·bytek vzdßlenostφ aj. 
  20. V²sledn² v²stup otev°enΘ architektury GA ovliv≥ujφ oba fragmentovΘ programy VS a PS souΦasn∞, ale p°esto jsou n∞kterΘ v²stupy dominantn∞ vytvo°eny jednφm ze shader∙. V nßsledujφcφch odstavcφch se pokusφme ukßzat ·lohu obou fragmentov²ch program∙ odd∞len∞. 
  21.  
  22. VERTEX SHADERS 
  23. Vstupem pro VS je proud vrchol∙ zobrazovan²ch dat (vertex streams) s p°φsluÜn²mi parametry, v²stupem VS je p°em∞n∞nß struktura vektor∙ s p°φsluÜn²mi normßlami, barvami vrchol∙, texturovacφmi sou°adnicemi apod. Interpretace vstupnφch dat tedy pln∞ zßvisφ na vlastnφm podprogramu VS. Vytvo°en² program m∙₧e chßpat zadanß vektorovß data jako vrcholy troj·helnφk∙ (asi nejΦast∞ji), ale takΘ jako °φdicφ body vytvß°enΘ plochy nebo procedurßlnφho t∞lesa. Pro ilustraci obecnosti tΘto implementace si uvedeme n∞kolik p°φklad∙ vlastnostφ v²stup∙ VS: 
  24. Vr₧enΘ stφny objekt∙. Ze znalosti pozice sv∞tla a geometrie t∞lesa se vytvo°φ neviditelnΘ stφnovΘ t∞leso (tzv. shadow volume extrusion), kterΘ se v dalÜφ fßzi pou₧ije p°i v²poΦtu zastφn∞n²ch bod∙. 
  25. Zrcadlenφ objekt∙. Pro ploÜnß zrcadla platφ, ₧e odraz v nich je toto₧n² s obrazem, kter² vznikne, pokud se na scΘnu dφvßme ze sprßvnΘho pohledu "uvnit° zrcadla". Pomocφ VS tak lze vytvo°it "novou scΘnu", kterß je v∙Φi pozorovateli zrcadlovß, a vznikne tak efekt zrcadlovΘho povrchu, ve kterΘm se odrß₧ejφ okolnφ objekty. Snadno tak lze nap°φklad vytvo°it vodnφ hladinu, kterou lze navφc procedurßln∞ zvlnit. 
  26. Komprese geometrie. Sb∞rnicφ projdou komprimovanß data, kterß dφky VS na v²stupu "expandujφ" do plnΘ Üφ°e. P°φkladem mohou b²t parametrickΘ plochy, jako nap°φklad BSpline, NURBS nebo stßle vφce pou₧φvanΘ subdivision surfaces. 
  27. Procedurßlnφ t∞lesa a deformace. Na vstupu VS je pouze "kostra" geometrie s p°φsluÜn²mi parametry a v²sledek je do v²slednΘ podoby modifikovßn podle interakce, dynamiky apod. NejΦast∞jÜφ je vytvo°enφ deformacφ v kolmΘm prostoru povrchu (reßlnΘ vln∞nφ a zm∞ny geometrie t∞les, vφtr). Specißlnφm p°φpadem jsou pak procedurßlnφ t∞lesa (fraktßly, stromy, voda, ohe≥), kterß se vytvo°φ a₧ na zßklad∞ VS poΦφtanΘho na GPU. 
  28. Zobrazenφ chlup∙. Povrch t∞lesa se specißlnφm VS programem pokryje "chlupy" (vytvo°φ se specißlnφ elementßrnφ t∞leso ve sm∞ru normßl). 
  29. Specißlnφ stφnovßnφ v zßvislosti na pohledu pozorovatele. Nap°φklad osv∞tlovßnφ scΘny specißlnφm stφnovacφm algoritmem, konturovΘ stφnovßnφ (zd∙razn∞nφ hraniΦnφ geometrie - hran t∞les) aj. K uveden²m p°φklad∙m je t°eba si uv∞domit, ₧e pro VS jsou stßle omezenΘ prost°edky programovßnφ (zatφm max. 128 instrukcφ fragmentovΘho programu). I p°es omezenφ lze vytvß°et celΘ procedurßlnφ plochy typu rostliny, louky, postavy, bubliny apod., a to vÜe na GPU, tedy nezßvisle na CPU poΦφtaΦe, kter² ji₧ m∙₧e paraleln∞ zpracovßvat jinΘ ·lohy. 
  30.  
  31. PIXEL SHADERS 
  32. V²stupnφ proud dat z VS p°echßzφ do rasterizeru, kter² vykresluje ka₧d² zobrazovacφ troj ·helnφk do pam∞ti GA. Proud dat z rasterizeru (tzv. pixel stream) je vstupem pro Pixel Shader (PS). Vstupnφ proud dat obsahuje mj. texturovacφ sou°adnice, polohu bodu, p°φsluÜnosti k troj·helnφku aj. V²stupem zpracovßnφ PS jsou ji₧ v²stupnφ barvy pixel∙ s p°φsluÜnou pr∙hlednostφ (alfa kanßl) a hloubkou (Z-buffer). Pomocφ podprogramu PS lze ovlivnit celkovou interpretaci v²slednΘho zobrazenφ a vytvo°it tak naprosto specißlnφ algoritmus stφnovßnφ ka₧dΘho bodu, kter² bude vytvo°en jen pro dan² ·Φel. NejlΘpe si ukß₧eme p∙sobnost PS op∞t na p°φkladech. Pomocφ PS lze vytvß°et nap°φklad nßsledujφcφ stφnovßnφ povrch∙: metalickΘ, brouÜenΘ, textilnφ, hrbolatΘ (bump), pr∙svitnΘ, Fresnelovy nebo obecn∞ anizotropickΘ a zß°ivΘ povrchy. Mezi speciality souΦasn²ch aplikacφ pat°φ simulace k∙₧e, mrak∙, oblohy, vody, vln, reflexφ, refrakcφ, okolnφho mapovßnφ apod. PS lze navφc v²hodn∞ vyu₧φt pro post-processing image a videoefekty, jako nap°φklad detekce hran, kolorovßnφ, morfologii, segmentaci obrazu apod. V reßlnΘm Φase tak lze provßd∞t °adu operacφ, kterΘ byly do tΘ doby v²sadou nßkladn²ch specializovan²ch karet. Pro hernφ pr∙mysl je v²znamnß aplikace PS pro procedurßlnφ textury, kde je mo₧nΘ pou₧φt nap°φklad fraktßlnφ ÜumovΘ povrchy, bun∞ΦnΘ automaty, texture-bombing aj. Pro PS fragmentovΘ programy platφ (podobn∞ jako pro VS) znaΦnΘ omezenφ co do poΦtu instrukcφ (zatφm maximßln∞ 22), kterΘ je dßno mj. i mnohonßsobn∞ vyÜÜφm poΦtem zpracovßvan²ch dat. Uvnit° architektury GA je v∞tÜinou alespo≥ dvakrßt vφce PS (resp. texturovacφch) jednotek ne₧ pro VS. 
  33.  
  34. POKRO╚IL╔ ZOBRAZOV┴N═ POMOC═ GPU
  35. Spojenφm PS i VS vznikajφ opravdu pokroΦilΘ algoritmy stφnovßnφ, pro n∞₧ se v₧ilo oznaΦenφ GPU rendering. Pomocφ GPU lze nynφ realizovat °adu nadstandardnφch zobrazovacφch technik v reßlnΘm Φase. Za vÜechny uve∩me n∞kolik p°φklad∙. 
  36. Techniky NPR (Nonphotorealistic Rendering) p°edstavujφ stßle ₧ßdan∞jÜφ "nefotorealistickß zobrazenφ" 3D scΘny. Pomocφ NPR je scΘna zobrazena nap°φklad technikou p°ipomφnajφcφ ruΦnφ malbu, perokresbu, tu₧ku nebo obecn∞ konturovou kresbu (cartoon). NPR zobrazenφ lze pomocφ GPU dosßhnout nap°φklad dφky hranov²m filtr∙m PS v kombinaci se stφnov²m t∞lesem VS (generßtoru kontur rozhranφ t∞leso-stφn). 
  37. Techniky IBR (Image-Based Rendering) zobrazujφ 3D scΘny pomocφ sady fotografiφ nebo obecn∞ 2D obraz∙. IBR zahrnuje i osv∞tlovacφ modely, pro n∞₧ se vyu₧φvajφ sv∞telnΘ mapy okolφ (tzv. Light-Probes). D∙kazem toho, ₧e v²poΦty pomocφ PS a VS jsou opravdu mocnΘ, je demo od pr∙kopnφka IBR Paula Debevece (obr. 5). ScΘna se sklen∞n²mi a zrcadlov²mi koulemi, nasv∞tlenß reßln²m okolnφm sv∞tlem, je poΦφtßna v reßlnΘm Φase v rozliÜenφ 1280 x 1024. P°i v²poΦtu je vyu₧it kompletn∞ p°epracovan² Ward∙v stφnovacφ model. Stejn² v²poΦet trvß programu Radiance °ßdov∞ minuty na jeden obrßzek... 
  38. Procedurßlnost zobrazenφ pomocφ GPU umo₧≥uje nap°φklad algoritmicky "ochlupit" povrch libovolnΘho t∞lesa i s p°φsluÜn²mi dynamick²mi vlastnostmi. Demo v²vojß°e Tomohideho Kana (obr. 4) pou₧φvß VS pro generovßnφ p°φsluÜnΘ normßlovΘ plochy, PS se pak starajφ o textury a v∞rnΘ zobrazenφ anizotropickΘho povrchu ka₧dΘho zobrazenΘho chloupku. Procedury PS umo₧≥ujφ generovat i procedurßlnφ obrazy, jak²mi jsou Mandelbrotovy nebo Juliovy fraktßly. DalÜφm p°φkladem pokroΦilΘho v²stupu jsou zvln∞nΘ (bump), pr∙hlednΘ a zrcadlovΘ povrchy, kterΘ vyu₧φvajφ krom∞ standardnφch textur tzv. normßlovΘ mapy a pomocn² buffer (stencil plane) pro zobrazenφ zrcadlen²ch povrch∙. 
  39. Na GPU se poda°ilo p°enΘst i nejpokroΦilejÜφ techniky zobrazenφ, jako je sledovßnφ paprsk∙ (ray-tracing) a metody globßlnφho osv∞tlenφ (global illumination). Dφky t∞mto technikßm je mo₧nΘ v souΦasnΘ dob∞ zobrazit (tΘm∞°) v reßlnΘm Φase (asi 5 snφmk∙/s) "p°esnΘ" vr₧enΘ stφny, radiozitu, mnohonßsobnΘ odrazy, lomy sv∞tla, m∞kkΘ stφny aj. 
  40.  
  41. PROGRAMOV┴N═ GPU
  42. Programovßnφ GPU je mo₧nΘ od standard∙ OpenGL 1.2 a DirectX 8. V prvnφch verzφch standard∙ nalezneme °adu omezenφ co do velikosti vstupnφch dat i co do p°esnosti prom∞nn²ch a vektor∙ (celoΦφselnΘ hodnoty jednoduchΘ p°esnosti). ╪adu omezenφ p°ekonßvajφ poslednφ verze standard∙, tj. OpenGL 2.0 a DirectX 9.0, kde vektorovß data jsou obecnΘ matice a vstupnφ data jsou v obecnΘm neceloΦφselnΘm formßtu. UvedenΘ vlastnosti d∞lajφ z GPU obecn², vektorov∞ a rastrov∞ orientovan² koprocesor kompetitivnφ s CPU. 
  43. Vytvß°et fragmentovΘ programy pro PS a VS nenφ snadnΘ. Je nutnΘ si uv∞domit, ₧e program je v₧dy spouÜt∞n jen "jednosm∞rn∞" (proudov∞), musφ se provΘst v p°edem omezenΘm Φase a navφc se musφ poΦφtat na vφce v²poΦetnφch jednotkßch najednou. Proudov² zp∙sob provßd∞nφ neumo₧≥uje p°φm²m zp∙sobem implementovat smyΦky a v∞tvenφ (je t°eba vytvß°et vφcepr∙chodovΘ "lineßrnφ" programy). P°i psanφ program∙ je t°eba dbßt i na omezenou velikost texturovacφ pam∞ti (dnes a₧ 256 MB), kam se musφ vejφt nejen geometrie, textury, pomocnΘ buffery a vlastnφ fragmentovΘ programy, ale tΘ₧ vytvo°enß procedurßlnφ t∞lesa a obecn∞ vÜechny v²stupy PS a VS. 
  44. Pro psanφ fragmentov²ch program∙ si lze vybrat hned n∞kolik jazyk∙. Microsoft integroval do svΘho Visual Studia jazyk HLSL (High-Level Shader Language), kter² svou strukturou p°ipomφnß takov² "maticov² assembler". Lze vÜak vyu₧φt i trochu "lidÜt∞jÜφ" jazyky, jako je CG (podporovßn firmou nVidia), kter² p°ipomφnß jazyk C a umo₧≥uje programßtorsk² komfort vΦetn∞ generovßnφ smyΦek, v∞tvenφ aj. DalÜφ mo₧nostφ je zmi≥ovan² jazyk SRSL nebo specializovanß prost°edφ, jak²mi jsou ATILLA, ShadeLab nebo knihovna SUSHI od v²vojß°∙ firmy ATI. 
  45. V²robci HW se p°edhßn∞jφ v otev°enosti sv²ch produkt∙ a dodßvajφ zdarma specißlnφ nßstroje pro lad∞nφ PS a VS. Nap°φklad firma ATI dodßvß zajφmav² nßstroj Render Monkey, kter² mj. umo₧≥uje importovat 3D scΘny vΦetn∞ textur a interaktivn∞ zkouÜet naprogramovanΘ nebo vlastnφ VS a PS shadery. PodobnΘ (i kdy₧ mnohem jednoduÜÜφ) prost°edφ pro zkouÜenφ fragmentov²ch program∙ nazvanΘ CgFX Viewer mß i firma nVidia. V brzkΘ dob∞ se jist∞ objevφ i oficißlnφ nßstroj pro p°φm² p°evod jazyka RenderMan (RIB) do fragmentov²ch program∙. NaznaΦuje to skuteΦnost, ₧e nVidia nedßvno zakoupila spoleΦnost Exluna, kterß mj. vyrßb∞la populßrnφ zobrazovacφ program BMRT, interpretujφcφ prßv∞ rozÜφ°en² jazyk RIB. 
  46.  
  47. VYUÄIT═ GPU V PRAXI 
  48. Je z°ejmΘ, ₧e pokroΦilΘ zobrazovßnφ pomocφ GPU vyu₧φvajφ zejmΘna v²vojß°i poΦφtaΦov²ch her (nap°. poslednφ verze her Doom nebo Unreal Tournament). Obrovskou sφlu pokroΦil²ch v²poΦt∙ na GPU vÜak dnes vyu₧φvajφ i "seri≤znφ" pr∙myslovΘ aplikace, nap°φklad ÜpiΦkovΘ 3D modelovacφ a kompoziΦnφ programy Maya (Alias) a Softimage (Avid). Oba zmφn∞nΘ programy obsahujφ mo₧nost tzv. real-time preview, p°i nich₧ jsou scΘny zobrazovßny pomocφ GPU a p°φsluÜn²ch real-time shader∙ (PS a VS programy). V²sledek real-time preview je mnohdy kvalitativn∞ shodn² s opravdov²m programov²m zobrazenφm (software rendering), p°iΦem₧ je minimßln∞ dvacetkrßt rychlejÜφ. Omezujφcφm faktorem pro plnΘ vyu₧itφ je pouze velikost texturovacφ pam∞ti a "Üφ°e" sb∞rnice. Vyu₧itφ GPU pro preview ji₧ implementujφ i dalÜφ v²vojß°i, jako nap°φklad NaN (Blender 3D), Maxon (Cinema 4D) aj. 
  49. Ji₧ tento rok se objevily i prvnφ implementace grafick²ch akcelerßtor∙ pro PDA a mobily. Prvnφ portace standardu OpenGL pro PDA je na sv∞t∞, a tak se s VS a PS setkßme i na p°enosn²ch kapesnφch poΦφtaΦφch. Zde bude v²voj jeÜt∞ ovlivn∞n omezen²m rozliÜenφm, kterΘ vy₧aduje dalÜφ standardizaci. 
  50.  
  51. CO BUDE D┴L... 
  52. Konstatovßnφ, ₧e u₧ prakticky ka₧d² kancelß°sk² PC je vybaven 3D grafick²m akcelerßtorem, ji₧ dnes asi nikoho nep°ekvapφ. P°esto si jist∞ vzpomφnßte, ₧e p°ed t°emi lety to jeÜt∞ nebylo b∞₧nΘ a pro mnohΘ to bylo i t∞₧ko p°edstavitelnΘ. SouΦasnΘ grafickΘ karty a standardy vÜak zaΦφnajφ p°ekonßvat nejednu predikci grafick²ch optimist∙ a neuv∞°itelnΘ se stßvß skuteΦnostφ novΘ akcelerßtory obsahujφ obecnΘ implementace pokroΦil²ch zobrazovacφch algoritm∙, kterΘ se dnes pou₧φvajφ tΘm∞° v²hradn∞ pro specißlnφ efekty ve filmech a v reklamßch. 
  53. Rychlost sb∞rnic grafick²ch adaptΘr∙ dosahuje 2,1 GB/s, GPU je ji₧ dnes v²poΦetn∞ rychlejÜφ ne₧ CPU, poΦet paralelnφch aritmetick²ch jednotek je Φty°i a vφce, grafickß pam∞¥ je 256 MB... Zdßlo by se, ₧e krom∞ pam∞ti, paralelnφch jednotek a rychlosti GPU ji₧ nenφ co vylepÜovat. Logicky vyvstßvß otßzka: Co bude dßl? 
  54. Odpov∞∩ je nejasnß, ale sm∞r v²voje naznaΦujφ poslednφ v∞deckΘ konference, jako je SIGGRAPH nebo Rendering Workshop 2003. Na nich se ji₧ neprobφrala klasickß tΘmata zobrazenφ 3D scΘn pomocφ grafick²ch adaptΘr∙. Hlavnφm tΘmatem se stalo vyu₧itφ GPU jako specializovanΘho, vektorov∞ orientovanΘho koprocesoru pro "seri≤znφ v²poΦty" a simulace. Modernφ architektura umo₧≥uje pomocφ GPU poΦφtat kolize objekt∙, nelineßrnφ optimalizace, nebo dokonce soustavy lineßrnφch rovnic. Ale o tom zase n∞kdy p°φÜt∞... 
  55. Jan Burißnek
  56.  
  57. INFOTIPY
  58. www.ati.com/developer Oficißlnφ strßnky ATI
  59. www.nvidia.com Oficißlnφ strßnky nVidie 
  60. www.debevec.org Real-time implementace HDR renderingu pro Radeon 9700 PRO 
  61. www.opengl.org Strßnky OpenGL 
  62. www.microsofr.com/directx Strßnky DirectX 
  63. www.pixar.com Strßnky spoleΦnosti Pixar (auto°i programu RenderMan) 
  64. www.bmrt.org Strßnka programu Blue Moon Rendering Tool (nynφ zakoupen nVidiφ)
  65.  
  66.