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

Aktuelle Zeit: Di Jul 15, 2025 15:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Deferred Shading Konzeptfrage
BeitragVerfasst: Mo Jul 18, 2011 14:03 
Offline
DGL Member

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

bin dabei für ein anderes Projekt ebenfalls wieder Deferred Shading zu implementieren. Da es hier aber nicht hauptsächlich um Spots (Projektion) geht sondern viel mehr um eine große Anzahl von Punktlichtern (erstmal ohne Schatten) bin ich am überlegen wie ich die Lichter am besten rendere:

Beispiel mit 500 Lichtern

1. Möglichkeit
- Ich render pro Lampe einmal mein Fullscreenquad mit Normalen, Depth und Farbpuffer. Damit habe ich pro Lampe 3 Texturzugriffe
- Macht bei 500 Lichtern 1500 Texturzugriffe :!:

2. Möglicheit
- Ich erzeuge mir eine Positionstextur der Lampen (rgb > Positionen)
- Rendere mir alle Lampen in einem Rutsch
- Dabei hätte ich dann bei 500 Lampen 503 Texturzugriffe

3. Möglichkeit
- Rendere in 100er Schrittten
- Ich übergebe die Lampenpositionen mit 100 vec3 in einem Array (2048floats macht meine Karte)
- Rendere alle Lampen ebenfalls in einer Schleife durch
- Das macht dann bei 500 Lampen 15 Texturzugriffe :!:

Aktuell erscheint mit die 3. Möglichkeit am Besten. Was meint Ihr? Gibts vielleicht noch einen besseren weg?

Grüße
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Deferred Shading Konzeptfrage
BeitragVerfasst: Mo Jul 18, 2011 14:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Möglichkeit 4. wenn die Punktlichtquellen nur einen kleinen Radius haben und/oder häufig gar nicht sichtbar sind:
Rendere pro Lichtquelle kein Quad sondern eine 3D-Kugel (extrem Low-Poly, etwa ein Oktaeder) an die entsprechende Stelle. Das Culling übernimmt dann nämlich die Grafikkarte und du musst nicht für jeden Bildschirmpixel jede Lichtquelle durchgehen.

Beispiel:
Bildschirmauflösung 1280x1024, 500 Lichtquellen
=> 655 Mio. Lichtberechnungen

500 Lichtquellen, eine Lichtquelle beleuchtet im Durchschnitt 200x200 Pixel (viele sind gar nicht erst sichtbar)
=> nur 20 Mio. Lichtberechnungen

Es macht wahrscheinlich Sinn Instancing zu benutzen und dann wie bei 3. zu Verfahren, also die eigentliche Lichtquellen-Info aus einem Uniform-Array zu nehmen.

_________________
Yeah! :mrgreen:


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 8 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.006s | 15 Queries | GZIP : On ]