Stap 6: … texturing...
Bij shading wordt alleen een bepaalde kleur gebruikt om een 3D-object te ‘vullen’, maar een veel realistischer effect wordt meestal bereikt door het toepassen van een texture. Overigens geldt ook hiervoor dat dit op meerdere manieren gedaan kan worden – naarmate videokaarten verder evolueerden werden de mogelijkheden om een textuur realistisch te plaatsen uitgebreid. We hebben al verteld dat texturing (ook wel: texture mapping) neerkomt op het ‘plakken’ van een tweedimensionale afbeelding op een 3D-object.
De eerste videokaarten konden alleen relatief eenvoudige texturen verwerken, kleine plaatjes van bijvoorbeeld 64x64 pixels. Lange tijd waren fabrikanten van mening dat een textuurgrootte van 256x256 pixels meer dan genoeg was, 3dfx hield dit met de introductie van hun Voodoo3-videokaarten zelfs vol toen nVidia’s TNT2 al texturen van 2048x2048 beeldpunten ondersteunde. Op zich was dit niet zo vreemd, want één textuur van 256x256 pixels met een kleurdiepte van 16-bits is al 131.072 bytes groot, ofwel 128KB. Met de toen gangbare hoeveelheid videogeheugen van 16 megabytes was duidelijk dat de hoeveelheid ruimte beperkt was. Echter, de combinatie van een toename in capaciteit en snelheid van videogeheugen en het toepassen van compressietechnieken om texturen verkleind op te slaan, maakten het mogelijk om aan de groeiende vraag naar realistischer afbeeldingen tegemoet te komen.
Texturen zijn er in twee soorten. De eerste soort bestaat uit een vastgelegde set afbeeldingen die door een programma – bijvoorbeeld een 3D-spel –in het videogeheugen op de videokaart wordt geladen. Vervolgens ‘weet’ de videokaart op basis van de textuurinformatie die is meegestuurd welke textuur bij welk 3D-object hoort; de eerder besproken textuurcoördinaten geven aan waar de textuur terecht moet komen. De tweede variant is complexer. In deel 1 van deze reeks hebben we een eenvoudig voorbeeld genoemd, de zogenaamde lightmaps. Dit zijn texturen die door de grafische kaart worden gegenereerd: de belichtingsinformatie, gebaseerd op de positie van de camera, de lichtbronnen en de speler, wordt vertaald naar een tweedimensionale afbeelding, die over de standaardtextuur van een object wordt geprojecteerd. Dit klinkt ingewikkeld, maar in figuur 8 en 9 is de toepassing goed zichtbaar. In figuur 10 is het totaaleffect inclusief textuur te zien.

Figuur 8: Alleen shading…

Figuur 9: … shading en een lightmap …

Figuur 10: … en compleet met texture.
Wat in de figuren 9 en 10 al een beetje geïnsinueerd wordt, is dat meerdere texturen over elkaar heen toepassen een gunstig effect heeft op het realisme van de uiteindelijke weergave. Dit is inderdaad het geval: niet alleen light maps, maar ook reflecties, bump maps, detailtexturen en nog veel meer andere toepassingen van combinaties van texturen zorgen voor een toename van de ‘geloofwaardigheid’. Het voert te ver om hier al deze toepassingen op te sommen en te illustreren, maar één komt hier nog aan bod: bump mapping. In figuur 11 is zichtbaar hoe door middel van nog een extra textuur de illusie van diepte kan worden gecreëerd in de texturen van de muur in de afbeelding.
Figuur 11: Bump mapping
Het toepassen van meerdere texturen in de pixel pipeline noemen we multitexturing. De eerste 3D-kaarten ondersteunden slechts het toepassen van één textuur per pipeline, wat betekende dat een pixel meerdere keren door de pipeline gestuurd moest worden voordat alle texturen verwerkt waren. De Voodoo2 van 3dfx en de TNT (TwiNTexture engine) waren de eerste videokaarten die meerdere texturen in één keer konden verwerken. Sindsdien is, door toename van het aantal pixel pipelines en het aantal texture units per pipeline de capaciteit steeds vergroot. Dit is ook nodig, want het toepassen van meerdere texturen voor een realistischer beeld blijft óók toenemen.