Voxel-Rendering am Beispiel der id-Tech-6 erläutert (History-Artikel von 2009)

Neue Technologien

Voxel-Rendering am Beispiel der id-Tech-6 erläutert (History-Artikel von 2009)

Carsten Spille
|
18.07.2014 16:45 Uhr
|
Neu
|
Voxel-Rendering und damit Raycasting ist wieder "in": Nicht nur Intel freut sich für Larrabee darüber, auch Grafikkarten- und Spielhersteller wie id Software finden wieder Gefallen an dem Verfahren. PC Games Hardware zeigt am Beispiel der id-Tech 6 Engine Möglichkeiten und Grenzen des Voxel-Renderings. [Hinweis: Es handelt sich sich um einen Artikel vom 13.04.2009, den wir anlässlich der Vorstellung des Doom Reboots neue Ehre zuteil werden lassen]


Hinweis: Da das Reboot von Doom der erste Titel mit id Tech 6 ist, wollen wir an dieser Stelle diesen "historischen" Artikel aus dem Jahre 2009 erneut veröffentlichen. Man könnte angesichts der eher schleppenden Entwicklung in den letzten fünf Jahren beinahe von "Science Fiction" reden, denn die 2009 von Entwicklern in Aussicht gestellten und von uns verarbeiteten für den Artikel Neuerungen im Bereich Voxel-Rendering sind zumindest in dieser Form noch keine breite Realität - auch wenn Spiele wie Minecraft und weitere Indie-Spiele tatsächlich schon Voxel nutzen. Behalten Sie also im Hinterkopf, dass der Artikel fünf Jahre alt ist. Zum Thema id Tech 6 gab es übrigens seit 2009 wenig Neuigkeiten. Die letzte Info war, dass es nach dem Weggang von id-Technik-Mastermind John Carmack fraglich ist, wie und ob die id Tech 6 überhaupt weiterentwickelt wird.

--------------------

AMD Cinema-2.0-Techdemo: Scorpion (Voxel-Rendering) AMD Cinema-2.0-Techdemo: Scorpion (Voxel-Rendering) [Quelle: http://www.amd.com]

Voxel-Rendering mit id-Tech 6: Einleitung

id Software, die Spieleschmiede um Programmiererlegende John Carmack, ist ebenso für technologisch innovatives Design ihrer Spiele-Engines wie für die Indizierungsgefahr der damit veröffentlichten Titel bekannt. Die kommende id-Tech-6-Engine soll sich gar von der bekannten Polygon- und Rasterwelt entfernen und auf Voxel-Rendering setzen. Wir beleuchteten den technischen Hintergrund dieses Verfahrens der 3D-Darstellung bereits in der PCGH-Printausgabe 05/2009 und bieten unseren Online-Lesern diesen Artikel als kleines Ostergeschenk bereits jetzt auf der Webseite an.

Voxel-Rendering - was ist das überhaupt?

Genau wie Pixel und Texel ist auch Voxel ein Kunstwort, ein sogenanntes Portmanteau. Der Begriff setzt sich aus den beiden Bestandteilen "Volumetric" und "Pixel" zusammen - Letzteres ist ebenfalls ein Kunstwort, welches den kleinsten Bestandteil eines digitalen Bildes bezeichnet ("picture element").

Damit ist im Gegensatz zum rein zweidimensionalen Pixel ein Bildpunkt gemeint, welcher sich im virtuellen dreidimensionalen Raum befindet. Neben einer Angabe der Höhen- und Breitenposition besitzt ein Voxel also auch eine Tiefe (den sogenannten Z-Wert).

Raycasting in der Welt der Voxel

Nachdem man bei id Software bereits vor mehr als 15 Jahren für die in Deutschland beschlagnahmte Nazijagd im österreichischen Schloss Wolfenstein auf Raycas­ting setzte, denkt man nun erneut über den Einsatz dieses Verfahrens nach. Damals begnügte man sich noch mit einem einfachen zweidimensionalen Raster als Spielwelt. Entsprechend musste auch nur ein einzelner Strahl (Ray) für jede Bildschirmspalte bis zum nächsten Block berechnet werden. Aus der Länge dieses Strahls ergab sich dann die Bildschirmhöhe der abgetasteten Wand.

Heute könnte man mit dieser Variante der Raycasting-Technik nichts mehr erreichen, da Spieler zumindest bei Ego-Shootern zu Recht eine dreidimensionale Umgebung erwarten. Daher setzt man anstelle des einfachen 2D-Rasters auf ein komplett dreidimensionales Volumen. Aus den flachen Blöcken werden dann vollständige Würfel (Voxel). Vergrößert man die Spielwelt um eine Dimension, muss die Abtastung ebenfalls um diese vergrößert werden. So erfordert id Softwares neue Raycasting-Technik einen Strahl pro Bildschirmpunkt im Vergleich zu einem Strahl pro Spalte (Horizontalauflösung). Damit wird der benötigte Rechenaufwand unumgänglich vervielfacht.

Amdahls Gesetz veranschaulicht: Ist der Programmcode an einer Stelle nicht parallelisierbar, helfen auch Dutzende von Prozessoren kaum weiter. Selbst bei 95-prozentiger Parallelisierbarkeit erreicht man mit acht Kernen nur einen Geschwindigkeitszuwachs von rund 500 Prozent. Amdahls Gesetz veranschaulicht: Ist der Programmcode an einer Stelle nicht parallelisierbar, helfen auch Dutzende von Prozessoren kaum weiter. Selbst bei 95-prozentiger Parallelisierbarkeit erreicht man mit acht Kernen nur einen Geschwindigkeitszuwachs von rund 500 Prozent. [Quelle: http://www.pcgameshardware.de] Was jedoch unverändert bleibt, ist die Tatsache, dass jeder Strahl unabhängig von allen anderen berechnet wird, die Aufgabe also sehr gut parallelisiert werden kann. Genau hierin sieht Jon Olick von id Software den großen Vorteil des Raycastings gegenüber dem bisherigen, in der Vorverarbeitung sehr seriellen Rasterisierungsverfahren. Denn bereits bei aktuellen Bildschirmauflösungen können Mehrkernprozessoren nahezu perfekt ausgelastet werden. Dies gilt nicht nur für Hauptprozessoren (CPU), sondern auch für die auf Grafikkarten eingesetzten, aktuellen GPUs. Hier kommt das Amdahl'sche Gesetz zum Zuge (siehe Grafik rechts): Je höher der Anteil an Programmcode, welcher sich paral­lelisieren lässt, desto besser ist die Skalierung mit steigender Anzahl an Prozessoren. Auch andersherum gilt: Lässt sich - wie bei der dreiecksbasierten Rasterisierung - nur ein gewisser Anteil des Codes durch Parallelität beschleunigen, sinkt der Nutzen durch eine hohe Prozessoranzahl.

Braucht man nun gar keine Texturen mehr?

Bei der id-Tech-5-Engine, welche im kommenden Spiel Rage eingesetzt wird, setzt id Software auf eine hohe Varianz bei den Texturen, um eine optisch glaubwürdige Spielwelt zu simulieren. Dagegen benötigt eine in Voxeln gespeicherte Geometrie eigentlich keinerlei Texturen mehr. Jedes einzelne Voxel wird inklusive seiner Farbe als Teil der gesamten Informationen gespeichert.

Um optisch mit den heute üblichen hochauflösenden, mehrschichtigen Texturen mithalten zu können, muss die Spielwelt entsprechend fein zerlegt werden. Id Software ist sich der enormen Datenmenge, die dabei entstehen würde, bewusst und greift daher zu einem Trick, welchen die Firma als Voxel Mipmapping bezeichnet.

Dieses Voxel-Modell wurde auf der Siggraph 2008 auf einem aktuellen PC-System mit 60 in Echtzeit berechneten Fps vorgeführt (Modell: Dimitry Parkin). Dieses Voxel-Modell wurde auf der Siggraph 2008 auf einem aktuellen PC-System mit 60 in Echtzeit berechneten Fps vorgeführt (Modell: Dimitry Parkin). [Quelle: http://www.idsoftware.com] Während bei herkömmlichem Texture-Mipmapping für jeweils vier Punkte einer Textur der Mittelwert in der nächstkleineren Mip-Stufe gespeichert wird, geht das Voxel-Mipmapping den umgekehrten Weg: Jedes Voxel kann bis zu acht kleinere Sub-Voxel enthalten. Da diese wiederum auf bis zu acht weitere Voxel verweisen können, lässt sich der Detailgrad quasi beliebig steigern. Voxel, die niemals sichtbar sein können, weil sie zum Beispiel im Inneren eines Objekts liegen, werden dabei einfach nicht gespeichert. Auch die Spielwelt wird von dieser Entscheidung beeinflusst.

Je dynamischer die Umgebung, sprich je realistischer sie auf die Aktionen der Spieler reagieren kann, desto höher muss die Voxel-Auflösung auch unterhalb der sichtbaren Oberfläche sein. Einschusslöcher oder Explosionskrater können so geometrisch korrekt dargestellt werden, anstatt nur über ein simples Texturpflaster angedeutet zu werden.

03:25
Wolfenstein (dt.) mit Raytracing - Präsentation
Für die Verwendung in unseren Foren:

Speicherplatz: Das alte Problem

Zum Speichern eines einzelnen Voxels geht id Software von einer benötigten Datenmenge von 52 Bytes aus. Dies ist deutlich mehr als die typischen 32 Byte (Position, Normale, Texturkoordinate) pro Vertex. Zusätzlich werden trotz des Mipmappings mehr Voxel als Vertices für den gleichen Detailgrad benötigt. Der durch den Wegfall der Texturen gesparte Speicherplatz kann diesen Zuwachs bei Weitem nicht ausgleichen. Bevor man dieses Problem angehen kann, muss man sich jedoch zuerst einmal Gedanken darüber machen, was man nun mit den in mehreren Mipmaps gespeicherten Voxeldaten tun möchte.

Ziel muss es sein, für jeden Bildschirmpunkt das Voxel zu finden, welches vom jeweilgen Strahl getroffen wird. Entsprechend beginnt man bei dem am gröbsten aufgelösten und sucht den ersten Treffer. Von dort untersucht man nun die bis zu acht Sub-Voxel und wiederholt das Ganze, bis man am Ende des als ­Sparse-Oct-Tree bezeichneten Baums angekommen ist. Das letzte dabei getroffene Voxel bestimmt die grundlegende Pixelfarbe.

Dieses Verfahren ist jedoch für den praktischen Einsatz kaum nutzbar, denn es bringt zwei Probleme mit sich: Will man den Baum jedes Mal bis zum Ende durchlaufen, muss er auch vollständig im Speicher liegen. Aufgrund seiner Größe ist das ein schier aussichtsloses Unterfangen. Das zweite Problem ist nicht weniger verzwickt: Am Ende des Baums sind sehr kleine Voxel gespeichert. Damit kommt ein Detailgrad zustande, welcher nur dann wirklich nützlich ist, wenn man direkt vor dem jeweiligen Objekt steht. Ist dieses jedoch weiter entfernt, trifft man nach einer minimalen Kamerabewegung ein völlig anderes Voxel. Es kommt dadurch zu einem unschönen Flimmern in der Tiefe des Bildes. Beide Probleme können jedoch auf die gleiche Weise gelöst werden. Man sucht nicht mehr das exakte Voxel, welches vom Strahl getroffen wird, sondern das Voxel, das den entsprechenden Bildschirmpunkt vollständig bedeckt. Hierzu kommt dann wieder die Entfernung zur Kamera ins Spiel. Mit zunehmender Entfernung kann auf die feiner aufgelösten Zweige des Voxel-Baums verzichtet werden. Ein schöner Nebeneffekt dieses Verfahrens ist die Reduktion der benötigten Berechnungen. Mithilfe der genutzten Technik lässt sich quasi nebenbei ein Level-of-Detail-System (LOD) für Geometrie erzeugen. Mithilfe der genutzten Technik lässt sich quasi nebenbei ein Level-of-Detail-System (LOD) für Geometrie erzeugen. [Quelle: http://www.idsoftware.com]

Da der Abbruch dieser Rechenoperationen aber dynamisch erfolgt, kann sich dies nur dann positiv auf die Rechenzeit auswirken, wenn der eingesetzte Prozessor über eine entsprechend gute Leistungsfähigkeit bei dynamischen Programmverzweigungen (Dynamic Branching) verfügt. Hauptprozessoren tun dies üblicherweise, während Grafikprozessoren (GPUs) besonders in der Vergangenheit damit so ihre Probleme hatten. Seit Geforce 8 und Radeon X1000 ist das für Shader-Modell 3 erforderliche Dynamic Branching jedoch recht performant integriert. Intels Larrabee könnte mit entsprechender Software-Unterstützung nochmals einen Sprung nach vorne bringen.

Retter in der Not: Auslagerung (Streaming)

Da man nun aufgrund der Entfernung eines Voxel-Blocks zur Kamera sehr genau vorhersagen kann, welcher Detailgrad benötigt wird, ist es möglich, bei Bedarf einzelne Voxelblöcke vom Hauptspeicher in den Grafikspeicher zu laden. Da trotz moderater RAM-Preise jedoch auch der Arbeitsspeicher schnell sein Limit erreichen könnte und auch die Speichermenge der nächs­ten Konsolengeneration noch ein großes Geheimnis ist, sollen auch weitere Datenspeicher wie Festplatten oder optische Datenträger mit einbezogen werden.

Am Daumen (rechts) sehen Sie bei höchster Zoomstufe erste Artefakte. Am Daumen (rechts) sehen Sie bei höchster Zoomstufe erste Artefakte. [Quelle: http://www.idsoftware.com] Der geringeren Bandbreite dieser Speichermedien Rechnung tragend, soll hier ein Format zum Einsatz kommen, das lediglich acht Byte pro Voxel benötigt. Des Weiteren sollen mehrere Voxel zusammen komprimiert werden. Id Software geht davon aus, auf diese Weise nicht mehr Bandbreite als aktuelle Streaming-Lösungen zu benötigen. Das Voxel-Mipmapping hilft auch hier: Kommen Sektoren zum ersten Mal in den Sichtbereich des Spielers, sind diese noch weit entfernt. Entsprechend werden nur die Voxeldaten mit der groben Auflösung benötigt. Kommt der Spieler nun näher, können Schritt für Schritt feiner aufgelöste Voxel vom Datenträger zur Grafikkarte gebracht werden. Durch dieses Verfahren entfällt auch die Notwendigkeit, für Objekte mehrere Genauigkeitsstufen zu erzeugen. Durch entsprechendes Verrechnen der Voxeldaten in Abhängigkeit von der errechneten Länge des Strahles können so unschöne Effekte, wie sie beim Wechsel der Objektgenauigkeit (LOD-Popping) entstehen, vermieden werden.

 
Software-Overclocker(in)
18.07.2014 21:12 Uhr
...sondern nur texturierte Polygonblöcke, die dort die gleiche Funktion wie Voxel einnehmen!
Einige Minecraf-Klone benutzen aber "echte" Voxel!
Freizeitschrauber(in)
18.07.2014 18:45 Uhr
Minecraft benutzt übrigens immer noch keine Voxel.
Moderator
21.04.2009 02:50 Uhr
Nuja - Effizienz...
Bei deinem Vorschlag hat jeder Pixel eine seine Koordinaten als Teil eines Polygons, seine Grundtextur, seine bump bzw. displacement map-ordinaten,...
Bei ner Voxelengine hat er seine Koordinaten und ne Farbe. Und der Übergang von einem Detaillevel zum nächsten, wie von ID geplant, ist auch wesentlich einfacher, als ein System, dass in drei verschiedenen Ebenen (tessliert, normal, parallaxbump) rendert, wobei ich mich Frage, ob das überhaupt natlos funktionieren kann, wenn ein Objekt sich über eine größere Bildtiefe erstreckt.
Schraubenverwechsler(in)
20.04.2009 18:27 Uhr
Zitat: (Original von MechUnit;724885)
stimmt, beim bump mapping u.ä. - nicht aber beim normal mapping, da sind das echte höhenunterschiede. aber auch da sind einschusslöcher u.ä. nur als bump maps zu sehen. ich stimme dir also zu.

voxel an sich waren ja damals schon bei delta force (glaube beim 2. teil), outcast etc. eine hardwarelastige sache - die spiele liefen nur auf high end daddelkisten sauber und die grafik hinterlies bei mir eher gemischte gefühle: mal sahs von weitem toll aus, dann aber aus der nähe hässlich... jetzt sieht voxel space natürlich besser aus und wenn die voxel engines tatsächlich technisch mit tricks performance bieten und vergleichsweise nicht mehr so grässliche "fehler" wie damals haben, wird das ne recht interessante sache. ich bin mal gespannt.


Naja, das lässt sich aber auch wesentlich effizienter mit tessalation erreichen bzw. mit dem dazugehörigen displacement mapping.Entfernte Objekte könnten getrost mit bump maps (oder etwas nähere auch mit parallax occlusion maps) dargestellt werden, während sehr nahe Objekt mit displacement mapping und tessalation dargestellt werden, sodass die height-map zum tessalieren das Objekts genutzt wird.3
Das ist sogar streambar da die beziersurfaces nur sehr wenig speicherplatz benötigen und nur temporär ( und sehr schnell) in der GraKa expandiert werden um mit gerundeten surfaces (oberflächen) zu rendern.
Schraubenverwechsler(in)
18.04.2009 06:00 Uhr
Zitat von Ob4ru|3r:
Das ermöglicht auch endlich "richtige" Tiefe in Strukturen, so ziemlich jede "raue" Wand aus z.B. Backsteinen mit Furchen etc. ist meist einfach eine glatte Strutkur samt Texturtapete der mit u.a. Bump Mapping nur der Effekt einer realen Struktur vermittelt wird, das sieht man, wenn man in bestimmten schrägen Winkeln genau vor der Wand steht: Schlichte Illusion. Mit Voxeln kann man da endlich richtige Struktur reinbringen.


stimmt, beim bump mapping u.ä. - nicht aber beim normal mapping, da sind das echte höhenunterschiede. aber auch da sind einschusslöcher u.ä. nur als bump maps zu sehen. ich stimme dir also zu.

voxel an sich waren ja damals schon bei delta force (glaube beim 2. teil), outcast etc. eine hardwarelastige sache - die spiele liefen nur auf high end daddelkisten sauber und die grafik hinterlies bei mir eher gemischte gefühle: mal sahs von weitem toll aus, dann aber aus der nähe hässlich... jetzt sieht voxel space natürlich besser aus und wenn die voxel engines tatsächlich technisch mit tricks performance bieten und vergleichsweise nicht mehr so grässliche "fehler" wie damals haben, wird das ne recht interessante sache. ich bin mal gespannt.

Verwandte Artikel

 - 
Deutschland ist eine der wirtschaftlich relevantesten Nationen, hat im Bereich der Elektronik aber kaum eigene Unternehmen vorzuweisen. Das sieht bei PC-Hardware nicht anders aus. Doch tatsächlich gibt es gerade im Bereich der Peripherie und der Nischen mehr deutsche Anbieter, als man denkt. Wir zeigen Ihnen 25 Unternehmen aus Deutschland und deutschsprachigen Ländern. mehr... [50 Kommentare]
 - 
Während die anderen Hersteller in ihren Mobiltelefonen gerade erst den Umstieg auf das Micro-SIM-Format vollzogen hatten, legte Apple mit dem iPhone 5 und dem dort Anwendung findenden Nano-SIM-Format nach. Zeit, die Unterschiede zwischen den SIM-Typen zu erklären. mehr... [2 Kommentare]
 - 
IBM will schon länger die verlustbringende Chipsparte loswerden. Zunächst galten Intel und TSMC als aussichtsreichste Kandidaten, aber laut einem Bericht steht ein Deal mit Globalfoundries. Die dürften am Know-how von IBM interessiert sein, aber auch an den 2 Milliarden US-Dollar Mitgift. mehr... [12 Kommentare]
 
article
681315
Neue Technologien
Voxel-Rendering in der id-Tech-6-Engine
Voxel-Rendering und damit Raycasting ist wieder "in": Nicht nur Intel freut sich für Larrabee darüber, auch Grafikkarten- und Spielhersteller wie id Software finden wieder Gefallen an dem Verfahren. PC Games Hardware zeigt am Beispiel der id-Tech 6 Engine Möglichkeiten und Grenzen des Voxel-Renderings. [Hinweis: Es handelt sich sich um einen Artikel vom 13.04.2009, den wir anlässlich der Vorstellung des Doom Reboots neue Ehre zuteil werden lassen]
http://www.pcgameshardware.de/Neue-Technologien-Thema-71240/Specials/Voxel-Rendering-am-Beispiel-id-Tech-6-erlaeutert-681315/
18.07.2014
http://www.pcgameshardware.de/screenshots/medium/2009/04/Olick_Monster_Face_b2teaser_169.png
rendering
specials