簡単なアドバイスが必要です。
GPUでセルオートマトン(雲のリアルなアニメーションのためのシンプルで効率的な方法から)をシミュレートしたいと思います。ただし、ビット単位の操作をサポートしないOpenGL ES 2.0シェーダー(WebGL内)に制限されています。
このセルオートマトンのすべてのセルはブール値を表すため、セルごとに1ビットを格納するのが理想的でした。では、このデータをOpenGLのテクスチャ形式で表現する最も効率的な方法は何でしょうか。トリックはありますか、それとも単純なRGBAテクスチャに固執する必要がありますか?
編集:これまでの私の考えは...
現時点では、プレーンなGL_RGBA8、GL_RGBA4、またはGL_RGB5_A1のいずれかを使用することを考えています。
おそらく、GL_RGBA8を選択し、浮動小数点演算を使用して元のビットを抽出しようとすることができます。たとえば
x*255.0
、おおよその整数値を示します。ただし、個々のビットを抽出するのは少し面倒です(つまり、2で除算して数回丸めます)。また、精度の問題にも注意しています。GL_RGBA4を選択すると、コンポーネントごとに1.0または0.0を格納できますが、GL_RGBA8を使用して以前と同じトリックを試すこともできます。この場合、それはだけ
x*15.0
です。ビットを抽出するための操作は少なくなりますが、読み取られるテクスチャごとの情報は少なくなるため、高速になるか表示されないかはわかりません。GL_RGB5_A1を使用して、アルファチャネルが1ビットセルの状態を格納するボクセルごとの色などの追加情報とともにセルをパックできるかどうかを試してみることができます。