Buzzword Special 2

Bump Mapping
Met de mogelijkheid om belichting per pixel te berekenen, is het ook mogelijk om bijvoorbeeld textures mee te nemen in het lichtmodel. Bump mapping neemt niet de positie van een triangle of een vertex als invoer, maar gebruikt bump map textures als invoer. In deze textures staat per pixel beschreven welke belichting deze zal ontvangen. Hierdoor is het mogelijk om de kleuring van pixels af te laten hangen van een “hoogtekaart” (bump map) die je meegeeft in een texture. Dit wekt de illusie van extra detail binnenin een triangle terwijl die er niet echt is. De berekeningen zijn relatief simpel, maar het effect is dusdanig overtuigend dat het niet meer is weg te denken uit de huidige games.


Een bol met, en zonder een bump-map
<\/center>
Normal Mapping
Normal mapping is een variant van Bump Mapping waar geen bump map, maar een normal map wordt meegegeven. In deze texture staat informatie over de richting van het oppervlak (normal genoemd), in plaats van de hoogte van het oppervlak. Deze methode wordt het meest gebruikt, omdat het sneller en eenvoudiger te implementeren is in de huidige hardware dan Bump Mapping. Bump maps nemen minder geheugen in beslag, maar verliezen snelheid door de vertaalslag van hoogtewaarden naar normals.


Een normal map werkt met kleurtjes die de licht-richting van elke pixel aangeven. Blauw, Groen en Rood coderen de X,Y en Z as van de richting.
<\/center>

Bilinear filtering en Trilinear filtering
Bij veel games krijgt de speler de keuze uit Bilinear of Trilinear filtering. Maar wat is het nou eigenlijk, en merk je iets van het verschil?

Bilinear filtering is de manier waarom de videokaart triangles inkleurt met textures. Dit is vooral zichtbaar bij het uitvergroten van als de speler inzoomt op een object. Zonder Bilinear filtering worden textures gewoon uitvergroot tot grote vierkante blokken. (denk aan inzoomen in MSPaint of oude games zoals Doom en Quake1). Bilinear filtering lost dit op met vervaagde overgangen tussen de pixels.



Links zonder, rechts met Bilinear filtering
<\/center>
Bij Trilinear wordt er nog meer vervaagd; er wordt namelijk nog gekeken naar de verschillende MIP-maps. MIP-maps zijn voorberekende verkleiningen van een texture die worden gebruikt bij extreem uitgezoomde textures:

Denk aan een vergezicht waar een texture van 512x512 pixels misschien uiteindelijk in de verte gezien op 4 pixels uitkomt, en die 262144 pixels allemaal zouden moeten worden meegenomen in de berekening van de pixelkleuren. In plaats van de grote texture wordt er dan gekeken naar een voorgerekende verkleining van 16x16 of 4x4. Dit scheelt enorm veel rekenkracht, en geeft mooiere resultaten.
Bij een plat terrein zal de GPU tijdens het inkleuren overschakelen naar een lagere MIP-map als de driehoeken verder weg zijn. Deze overgang is in FPS games vaak te zien als een harde lijn op de grond tussen scherpe textures dichtbij en blurry textures verderop. Om dit tegen te gaan wordt die harde lijn met Trilinear filtering vervaagd zodat het niet zo opvalt.



Je ziet de MIP maps rechts, en de de plaatsen waarop ze gebruikt worden links. De overgangen zijn vooral duidelijk als je beweegt, met trilinear filtering vervagen de randjes en zijn de storende overgangen weg..
<\/center>
Anisotropic Filtering
Nog een stapje verder gaat Anisotropic filtering (Anisotropisch filteren). Deze lost nog meer MIP-map problemen op. Vaak komt het voor (bijvoorbeeld op een plat uitgestrekt landschap) dat texures enorm worden gerekt in de breedte, en worden geplet in de lengte. MIP-maps zijn altijd gelijk geschaald in de hoogte en breedte, en zorgen ervoor dat er te weinig resolutie in de breedte is, en teveel in de hoogte, of andersom. Dit levert wazige plaatjes op. Anisotropisch filteren biedt uitkomst. Dit zorgt ervoor dat de GPU ervoor kan kiezen om bijvoorbeeld 1x in de breedte te schalen, maar 4x in de hoogte. Dit heet dan 1:4 of 4x Anisotropic Filtering. Hoe hoger het getal, hoe beter de resultaten van “geplette” textures.

FSAA
De meest “gepimpte” feature bij benchmarks is, naast de resolutie, de FSAA kwaliteit. FSAA staat voor Full Scene Anti-Aliasing, en maakt de randjes van de triangles wat “zachter”. Nu zijn er al tientallen technieken om dit te bereiken, maar de meest eenvoudige manier is om simpelweg een dubbele, vierdubbele of achtdubbele resolutie te gebruiken bij het berekenen van een frame, en deze vervolgens terug te schalen naar de resolutie van de monitor. Dit is een enorm karwei voor je pixel-shader, en er worden constant manieren gezocht om dit te verbeteren, door zo veel mogelijk berekeningen gewoon in de normale resolutie uit te voeren.



Links geen AA, rechts 16x AA, dus 16 \\\"sub-pixels\\\" die worden gebruikt om 1 eindpixel te verkrijgen.
<\/center>