31
Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Embed Size (px)

Citation preview

Page 1: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Terrain Rendering

USF 2001

Dirk Ringe (Phenomic Game Development)

Stefan Röttger (Universität Stuttgart)

Page 2: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Agenda

Problematik

Tesselierung

Texturierung

Beleuchtung

Fazit

Page 3: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Problematik 1

Unsinnig große Datenmengen 1000x1000 Höhenpunkte sind 2.000.000 Dreiecke

Und das ist eine „kleine“ Welt

Wie bekomme ich einen hohen Detailgrad bei großen Welten?

Wie halte ich solche Datenmengen im Speicher

Woher bekomme ich solche Datenmengen (Content Creation Probleme)

Überhänge, Höhlen, etc.

Page 4: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Problematik 2

Wie rendert man eine Landschaft

Reduzieren der Dreieckszahlen durch Culling

LOD

Soll die Landschaftsform zur Laufzeit geändert werden (GeoMod)?

Page 5: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)
Page 6: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)
Page 7: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Problematik 3

Wie texturiert man sowas? Im Nahbereich ist ein Pixel fast 1cm klein

Das gibt bei einer Welt von 1km etwa 100.000 Texel im Quadrat

Page 8: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Kriterien

Größe der Welt

Minimale und maximale Betrachtungsentfernung/ -winkel

Geometrie Laufzeit veränderbar

Qualität der Texturierung

Statische Beleuchtung <-> Tag-Nacht-Zyklen

Dynamische Lichtquellen

CPU oder GPU lastig

Page 9: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Übersicht der Verfahren

Verfahren Sichtweite GeoMod CPU Last AufwandBrute Force Begrenzt Ja Wenig NiedrigTIN Begrenzt Nein Wenig NiedrigGeo Mipmapping Unbegrenzt Ja Wenig MittelCLOD (Röttger) Unbegrenzt Ja Viel MittelCLOD (ROAM) Unbegrenzt Ja Viel HochVIPM Unbegrenzt Nein Wenig Hoch

Page 10: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 1 (Brute Force)

Einfach alles an die Hardware übergeben

Gecullt werden ganze Tiles

Bei T&L Karten können locker 20000 bis 100000 Dreiecke fürs Terrain benutzt werden

NVidia schwört drauf Vorteil: Wenig CPU Last

Nachteil: Begrenzte Sichtweite

Page 11: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 2 (TIN)

TIN = Triangle Irregular Network

Das Terrain wird vom Level Designer direkt als Mesh editiert oder durch ein Tool aus der Heightmap erzeugt

Der Mesh wird fürs Culling in mehrere Teilmeshes zerlegt

Die Meshes werden direkt gerendert

Vorteile: Beliebige Geländeform und Texturierung

Nachteile: Keine GeoMods

Page 12: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 3 (Geo Mipmapping)

SLOD (Static Level of Detail) Verfahren, daß an Texture Mipmapping angelehnt ist

In einem Vertex Buffer werden alle Vertices gespeichert

Es gibt mehrere Index Buffer, die je nach Entfernung ausgewählt werden

Die Übergänge zwischen Tiles sind auf maximalen Level (oder anders strikt definiert)

Vorsicht: In dieser Variation für Software T&L ungeeignet!

Page 13: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 4 (CLOD)

CLOD = Continuous Level of Detail

Abhängig von Entfernung oder Screenspaceerror werden mehrere Dreiecke zu einem Zusammengefaßt

Vorteil: Unbegrenzte Sichtweite, GeoMods

Nachteil: Hohe CPU Last, je nach Verfahren aufwendig

Zu beachten: Ein Großteil der Performance hängt an cachefreundlichen Datenstrukturen!

Page 14: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 5 (CLOD Quadtree)

Die Landschaft wird rekursiv in Quadrate unterteilt.

In ersten Pass wird bestimmt, wie groß der Screenspaceerror pro Quadrat ist, und dementsprechend weiter aufgeteilt werden muß.

Im zweiten Pass wird anhand dieser Tesselierungsflags der Mesh erzeugt und dabei auf die Tesselierung angrenzender Quadrate geachtet.

Page 15: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 6 (CLOD ROAM 1)

Hier wird die Landschaft rekursiv in Dreiecke unterteilt.

Beim Unterteilen werden jeweils beide Dreiecke, die an der Hypothenuse sitzen geteilt. Dadurch werden Cracks durch unterschiedliche Unterteilung vermieden.

Falls ein Dreieck zu weit unterteilt wird, werden die Nachbarn rekursiv zur Unterteilung gezwungen

Page 16: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 7 (CLOD ROAM 2)

Split Only ROAM tesseliert die Landschaft jeden Frame neu. Relativ einfach zu implementieren.

Split and Merge ROAM: Es wird eine Framekohärenz ausgenutzt, da die Kamera sich ja nur stückweise bewegt.

Dazu werden für Dreiecke deren Splitfaktoren in Prioritylisten namens SplitQueue und MergeQueue gesammelt und jeden Frame entsprechend aktualisiert.

Sehr aufwendig zu implementieren, kann schneller als SplitOnly sein

Page 17: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Tesselierung 8 (VIPM)

VIPM = view independant progressive mesh

Die Landschaft wird in Tiles unterteilt

Jedes dieser Teils wird mit VIPM gerendert.

Die Übergänge der Tiles sind immer vollständig dargestellt, dadurch werden Cracks vermieden.

Vorteil: Minimale CPU Last, hohe Dreieckszahlen möglich.

Nachteil: Keine GeoMods, ScreenSpace Error ist bei gleichen Dreieckszahlen einiges höher als bei CLOD Verfahren (da view independent).

Page 18: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Sonstige Verfahren

Displacement Maps Bald in Hardware verfügbar

Zusammen mit NPatches wird alles in Hardware gemacht

View Independant

Slicing Ähnlich dem Fur Rendering werden Scheiben durch die

Landschaft gezogen und durch die Höhe bestimmt, wo die Scheibe transparent ist oder nicht

Nachteil: Gigantische Fillrate, gut für Radarmaps etc.

Page 19: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Beispiele

Nach besten Wissen und Gewissen!

Black & White: Geo mipmapping

AquaNox: CLOD mit Quadtrees nach Roettger

PlanetSide: TINs, die offline mit view independent QuadTrees nach TopoVista erzeugt wurden

Yager: Brute Force

Unreal Warfare: Brute Force

Page 20: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Texturierung 1 (Welttextur)

Eine große Textur wird über das gesamte Terrain aufgespannt

Vorteil: äußerst einfach

Nachteile Geringe Auflösung der Textur führt zu schwammigen Terrain

Steile Bereiche sind verzerrt

Page 21: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Texturierung 2 (Detailtextur)

Der Welttextur wird einfach eine Detailtextur mitgegeben, die sich recht häufig wiederholt.

Dadurch ist die Landschaft auch in der Nähe scharf

Vorteil: einfach

Nachteil: keine wirklich Unterscheidung zwischen Terrainbereichen (Fels braucht anderes Detail als Gras)

Page 22: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Texturierung 3 (Tiling)

Jeder Terraintyp existiert als Textur

Für jeden Terraintyp wird die entsprechende Geometrie erzeugt

Bei den Übergängen können die Tiles mit dem Alphakanal ineinander gemischt werden

Es dürfen keine Dreiecke zusammengefaßt werden!

Vorteil: Hohe Texturauflösung

Nachteil: Funktioniert nicht mit hohen Sichtweiten

Page 23: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Texturierung 4 (Splatting)

Keine Welttextur, mehrere hochaufgelöste Texturen, eine pro Terraintyp (Gras, Fels,...)

Pro Terraintyp gibt eine Alphamap die Bedeutung des Typs an dieser Stelle wieder

Die Landschaft wird pro Terraintyp einmal gerendert

Vorteil: Hohe Auflösung bis zum Horizont

Nachteil: Viel Speicherverbrauch durch die Alphamaps, hohe Polygonzahlen durch viele Passes, hohe Fillrateanforderungen

Page 24: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Texturierung 5 (Unique Texturing)

Die Landschaft wird rekursiv in Quadrate unterteilt (Quadtree)

Jeder Quadtreeknoten repräsentiert eine Textur fester Größe

Die Ebene im Baum bestimmt, wieviel Bereich diese Textur abdeckt

Die Texturing werden dynamisch von der CPU erzeugt (unter Zuhilfenahme von Perlin Noise etc.)

Moderne GPUs können diese Aufgabe auch

Page 25: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Beispiele

AquaNox, Unreal Warfare: Terrain splatting

Soul Ride: Unique Texturing

Black & White: World map + Detail map

Warcraft 3: Tiling

Page 26: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Beleuchtung 1

Vertex Lighting: an jedem Vertex wird klassisch beleuchtet

Nachteil: sobald LOD ins Spiel kommt, sieht es schlecht aus

Nachteil: CLOD oder VIPM machen es noch schlimmer, da die Normalen springen

Lightmap: Extratextur Übliche Technik

Page 27: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Beleuchtung 2

Korrekte Beleuchtung ist wichtig

Es gibt drei „Lichtquellen“: Sonne/Mond, Himmel und Reflexionen durch den Boden

Himmel ist kein ambientes Licht, sondern eine sphärische Lichtquelle (ungleichmäßig)

Der Anteil Himmel, den ein Punkt sieht bestimmt die Helligkeit dieser sphärischen Lichtquelle

Page 28: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Beleuchtung 3

Dynamische Lichtquellen müssen in die Lightmap reingerechnet werden

Page 29: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Fazit

Es gibt keine eierlegende Wollmilchsau im Terrainrendering

Die Anforderungen vom Spiel und die Möglichkeiten der Zielhardware bestimmen die möglichen Verfahren

Auch wenn eine gewisse „Stabilität“ bei den Algorithmen erreicht wurde, wird immer noch aktiv in diesem Bereich geforscht. Das Ende des möglichen wurde noch nicht erreicht.

Page 30: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Literatur/Links

Ich wollte hier einen Haufen Links posten, aber seltsamerweise stehen die alle schon auf dieser Seite:

http://vterrain.org

Ebenfalls äußerst interessant ist das Archiv der Mailingliste GameDev-Algos:

https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list

Page 31: Terrain Rendering USF 2001 Dirk Ringe (Phenomic Game Development) Stefan Röttger (Universität Stuttgart)

Fragen?

Fragen?

Fragen?

Fragen?

Fragen?

Fragen?