Inleiding

Deze review is niet ongeschonden door de crash gekomen en is gebaseerd op een oude versie. Verwacht dus zo af en toe een vreemde zin, een spelfout of een missend stukje...
De eerste geruchten over de NV20 zijn al flink gedateerd en ook de eerste previews en reviews zijn niet al te fris meer, maar toch zijn er nog redenen genoeg om een kijkje te nemen naar de GeForce3. Met het verschijnen van de GeForce3 in de winkel, een paar prijsverlagingen en het verschijnen van nieuwe benchmarks en hardware revisies is er reden genoeg om de GeForce3 op de testbank te leggen en de duimschroeven flink aan te draaien . In deze review zal eerst de theorie behandeld worden gevolgd door een paar benchmarks waaruit een aantal verrassende weetjes naar voren komen. Maar voordat het zover is eerst wat informatie over het slachtoffer, de Leadtek Winfast GeForce3.
Specificaties
De Leadtek Winfast GeForce3 die ik in handen kreeg (met dank aan Acal) is evenals het overgrote gedeelte van alle GeForce3 kaarten gebaseerd op het reference design van nVidia. De kaart is uitgerust met 64MB aan DDR SDRAM dat standaard op 460MHz loopt. De GeForce3 core op de kaart is een A5 exemplaar die als het goed is een stuk stabieler is dan de A3 exemplaren die nVidia eerst de fabriek uit liet rollen.
Zoals je kan zien heeft Leadtek met deze GeForce3 kaart wat extra moeite genomen voor het design van de koeling. Op de core zit een grote zilverkleurige heatsink met een klein koelertje. Op het geheugen zitten ook zilverkleurige heatsinks die net geen contact maken met de heatsink van de core. Deze heatsinks op het geheugen missen een koelprofiel, alleen het logo van Leadtek zit erin verwerkt. Niet optimaal voor de koelprestaties, maar meer dan voldoende op het geheugen betrouwbaar op 460MHz te laten werken.
Overclocken wilde deze videokaart redelijk doen. Met behulp van het speed runner programma’tje wat Leadtek standaard bij de kaart levert wist hij de relaxte snelheid van 230MHz / 510MHz te halen. Een verhoging van de clocksnelheid met 15 procent en een verhoging van de geheugensnelheid met ruim 10 procent
.
Lightspeed Memory Architecture
De Lightspeed Memory Architecture is het antwoord van nVidia op de geheugen bottleneck waarmee tegenwoordig bijna alle videokaarten kampen. Zoals al verschillende keren is bewezen is niet maximale fill rate van een videochip de bepalende factor van de performance, maar het geheugen. De huidige videochips zitten, terwijl ze wachten op het geheugen, alleen maar een beetje uit de neus te eten. En daar heb je natuurlijk niet je zuurverdiende geld voor neergeteld, toch?
De Crossbar Memory Controller
Om dit probleem gedeeltelijk op te lossen is de GeForce 3 onder andere uitgerust met een zogenaamde Crossbar Memory Controller. In plaats van een één controller met een 128 bit brede interface naar het geheugen zijn er vier kleine sub-controllers aanwezig die elk een 32 bit interface hebben naar het geheugen zoals geïllustreerd is op het onderstaande plaatje:
Nu zal je misschien denken, what’s de difference: 1x 128 is tenslotte evenveel als 4x 32. Maar zo simpel werkt het niet. Als je één stukje data nodig hebt van slechts één paar byte groot hoef je niet zoals gebruikelijk 128 kostbare bits aan bandbreedte te gebruiken, maar kan je bijvoorbeeld al genoegen nemen met 32 of 64 bit. Een ander voordeel is dat het de latency verlaagt. Alle vier de sub-controllers kunnen namelijk elk één page openhouden wat de gemiddelde latency met ongeveer 25 procent vermindert.
nVidia’s HyperZ:
De andere helft van nVidia’s Lightspeed Memory Architecture bestaat uit een soort van HyperZ. Ten eerste is compressie aanwezig voor de Z-buffer. De compressie is lossless en volgens nVidia wordt de data met een factor 4 verkleind. Als tweede is er een geavanceerde versie aanwezig van ATi’s Hierarchical-Z: Z Occlusion Culling. Deze techniek kijkt naar de al bestaande waarden in de Z-Buffer in één bepaald gebied en bepaald dan of de nieuwe waarde achter of voor een al bestaande pixel zit. Indien de nieuwe pixel achter een al bestaande pixel terecht komt wordt de nieuwe pixel simpelweg richting prullenbak gestuurd
.
Quincunx anti-aliasing
3dfx bracht het als eerste onder de aandacht, het verbeteren van de beeldkwaliteit door middel van FSAA (Full Scene Anti-Aliasing). Onder het motto “removing the jaggies” maakten zij duidelijk dat lelijke kartelranden niet nodig zijn. Voor het geval je geen flauw idee hebt waarover ik het heb, heb ik hieronder een simpel voorbeeldje neergezet van een plaatje met anti-aliasing:
Om het simpel uit te leggen: Anti-aliasing is het stoppen van kleuren informatie van meerdere punten in één pixel. Als je bijvoorbeeld één pixel neemt in een grensgebied van een object hierboven en je vergroot deze pixel totdat je bijvoorbeeld 4 afzonderlijke pixels te zien krijgt dan is de oorspronkelijke pixel het gemiddelde van deze vier. Het moge duidelijk zijn dat hoer meer samples je gebruikt hoe nauwkeuriger de kleurinformatie wordt in één pixel.
De methode die nVidia gebruikte bij de GeForce2 heeft super sampling, daarbij wordt het gevraagde beeld door de videokaart in een hogere resolutie gerenderd en daarna verkleint tot de gevraagde resolutie. Als je bijvoorbeeld vraagt om een resolutie van 640x480 en de videokaart het beeld dan eerst in 1280x960 tekent zijn er voor elke pixel die uiteindelijk op het beeldscherm komt vier punten waar kleureninformatie vandaan wordt geplukt. Zoals je ongetwijfeld aan kan voelen is deze methode verre van efficiënt omdat je voor elke verdubbeling van kleuren nauwkeurigheid een halvering van performance krijgt.
nVidia heeft daarom een nieuwe techniek bedacht om aan meer samples te komen zonder zo’n extreem performance verlies, zie de onderstaande figuur:
Bij Quincunx anti-aliasing (HRAA) wordt niet intern op een hogere resolutie gerenderd, maar wordt het beeld twee keer gerenderd, terwijl het de tweede keer iets minder als een halve pixel naar links en naar boven wordt verplaatst. Op deze manier wordt de performance ongeveer gehalveerd terwijl er niet twee, maar vijf samples per pixel aanwezig zijn. Dit klinkt beter dan het in werkelijkheid is, maar ongeveer 4X FSAA kwaliteit behalen met een 2X FSAA performance hit lijkt volgens deze theorie niet onmogelijk. Het nadeel van deze techniek is namelijk dat de vier samples uit het tweede beeld niet exact kloppend zijn.
Als je met eigen ogen de verschillen tussen de anti-aliasing mehodes wilt zien heb ik voor je hieronder een stapeltje screenshots neergezet. Klik op de plaatjes om de originele 1024x786 screenshots tevoorschijn te toveren:
Pixel en vertex shaders
Hoewel HRAA en de Lightspeed Memory Architecture natuurlijk leuke feature zijn deze twee zeker niet de twee belangrijkste. Die 57 miljoen transistors die nVidia in 144 vierkante mm heeft gekregen zijn voor een groot deel nodig voor de vertex en pixel shaders. Wat dit voor dingen zijn en wat game developers er zoal mee kunnen doen zal ik hieronder proberen duidelijk te maken
:
Vertex shaders
Vertex shaders is de laatste ontwikkeling op het gebied van Transform & Lighting en de belangrijkste nieuwe feature van de GeForce3. Om te begrijpen wat allemaal mogelijk is met vertex shaders zal je eerste moeten weten wat een vertex is. Elke scene in een 3D wereld is opgebouwd uit vertices, de vertices zijn de punten van de driehoekjes waaruit elk figuur wordt opgebouwd. Elke vertex heeft een X, Y en Z coördinaat om zijn plaats te bepalen in de 3D wereld. Verder is er onder andere kleur, fog, alpha (doorzichtigheidfactor) en texture informatie aanwezig in een Vertex. Zie de onderstaande illustratie:
Met vertex shaders is het mogelijk voor een programmeur om alle informatie in een vertex door middel van een klein programma’tje te wijzigen. Deze feature zit ingebakken in DirectX 8 en kan door de GeForce 3 volledig hardwarematig worden uitgevoerd. Als er geen GeForce3 aanwezig is zal DirectX 8 de vertex shaders door de CPU uit laten voeren (hierover meer in de benchmarks).
Mogelijkheden van vertex shaders waaraan je moet denken zijn, om maar een paar dingen te noemen: skeletal animation, key frame animation en morphing. De mogelijkheden zijn bijna schier oneindig, zolang het aantal instructies per vertex niet boven de 128 komt kan de GeForce3 het aan.
Pixel shaders
De logische compagnon van de vertex shader is de pixel shader. Met pixel shaders kan de programmeur niet knoeien met 3D coördinaten, maar de pixels zelf. Deze stap zit een stuk verder in de 3D pipeline dan de vertex shaders en kan niet overgenomen worden door DirectX 8 en de CPU als de videokaart er geen ondersteuning voor biedt.
Hoewel de pixel shaders niet zo veelzijdig zijn (maximaal 12 instructies per pixel) als de vertex shaders zijn er toch een flink aantal effecten mee mogelijk om te kwijlen. Met behulp van pixel shaders kan een game developer, om maar een paar dingetjes te noemen, namelijk leuke schaduw, reflecties en licht effecten bouwen.
Een tweetal voorbeeldjes
Het eerste voorbeeld wat je hieronder ziet staan komt uit de Inferno technologiedemo van nVidia, één van de vele demo’s die nVidia heeft gebouwd om een paar mogelijkheden van pixel en vertex shaders te laten zien. De Inferno demo maakt gebruik van de vertex processor van de GeForce3 om realistisch meteorieten in te laten slaan in een landschap. De vertex shaders worden gebruikt om de positie van alle vonkjes te bepalen die vrijkomen bij de inslag van een meteoriet en daarnaast wordt het landschap door middel van vertex shaders gedeformeerd om zo schokgolven weer te geven:
Het tweede voorbeeld is wederom een demo van nVidia, Bumpy Shiny Patch. Naast het gebruik van vertex shaders voor een paar kleine dingetjes laat deze demo voornamelijk de kracht van pixel shaders zien. Een doodgewoon vierkantje wordt doormiddel van vertex shaders vervormd en dankzij de pixel shaders reflecteert de omgeving erin terwijl er een soort van bump mapping effect aanwezig is:
Benchmarks (1)
De test opstelling
Om te kijken wat de GeForce3 allemaal in huis heeft is gebruik gemaakt van een tweakers.net testsysteem met een 1200MHz Athlon, 256MB SDRAM en een 20GB hardeschijf. Als vergelijkingsmateriaal is een Hercules GeForce2 GTS aanwezig (een GeForce2 Ultra was jammer genoeg niet beschikbaar). De gebruikte drivers voor de test zijn bij beide kaarten de 12.20 Detonator drivers.
De benchmark programma’s die uit de kast zijn getrokken zijn voor de verandering niet alleen Quake III Arena en 3DMark 2000, maar ook 3DMark 2001 en DroneZ. 3DMark 2001 om te testen hoe de GeForce3 het doet in nieuwe DirectX games en de DroneZ benchmark om dit te doen voor OpenGL games.
De benchmarks
Wat we hier zien zijn indrukwekkende resultaten. In 1600x1200x32 weet de GeForce3 probleemloos 66 beeldjes per seconde op het beeld neer te zetten. Zoals te verwachten is heeft de GeForce2 geen schijn van kans tegenover de GeForce3, in 1600x1200x32 weet deze ‘slechts’ 30 FPS te halen. Wat we hier verder zien is dat de CPU in de lagere resoluties voor de GeForce3 een flinke bottleneck is, in 640x480 en 1024x786 is de CPU snelheid de limiterende factor.
3DMark 200 laat ongeveer een gelijk beeld zien van de GeForce3, pas op 1600x1200x32 kan de GeForce3 zijn ware kracht laten zien. Enige verschil met Quake III Arena is dat de procentuele voorsprong van de GeForce3 hier een klein stukje groter is geworden.
DroneZ is een nieuwe OpenGL benchmark gebaseerd op de enige van het nog te releasen spel DroneZ. De benchmark heeft ondersteuning voor vertex- en pixelshaders, maar deze zijn voor de test uitgezet om zo één eerlijke vergelijking qua performance te kunnen maken. Voor benchmarks met vertex- en pixelshaders moet je op de volgende pagina wezen.
Wat de DroneZ benchmark hier laat zien is dat 1200MHz voor de GeForce3 te weinig is. In elke resolutie, zelfs in 1600x1200x32 weet de GeForce3 ongeveer gelijke framerates te produceren. Een duidelijk indicatie van een gebrek aan CPU power.
Last but not least is de opvolger van de 3DMark 2000 benchmark uit de kast gehaald, 3DMark 2001. Ook deze benchmark heeft ondersteuning voor vertex- en pixel shaders, maar de nadruk ligt meer op het renderen van scenes met veel textures en nog meer polygonen. Dat is ook de reden van de goede resultaten van de GeForce3 in deze benchmark, dankzij een goede TnL engine weet de GeForce3 hier leuke scores neer te zetten.
Benchmarks (2)
Vertex- en pixel shaders
Zoals belooft hier een paar benchmarks waarin de vertex- en pixelshaders van de Geforce3 worden getest. Maar voordat ik je bloot wil stellen aan de cijfertjes moet je eerst wat weten over de DroneZ engine en benchmarks modes.
Er zijn in DroneZ drie verschillende modes beschikbaar: GeForce2 Bump, GeForce3 Bump en GeForce3 Bump HQ. Met GeForce2 Bump wordt er geen gebruik gemaakt van vertex shaders, met GeForce3 Bump wordt er gebruik gemaakt van vertex shaders en met GeForce3 Bump HQ komen er ook nog pixel shaders bij. Qua visuals zijn er geen verschillen tussen GeForce2 Bump en GeForce3 Bump, bij de GeForce2 Bump methode wordt al het werk simpelweg verzet door de CPU. Als we al deze benchmarks draaien op de GeForce3 kunnen we dus de invloed van vertex- en pixelshaders op de performance bepalen.
Vertexshader benchmarks
Wat je hierboven ziet staan zijn de resultaten van het vergelijken van de GeForce2 Bump en GeForce3 Bump methodes op de GeForce3. Eigenlijk dus een vergelijking van hardwarematige vertex shaders via de GeForce3 en software matige vertex shaders via de DroneZ engine en de CPU.
Kijkend naar de grafiekjes vallen een tweetal belangrijke dingen op. Ten eerste zorgen de vertex shaders op de lage resoluties voor een respectabele performance winst. Op 640x480x16 is de winst zelfs 40 procent en op 1024x786x32 is de winst net iets minder dan 20 procent. Maar in 1600x1200 zien we het meest verrassende resultaat: de vertex shaders hebben daar een negatieve invloed op de snelheid.
Ik heb de benchmarks meerdere keren gedraaid om zeker van mijn zaak te zijn, maar DroneZ bleef dezelfde cijfers uitspugen: 66 FPS versus 58 FPS in het voordeel van de software vertex shaders. Enige conclusie die ik hier uit kan trekken is dat je voorlopig weinig hebt aan vertex shaders. De vertex shaders uitvoeren via de CPU is sneller dan via de GPU. Hierbij komt ook nog eens dat een AMD Athlon 1,2Ghz tegenwoordig niet eens zo bijzonder snel is. Daarom verwacht ik ook dat vertex shaders voorlopig hetzelfde lot is beschoren als TnL een jaar geleden….
Pixelshader benchmarks
Bij de pixelshader benchmarks zien we geen schokkende resultaten. Het gebruik maken van pixel shaders kost een paar frames per seconde, maar dat is niet erg. In tegenstelling tot de vertex shaders zorgen deze namelijk voor wat leuke eye candy, en dat is natuurlijk wel wat waard.
HRAA benchmarks
Zoals je kan zien doet Quincunx anti-aliasing wat het hoort te doen. Het is net een klein beetje langzamer dan 2x FSAA, maar visueel wel een stuk aantrekkelijker. Op 1600x1200x32 is het met 1400 3Dmarks verre van fatsoenlijk speelbaar, maar op 1024x786x32 is Quincunx anti-aliasing goed bruikbaar.
Conclusie
Je kan zeggen wat je wilt over de GeForce3, maar snel is hij in ieder geval. Dankzij de Lightspeed Memory Architecture weet hij leuke resultaten neer te zetten en verder kan hij ook prima overweg met anti-aliasing met behulp van de quincunx methode.
Over de vertex- en pixel shaders is mijn mening verdeeld. Met behulp van vertex shaders zijn leuke effecten mogelijk, maar zoals de DroneZ benchmark laat zien is het nut van hardwarematige vertex shaders twijfelachtig. Ik ben zeker van mening dat een programmeerbare TnL engine de toekomst heeft, maar voorlopig lijkt het erop dat de hardware van de GeForce3 niet krachtig genoeg is.
Pixel shaders voegen zonder twijfel wel wat toe aan de GeForce3. Zonder pixel shaders mis je simpelweg een berg leuke effecten. Er is slechts één probleem: voorlopig zijn er alleen een paar demo’s van nVidia en 3DMark 2001 die gebruik kunnen maken van pixel shaders. Verwacht wordt dat de eerste games met ondersteuning voor pixel shaders pas vlak voor de kerst op de markt zullen komen.
Voor de mensen die al een GeForce2 Ultra bezitten kan ik een GeForce3 niet aanraden (tenzij je echt geld over hebt…), maar voor mensen die nog een nieuwe high-end kaart zoeken kan de GeForce3 de moeite waard zijn. De prijs van de Leadtek GeForce3 is met 1135 gulden slecht 150 gulden duurder dan een GeForce2 Ultra. En alle extra’s die de GeForce3 biedt zijn in mijn ogen makkelijk 150 gulden waard.