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

Aktuelle Zeit: Mi Jul 16, 2025 16:40

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Schatten.. :)
BeitragVerfasst: Sa Nov 29, 2008 06:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich arbeite zwar jetzt schon ziemlich lange mit OpenGL, hab mich bisher aber irgendwie immer um die Schatten drumrum gedrückt..

Vor langer zeit hatte ich sie mal mit dieser Stencl-Shadow Methode ausprobiert und war alles andere als begeistert von der geschwindigkeit und dem aufwand den man braucht um das überhaupt zu machen.

Jetzt würde ich mir gern mal andere techniken anschauen und denke das diese projezierten ShadowMaps für mich das beste sind, nur.. wie funktionieren die? Kann mir das jemand irgendwie verständlich erklären, wie ich da was wie warum mache? :)

Und, wie mache ich da schatten für PointLights? Überall steht immer nur das es für PointLights schwieriger ist etc..

Hat vieleicht auch wer ein nettes kleines beispiel oder so für mich? :P

Aya~

PS: Meine engine basiert auf Deferred Shading, also falls es da nochmal spezielle andere anforderungen braucht... :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 01, 2008 10:15 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich drücke mich eigentlich auch um Schatten, da ich die einfach zu Performancefressend finde und für viele Technologien, die ich realisiere einfach nicht notwendig sind. Die besten Ergebnisse bringen aktuell PSSM( parallel split shadow map), dabei werden N Texturen erstellt und dann einen Tiefenpuffer Bereich zugewiesen. Wenn man dann Schattentexturen für eine Lichtquelle erstellt, dann geht man in die sicht der Lichtquelle und schreibt die Tiefeninformationen in die jeweilige Textur. Diese Technologie verteilt die Qualität am besten, da nahe Texturen viel Detail brauchen und nur ein sehr kleinen Bereich schattieren und Bereiche weiter weg viel Platz in eine ebenso große Textur unterbringt. In diesem zusammenhang sind TextureArrays, aus OpenGL3.0, sehr Hilfreich, da sie das Textur binding reduzieren.

_________________
"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  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 01, 2008 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Bei PointLights ist das Problem, dass man mehrere Shadowmaps benötigt, da Licht in alle Richtungen strahlt und schattiert.
Oc2k1 hat mit Parabolid Shadow Maps experimentiert, dass lief bei ihm auch gut und bei mir weniger gut(der Shader war für Geforce8800 ausgelegt).
Im zusammenhang mit deferred shading ist nur eines ein bischen anders, wenn du deine Shadow Maps auf die Szene legst, machst du den Scissortest an und stellst den auf die Bounding Rect deines Lichtes ein. Damit kannst du sehr viel Zeit sparen(ausser bei Sonnenlicht), da der Shader die anderen Pixel, die eh nicht beeinflussen, einfach skipped.

_________________
"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  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 02, 2008 07:26 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Die Dual paraboliden shadowmaps waren ein behelf um Schatten für punktlichter auf einer GF6/7 zu realisieren. Mit einer GF8 sind Shadowcubes deutlich besser. Sie sind zwar nicht schneller, aber qualitativ deutlich besser, da keine artefakte durch mangelnde tesselation auftreten.

Für gerichtetes licht ist es mit den schatten deutlich problematischer. Egal wie man es verzert man kommt nicht mit einer shadowmap aus wenn die Lichtrichtung eine bestimmte ausrichtung zur kammera hat. Geneauer gesagt, wenn aus der sicht der lichtquelle die near und far plane sich überdecken ( bei einem kammeraöffnungswinkel von 90 Grad ist die Wahrscheinlichkeit schon 1/3, so das man diese lösung total vergessen kann wenn die Kammera frei beweglich ist)
Egal ob man nun Cascade oder Parallel Split shadowmaps verwendet, das prinzip bleibt gleich. Allerdings garantieren auch die algoriment keine perfekte Anpassung.



Prinzipell sind auch die nicht gerichteten Lichter von der verzerrung betroffen. Ein Punklicht außerhalb des Frustums kann schnell ähnliche Eigenschaften bekommen wie ein gerichtetes Licht. Dann hilft nur noch eine große vereinheitlichte Methode, die alle Lichtquellen behandeln kann.
Ein denkbarer Ansatz wäre, das Frustum Volumen zu scannen um zu schauen welche Detailbereiche wirklich benötigt werden und anschließend für jede Lichtquelle egal ob Gerichtetes, Spot oder Punktlicht die nötigen shadowmaps zu erzeugen.

Einfache shadowmaps sind noch nicht so schlimm, wenn es aber wirklich brauchbar werden soll, kann shadowmapping sehr aufwendig werden.

_________________
Lumina plattform unabhängige GLSL IDE


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 02, 2008 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab gestern in einen Artikel gelesen, dass es sich nun mit Geometryshadern lohnt, auf Volume Shadows zu setzen, da man nun alles auf der Karte machen kann und diese sehr gute SoftShadows erlauben.

_________________
"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  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 4 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 | 17 Queries | GZIP : On ]