7

OpenGL ES 2.0 を使用して GPGPU を実行しようとしています。
GL_NV_draw_buffers とGL_OES_texture_float拡張機能は、ここで必要不可欠なものの一部であるように私には思えます。

この質問はGL_OES_texture_float拡張機能に関するものです。デスクトップの世界では、フォーマットが固​​定小数点 (GL_RGBA など) の場合、シェーダーでアクセスしたときにテクスチャが [0..1] の範囲にあることに慣れています。
それぞれの OES 拡張ページを参照すると、

「 ... テクスチャの内部形式が固定小数点の場合、コンポーネントは [0..1] にクランプされます。それ以外の場合、値は変更されません。」

Web で何度か耳にしたことがあります (たとえば、こちらの回答: Do OpenGL GLSL samplers always return floats from 0.0 to 1.0? )。ES 2.0 はフラグメント シェーダーでもクランプされていない値へのアクセスをサポートしています。しかし、この機能はどこで指定されているのでしょうか? 拡張機能は「それ以外の場合、値は変更されません」と言っていますが、OpenGL ES 仕様は固定小数点形式しか認識していないため、私には意味がありません。

また、私が理解しているように、拡張機能は float 値をクライアント メモリからテクスチャに読み込むことができることを指定するだけで、グラフィック メモリでテクスチャを表現する方法 (つまり、チャネルあたりのビット数) を指定しません。これに関する公式の仕様はありますか?

最後に、できればチャンネルあたり 32 ビットを使用して、クランプされていない浮動小数点値をフラグメント シェーダーの FBO カラー アタッチメントに書き込みたいと思います。これは可能ですか?

4

0 に答える 0