現在、フラグメントシェーダーを使用して、テクスチャ上の画像を処理しようとしています。ただし、フラグメントシェーダーでサポートされているのは10ビットフロートのみであることがわかりました。画面の長さが1280ピクセルの場合、10ビットを使用して1280ピクセルをサンプリングすることは不可能であるため、ピクセルに格納されている値を取得できませんでした。 。
大きなテクスチャのピクセルを正確に取得するにはどうすればよいですか?
現在、フラグメントシェーダーを使用して、テクスチャ上の画像を処理しようとしています。ただし、フラグメントシェーダーでサポートされているのは10ビットフロートのみであることがわかりました。画面の長さが1280ピクセルの場合、10ビットを使用して1280ピクセルをサンプリングすることは不可能であるため、ピクセルに格納されている値を取得できませんでした。 。
大きなテクスチャのピクセルを正確に取得するにはどうすればよいですか?
float には 3 つの異なる精度形式があります。OpenGL ES シェーディング言語のリファレンスには次のように書かれています。
highp
: 16 ビット、浮動小数点範囲: -2^62 から 2^62、整数範囲: -2^16 から 2^16mediump
: 10 ビット、浮動小数点の範囲: -2^14 から 2^14、整数の範囲: -2^10 から 2^10lowp
: 8 ビット、浮動小数点の範囲: -2 から 2、整数の範囲: -2^8 から 2^8>1024x1024 テクスチャからサンプリングできるようにするにhighp
は、プログラムの先頭に次のコードを配置して、精度を切り替える必要がありますGLSL
。
precision highp float;