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

Aktuelle Zeit: Di Jul 15, 2025 23:22

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Probleme mit Z-Fail Stencil-Schatten
BeitragVerfasst: Mi Jun 30, 2004 21:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nachdem ich BeanMachine endlich fertig habe, wollte ich mir mal die Zeit holen und mich mal intensiver mit Stencilschatten auseinandersetzen, und arbeite nach dem Dokument "Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering" von Everitt und Kilgard.
Soweit funktioniert auch alles : Die Silhouetten werden korrekt generiert als auch extruhiert und im Falle von Z-Fail auch noch mit einem abschliessenden "Deckel" versehen. (Bis ich allerdings soweit war, hat's mich einiges an Kopfschmerzen gekostet, ganz schön heftig die Thematik)

Allerdings habe ich sobald ich Z-Fail Schatten nutze Darstellungsfehler, und zwar insofern als dass der Stempel vom "Ende" meines Schattenvolumens (weiss nicht wie ich es besser beschreiben soll, aber das ist wohl am treffensten) durch die Szene hindurch sichtbar ist. Ich poste am besten Screenshots auf denen man das erkennen kann :

Bild Bild
(Klicken für größere Ansicht)

Links sieht man die Z-Pass Methode (mit Far-Clippingplane bei unendlich), bei der auch alles korrekt dargestellt wird (natürlich solange man sich nicht in einem Volumen befindet, aber dafür soll dann ja Z-Fail herhalten). Rechts hingegen sieht man deutlich oben beschriebenen Fehler, sobald ich auf Z-Fail umschalte. Allerdings mache ich da nicht wirklich viel anders, ausser die Stenciltests für Z-Fail einzuschalten :
Code:
  1. Z-Pass :
  2. glCullFace(GL_FRONT);
  3. glStencilOp(GL_KEEP, GL_KEEP, GL_INCR_WRAP);
  4. RenderVolume;
  5.  
  6. glCullFace(GL_BACK);
  7. glStencilOp(GL_KEEP, GL_KEEP, GL_DECR_WRAP);
  8. RenderVolume;
  9.  
  10. Z-Fail :
  11. glCullFace(GL_FRONT);
  12. glStencilOp(GL_KEEP, GL_INCR_WRAP, GL_KEEP);
  13. RenderVolume;
  14.  
  15. glCullFace(GL_BACK);
  16. glStencilOp(GL_KEEP, GL_DECR_WRAP, GL_KEEP);
  17. RenderVolume;
  18.  


Für Z-Fail benutze ich dann aber auch keine Farclipping-Plane bei Unendlich (darf man ja nicht, soweit ich das mitbekommen habe), ansonsten ändert sich jedoch nichts ggü. Z-Pass. Von daher kann ich mir auch absolut nicht erklären warum ich plötzlich Teile des Schattens durch meine Szene hindurch sehen kann. (Wie gesagt ändere ich auch sonst keine States ausser denen die oben erwähnt sind).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 30, 2004 22:21 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Zitat:
Für Z-Fail benutze ich dann aber auch keine Farclipping-Plane bei Unendlich (darf man ja nicht, soweit ich das mitbekommen habe).

Doch das ist erlaubt.
Bei ZFail muß man nicht nur den "Deckel" sondern auch die Fläche selber zeichnen, so daß das Volumen insgesammt abgeschlossen ist. Dabei muß man darauf achten, daß die Reihenfolge der Punkte im Deckel genau anders wie bei der Fläche ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 30, 2004 22:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das heisst also im Endeffekt dass ich für Z-Fail-Schatten ein komplett geschlossenes Volumen brauche, wobei der vordere Deckel (also zum Licht hin) quasi dem Teil meines Objektes entspricht der von der Silhouette umschlossen wird, oder?
Und muss das auch dann sein, wenn ich für ein Objekt nur dann Z-Fail-Schatten rendere wenn sich der Betrachter in dessen Schattenvolumen befindet, oder kann ich mir dass dann sparen (tu mich mit der Thematik leider etwas schwer...)

Edit : Wenn ich mir diesen Artikel sorgsam durchgelesen hätte, wäre der Thread wohl überflüssig gewesen *grml* :oops:

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 01, 2004 13:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
So, danke nochmal für den Hinweis. Klappt jetzt wunderbar, dann kann ich mich ja jetzt endlich mit der Optimierung der Shadowvolumes auseinandersetzen :D

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 01, 2004 15:52 
Offline
DGL Member

Registriert: Do Mai 13, 2004 16:36
Beiträge: 116
Wohnort: Deutsch-Wagram (Österreich)
Äh...
eine Frage die jetzt nicht ganz passt, aber du hast erwähnt das du die Antwort kennst.
Wie mache ich denn eine unendliche Projektionsmatrix?
Danke im Voraus!
:)

_________________
Diese Signatur ist defekt. Bitte wählen Sie die Numer 12846712894671893230917497617383216 (gültig ab 32.13.2671)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 01, 2004 15:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Siehe diesen Artikel, wo das recht genau erklärt wird. Wichtig ist im Endeffekt nur die letzte Projektionsmatrix ( 8 ).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 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.008s | 16 Queries | GZIP : On ]