MegaTexture is een texture mapping-techniek bij computertoepassingen waarbij gebruik wordt gemaakt van een zeer grote texture voor het terrein in plaats van het herhalen van meerdere kleine textures. Het is voor het eerst gebruikt in Enemy Territory: Quake Wars (2007) van Splash Damage. Het is ontwikkeld door John Carmack van id Software.

De computerspellen Doom en Rage van id Software maken ook gebruik van deze technologie. In deze spellen wordt een textuur van 128.000 bij 128.000 gebruikt.[1]

Techniek

bewerken

MegaTexture maakt gebruik van een zeer grote texture voor statisch terrein. Deze is opgeslagen op de harde schijf en de relevante delen worden geladen wanneer dat nodig is. Op deze manier is er meer detail en variatie mogelijk met betrekkelijk weinig RAM-gebruik in vergelijking met de conventionele methoden waarbij meerdere kleine textures worden gebruikt.

Een gebruikelijke techniek om een digitaal terrein te voorzien van texturen is het gebruik van tiling: hierbij worden texturen van bepaalde grootte (zoals 256 bij 256 of 512 bij 512) naast elkaar geplaatst om zo het terrein te bedekken. Bij MegaTexture wordt een enkele textuur gebruikt (in Enemy Territory: Quake Wars werd 32.768 bij 32.768 gebruikt) voor het gehele terrein. Deze textuur wordt verwerkt om twee bestanden te produceren, de ene voor diffuse-data en de andere bevat de normal map. Deze grote bestanden worden opgedeeld in kleine bestanden (tiles) van bijvoorbeeld 128 bij 128 en vervolgens gecomprimeerd om te bestandsgrootte te beperken.

Bij het uitvoeren van het spel wordt een vast aantal surfaces aangemaakt waarop de tiles geladen kunnen worden. Deze surfaces zijn ringvormig en worden gebaseerd op de positie van de speler (in ringen rond de speler). Er wordt hierbij gebruikgemaakt van mipmaps: de ringen dicht bij de speler bevatten meer detail dan ringen verder weg. Tijdens het spel worden de tiles gedecomprimeerd, toegekend aan een surface en geconverteerd naar een DXT-formaat. Doordat er een vast aantal surfaces gebruikt wordt, is het gebruik van het videogeheugen van constante omvang; wat er op de surfaces staat verandert wel maar het aantal en de omvang van de surfaces niet.

Voor- en nadelen in ET:QW

bewerken

Een voordeel van MegaTexture is dat het geheugengebruik constant en voorspelbaar is. Daarnaast kan de data van het terrein en de textuur in een keer naar de grafische kaart gestuurd worden en kan men de schaduwen van objecten (zoals bomen) op de textuur zelf aanbrengen wat gedetailleerdere schaduwen oplevert dan gebruikelijke technieken.

De implementatie van MegaTexture in Enemy Territory: Quake Wars bevatte ook enkele nadelen. Nadelen van MegaTexture zijn dat er vrij veel data opgeslagen wordt en dat men tijdens het spel de data telkens moet decomprimeren en vervolgens comprimeren naar DXT. Daarnaast kan het merkbaar zijn dat er data geladen moet worden voor het terrein rond de speler (dit is bijvoorbeeld te zien als men als toeschouwer van spelers wisselt). Tot slot worden er geen betere texturen geladen als men inzoomt met een wapen (zoals een sniper) aangezien de texturen rond de speler meer detail bevatten dan de texturen verder weg.

bewerken