HDRR
-
Hi,
ich bräuchte ein paar (oder ein) gutes Tutorial zu HDR Rendering für Direct3D - kann auch ruhig HLSL Code enthalten. Die paar wenigen Treffer bei Google waren entweder völlig unverständliche Paper oder oberflächlich. Wäre klasse wenn ihr da irgendwas habt:>
-
Im DX-SDK gibt es ein sehr ausführliches Beispielprogramm zu HDRR. In der Dokumentation ist alles beschrieben.
-
noobfrage: Gibt es das DX SDK auf Deutsch übersetzt? Ich weis das ich jetzt als Antwort Englisch lernen bekomme, aber manche zusammenhänge versteh ich nicht auch mit Hilfe einer übersetzer Webseite.
-
Nein, das gibts nur auf Englisch. Naja, ich versteh Englisch, aber blick ehrlich gesagt bei den HDRR Samples nicht sonderlich durch. Eigentlich sind die ja auch nicht als Tutorials gedacht, die einen von Anfang an an die Sache heranführen, sondern fertige Beispielimplementierungen.
-
Weiss nicht was es da gross zu erklären gibt... das ganze HDR Rendering ist ein riesen Rumgetrickse. Im Prinzip bekommst du von der Hardware bloss die Möglichkeit in Texturen und im Framebuffer mit floats zu arbeiten, der Rest wird dazugefrickelt. z.B. Blur Filter die für so "überstrahlte" Bilder (Gegelichteffekte etc.) verwendet werden werden einfach mit mehreren Shader-Passes über das ganze Bild implementiert. Da gibt's zwar sicher auch schon einige "etablierte Techniken", aber im Endeffekt bleibt es doch hingefrickelt.
-
Naja, warum soll das denn so "dahingefrickelt" sein?
Man rendert eben in ein float-Render-Target, und bei der Abbildung des viel größeren Wertebereichs von floats auf die 8 Bits, die das Display darstellen kann, wendet man halt diverse Effekte an.
-
http://www.blochi.com/HDRI/ (Theorie in Deutsch)
http://www.gamedev.net/reference/articles/article2108.asp
http://www.gamedev.net/reference/articles/article2208.asp
-
TomasRiker schrieb:
Naja, warum soll das denn so "dahingefrickelt" sein?
Man rendert eben in ein float-Render-Target, und bei der Abbildung des viel größeren Wertebereichs von floats auf die 8 Bits, die das Display darstellen kann, wendet man halt diverse Effekte an.Ja, aber mit erstens arbeiten die meisten Effekte nur mit reduzierter Auflösung (weil's mit voller Auflösung zu lange brauchen würde), und zweitens ist eben alles was ich bis jetzt gesehen habe eine ziemliche Trickserei.
Ansich ist "tricksen" nicht schlimm, bloss machen sie es alle nicht richtig, d.h. es wird die Physik komplett ignoriert und einfach irgendwas zusammengeschustert was halbwegs gut aussieht. z.B. das in dem mittleren von Vertex verlinkten Artikel beschriebne abschneiden der "nicht zu hellen" Farben ist Blödsinn - wenn man einen passenden Filterkernel verwendet braucht man das nicht, und weder eine Kamera noch das menschliche Auge noch die Streuung von Licht in der Athmosphäre verursacht irgendetwas vergleichbares.
Einige Implementierungen arbeiten auch mit "multi stage" Filtern um einen grösseren Blur-Radius mit vertretbarem Rechenaufwand zu erreichen - ansich keine dumme Idee, bloss kann man die für realistische Streulichtberechnung nötigen Filterkernels damit einfach nicht abbilden.
-
@hustbaer: Nur so als Tipp: in der (Echtzeit)-Computergrafik is so ziemlich ALLES "gefrickel" und getrickse.
Ich finde bei so ner Technik mit lauter Filtern, Tonemaps und WTF Formeln gibt es EINIGES zu erklären. -.-