2016-03-19 46 views
1

私が知る限り、WebGLのテクスチャとしてUint8Arrayを使用することは可能です。しかし、大規模なFloat32ArrayまたはFloat64Arrayをどのように効率的にシェーダに渡すことが可能ですか? float値は(0.0,1.0)の範囲ではなく、負の値もあります。シェーダでFloat32Arrayを処理する方法は? (WebGL)

私はいくつかのデバイスがhigh precision floatをサポートしていないことを知っていますが、処理中に精度が失われても問題はありません。

+0

[OES_texture_float](https://www.khronos.org/registry/webgl/extensions/OES_texture_float/)に設定する必要がありますか? –

答えて

2

は今、あなたは浮動小数点テクスチャをフィルタリングすることができるということはとても別の拡張であることを

gl.texImage2D(target, level, format, width, height, 0, 
       format, gl.FLOAT, someFloat32Array); 

注意を使用してFloat32Arrayとテクスチャを作成することができます

var ext = gl.getExtension("OES_texture_float"); 
if (!ext) { 
    alert("sorry, no floating point textures"); 
    return; 
} 

のようなコードで浮動小数点テクスチャを有効にしてくださいフィルタリングが必要な場合は、それもチェックする必要があります。

var ext = gl.getExtension("OES_texture_float_linear"); 
if (!ext) { 
    alert("sorry, can't filter floating point textures"); 
    return; 
} 

そうでなければ、テクスチャフィルタリングをNEAREST

関連する問題