Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:18

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Stücke aus dem Terrain schneiden
BeitragVerfasst: Do Okt 28, 2010 21:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hallo allerseits,

weil ich in mein hübsches Terrain jetzt Löcher machen will, stehe ich vor folgendem Problem. Das Terrain ist Heightmapbasiert und wird mit einer abgewandelten Variante von Coolcats Shader gerendert. Ich hatte überlegt, dass ich mit hilfe des Stencilpuffers die Stellen wegmaske, wo ich Löcher brauche. Die Ausschnitte stimmen nämlich in keiner Weise mit der Rasterung des Terrians überein, sodass das einfache ausblenden von Quads nicht zielführend wäre.

Any suggestions?

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 28, 2010 22:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Der Stencilbuffer ist eher ungeeignet, weil dieser im Screenspace arbeitet und die Tiefe nicht berücksichtigt.

Was willst du den genau mit den Löchern machen? Soll da andere Geometrie rein? Dann rendere ganz einfach diese andere Geometrie und nutze den Z-Buffer. Die Terrainhöhe an der entsprechenden Stelle sollte dann tiefer als deine Geometrie liegen, also z.B. einfach 0. Wenn es ein wirkliches Loch zum durchgucken sein soll wird es kompliziert.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 28, 2010 22:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Es soll ein wirkliches Loch sein. Für die Stencil-Aktion hatte ich in etwa sowas gedacht:
1. Pass: Terrain, nur in den Tiefenpuffer
2. Pass: Die Schnittflächen in den Stencilpuffer schreiben (mit DepthFunc(GL_EQUAL); )
Tiefenpuffer leeren
3. Pass: Terrain rendern
Stencilbuffer leeren und den Rest rendern

Anstatt des Leerens des Tiefenpuffers hatte ich überlegt, ob man den nicht irgendwie erhalten kann und nur den Teil, der von der Stencilgeometrie überschrieben wird, leert. Dann könnte man den zum Optimieren des 3. Pass nehmen.

greetins

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Okt 29, 2010 08:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Hm, in der Theorie könnte das sogar funktionieren. Das Problem ist das du identische Geometrie rendern musst um via GL_EQUAL identische Z-Werte zu treffen. Es muss wirklich alles gleich sein, inklusive Transformationsmatrix usw.

Was man aber machen könnte:
1. Pass: glDepthRange(0.05, 1.0); Terrain in Tiefenbuffer rendern
2. Pass: glDepthRange(0.00, 1.0); Schnittflächen in Stencil rendern (mit glDepthFunc(GL_LEQUAL)
3. Pass: Terrain rendern, Stencilbuffer leeren und den Rest rendern

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Okt 29, 2010 09:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Gut, dass das nicht einfach wird, identische Geometrie zu erzeugen ist klar, aber ich werds einfach mal versuchen.

greetins

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Okt 29, 2010 10:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Also bei WoW wird ein Teil aus den Terrain nicht gerendert und die modeln dann den Übergang mit einer 3D Software und positionieren dann das Model entsprechend so, dass man nicht mehr sieht, dass man einfach nur ein stück raus geschnitten hat.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Okt 29, 2010 13:28 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Zitat:
Das Problem ist das du identische Geometrie rendern musst um via GL_EQUAL identische Z-Werte zu treffen.
Könnte man das nicht so machen, wie bei Stencil Schatten?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]