Ich möchte herkömmliche dreieckbasierte Modelle und Partikel mit einer Raytrace-Szene mit einer angemessenen Bildrate zusammenstellen.
Mit webGL können Sie das nicht gl_FragDepth
in den Fragment-Shader schreiben . Sie können nicht mehrere Renderziele haben, aber Sie können in eine RGBA-Textur rendern und diese Textur dann als Eingabe für ein anderes Draw-Op verwenden. So kann ich meine Raytrace-Szene rendern und die Tiefe als Eingabe für die nächste Stufe speichern. Dies ist offensichtlich alles andere als ideal, aber praktikabel.
Ich würde gerne falsch liegen, und dies wird eher aus Versuch und Irrtum als aus einer endgültigen Quelle gewonnen. Bitte korrigieren Sie fehlerhafte Annahmen
Wie können Sie einen Float und im Idealfall einige Flag-Bits und dergleichen effizient in eine RGBA-Textur in einem GLSL-Fragment-Shader packen / entpacken?
Antworten:
Hier finden Sie Funktionen zum Ein- und Auspacken, die unter WebGL und OpenGL ES 2.0 funktionieren. Dies gilt nur für Werte im Bereich von 0 bis 1, daher sollten Sie darauf achten, dass sich Ihre Tiefenberechnung im richtigen Bereich befindet.
Codierung Floats zu RGBA
quelle