De pixel engine uitgebreid
Terwijl we in de eerste drie fasen van het render-proces (de Transformation unit, de Lightning unit en de Triangle Setup unit) geen nieuwe zaken bij de GeForce 2 tegenkomen, is dat bij de laatste fase, de pixel engines, absoluut wel het geval. Door het uitbreiden van de pixel pipelines heeft nVidia de texel fill-rate met een factor twee kunnen verhogen. Ik zal proberen het verschil bij de pixel pipelines tussen de GeForce 256 en de GeForce 2 zo duidelijk mogelijk uit te leggen. Hiervoor moeten we eerst nog eens het verschil tussen single en dual texturing bekijken.
nVidia levert bij de GeForce 2 een leuke demo, waarmee het nut van dual texturing eenvoudig verduidelijkt kan worden. In onderstaande afbeelding zien we een 3D model van het nVidia logo, waarop met een texture met zwarte vlekken heeft geplakt. Iedereen die niet weet wat texturing precies inhoudt, verwijs ik graag naar ons artikel ‘Hoe werkt een 3D grafische kaart? – Deel 1’.
In de tweede figuur zagen we meteen een tweede texture waarmee we het nVidia logo kunnen bedekken. In dit geval een reflection texture, waarmee we reflecties van de ‘buitenwereld’ op het logo kunnen waarnemen. In beide bovenstaande gevallen wordt er dus maar van één enkele texture gebruik gemaakt.
Het nut van multi-texturing (of eigenlijk dual texturing) zien we nu in onderstaande figuur. Hier worden beide textures tegelijkertijd op het 3D model van het nVidia logo toegepast. In het resultaat zien we dus zowel de reflecties als de zwarte vlekken.
Dit is slechts één voorbeeld van dual texturing. In nieuwe 3D spellen wordt multi-texturing steeds vaker toegepast. Het oude single texturing systeem komt steeds minder voor.
Terug naar het verschil tussen de GeForce 256 en de GeForce 2. Daarvoor kijken we eerst in onderstaande figuur, waarin we een schematische opbouw van de pixel rendering engine bij de GeForce 256 zien:
Zoals we zien heeft de GeForce 256 vier parallelle pixel pipelines, die ieder één pixel per klokslag kunnen verwerken. Bij een klokfrequentie van 120 MHz komt dit neer op een maximale pixel fill-rate van 480 MPixels/s. Al deze pixel engine hebben echter maar de beschikking over één texel unit. Dat houdt in dat alleen bij single texturing deze maximale pixel fill-rate behaald kan worden. Zodra er van dual texturing gebruik gemaakt wordt, moeten de texel units van twee pixel engines gebundeld worden om één pixel te renderen. In beide gevallen is de texel fill-rate 480 MTexels/s (er worden telkens 480 miljoen texels, ofwel pixels of uit een texture, per seconde verwerkt), maar in het geval van dual texturing blijven twee van de vier pixel engines ongebruikt. De pixel fill-rate daalt dus van 480 MPixels/s naar 240 MPixels/s: een flinke terugslag in performance dus!
Dat dit bij de GeForce 2 iets anders in elkaar zit, zien we in onderstaande figuur:
We zien nog steeds vier parallelle pixel engines, maar deze hebben allen de beschikking over twee texel units. Dat houdt in dat bij dual texturing toch alle vier de pixel engines gebruikt kunnen worden, omdat er bij de GeForce 2 genoeg texel units zijn. Bij de GeForce 2 is dus niet alleen bij single texturing, maar ook bij dual texturing de pixel fill-rate gelijk aan 800 MPixels/s, uitgaande van een klokfrequentie van 200 MHz. Bij single texturing is de maximale texel fill-rate gelijk aan 800 MTexels/s, maar bij dual texturing, waar dus acht texel units tegelijkertijd in werking zijn, kan de texel fill-rate stijgen tot maarliefst 1.600 MTexels/s! Dit maakt de GeForce 2 de eerste videokaart die meer dan een miljard texels (ofwel een GigaTexel) per seconde kan verwerken! Dit brengt ons meteen bij de volledige naam van de GeForce 2: GeForce 2 GTS. De toevoeging GTS staat voor ‘GigaTexel Shader’ en bovenstaand verhaal maakt wel duidelijk hoe deze naam gerechtvaardigd wordt.
In onderstaande tabel kunnen we de fill-rates van de GeForce 2 vergelijken met die van de GeForce 256, de Voodoo 4 4500, de Voodoo 5 5500, de Voodoo6 6000 en de toekomstige ATI Radeon. Dit doen we niet alleen voor single en dual texturing, maar ook voor het nog niet gebruikte triple texturing. Voor meer informatie over triple texturing en over de waardes van andere kaarten verwijs ik graag naar onze ATI Radeon preview.
nVidia GeForce | nVidia GeForce 2 | ATI Radeon | 3dfx Voodoo4 4500 | 3dfx Voodoo5 5500 | 3dfx Voodoo5 6000 | ||
Single Texturing | Pixel fill-rate | 480 MPixels/s | 800 MPixels/s | 400 MPixels/s | 333 MPixels/s | 667 MPixels/s | 1.333 MPixels/s |
Texel fill-rate | 480 MTexels/s | 800 MTexels/s | 400 MTexels/s | 333 MTexels/s | 667 MTexels/s | 1.333 MTexels/s | |
Double Texturing | Pixel fill-rate | 240 MPixels/s | 800 MPixels/s | 400 MPixels/s | 166 MPixels/s | 333 MPixels/s | 667 MPixels/s |
Texel fill-rate | 480 MTexels/s | 1.600 MTexels/s | 800 MTexels/s | 333 MTexels/s | 667 MTexels/s | 1.333 MTexels/s | |
Triple Texturing | Pixel fill-rate | 120 MPixels/s | 400 MPixels/s | 400 MPixels/s | niet mogelijk | niet mogelijk | niet mogelijk |
Texel fill-rate | 360 MTexels/s | 1.200 MTexels/s | 1.200 MTexels/s | niet mogelijk | niet mogelijk | niet mogelijk |
Het moge duidelijk zijn dat de GeForce 2 bij het meest gebruikte dual texturing duidelijk de show steelt: zelfs de Voodoo 5 6000 met vier chips behaalt dan niet de fill-rate van de GeForce 2 GTS.
Nog even een belangrijke waarschuwing bij deze tabel. Ten eerste wil ik graag benadrukken dat texel fill-rates uiteindelijk totaal niet belangrijk zijn. De term ‘texel fill-rate’ is ooit bedacht door de marketing-afdeling van 3dfx om de snelheid van hun Voodoo kaarten te benadrukken. De pixel fill-rate is wat uiteindelijk telt. Ook daarbij wil ik graag benadrukken dat het hier gaat om maximale waardes, die in de praktijk niet vaak behaald worden. Een te krappe geheugen bandbreedte kan bijvoorbeeld een reden zijn waarom een videokaart zijn maximale pixel fill-rate niet behaalt.