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

Aktuelle Zeit: Di Jul 15, 2025 12:46

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Deferred Shading + Partikel
BeitragVerfasst: Mi Jul 20, 2011 17:50 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Hallöchen,

ich stehe immernoch vor dem Problem wie ich meine halbtransparenten Pointsprite Partikel (Wasserfontänen) beleuchtet bekomme. Bekomme da einfach nix brauchbares hin.. Soll ja nun nicht perfekt realistisch aussehen, aber eine annähernde beleuchtung des Objektes wäre schon nicht verkehrt.
Hatte gedacht irgendwie ein großes Billboard in die Mitte einer Fontäne zu zeichen und nur dieses zu beleuchten.. Später dann einfach mit den Partikeln addieren. Doch die Billboards müssten ja auch untereinander addiert werden.. sonst passt es nich wenn die fontänen hintereinander stehen.. Also egal wie, irgendwie klappts nicht..

Mir würde nur einfallen jedes Billboard einzeln durch die DFS Pipeline zu schicken und dann zusammen addieren.. Doch da es auch mal mehr als 200 Fontänen sein werden würd das auch schwierig..

Jemand noch eine Idee?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Deferred Shading + Partikel
BeitragVerfasst: Mi Jul 20, 2011 21:54 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Transparenz ist bei Deferred Shading ja immer so ne Sache. Man kann aber Wasser auch ohne Alpha Blending zeichnen.
Ich würde das so machen das von allen Partikeln nur die zur Kamera am nächsten liegenden Fragmente gezeichnet werden. In jedem Billboard wird dann per Shader die Szene ohne Partikel verzerrt dargestellt (bei Deferred Shading geh' ich mal davon aus das die schon in einer Textur vorliegt). Per Normalmap kann man die Krümmung verändern und das Billboard scheinbar auf Kugelform bringen. Außerdem kann man in den Tropfen die Lichtquellen als Specular Highlight reflektieren, sodass die auch schön glitzern.
Natürlich kann man, wenn man das so macht, nicht die Tropfen hinter den vordersten Partikeln sehen, aber sofern du nicht sowas wie Slow-Motion bei dir hast, fällt das nicht auf.
Dann ist da noch die Sache mit der halbtransparenz. Falls die Tropfen irgendwelche Verunreinigungen oder Luftblasen enthalten ,müsste das ganze an den dichteren Stellen natürlich auch mehr zu sehen sein. Dazu reicht es vllt wenn man alle Partikel mit einer einfachen Textur (ein geblurter Punkt zB) per additiven Blending in eine Textur zeichnet. Dann wird in dem Shader von oben einfach diese Textur genommen um den Hintergrund zu überlagern.

Edit: Man kann bei Billboards auch ganz einfach Kugelkoordinaten aus den Texturkoordinaten generieren, dann braucht man keine Normalmap.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Deferred Shading + Partikel
BeitragVerfasst: Do Jul 21, 2011 09:55 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ich denke mittlerweile über eine Hybrid-Lösung nach. Da das DFS ja auch bei Alphamasken+Blending probleme macht..

Mein Ansatz:
1. Fontänen ohne Hintergrund und ohne bel. rendern
1. Szenenbeleuchtung ohne Alphaobjekte (Bäume, Fontänen, etc) mit Deferred Shading rendern
2. Halbtransparentes Billboard in der mitte jeder Fontäne und andere Alphaobjete mittels forwardrendering Beleuchten
3. Fontänen mit den Billboards addieren
4. Szene mit Fontänen und Alphaobjekten addieren.

Was haltet ihr davon?

Grüße


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Deferred Shading + Partikel
BeitragVerfasst: Do Jul 21, 2011 12:00 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Wenn du einfach nur Alphamasking brauchst, ohne Halbtransparenz, kannst du das auch mittels Deferred Shading machen. Einfach mit nem Alphatest (ggf im Shader) die Fragmente rauswerfen, die nen zu kleinen Alphawert haben, die anderen mit Alpha 1.0 rendern und fertig. Sollte bei Bäumen ganz gut möglich sein.

Was Wasserfontänen angeht, gefällt mir persönlich der Ansatz von Schläfer sehr sehr gut, klar, ein Nachteil ist halt, dass man die gesondert von anderen Partikeleffekten implementieren muss, aber damit kann man sicherlich atemberaubende Effekte erzielen. Geniale Idee ;)

Wenn du dann für halbtransparente Objekte Forwardrendering verwenden willst, brauchst du auch eigentlich keine Billboards mehr, oder täusche ich mich da?

Ansonsten kannst du ja mal einen Blick auf Inferred Lighting werfen, das "löst" ein paar Transparenzprobleme (hatte da letztes Jahr mal ein nettes Paper zu gefunden, das scheint aber aus irgendwelchen Gründen nicht mehr kostenlos verfügbar zu sein). Der Trick ist dabei einfach, transparente Objekte mit einer Pixelmaske in den G-Buffer zu rendern, die für verschiedene Layer verschoben werden muss (sonst kannst du nicht mehrere transparenten Objekte hinterienander rendern). Beleuchtung wird dann einfach so berechnet, als wenn nichts gewesen wäre, einzig für die Materialfarbe und das Blending wird nochmal ein Renderpass zumindest mit den transparenten Objekten fällig. Beleuchtungsdaten liest man dabei einfach aus dem L-Buffer.

_________________
Bild


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 2 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]