Hoe werkt een 3D grafische kaart? (2003) – Deel 2

Inhoudsopgave
  1. 1. Inleiding
  2. 2. Stap 3: de laatste transformatie
  3. 3. Stap 4: Opruiming
  4. 4. Stap 5: triangle setup en rasterization
  5. 5. Stap 6: Pixel shading...
  6. 6. Stap 6: … texturing...
  7. 7. Stap 6: … en filtering

Stap 5: triangle setup en rasterization

De vertices die het opruimprocédé van clipping en backface culling overleefd hebben, worden nu eindelijk geconverteerd naar driehoeken. Dit verklaart meteen de naam van de eerste helft van deze stap: triangle setup. Vanaf het moment dat videokaarten deze stap uit konden voeren, spreken we over ‘3D-kaarten’ – de in deel 1 genoemde Voodoo van 3dfx is een vroeg voorbeeld. De triangle setup gebeurt vlak voor het volgende onderdeel van deze stap, rasterization, waarbij een uit pixels opgebouwd ‘beeld’ wordt gecreëerd. In de rasterization fase wordt gekeken welke pixels de net getekende driehoeken op het scherm beslaan. In figuur 4 is één driehoek zichtbaar met het raster waarnaar het vertaald moet worden. Figuur 5 laat de gerasterde driehoek zien.


Figuur 4: een simpele geometrische figuur, met drie vertices.


Figuur 5: het gerasterde figuur.

Zoals uit deze figuren zichtbaar is, gaat het hier niet alleen om een proces van ‘puntjes verbinden’, maar ook vindt hier de conversie plaats van 3D- naar 2D-beeld. Dit is echter een bijzonder 2D-beeld, want van iedere pixel moet worden onthouden hoe ‘diep’ deze zich in de scène bevindt. De plaats waar dit gebeurt, is de z-buffer.

Het belang hiervan is eenvoudig te illustreren: indien twee driehoeken elkaar overlappen, moet duidelijk zijn welke van de corresponderende pixels zich ‘voor’ en welke zich ‘achter’ bevinden. Aangezien deze bewerking vele malen per seconde moet plaatsvinden, is het niet verwonderlijk dat de zogenaamde z-buffer operations, ofwel lees- en schrijfhandelingen naar de z-buffer, een belangrijk deel van de beschikbare bandbreedte consumeren. Vandaar ook de noodzaak van de voorgaande stap, waarin de hoeveelheid diepte-informatie tot de minimaal noodzakelijke hoeveelheid beperkt werd. De z-buffer kan 16-, 24- of 32-bits zijn: hoe meer bits, hoe hoger de precisie van de plaatsing, maar ook: hoe meer geheugen nodig voor het wegschrijven en ophalen van informatie.

Nadat in de triangle setup alle driehoeken op diepte gesorteerd zijn, worden de driehoeken die het verst verwijderd zijn in de 3D-scène het eerst verwerkt. En zo wordt, laag voor laag, de scène gerenderd.

Advertentie
0