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..
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.
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.
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.
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.