Megatextúrázás (virtuális textúrázás)

A virtuális textúrázás, vagy ismertebb néven a megatextúrázás alapjait John Carmack dolgozta ki. Az id Software motorprogramozója arra a problémára keresett megoldást, hogy a statikus terepre feszülő textúrák folyamatosan ismétlődnek, így a játékos folyamatosan ismert alakzatokkal találkozik. Ezt jó dizájn mellett szépen el lehet rejteni, de nem igazi ez a megoldás, mivel az úgynevezett tapétahatás akkor is érezhető. A megatextúrázás lényegében arra az egyszerű elvre épül, hogy sok pici textúra egymás mellé helyezése helyett legyen egy brutálisan nagy textúra, ami minden pontján egyedi, így a tapétahatás elvi szinten is eltűnik.

Hirdetés

Az ötlet zseniális, de a megvalósítás nem problémamentes, mivel egy átlagos textúra helyigénye töredéke a megatextúráének. Utóbbi biztos, hogy nem fér bele a memóriába, így valamilyen módon meg kell oldani a textúrázást. Erre úgynevezett streamelést használhat a videojáték-motor, ami a mozaikokra felosztott megatextúrából mindig csak azokat a részeket tölti be, amelyekre éppen szükség van, majd a megfelelő méretre skálázva fel is kerül a textúrarészlet a terepre. Ezt a folyamatot persze alaposan bonyolíthatja, ha a megatextúra tényleg brutálisan nagy (tömörítetlen formában akár 1 TB), ugyanis ilyenkor még a merevlemezen való tárolása is gondot jelent. Erre extrém tömörítést kell alkalmazni, és jó esély van rá, hogy a tömörített megatextúrát már nem kezeli a grafikus processzor, vagyis a mozaikokat előbb át kell kódolni, és utána kerülhetnek felhasználásra. Ez a PC-k elvi működése mellett rendkívül kellemetlen feladat, mivel az átkódolt textúrákat a processzor a rendszermemóriába menti el, de azt használat előtt át kell másolni a VRAM-ba, ami nem kevés időveszteség, főleg ha a PCI Express interfész késleltetését is beleszámoljuk. Gond tehát van bőven, de van fény az alagút végén, ugyanis a jövőben olyan lapkákra van kilátás, amelyekben a CPU-magok és az IGP teljesen koherensen osztja meg a memóriát, így elkerülhető a textúrarészek másolása.

A megatextúrázás elvi működése egyébként rendkívül érdekes újításokra is lehetőséget ad, hiszen kellően aprólékos megatextúra alkalmazása mellett annyira apró részletek is kidolgozhatók, mint a például egy késen egy rendkívül pici hajszálrepedés. Mivel a mozaikokat a rendszer mindig megfelelő méretre skálázza, így az apró részletek csak akkor jelennek meg, ha közeledik a kamera a felülethez.


A Rage megatextúra implementációja

A rendszernek létezik szoftveres és hardveres megvalósítása is. Az eddig megjelent játékok, mint például az Enemy Territory: Quake Wars és a Rage szoftveres implementációt használnak, így a címfordítást shader kód végzi, a szűrés szintén szoftveres rásegítéssel oldható meg, a textúrabetöltés két egymástól függő fázisban lesz megoldva, illetve csak egy textúraformátum és textúratípus implementálható. Az első hardveres megvalósítással az AMD állt elő, és a cég Partially Resident Textures (PRT) névre keresztelte a technológiát. Ennek az implementációnak az előnye, hogy hardveres laptáblát használ a címfordításhoz, teljesen hardveres a szűrés, a textúrabetöltés egy fázisból megoldható, és minden olyan textúraformátum és textúratípus támogatott, amelyet a hardver kezel. Ráadásul a PRT a 32 TB-os megatextúrával is elbánik, ami több mint elég.

A megatextúrázás egyelőre gyerekcipőben jár, de John Carmack jól látja, hogy ez a jövő, így a megfelelő hardverek mellett egyre több videojáték-motor fogja majd kihasználni a rendszer előnyeit.

Hirdetés