Jetzt mit Plus alles auf einer Seite lesen

Jahres-AboUNSER TIPP

12 Monate

 Bester Preis
 Heftarchiv jederzeit buchbar
2,99€

pro Monat

Auf geht's
Quartals-Abo
3,99€

pro Monat

3 Monate

 20% günstiger als Flexi-Abo
 Heftarchiv jederzeit buchbar
3,99€

pro Monat

Auf geht's
Flexi-Abo
4,99€

pro Monat

1 Monat

 Monatlich kündbar
 Heftarchiv jederzeit buchbar
4,99€

pro Monat

Auf geht's

3D-Engines: id Tech 5 - Das Herz von Rage und Doom 4

Die 2007 vorgestellte Engine id Tech 5 soll den bereits beim Vorgänger id Tech 4 möglichen »Megatextures« zum Durchbruch verhelfen - als virtuelle Texturen in allen Bereichen.

von Georg Wieselsberger,
28.01.2011 09:11 Uhr

Seit der als id Tech 4 bekannten Engine des Grusel-Shooters Doom 3 , haben die Programmierer um den technischen Direktor John Carmack sich hauptsächlich mit der Entwicklung des plattformübergreifenden Grafikgerüstes (PS3, Xbox360, Mac, PC, iOS und neuerdings auch Android) für die kommenden Titel Rage und Doom 4 beschäftigt. Dabei verwendet id Software als letzter großer Entwickler noch die freie Grafikschnittstelle OpenGL, beschränkt sich dabei aber auf die grafischen Fähigkeiten, die DirectX 9 entsprechen. Außerdem senkt die Verwendung von OpenGL auch die Kosten, da der Portierungsaufwand auf andere Systeme geringer ist.

Rage beinhaltet im Gegensatz zu den bisherigen Projekten der Firma viele große Außenareale. Das zwingt die Entwickler, neue Wege zu beschreiten, um solche Landschaften zugleich schön und schnell auf den Schirm zu bringen. Bereits bei Enemy Territory: Quake Wars konnten die Entwickler von Splash Damage auf Basis der id-Tech-4-Engine mit Hilfe der damals noch wenig populären Megatexture-Erweiterung größere Außenareale realisieren.

Rage - Screenshots ansehen

Virtuelle Texturen

Die neuen virtuellen Texturen sind laut id Software der Kern der neuen Engine. Zusammen mit dem Anspruch, eine Technologie für alle Plattformen zu haben, hat dies viele technische Entscheidungen beeinflusst. Das liegt an der grundsätzlich neuen Vorgehensweise bei der Handhabung von Texturen. Konventionelle Engines sparen Videospeicher, indem sie Texturen stetig wiederholen, aufeinander schichten und diese Schichten dann mit entsprechender Transparenz optisch verschmelzen. Das führt zu einem relativ individuellen Gesamtbild, dass das vielfache Speichern von Texturen überflüssig macht. Id Softwares neuer Ansatz dagegen packt das gesamte Außenareal in eine einzige, dafür riesige Textur. Diese virtuelle Textur hat eine Größe von bis zu 128.000 mal 128.000 Pixeln. Da es unmöglich ist, diese mehrere Gigabyte große Textur in den Speicher einer Grafikkarte zu laden, wird sie in 1024x1024 Seiten, sogenannte »Pages« unterteilt.

Virtuelle Texturen im Einsatz Dieses Bild enthält viele verschiedene Pages.

Die einzelnen Pages Hier sind die einzelnen Seiten markiert.

Ein Bild auf dem Monitor kann, je nach zur Verfügung stehendem Speicher, wiederum aus 32 mal 32 Pages bestehen. Diese Pages können vereinfacht gesehen als einzelne Kacheln der Gesamt-Textur verstanden werden. Jede Page ist individuell und, im Gegensatz zu dem zuvor beschriebenen konventionellen Verfahren, beinhaltet sie auch Normal-Maps für Beleuchtung, Schatten sowie Bump-Maps für Oberflächen-Unebenheiten. Diese zusätzlichen Textur-Informationen werden von den Entwicklern auf die einzelnen Pages heruntergerechnet.

Quad-Tree

Der Quad-Tree unterteilt die Pages zusätzlich.Der Quad-Tree unterteilt die Pages zusätzlich.

Um den Rechenaufwand für Texturfilterungstechniken wie anisotrope oder trilineare Filterung zu minimieren, sind die Pages in einem »Quad-Tree« organisiert. Diese pyramidenartige Datenstruktur teilt jede einzelne Page wiederum in vier weitere »Pages«. Jede der relativ groben Pages besitzt also jeweils vier weitere Unterebenen im Quad-Tree. Je tiefer die Ebene innerhalb der Pyramide ist, desto höher ist der Detailgrad der Page und umso kleiner ist der Bereich im Spiel, den die Page abdeckt. In Abhängigkeit des Abstandes der Textur zum aktuellen Betrachtungswinkel wählt die Engine dann eine Page mit dem entsprechenden Detailgrad.

Die benötigten Textur-Kacheln fasst die Engine danach in einer virtuellen Textur zusammen. Für eine sehr weit entfernte Page im aktuellen Bild wird dann zum Beispiel eine grobe Page aus der obersten Ebene des »Quad-Tree« gerendert, während eine Page, die sich direkt vor der virtuellen Kamera befindet, aus der untersten und damit detailliertesten Ebene stammt. Um Detail-Sprünge zu vermeiden, berechnet die Engine noch Zwischenstufen der jeweiligen Texturdetail-Pages des Quad-Tree. Im Gegensatz zu Quake Wars wird der diese Vorgehensweise auf alle im Spiel vorkommenden Objekte angewandt. Das schließt auch Gebäude und Charaktermodelle mit ein. Spieler können sich also auf sehr abwechslungsreiche Umgebungen, Gegenstände und Charaktere freuen, die zudem auf kurze Distanz sehr detailliert präsentiert werden.

Wie bereits erwähnt, fallen durch das dieses Verfahren Datenmengen im Gigabyte-Bereich an. Laut John Carmack wären sogar 50 GByte komprimierte Texturen ideal. Das Konzept des Streamings der benötigten Texturdaten geht daher so weit, dass die Daten von vier DVDs gelesen und auf Festplatte installiert werden müssen, was beispielsweise günstigere Xbox-360-Konsolen ohne Festplatte ausschließt.

Parallele Jobs

Das Spiel läuft optimal mit 60 Bildern pro Sekunde. Das heißt, dass der Computer zum Berechnen eines Bildes knappe 16 ms Zeit hat. Das ist wenig für so komplexe Berechnungen, weil ein Teil davon auf auf das bloße Nachladen von Daten entfällt. Ein Weg dies zu umgehen, ist das Anfordern der Daten entsprechend zu optimieren. Das kann bei einem in Echtzeit-Computerspiel mit für die Engine unvorhersehbaren Benutzereingaben aber nicht sehr weit betrieben werden.

Das - und die unter anderem für den Cell-Prozessor der Playstation 3 mit seinen vielen kleinen Rechenkernen unabdingbare Parallelisierung des Codes - zwingt die Programmierer um John Carmack zu einem interessanten Kompromiss: Da das Nachladen der Daten Zeit in Anspruch nimmt und die Parallelisierung immer wieder durch Abhängigkeiten innerhalb der Teilberechnungen zwischen den Bildern begrenzt wird, werden stets zwei Bilder gleichzeitig gerendert. Dabei wird immer geprüft, dass aus den zwei Bildern die als »Jobs« bezeichneten Teilaufgaben so verteilt werden, dass möglichst geringe Wartezeiten durch Nachladen oder Abhängigkeiten entstehen. Der Nachteil ist, dass die Grafik immer einen Frame verzögert ausgegeben wird, was wiederum knappen 16 ms entspricht.

Sequentiell Langsam durch Synchronisation.

Parallel Schnell durch parallele Jobs, aber mit verzögerter Ausgabe

1 von 2

nächste Seite



Kommentare(59)

Nur angemeldete Benutzer können kommentieren und bewerten.