Leadtek GeForce3 - 1/2

"A 3D-pipeline-ról"

A 3D-pipeline az a valami, amelyen jó esetben másodpercenként 60-szor (60 FPS) száguld keresztül az az infó, ami mondjuk Quake-ben az épp aktuális pályán-szaladgálásunkat leírja. (legalábbis nagyjából erről van szó..) A menet kb. az alábbiak szerint alakul.

A játék 3D-s látképének alapjait adó objektumok információi, azaz az őket felépítő háromszögek csúcspontjainak (vertexeknek) az adatai (mint 3D-s koordináták, színértékek, textúra koordináták, egyebek) az AGP buszon keresztül eljutnak a GPU-ig, ahol az integrált T&L egység elvégzi a szükséges átalakításokat (transformation), ami után minden objektum immár ott és akkora, ahol és amekkora kell legyen.. Ezután a vertexekhez a T&L engine még hozzácsapja a megvilágítással/megvilágítottsággal kapcsolatos adatokat (lighting), persze csak abban az esetben, ha vertex lighting-ot használunk, hiszen egyébként a megvilágítás adatai light-map-ek (azaz külön textúrák) formájában kerülnek csak elő..

Ha nem GeForce3-ról lenne szó, akkor ez a két előbbi lépcső nem lenne megbolygatható, azonban a Ge3 pont itt hoz újat, mert helyet kapott benne egy programozható T&L egység is, ez pedig a Vertex Shader. A két egység egymás mellett van jelen, így nincs gond a lefele kompatibilitással. Ráadásul a 0.15 mikronos gyártás miatt a core-ban gond nélkül el is fér a bónusz vertex proci, bár az 57 millió tranzisztorból-állás részben ezen múlik. Azonban amíg a Vertex Shader programozhatósága a jövőben olyan ötletek megvalósulását teheti lehetővé, amelyekről a korábbi statikus T&L-nél még csak szó sem eshetett, addig a plussz tranzisztorok és a monstre core szerintünk megbocsátható túlkapások.

A Vertex Shaderről ezen felül elmondható, hogy egyszerre mindig csak egyetlen vertexszel tud dolgozni, bár ehhez a rendelkezésére áll 12db 4*32bit-es regiszter, valamint 96db 4*32bit-es konstans.

A 3D-s scene felépítése tehát már eljutott a mérethelyességig, minden a helyén, azonban még mindig csupán vertexeink (vertices), csúcspontjaink vannak. Ezekből a 3D-pipeline triangle setup / rasterization néven futó következő lépcsőfokai csinálnak pixelekkel kitöltött háromszögeket, ahol minden pixelnek előkerül "végre" a Z értéke, az a távolság, ami a pixel és a kamera közt van, valamint a színértékek és a textúra koordináták is. A következőkben a rendering engine, azaz a Pixel Shader, ezen szín-textúra-fény adatokból határozza meg a végső képpont színét, és az imént megkapott Z érték Z-bufferbe írása mellett, a képpontot a frame bufferbe (back buffer) menti.

Idáig azért kellett eljutnunk, mert a GeForce3 egyik remek húzása, hogy csínján bánik a sávszélességgel - több szempontból is. Egyrészt, a Z-bufferes történetnél a Z értékeket 4:1 arányban tömöríti (Lossless Z Compression), valamint a triangle setup / rasterization után, de még a Pixel Shaderbe kerülés előtt, a Z Occlusion Culling nevű lépéssel a kikerülő pixeleket Z-checkre bocsátja, azaz ellenőrzi, az adott pixel látszódik-e majd, avagy sem. Ha nem, akkor egy kidobható pixellel több.. Ugyan a Z-bufferen könnyítés nem újdonság, hiszen az ATi-nál is van hasonló (Hierarchical-Z), azonban a NVIDIA egy kicsit mégis előrébb tart, hiszen "Occlusion Query" esetén, adott frame buffer területet tud a Ge3 elővenni, és hozzámérni egy Z-check erejéig az érkező pixelt..

A rendering engine, tehát a Pixel Shader túl sokban nem különbözik a GeForce2-ben látott NSR-től (NVIDIA Shading Rasterizer), bár ugye itt ez is programozható, sőt a Vertex Shaderrel igen szoros kapcsolatban áll.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

  • nVidia GeForce4 Ti/MX!

    A trónfosztás megtörtént, a GeForce3 és a teljes MX család már ''történelem''. A jelen: nFiniteFX II, LMA II, 650 MHz-es DDR RAM-ok és sok egyéb...

Hirdetés