Bij de opbouw van elk gerenderd beeld doorloopt een videokaart verschillende stappen, ook wel de graphicspipeline genoemd. De 3d-scène van een moderne game wordt omgezet in een 2d-beeld dat op je monitor verschijnt. De processor levert informatie aan de videokaart om de scène te renderen. Van allerlei in-gameobjecten wordt berekend hoe die zich tot elkaar verhouden, waaruit een lijst met 3d-coördinaten voortkomt. Vervolgens berekent de kaart hoe dit er vanuit het camerastandpunt van de speler uitziet.
Een belangrijke stap om overtuigend en realistisch allerlei objecten neer te zetten is textures aanbrengen. Simpel gezegd zijn dit plaatjes die over objecten heen worden 'geplakt'. In het renderproces bestaan deze objecten tot dan toe nog uit driehoeken, lijnen en punten met daarop alleen nog een basiskleur en lichteffect. Door het gebruik van textures kunnen objecten onder andere overtuigender de indruk wekken dat ze bestaan uit een bepaald materiaal, zoals steen, metaal, hout of zand.
3d for the Rest of Us: Texture Coordinates door Daniel Lehenbauer
Textures worden niet alleen gebruikt om platte oppervlakken te vullen. Met bumpmaps kunnen ontwikkelaars ook de illusie wekken dat er hobbels in het oppervlak aanwezig zijn. Gerenderde lichteffecten worden ook hierop aangepast en displacementmaps dienen om de gesimuleerde oneffenheden daadwerkelijk door te voeren in de geometrie van een object.
Naast bump- en displacementmaps kunnen gameontwikkelaars nog diverse andere soorten textures gebruiken. Zo bepalen specular maps de hoeveelheid reflectie, bepalen emissive maps hoeveel en wat voor licht wordt uitgestraald, en voegen normal maps hobbels en deuken toe aan het oppervlak. Verdere optimalisatie hiervan is mogelijk door twee typen textures te combineren.
Combining Texture-Derived Vibrotactile Feedback, Concatenative Synthesis and Photogrammetry for Virtual Reality Rendering, Magalhães et al., 2019, via ResearchGate
Waarom zijn textures zo groot?
Het antwoord op de vraag waarom textures zo groot zijn, is tweeledig, maar simpel. Aan de ene kant verwachten spelers een steeds hogere beeldkwaliteit van moderne games. Aan de andere kant komen ontwikkelaars weg met niet optimale compressie.
Of ze nou spelen op een console of op de pc, gamers verwachten dat ze in een spel elk object van heel dichtbij nog haarscherp kunnen bekijken. Omdat dit tegenwoordig ook op beeldschermen met hogere resoluties gebeurt, moeten de textures een erg hoge resolutie hebben om dit voor elkaar te krijgen.
Een game laadt de texture met de hoogste kwaliteit pas in als de speler zich dichter bij het desbetreffende object bevindt. Sta je verder weg, dan de game een kleinere versie. Variaties van deze textureformaten zijn ook bekend als mipmapping. De engine van het spel zelf kan ze genereren, maar ontwikkelaars kunnen ze ook vooraf genereren en toevoegen aan de bestaande grotere texture. Dat laatste is in veel gevallen makkelijker, maar heeft tot gevolg dat de toch al forse textures nog groter worden.
Textures in moderne games nemen daardoor veel opslagruimte in beslag. Dankzij toegenomen internetsnelheden is deze ontwikkeling niet zo problematisch. Voor veel moderne games heb je hierdoor wel ruim 100GB aan vrije opslagruimte nodig om het spel te kunnen downloaden en installeren.