Ich habe Bloom HDR-Rendering mit OpenGL und GLSL integriert ... Zumindest denke ich! Ich bin nicht wirklich sicher über das Ergebnis.HDR Bloom-Effekt-Rendering-Pipeline mit OpenGL/GLSL
folgte ich ein Tutorial von Intel-Website:
https://software.intel.com/en-us/articles/compute-shader-hdr-and-bloom
Und über Gaußsche Unschärfe-Effekt folgen ich alle Ratschläge peinlich genau die Leistung auf der folgenden Website in Bezug auf:
https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms
Nach der ersten Webseite :
"Die Hellpassausgabe wird dann viermal um die Hälfte herunterskaliert. Jeder der herunterskalierten Hellpassausgaben wird mit einem trennbaren G verwischt Aussian-Filter und dann zur helleren Pass-Ausgabe der nächsten höheren Auflösung hinzugefügt. Die endgültige Ausgabe ist eine Blüte ¼ Größe, die oben abgetastet wird und in die HDR-Ausgabe vor Tone Mapping.“
Hier ist die Blüte Pipeline (die Bilder oben haben von NSight NVIDIA Debugger genommen wurde).
Die Auflösung in meinem Test des Fensters ist 1024x720 (für die Notwendigkeit dieses Algorithmus wird diese Auflösung 4mal verkleinerter wird)
Schritt 1:.
Lighting Pass (Mischung von Material Pass + Schattenmaske Pass + skybox Pass) :
Schritt 2:
Lichtinformationen in eine helle Pass (Um genau zu sein, 4 Mipmaps Texturen Extrahierung Höhe erzeugt („Der helle Passausgabe dann auf die Hälfte verkleinert wird 4 mal“ -> 1/2 , 1/4, 1/8 und schließlich 1/2)):
Schritt 3:
„Jede der hellen verkleinerte Pass Ausgänge sind mit einem verschwommenen trennbaren Gaussian Filter und das n zur helleren Ausgabe der nächsten höheren Auflösung hinzugefügt. "
Ich möchte präzisieren, dass die bilineare Filterung aktiviert ist (GL_LINEAR) und die Pexilization auf den obigen Bildern das Ergebnis der Größenanpassung der Textur auf den NSight Debugger ist Fenster (1024x720).
a) Auflösung 1/16x1/16 (64x45)
"1/16x1/16 unscharfe Ausgabe"
b) Auflösung 1/8x1/8 (128x90)
"1/8x1/8 verkleinerter hellen Pass mit kombinierter 1/16x1/16 unscharfe Ausgabe"
"1/8x1/8 unscharfe Ausgabe"
c) Auflösung 1/4x1/4 (256x180)
„1/4x1/4-verkleinerte hellen Pass in Kombination mit 1/8x1/8 unscharfe Ausgabe“
"1/4x1/4 unscharfe Ausgabe"
d) Auflösung 1/2x1/2 (512x360)
"1/2x1/2 verkleinerte hellen Pass in Verbindung mit 1/4x1/4 unscharfer Ausgabe"
"1/2x1/2 unscharfe Ausgabe"
die gewünschten LEV Ziel el von mipmap Ich benutze FBO Größenanpassung (aber vielleicht wäre es schlauer, separate FBOs zu verwenden, die bereits bei der Initialisierung dimensioniert sind, anstatt die gleiche Größe mehrmals zu ändern. Was denkst du über diese Idee?).
Schritt 4:
Tone Mapping machen Pass:
Bis hier würde ich eine externe Beratung zu meiner Arbeit haben möchte. Ist es richtig oder nicht? Ich bin nicht wirklich sicher über das Ergebnis vor allem über Schritt 3 (Downscaling und Bluring).
Ich denke, der Bluring-Effekt ist nicht sehr ausgeprägt! Allerdings benutze ich einen Convolution-Kernel 35x35 (es würde reichen, denke ich :)).
Aber ich bin wirklich fasziniert von einem Artikel über ein PDF. Hier ist die Präsentation der Bloom-Pipeline (die Präsentation ist ziemlich die gleiche wie die, die ich anwendete).
-Link:
Wie man auf dem Bild sehen kann, dass die Unschärfe-Effekt Blutungen ist so viel stärker als meine! Denkst du, der Autor benutzt mehrere Faltungs-Kernel (höhere Auflösungen)?
Das erste, was ich nicht verstehe, ist, wie der Gaußsche Unschärfe-Algorithmus andere Farben erscheinen lässt als Weiß (Grauwerte) auf dem dritten Bild. Ich habe das helle Bild (das zweite) sehr genau betrachtet (hoher Zoom) und alle Pixel scheinen nahe an Weiß oder Weiß (Graustufen) zu sein. Eins ist sicher: Es gibt keine blauen oder orange Pixel auf der hellen Textur. Wie können wir einen solchen Übergang von Bild 2 zu Bild 3 erklären? Es ist sehr seltsam für mich.
Die zweite Sache, die ich nicht verstehe, ist der hohe Unterschied der Unschärfe Blutung Effekt zwischen den Bildern 3, 4, 5 und 6! In meiner Präsentation benutze ich 35x35 Convolution Kernel und das Endergebnis ist nahe dem dritten Bild hier.
Wie können Sie einen solchen Unterschied erklären?
PS: Beachten Sie, dass ich das interne Pixelformat GL_HALF_FLOAT und GL_RGBA16F zum Initialisieren der Bloom-Render-Pass-Textur verwenden (alle anderen Render-Pässe werden als GL_RGBA- und GL_FLOAT-Datentyp initialisiert).
Ist etwas falsch mit meinem Programm?
Vielen Dank für Ihre Hilfe!
Vielen Dank! Effektiv schickte ich das schlechte Ansichtsfenster als einheitliche Variable an meinen Gaußschen Unschärfeschieber (es wurde immer auf meine ursprüngliche Fensterauflösung eingestellt -> 1024 * 720). Daher war der Durchschnitt jedes Pixel-Offsets völlig falsch. Nochmals vielen Dank für Ihre Hilfe! Tschüss. – user1364743
Könnten Sie bitte Bilder mit Fix hochladen, damit andere erfahren können, wo das Problem liegt? Prost und viel Glück. –