私はこの(http://madebyevan.com/webgl-water/)をTHREEに移植しようとしています。私は近づいていると思う(ちょうど今はシミュレーションが必要で、腐食/屈折については気にしない)。私はそれをGPUのブーストのためのシェーダで動作させたいと思っています。Three.js WebGLRenderTarget(ウォーターシム)からデータを取得
は、ここに私の現在の3つの設定使用してシェーダです:http://jsfiddle.net/EqLL9/2/ (第2小さな平面WebGLRenderTargetで現在何デバッグするためです)
私は私の例ではWebGLRenderTarget(rtTextureから戻ってデータを読んでいると戦っています)。この例では、中心点を囲む4つの頂点が上に移動していることがわかります。これは、中心点が変位の唯一の点であることから始まるので、正しい(1つのシミュレーションステップ後)。
rtTextureからデータを読み込み、各フレームのデータテクスチャ(buf1)を更新することができれば、シミュレーションは正しくアニメーション化されるはずです。 WebGLRenderTargetから直接データを読み取るにはどうすればよいですか?すべての例は、データをターゲットに送信する方法(レンダリングする方法)を示しています。あるいは私はそれをすべて間違っているのですか?何か私には、複数のテクスチャで作業しなければならず、何とかEvanのやり方と同じように前後にスワップする必要があります。
TL; DR:どのように私はこのような呼び出しの後DataTextureにWebGLRenderTargetからデータをコピーすることができます
// render to rtTexture
renderer.render(sceneRTT, cameraRTT, rtTexture, true);
EDIT:jsfiddle/gero3/UyGD8/9/ で解決策を見つけたかもしれないだろう調査し、報告する。
いいえ、シミュレーションを修正しました。デュアルWebGLRenderTargetsでダブルバッファリングを実装していませんでした。最新です:http://jsfiddle.net/EqLL9/4/ – relicweb
優秀です。次に、three.jsのフレームワーク内でGPGPUを実装する別の例を示します。http://jabtunes.com/labs/3d/gpuflocking/webgl_gpgpu_flocking3.html – WestLangley
@WestLangley私はシミュレーションを更新し、私のメインサイト(これは依然としてWIPです)に入れます:[http://relicweb.com/webgl/rt.html](http://relicweb.com/webgl/rt)。 html) – relicweb