各WebGLフラグメントシェーダ呼び出し(最大OES_texture_floatまたはOES_texture_half_float拡張が利用可能な場合を含む)で32ビット値を8個まで保存する必要があります。私は4x8bits RGBA gl_FragColorに1つの32ビット値を格納することしかできないようです。 8つの値を格納する方法はありますか?複数の32ビット値を保存するWebGLシェーダ
0
A
答えて
1
フラグメントシェーダで1コールにつき1つ以上のvec4分のデータを描画する唯一の方法は、WEBGL_draw_buffers
を使用することです。これにより、複数のカラー添付をフレームバッファにバインドしてから、1つのフラグメントシェーダコールWEBGL_draw_buffers
が利用できない場合
gl_FragData[constAttachmentIndex] = result;
唯一の回避策は、複数の描画呼び出しで
レンダリングは、私が考えることができるされています。
gl.drawArrays
を呼び出して最初のvec4
をレンダリングし、次に別のパラメータまたは別のシェーダでもう一度レンダリングしてvec4
をレンダリングします。各ピクセルの出力を変更するgl_FragCoordに基づいてレンダリングします。換言すれば
、第1画素は第vec4を取得し、第2の画素は、第vec4を取得し、等たとえば
float mode = mod(gl_Fragcoord.x, 2.); gl_FragColor = mix(result1, result2, mode);
結果が1に本
1212121212 1212121212 1212121212
ように格納されている。このようにテクスチャあなたができるvec4s詳細はこの
float mode = mod(gl_Fragcoord.x, 4.); // 4 vec4s if (mode < 0.5) { gl_FragColor = result1; } else if (mode < 1.5) { gl_FragColor = result2; } else if (mode < 2.5) { gl_FragColor = result3; } else { gl_FragColor = result4; }
これは、またはメソッド#1よりも高速であってもなくてもよいです。シェーダーは、result1とresult2の両方の計算をピクセル単位で行う可能性があるため、複雑になりますが、GPUやパイプラインによっては、その一部を無料で入手できるかもしれません。あなたは基本的には上記3つのいずれかの方法を使用して、さらに8ビット値を書き出すために必要があるとしている何
OES_texture_float
がない場合でも、32ビットの値を取得するためとして
。
WebGL2の描画バッファでは、WebGL1ではオプションであるため、必要な機能です。 WebGL2には、頂点シェーダ(バリエーション)の出力をバッファに書き込む変換フィードバックもあります。
関連する問題
- 1. webglシェーダとテクスチャフィルタ
- 2. 32ビットの数値を16ビット以下に変換する
- 3. 32ビット32倍の32ビット32ビット乗算
- 4. WebGLシェーダ作成の問題
- 5. WebGL:シェーダからのアクセスバッファ
- 6. シェーダの構文エラー - Unity WebGL
- 7. のWebGLとHTMLシェーダ型
- 8. 64ビットの数値から2の32ビット
- 9. リバース32ビット整数
- 10. travis-ciでWebGLシェーダを実行する
- 11. 32ビット整数のビット操作
- 12. mipsの既存のレジスタ値から新しい32ビット値を作成する
- 13. 32ビットアーキテクチャ上で2つの10桁の32ビットの数値を掛ける
- 14. Webgl three.js複数のオブジェクトの依存性
- 15. 32ビットシステムで48ビットの数値を生成する方法
- 16. Sparc 32ビットの値が2^32を超える整数の処理
- 17. 64ビット整数のすべてのビットと32ビット整数を比較する
- 18. 32ビットのRを32ビットのアクセスデータベースに接続する
- 19. minSdkVersion正の32ビット整数
- 20. x86アセンブリに2つの32ビットの数値を掛ける
- 21. 32ビット整数をXORingする
- 22. は32ビット整数1つの方法の第31ビット(MSB)を読み出すために32ビット整数
- 23. WebGLシェーダを最適化しますか?
- 24. 16ビットの輝度値を32ビットのRGB値に変換する
- 25. 32ビット/ 64ビットOS?
- 26. Delphi App IDEのターゲットフォルダをインストーラのデフォルトで32ビットから64ビットの間でトラックに保存する方法
- 27. 32ビット対64ビットのカスタムフレームワーク
- 28. Officeの32ビットdll 64ビット
- 29. 32ビットと64ビットのセットアッププロジェクト
- 30. 64ビット整数をスパークデータフレームの32ビット(16ビット)intに変換する価値はありますか?
webgl 2は利用できますか? – harold
@harold、webgl 1もサポートする必要があります –
@gman、チップのおかげで、広くサポートされている解決策が必要です –