Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

1

10.12.2010, 21:24

[D3D10] Terrain-Rendering

Hi Leute!
Ich habe vor, mich mit dem Thema Terrain-Rendering auseinander zu setzen. Ich habe dazu mir schon verschiedene Artikel angesehen: GeoMipMapping, ROAM, ClipMaps, ...
Eine Frage stellt sich mir bei allen: Ist es nicht langsam, jeden Frame den IndexBuffer neu zu updaten?

Mir kommt ein anderer Ansatz in den Sinn: Mit D3D10 wurden GeometryShader eingeführt. Könnte man nicht komplett im GS das Terrain-Mesh erstellen? Oder sind GS so langsam, dass ich das lieber lassen sollte?

Ich habe keine allzu großen Anforderungen an das Terrain-Mesh: Erstellt aus einer HeightMap reicht mir vollkommen.

Was ist für DX10 Hardware geeignet?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

10.12.2010, 21:30

Wenn dann nehme einen Vertex und einen Indexbuffer und Nutze Vertex Texture fetches mit einem quadtree. d.h. wenn höheres detail, dann das terrain-patch auf die hälfte der größe skalieren und wieder testen, bis du dein gewünschtes detail hast. und mit skirts hast du keine probleme mit cracks. siehe CodingCats Terrain sample.

Ansonsten: Wenn du keinen wert auf Performance legst dann kannst du auch die vertexbuffer-update variante machen, die sollte bei schlauer patch-wahl ausreichend fix sein.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

10.12.2010, 21:45

GeometryShader sind für sowas nicht wirklich geeignet. Das wäre vermutlich von der Performance her extrem langsam und außerdem gibts es ein relativ geringes Limit für die maximale Anzahl der Primitiven die ein GS ausgeben kann (irgendwo in der Gegend von 256 Vertices). Für dynamische Tesselierung is das jedenfalls nicht wirklich brauchbar...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (10.12.2010, 21:51)


BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

4

11.12.2010, 13:26

Zirr's Terrain-Rendering-Methode sieht nicht schlecht aus. Habe ich das so richtig verstanden:
- Das ganze Terrain wird per Quad-Tree geteilt
- Es gibt nur einen Vertex- und einen Index-Buffer, die eine flache Ebene enthalten
- Die Quads werden in verschiedenen Größen gerendert: nahe kleine Quads, ferne große Quads
- Im Vertex-Shader werden aus einer Height-Map die Höhen für die Vertices gelesen

- PixelShader sorgt nur noch für ansprechende Farbe
- Für SM 2 erstellt er eine ganze Menge Vertex-Buffer

Ich verstehe noch nicht so ganz, wie Skirts zwischen verschiedenen Quad-LODs besser überbrücken. Da ist doch immernoch ein Absatz da. (Siehe Anhang)
»BlazeX« hat folgendes Bild angehängt:
  • skirt.jpg

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

11.12.2010, 16:19

der fällt aber nicht auf. in der regel hast du relativ homogene übergänge zwischen den patches. Ansonsten hast du das prinzip richtig verstanden ;)

besser in dem sinne, dass es sehr einfach zu implementieren ist, sonst bräuchtest du wieder mehrere indexbuffer bzw. musst immer neu generieren...^^

Werbeanzeige