Buzzword Special

Jaap (dikkedorus)
Eén van de grootste \"selling-points\" van een game is de graphics. Terugkijkend naar oude games is het duidelijk dat de grafische kwaliteit van nu niet meer te vergelijken is met die van tien jaar terug. Spelontwikkelaars bedenken steeds nieuwe effecten en technieken om hun spellen er beter te laten uitzien dan hun concurrentie. Vroeger was het al hip als een spel meer dan 16 kleuren bevatte, maar nu verkoopt een spel pas als het minstens HDR, Shader Model zus-en-zo, Soft Shadows en \"hi-poly\" 3D-modellen bevat. En dit alles moet natuurlijk wel lekker kunnen draaien op de huidige hardware.

In deze special gaan we eens kort bekijken hoe het nou in elkaar steekt, en vooral wat al die moeilijke woorden nou echt betekenen.

Hi-Poly
Hi-Poly betekent een hoog aantal polygonen. Het aantal polygonen wordt vaak gebruikt om aan te duiden hoe goed een 3D model er uit ziet. Maar wat zijn het, en waarom heb je ze nodig? Polygonen zijn veelhoeken, vormpjes die opgebouwd zijn uit rechte lijnen. Hoewel we nog steeds over polygonen praten, kan de videokaart in je console of PC alleen rekenen met driehoeken. Een driehoek is de eenvoudigste vorm in 3D ruimte, en aangezien je met een driehoek alle andere \"hoekige\" vormen kan opbouwen is dat verder geen probleem.
Het wordt lastig als er ronde vormen moeten worden getekend. Deze zijn niet te maken met driehoekjes of polygonen. Door hele kleine driehoekjes te gebruiken kan je het wel rond laten lijken. Dit is de reden waarom de wielen van een Warthog net niet helemaal rond zijn, en waarom oudere games er zo blokkig uit zien. Meer driehoekjes betekenen meer rekenwerk, maar rondere vormen. In het rechter plaatje is te zoen hoe een vertienvoudiging van de polygonen in het begin enorme verbeteringen oplevert.

GPU
Voor de komst van de grafische (3D-acceleratie)kaarten werden alle 3D applicaties berekend door je CPU, hetzelfde aparaat waar Windows op draait, en waarmee je op FOK! surft. Maar toen de complexiteit van 3D applicaties toenam kon deze het niet meer in z\'n eentje aan. Een aparte tweede processor, een Graphical Processing Unit (GPU) brengt uitkomst.
Deze chip is speciaal gebouwd om de berekeningen te doen waarmee 3D modellen op het scherm worden getoverd. De berekeningen worden verdeeld over verschillende processors in de chip, de welbekende shaders. De GPU is niet het enige dat er op een videokaart te vinden is, naast de hardware die nodig is om je beeldscherm aan te sturen, zitten er geheugenchips op. Deze chips zijn speciaal geschikt voor het snel lezen en schrijven van afbeeldingen, alle textures en tussenresultaten worden hierin weggeschreven. Hoe hoger de resolutie waarop je het spel speelt, hoe meer geheugen de tussenresultaten in beslag nemen. Hoe mooier de textures, hoe meer plek ze innemen. Vandaar dat 320MB of zelfs 640MB aan geheugen geen overbodige luxe meer is. Op de afbeelding links zie je een GPU, met geheugenchips.

Pixel en Vertex Shaders
Zoals je kon lezen zijn alle 3D omgevingen die je in je favoriete games ziet, opgebouwd uit driehoeken in een 3D ruimte. Het zijn de hoekpunten van deze driehoeken, beter bekend als vertices (enkelvoud vertex), die je GPU in worden gestuurd om getekend te worden. Naast de positie wordt er per vertex meestal nog een pakketje extra informatie meegstuurd met daarin onder andere informatie over de juiste uitlijning van de textures. Het berekenen van de uiteindelijke schermcoördinaten en andere eigenschappen van deze vertices wordt ook wel de Geometry Stage genoemd. Deze berekeningen, samen met andere berekeningen die betrekking hebben op de vertices worden in de Vertex Shader uitgevoerd.



Stappen van 3D model naar afbeelding

Zodra de scherm-coördinaten en andere informatie van alle drie de vertices zijn berekend in de Geometry Stage, wordt driehoek getekend op de schermafbeelding in de zogenaamde Rasterizer Stage. De informatie van de drie vertices van de driehoek wordt per pixel gecombineerd om de uiteindelijke kleur te bepalen. Hier moet je denken aan het uitlezen van de juiste texturecoördinaten, maar ook het berekenen van per-pixel lichtcalculaties zoals Normal Mapping of het samenvoegen van meerdere afbeeldingen of textures tot één kleur. Deze berekeningen zijn meestal simpeler dan de berekeningen in de Vertex Shader. Niet zo vreemd als je nagaat dat deze berekeningen meer dan een miljoen keer moeten worden uitgevoerd om één frame te tekenen. De processor die deze klus klaart heet de Pixel Shader

Vaak worden er versies genoemd, zoals Shader Model 3.0 of 2.1. Dit zijn afspraken die gemaakt zijn over de mogelijkheden van de shaders. Een Shader die SM 3.0 ondersteunt kan bijvoorbeeld complexere langere algoritmes berekenen.