home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 November / Chip_2001-11_cd1.bin / obsahy / Chip_txt / txt / 62-65.txt < prev    next >
Text File  |  2001-09-30  |  14KB  |  96 lines

  1. NVIDIA GeForce3 
  2. GeForce3 - snad ne p°ehnanΘ oΦekßvßnφ
  3. U₧ jsme si zvykli na to, ₧e grafickΘ Φipy GeForce firmy NVIDIA jsou v₧dy o kousek nap°ed p°ed konkurencφ - jak v pou₧itΘ technologii, tak i ve v²konu. Je tomu tak i v p°φpad∞ novΘho Φipu GeForce3? Na tuto otßzku se budeme sna₧it najφt odpov∞∩ v tomto Φlßnku.
  4.  
  5. NVIDIA rozhodn∞ sv∙j tr∙n na poli hernφho grafickΘho hardwaru nemφnφ opustit. Je pravda, ₧e v n∞kter²ch oblastech jφ zaΦal trochu dochßzet dech, ale Φipem GeForce3 jasn∞ naznaΦuje, ₧e se s druh²m mφstem rozhodn∞ nemφnφ spokojit. On∞mi problΘmov²mi oblastmi byly celoobrazovkov² antialiasing a hlavn∞ komunikace mezi Φipem a grafickou pam∞tφ. V prvnφm p°φpad∞ hrßl prim Φip Voodoo5, ve druhΘm ATI Radeon. ╪eÜenφ pou₧itΘ v GeForce3 firm∞ NVIDIA op∞t zajiÜ¥uje dostateΦn² nßskok.
  6. Samoz°ejm∞ ₧e novΘ funkce GeForce3 nebyly vyvinuty jen tak z niΦeho. V²sledkem dlouhΘho spoleΦnΘho v²voje s Microsoftem je novß verze DirectX 8.0. GeForce3 je s DirectX8 pln∞ kompatibilnφ a zßrove≥ je to (prozatφm) jedin² produkt, kter² Direct3D 8.0 hardwarov∞ implementuje. Spoluprßce firmy NVIDIA se spoleΦnostφ discreet, vyvφjejφcφ 3d studio max, bude pro hrßΦe i v²vojß°e poΦφtaΦov²ch her takΘ velmi v²hodnß. Discreet pracuje na tom, aby vÜechny novinky Φipu GeForce3 ovliv≥ujφcφ vzhled objekt∙ mohl pou₧φt ji₧ u₧ivatel 3d studia, a hlavn∞ aby je rovnou ve 3d studiu vid∞l. Doposud u₧ivatel 3d studia v∙bec netuÜil, jak se jeho model zobrazφ po p°enesenφ do prost°edφ vyvφjenΘ hry.
  7.  
  8. Novinky GeForce3
  9. Podle materißl∙ firmy NVIDIA obsahuje GeForce3 Φty°i "tahßky" - programovateln² procesor pro zpracovßnφ vrchol∙ Vertex shader, programovateln² procesor pro zpracovßnφ pixel∙ Pixel shader, architekturu pro urychlenφ komunikace mezi Φipem a pam∞tφ Lightspeed Memory Architecture a hardwarov∞ podporovan² celoobrazovkov² antialiasing HRAA (High Resolution Antialiasing). 
  10.  
  11. Vertex shader
  12. Vertex shader je pravd∞podobn∞ nejv²razn∞jÜφ novinkou GeForce3. Jde o pln∞ programovateln² procesor pro zpracovßnφ vrchol∙, umo₧≥ujφcφ aplikovat na ka₧d² vrchol program, kter² m∙₧e jeho parametry tΘm∞° libovoln∞ m∞nit.
  13. Aby byl v²znam t∞chto slov z°ejm∞jÜφ, pokusφm se o struΦnΘ vysv∞tlenφ pojmu vrchol (angl. vertex) pro tvorbu 3D obrazu. Ka₧d² objekt ve 3D scΘn∞ je reprezentovßn mno₧inou troj·helnφk∙. Aplikace (nap°. hra) pouze posφlß do grafickΘho Φipu informace o vrcholech t∞chto troj·helnφk∙ a vÜechny ·kony nutnΘ pro vytvo°enφ obrazu ji₧ provßdφ grafick² Φip sßm. Nejd°φve dochßzφ k transformaci vrchol∙ a aplikaci osv∞tlenφ na ka₧d² vrchol (to je ·kol pro jednotku T&L nebo pro Vertex shader). Pak je pro ka₧d² vrchol troj·helnφku spoΦtena pomocφ perspektivnφ projekce sou°adnice pixelu, na n∞j₧ se dan² vrchol zobrazφ (nastavenφ troj·helnφk∙, triangle setup). PotΘ je pro ka₧d² pixel uvnit° troj·helnφku rozhodnuto, zda je viditeln² na obrazovce (nenφ zakryt² jin²m objektem), a v p°φpad∞, ₧e je viditeln², je spoΦtena jeho barva aplikacφ textury, p°φpadn∞ mlhy apod. Tyto ·kony se provßd∞jφ pro ka₧d² troj·helnφk ve scΘn∞. SchΘma tohoto procesu je na obr. 1.
  14. Ka₧dΘmu vrcholu je krom∞ jeho sou°adnice p°i°azeno mnoho dalÜφch ·daj∙ (nap°. barva, sou°adnice pro mapovßnφ textur, ·rove≥ mlhy, lesklost atd.). Vertex shader m∙₧e m∞nit libovoln² z t∞chto ·daj∙. K tomu mß k dispozici sadu pom∞rn∞ obecn²ch, avÜak velmi siln²ch instrukcφ. Ka₧dß instrukce mß na vstupu jednu a₧ t°i Φtve°ice reßln²ch Φφsel a v²sledkem je jedna Φtve°ice reßln²ch Φφsel. Program mß k dispozici 16 registr∙ pro zßpis a Φtenφ a pam∞¥ konstant pouze pro Φtenφ (typicky jsou v nφ ulo₧eny transformaΦnφ matice). Ka₧dß instrukce se provßdφ jeden hodinov² cyklus, program m∙₧e obsahovat maximßln∞ 128 instrukcφ. V instrukΦnφ sad∞ nenφ obsa₧ena ₧ßdnß instrukce pro cyklus, program se tedy provßdφ "lineßrn∞" - jedna instrukce po druhΘ, p°esn∞ v tom po°adφ, jak byly zapsßny v programu. To p°inßÜφ obrovskou v²hodu: jednotku Vertex shader lze snadno paralelizovat a je tΘm∞° jistΘ, ₧e budoucφ implementace DirectX 8.0 ji₧ budou obsahovat vφce paraleln∞ pracujφcφch jednotek Vertex shader (v GeForce3 je zatφm pouze jedna).
  15. Pro programßtora je d∙le₧itΘ v∞d∞t, ₧e vstupem Vertex shaderu je jeden vrchol a v²stupem op∞t jeden vrchol (transformovan² a osv∞tlen²). Ve Vertex shaderu tedy ₧ßdnΘ vrcholy nevznikajφ ani nezanikajφ.
  16. LepÜφ ne₧ suchß teorie bude prohlΘdnout si pßr p°φklad∙. 
  17.  
  18. Skinning - Kost a k∙₧e
  19. P°i animaci postav se vychßzφ z p°edpokladu, ₧e postaviΦka mß kostru a ta je pota₧ena "k∙₧φ", kterß se p°izp∙sobuje pohybu kostry. V poΦφtaΦovΘ grafice to znamenß, ₧e postava je slo₧ena z urΦitΘho poΦtu kostφ, kterΘ jsou vlastn∞ reprezentovßny transformaΦnφ maticφ (co kost, to jedna matice). K∙₧e je modelovßna jako plocha slo₧enß z troj·helnφk∙. K vrcholu ka₧dΘho troj·helnφku je p°i°azena sada vah, kterΘ °φkajφ, jak kterß kost ovliv≥uje pohyb danΘho vrcholu. P°i animaci postaviΦky je neustßle nutnΘ ka₧d² vrchol k∙₧e nßsobit tolika transformaΦnφmi maticemi, kolik kostφ mß vliv na pohyb onoho mφsta na t∞le um∞lΘ postavy. Tyto v²poΦty lze s GeForce3 provßd∞t ve Vertex shaderu. NVIDIA uvßdφ, ₧e lze pou₧φt a₧ 32 matic (tedy 32 kostφ). To je sice pravda, ale tφm se vyΦerpß celß kapacita 128 instrukcφ Vertex shaderu. RealistiΦt∞jÜφ tedy je p°edpoklßdat, ₧e tento poΦet je ni₧Üφ. 
  20.  
  21. Keying & Morphing - jednoduÜÜφ animace
  22. Jednoduch² zp∙sob, jak rozpohybovat objekt, je pou₧φt n∞kolik klφΦov²ch fßzφ pohybu a interpolovat mezi nimi (interpolaci samoz°ejm∞ Vertex shader zvlßdne, mß k tomu dokonce specißlnφ instrukci) - obr. 2 ukazuje takto rozpohybovanΘho delfφna.
  23.  
  24. Procedurßlnφ deformace
  25. P°edstavte si vlny na vod∞ po vhozenφ kamenu - je to celkem jednoduch² tvar. A skuteΦn∞, program pro Vertex shader simulujφcφ takovou vlnu je celkem jednoduch². V²sledek je na obr. 3.
  26.  
  27. Odraz a lom sv∞tla
  28. Pomocφ Vertex shaderu lze kombinovat lom i odraz sv∞tla zßrove≥. Dosud bylo mo₧nΘ pou₧φt bu∩ jen odraz, nebo jen lom. V²sledek je ·chvatn² (obr. 4).
  29. Tento v²Φet by mohl pokraΦovat jeÜt∞ hodn∞ dlouho, nebo¥ mo₧nosti Vertex shaderu jsou skuteΦn∞ limitovanΘ vφce imaginacφ programßtora ne₧ technick²mi omezenφmi. To NVIDIA vφ, a proto se nespolΘhß na p°edstavivost pouze sv²ch in₧en²r∙, ale obrßtila se do sv∞ta. SpoleΦn∞ se spoleΦnostφ discreet vypsala sout∞₧ o nejlepÜφ efekt pro jejφ program EffectBrowser. V²sledky jsou velice zajφmavΘ a je mo₧nΘ si je prohlΘdnout na strßnkßch firmy NVIDA.
  30.  
  31. P°φklad programu pro Vertex shader
  32. Jako p°φklad programu pro Vertex shader jsem vybral program, kter² spoΦφtß oboustrannΘ osv∞tlenφ plochy - to znamenß, ₧e p°ednφ a zadnφ stran∞ osv∞tlovanΘho troj·helnφku mohou b²t p°i°azeny r∙znΘ barvy. Ta sprßvnß z nich se vybere v zßvislosti na tom, zda u₧ivatel vidφ p°ednφ, nebo zadnφ stranu. V²sledkem je nßsledujφcφ k≤d:
  33. ; skalßrnφ souΦin normßly povrchu
  34. ; s vektorem spojujφcφm umφst∞nφ pozorovatele
  35. ; s osv∞tlovan² vrcholem
  36. dp3 r1, R_FACE_NORMAL, R_EYE_VECTOR
  37.  
  38. ; pokud r1.x >= 0 (tj. p°ednφ
  39. ; strana je p°ilehlß k pozorovateli),
  40. ; do R6.x ulo₧ 1, jinak ulo₧ 0
  41. sge r6.x, r1.x, c[C_ZERO].x
  42. ; pokud r1.x < 0 (tj. zadnφ strana
  43. ; je p°ilehlß k pozorovateli),
  44. ; do R6.y ulo₧ 1, jinak ulo₧ 0
  45. slt r6.y, r1.x, c[C_ZERO].x
  46.  
  47. ; spoΦφtej intenzitu osv∞tlenφ pro p°ednφ stranu
  48. dp3 r5.x, R_NORMAL, c[C_LIGHT_1_DIRECTION]
  49. ; spoΦφtej intenzitu osv∞tlenφ pro zadnφ stranu
  50. dp3 r5.y,-R_NORMAL, c[C_LIGHT_1_DIRECTION]
  51.  
  52. ; barvu p°ednφ strany vynßsob 
  53. ; intenzitou osv∞lnφ,v²sledek ulo₧ do r7
  54. mul r7, r5.x, c[C_FRONTCOLOR]
  55. ; barvu zadnφ strany vynßsob
  56. ; intenzitou osv∞lnφ,v²sledek ulo₧ do r8
  57. mul r8, r5.y, c[C_BACKCOLOR]
  58.  
  59. ; vyber sprßvnou barvu:
  60. ; vynuluj r7, pokud r6.x=0 (tj. zadnφ strana
  61. ; je p°ilehlß k pozorovateli)
  62. mul r7, r7, r6.x
  63. ; vynuluj r8, pokud r6.y=0 (p°ednφ strana
  64. ; je p°ilehlß k pozorovateli), pak seΦti r8 s r7
  65. ; a v²sledek zapiÜ do v²stupnφho registru
  66. mad oD0, r8, r6.y, r7
  67.  
  68. Pixel shader
  69. Pixel shader je druhou jednotkou, kterou NVIDIA za°adila do p°ihrßdky nfiniteFX engine. Jak je vid∞t na obr. 1, slou₧φ ke zpracovßnφ jednotliv²ch pixel∙, kterΘ se pak ji₧ zobrazujφ na obrazovku. ┌lohou Pixel shaderu je zkombinovat informaci o barv∞ a osv∞tlenφ s texturami a vypoΦφtat barvu ka₧dΘho pixelu. GeForce3 obsahuje Φty°i jednotky Pixel shader, pracujφcφ pln∞ paraleln∞.
  70. Pixel shader je, stejn∞ jako Vertex shader, programovateln², avÜak tato programovatelnost je v porovnßnφ s Vertex shaderem znaΦn∞ omezenß. Program pro Pixel shader je velice krßtk² (maximßln∞ 12 instrukcφ, 4 pro adresovßnφ textur a 8 pro mφchßnφ barev) a navφc instrukce jsou dosti jedno·Φelov∞ zam∞°eny (na rozdφl od Vertex shaderu, jeho₧ instrukce jsou obecnΘ). Velkou v²hodou Pixel shaderu je, ₧e provßd∞nφ operacφ m∙₧e b²t °φzeno v²sledky Vertex shaderu.
  71. Nechci vßs vÜak p°esv∞dΦovat o tom, ₧e Pixel shader je Üpatn² - seznam jeho mo₧nostφ je i tak dosti dlouh². Zahrnuje stφnovΘ mapy (shadow maps), 3D textury do rozliÜenφ 512 x 512 x 512, aplikace a₧ Φty° textur v jednom b∞hu, pou₧itφ libovolnΘho obrßzku jako textury (nap°. Z-buffer se pou₧ije jako textura v p°φpad∞ stφnov²ch map) atd. Nebudu v tomto v²Φtu pokraΦovat, proto₧e bez bli₧Üφho vysv∞tlenφ to nemß valnou cenu. Za vÜechny vÜak alespo≥ jeden p°φklad.
  72.  
  73. Blinn Bump Mapping - hrbolky s odrazy
  74. Podφvejte se na obr. 5 a p°edstavte si, ₧e by se ka₧d² hrbolek, kter² vidφte, m∞l modelovat pomocφ troj·helnφk∙. Zdß se vßm, ₧e jich musφ b²t tisφce? NaÜt∞stφ tomu tak nenφ. To, co vidφte, jsou dva troj·helnφky (tvo°φcφ jeden Φty°·helnφk), p°iΦem₧ normßla (tj. vektor kolm² k povrchu) je v ka₧dΘm bodu m∞n∞na tak, aby byla vytvo°ena iluze hrbolk∙. To zatφm ale nenφ nic novΘho - bump mapping zvlßdal i GeForce2. To, co je zde novΘho, jsou odrazy. Je jasnΘ, ₧e pro dokonalou iluzi hrbolk∙ je t°eba s normßlou k ploÜe m∞nit i sm∞r, z n∞ho₧ se odrß₧φ sv∞tlo. A to Pixel shader hrav∞ zvlßdß. Nejd°φve od Vertex shaderu obdr₧φ normßlu k celΘ velkΘ ploÜe. Tuto normßlu pak v ka₧dΘm bod∞ moduluje tak, aby vznikla iluze hrbol∙, a modulovanou normßlu pou₧ije pro dotaz do textury, kterß reprezentuje odrß₧ejφcφ se okolφ. 
  75.  
  76. Lightspeed Memory Architecture
  77. Limitujφcφm faktorem dneÜnφch grafick²ch Φip∙ je komunikace s pam∞tφ, a to hlavn∞ p°i vyÜÜφch rozliÜenφch a 32bitovΘ barevnΘ hloubce. Lightspeed Memory Architecture je soubor funkcφ, je₧ by m∞ly toto ·zkΘ hrdlo alespo≥ trochu rozÜφ°it. T°i z nich, nazvanΘ Loseless Z-Compression, Z-Oclussion Culling a Crossbar memory controller, byly popsßny v Φlßnku SplaÜenΘ pixely v Chipu 6/01. DalÜφ z nich se t²kß zpracovßnφ model∙ s obecn∞ tvarovan²m povrchem.
  78.  
  79. Plochy vyÜÜφho stupn∞
  80. I kdy₧ komunikace nutnß pro p°enesenφ informacφ o vrcholech z aplikace do grafickΘho Φipu prozatφm v²razn∞jÜφ problΘmy nep°inßÜφ, urΦit∞ brzy bude, nebo¥ objekty 3D scΘn jsou modelovßny stßle precizn∞ji a k tomu je zapot°ebφ mnohem vφce troj·helnφk∙. Tento problΘm je °eÜen pomocφ tzv. ploch vyÜÜφho stupn∞. Aby bylo dosa₧eno kvalitnφ aproximace hladkΘ zaoblenΘ plochy, je t°eba pou₧φt velmi vysokΘho poΦtu troj·helnφk∙. Ale v poΦφtaΦovΘ grafice jsou ji₧ lΘta znßmy postupy, jimi₧ lze zaoblenou plochu snadno reprezentovat pomocφ pom∞rn∞ malΘho poΦtu tzv. kontrolnφch bod∙ (ano, mßm na mysli BΘzierovy plochy, splajny, p°φp. plochy NURBS). 
  81. Idea je jednoduchß - mφsto toho, aby byla oblß plocha nejd°φve rozd∞lena na troj·helnφky a informace o vrcholech troj·helnφk∙ se pak posφlaly do grafickΘho Φipu, poÜlou se do Φipu pouze informace o kontrolnφch bodech (t∞ch je mnohem mΘn∞ ne₧ vrchol∙) a rozd∞lenφ na troj·helnφky si provede Φip sßm. Zatφm nenφ jasnΘ, jak kvalitnφ implementaci tohoto postupu GeForce3 obsahuje, ani zda je rozd∞lovßnφ na troj·helnφky dostateΦn∞ rychlΘ. ProblΘmem m∙₧e b²t takΘ to, ₧e existuje mnoho r∙zn²ch druh∙ ploch vyÜÜφho stupn∞, ale GeForce3 zpracovßvß jen n∞kterΘ.
  82.  
  83. HRAA
  84. GeForce3 hardwarov∞ implementuje t°i re₧imy celoobrazovkovΘho antialiasingu: 2x (ka₧d² obrazovkov² pixel vznikß jako pr∙m∞r dvou pixel∙), 4x (ka₧d² obrazovkov² pixel vznikß jako pr∙m∞r Φty° pixel∙) a nov² patentovan² re₧im s prazvlßÜtnφm pojmenovßnφm Quincunx.
  85. Podle materißl∙ firmy NVIDIA poskytuje Quincunx kvalitu re₧imu 4x pouze za "cenu" re₧imu 2x. Pravda je, ₧e kvalita obrazu je p°i pou₧itφ Quincunxu skuteΦn∞ tΘm∞° stejnß jako u Φty°bodovΘho antialiasingu a snφmkovß frekvence se pohybuje asi v polovin∞ mezi hodnotou zφskanou p°i pou₧itφ dvoubodovΘ a Φty°bodovΘ metody.
  86. Jak toho NVIDIA dosahuje, by m∞l lΘpe osv∞tlit obr. 6. P°i Φty°bodovΘm antialiasingu se ka₧d² zobrazen² pixel poΦφtß jako pr∙m∞r Φty° bod∙, kterΘ jsou pro ka₧d² pixel r∙znΘ. Proto je t°eba spoΦφtat barvu Φty°nßsobnΘho poΦtu bod∙, ne₧ je poΦet pixel∙. AvÜak v p°φpad∞ Quincunxu se n∞kterΘ body "sdφlφ" mezi r∙zn²mi pixely, a proto i kdy₧ ka₧d² pixel vznikß pr∙m∞rovßnφm p∞ti bod∙, je t°eba spoΦφtat pouze dvojnßsobn² poΦet bod∙, ne₧ je poΦet pixel∙. Ono sdφlenφ bod∙ mezi pixely ale vede k tomu, ₧e v²sledn² obraz je p°i pou₧itφ metody Quincunx mφrn∞ rozmazan² (ale opravdu jen mφrn∞).
  87.  
  88. Zßv∞r
  89. Jak jste asi z Φlßnku vycφtili, nov² Φip od firmy NVIDIA se mi opravdu lφbφ. To, co se mi na n∞m lφbφ, je ohromnΘ mno₧stvφ dobr²ch nßpad∙, kterΘ jsou do n∞ho vlo₧eny. Uv∞domuji si vÜak, ₧e potencißlnφho kupce spφÜe zajφmß, jak² v²konnostnφ r∙st za svΘ investovanΘ penφze dostane. V souΦasnΘ dob∞ je situace pro GeForce3 dost nep°φznivß. V²konnostnφ nßr∙st oproti GeForce2 ULTRA je pro souΦasnΘ aplikace velmi mal², ale cena GeForce3 je stßle velmi vysokß (v dob∞ psanφ tohoto Φlßnku, v Φervenci, se nejlevn∞jÜφ karta s GeForce3 prodßvß za 14 000 KΦ bez DPH). Sprßvn² Φas pro zakoupenφ GeForce3 nastane v tu chvφli, kdy vßm n∞jak² opravdov² hernφ trhßk p°i svΘm startu suÜe oznßmφ: "VaÜe grafickß karta neobsahuje Vertex shader, bude pou₧ita softwarovß nßhrada" a vy zjistφte, ₧e se tajemn²mi prostory Üourßte rychlostφ 5 snφmk∙ za sekundu.
  90.  
  91. Jaroslav K°ivßnek | jarda@slimak.cz 
  92.  
  93. InfoTipy:
  94. Strßnka NVIDIA Corporation > www.nvidia.com
  95.  
  96.