nVidia GeForce 2 GTS Review

Inhoudsopgave
  1. 1. Introductie
  2. 2. De GeForce 2 in vergelijking met de GeForce 256
  3. 3. De pixel engine uitgebreid
  4. 4. nVidia's Shading Rasterizer / Per Pixel Shading
  5. 5. Het betere belichtingswerk
  6. 6. Full Scene Anti-Aliasing
  7. 7. De erfenis van de GeForce 256
  8. 8. Benchmarks!
  9. 9. Benchmarks (vervolg)
  10. 10. Conclusie

nVidia's Shading Rasterizer / Per Pixel Shading

De nieuwe functie waar nVidia nog wel het meest trots op is, is de nieuwe ‘Shading Rasterizer’ en de drijvende kracht erachter, het ‘Per Pixel Shading’ systeem. Op de nVidia website prijkt op dit moment dan ook groot de melding “Introducing the world’s first per-pixel shading GPU”. Een berg marketing termen dus, waarbij niet meteen duidelijk is wat wél en wat niet nieuw is. 

Laten we eerst eens bekijken wat nVidia nu precies bedoelt met de mysterieuze ‘NSR’. Door middel van de nieuwe Shading Rasterizer kan de GeForce 2 maar liefst 7 operaties tegelijkertijd (dus in één klokslag) uitoefenen op een pixel. Onder deze operaties valt het verwerken van een base texture, per-pixel bump mapping, per-pixel diffuse lightning, per-pixel specular lightning, colored fog, ambient light en alpha transperancy. Dit klinkt geweldig, maar laat je niets wijsmaken: vele andere 3D chips kunnen ook al meerdere effecten uit dit setje tegelijkertijd toepassen. Veel van de effecten binnen de NSR zijn gebaseerd op per-pixel lightning, ofwel een systeem waarbij voor iedere pixel apart de belichting wordt berekend. Of dat dan bump mapping, diffuse lightning of specular lightning is, maakt voor de rest van het verhaal niet zoveel uit.

Om de voordelen van per-pixel lightning te zien, zullen we eerst twee veel gebruikte huidige belichtingsmethodes bekijken. Op de volgende pagina zullen we dan zien dat per-pixel lightning eigenlijk het beste van twee werelden is.

Light Maps

Bij een veel gebruikte manier van belichten komt het multi-texturing systeem van pagina 3 weer om de hoek kijken. Met een 2de texture, die we de light map noemen, worden namelijk licht effecten op een 3D object geplaatst. Onderstaande afbeeldingen laten de werking van een light map duidelijk zien. In de eerste afbeelding zien we een texture met bakstenen, een ideale texture voor een muur in spellen als Quake dus! De tweede afbeelding toont de hierbij behorende light map: waar de light map licht is, moet het object veel belicht worden, waar de light map donker is moet het object minder belicht worden. Let wel: de makers van het spel moeten als ze gebruik maken van light maps, niets alleen voor elk 3D object de juiste texture maken, maar ook de speciale light map! Voor de makers van 3D spellen zorgt het gebruik van light maps dus voor heel wat werk.

Zowel de base texture als de light map worden nu aan de rendering engine toegevoegd en die voegt beide via het multi-texturing systeem samen. Zo krijgen we een resultaat als in een onderstaande figuur: een mooi belicht stuk muur!

Een oplettende lezer zal wel al zijn wenkbrauwen hebben gefronst: bij dit 'oude' belichting systeem wordt namelijk ook iedere pixel apart verwerkt! De naam per-pixel lightning voor nVidia’s nieuwe belichtingssysteem blijkt dus erg ongelukkig gekozen.

Hoewel light maps prachtige resultaten kunnen opleveren, hebben ze een groot nadeel: ze kunnen alleen maar werken met statische lichtbronnen. Zodra de lichtbron namelijk van plaats verandert, zou de light map ook moeten veranderen om toch een realistisch resultaat te behouden. Maar ook als de intensiteit van een lichtbron verandert, is de light map onbruikbaar geworden! Dit probleem wordt in de steeds mooier worden de 3D spellen steeds groter: vandaar dat het gebruik van light maps langzaam uitsterft. 

Vertex lightning

Er moet dus gezocht worden naar een belichtingsmethode die interacties met de verschillende lichtbronnen volledig moet kunnen werken. Een dergelijke methode is al heel lang beschikbaar onder de naam ‘vertex lightning’. Onderstaande figuur zal het vertex lightning systeem verduidelijken:

We zien hier een driehoek uit een 3D object dat enkele pixels beslaat. Bij vertex lightning wordt nu voor ieder hoekpunt (ofwel vertex) van de driehoek de juiste belichtingswaarde berekend! In principe is vertex lightning gewoon de L uit T&L! (Zie nogmaals het artikel ‘Hoe werkt een 3D grafische kaart? – Deel 1’!) Deze berekening is dus volledig interactief met de verschillende lichtbronnen. Dat houdt in dat de 3D chip de hele tijd voor ieder hoekpunt berekent hoe ver de verschillende lichtbronnen zich van het hoekpunt bevinden en wat de intensiteit van de verschillende lichtbronnen is. Zo krijgen we voor ieder hoekpunt een nauwkeurig berekende belichtingswaarde.

Voor de andere pixels binnen de driehoek wordt er gewoonweg geïnterpoleerd. Dat houdt dus bijvoorbeeld in dat de middelste pixel uit ons voorbeeld de gemiddelde belichtingswaarde van de drie drie hoekpunten krijgt. 

Hoewel je met vertex lightning absoluut mooie effecten kunt creëren, heeft het toch een groot nadeel. Aangezien de belichtingswaarden alleen per hoekpunt nauwkeurig zijn en niet per pixel, kan er helaas veel detail van de belichting verloren gaan. Dit is vooral het geval als we met hele grote driehoeken werken. Stel je eens voor dat we een gericht spotje op het midden van een grote driehoek richten. Vertex lightning zal dan absoluut het verkeerde resultaat geven. In plaats van een heel lichtpuntje op het midden van de driehoek, zien we een compleet uitgevaagde lichtbundel over de gehele driehoek. Vertex lightning is dus eigelijk alleen maar geschikt als we met heel veel kleine driehoeken werken. In spellen als Quake, waar een grote muur vaak maar uit twee aaneengesloten driehoeken bestaat, is vertex lightning vaak niet bruikbaar.

We zoeken dus naar een belichtingsmethode die de per pixel nauwkeurigheid van light map belichting en de interactiviteit van vertex lightning combineert: ruim baan voor het nieuwe ‘true per-pixel lightning’!

Advertentie
0