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

Aktuelle Zeit: So Jun 22, 2025 08:00

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Schnittflächen als Culling
BeitragVerfasst: Di Jun 19, 2012 21:14 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Moinsen,

ich bin mal wieder am Optimieren... Es geht um das Einschränken meines Deferred Beleuchtungsshaders für Spotlights. Aktuell konnte ich den soweit einschränken das nur Pixel innerhalb des Lichtkegels gerendert werden. Dazu habe ich einfach vor dem FullscreenQuad den Lichtkegel mit Tiefentest gerendert, somit wurden hier alle Fragmente die nicht im Kegel sind weggeworfen. Dies brachte schon einiges an Performance. Doch mein Gefühl sagt mir das da noch viel mehr drin ist.

Betrachtet man sich die Üblichen Szenen: Eine Lampe die an einer Truss hängt und und 5m unter ihr der Boden. Hier wird nun der komplette Bereich (im Kegel) zwischen Lampe und Boden berechnet, obwohl sich dort kein Objekt befindet. Wirklich sinnvoll wäre es, nur die Bereiche die vom Kegel geschnitten werden zu berechnen.

Hier eine Illustration von Lichtkegel und Massiven Objekten.
Dateianhang:
light1.PNG


Und hier die Bereiche die eigentlich nur durch den Shader dürften:
Dateianhang:
Light2.PNG



Bekommt man sowas irgendwie mit dem Tiefentest oder Stencil hin? Mit Stencil konnt ich noch nciht viel machen, da ich es bis heute nicht geschafft habe einen StencilBuffer an ein FBO zu hängen...

Grüße
Thomas


PS: Ich hatte sowas schonmal angesprochen siehe: viewtopic.php?f=2&t=10323 Allerdings hier nun bisschen konkreter :)


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Schnittflächen als Culling
BeitragVerfasst: Mi Jun 20, 2012 08:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Bin mir da nicht so sicher ob da noch so viel mehr geht. Eventuell könntest du sowas bei statischen Lichtern auf der CPU machen, da größtenteils CSG....

Der Stenciltest nützt dir übrigens in diesen Falle fast nix da er nach den Fragment-OPs kommt.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Schnittflächen als Culling
BeitragVerfasst: Mi Jun 20, 2012 10:02 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Nun Statische Lichter hab ich nicht wirklich.. Nun irgendwie muss das doch was bringen, denn der Tiefentest kommt auch nach dem FragmentShader.. Lediglich EarlyZ kommt davor, doch den hab ich Testweise mal ausgehebelt in dem ich im Vertex Shader gl_Position.z *= 0.99999; gemacht habe.. doch da hat sich nix an der FPS geändert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Schnittflächen als Culling
BeitragVerfasst: Mi Jun 20, 2012 17:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
da größtenteils CSG....

Also CSG-Ops sind nicht wirklich sinnvoll bei dynamischen Lichtern. Du hast wahrscheinlich das Licht schneller berechnet bevor du auch nur das nötige Schnittmengen-Mesh berechnet hast.

Also man könnte zwar theoretisch den Z-Buffer einsetzen. Schau dir dazu mal "Depth-Peeling" an. Das Problem ist das dies aufwendig ist, weil du mehrere Passes pro Lampe bräuchtest. Außerdem wird trotzdem jeder Pixel des Lichtkegels verarbeitet, also Fillrate spart das auch nicht.

Das sinnvollste was du machen kannst (*) ist die Lichtkegel ganz normal in die Szene zu rendern und den normalen Z-Test sowie Backface-Culling zu verwenden. So sparst du immerhin dann Fillrate, wenn der Lichtkegel etwa irgendwo im Boden steckt oder ähnliches.


(*) jedenfalls fällt mir für dynamische Lichtkegel nichts besseres ein

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 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.016s | 15 Queries | GZIP : On ]