WebGL でのボリューム レイ キャスティング用のアプリはほぼ完成しています。しかし、私は問題を発見しました。2D テクスチャで 3D テクスチャをシミュレートする必要があります。問題ありません。小さなスライスから巨大なテクスチャを作成しています。巨大なテクスチャの寸法は約 4096x4096px です。問題は、いくつかの例 (スライスの数によって異なります) で sth が作成されていることです。下の画像のように(フラグメントがより見やすくなるように、巨大なテクスチャを白に塗りつぶしました)。
ストライプの数は、巨大なテクスチャの行数に依存することを知っています。このテクスチャを 4096x4096px 近くで生成しています (正確ではありません)。4080x4060などになる可能性があります。問題は、Three.jsがテクスチャをgpuにロードすることですが、4096x4096にスケーリングしないことです..だから、テクスチャの境界にあるフラグメントシェーダの黒い色を読んでいます.webglは正方形のテクスチャ (512x512、1024x1024... など)。レンダリング イメージに黒い縞が発生していました。
問題は、私の Three.js アプリが WebGL Inspector で動作しないことです..だから、よくわかりません。
それを修正する方法はありますか?
ありがとう。
トマーシュ
編集:
OK、私は問題を見つけました..そして「解決策」...しかし、解決策はうまくいきませんでした。2 つのデータセットがあります。1 つは問題ありませんが、2 番目はまだ同じエラーです。
コードの 2 つのバリアント (それぞれが 1 つのデータセットでは正常に機能しますが、2 番目のデータセットでは機能しません):
初め)
dx = mod(slice, numColsInTexture) / numColsInTexture;
dy = 1.0 - (floor(slice / numColsInTexture) / numRowsInTexture);
2番)
dx = 1.0 - (mod(slice, numColsInTexture) / numColsInTexture);
dy = (floor(slice / numColsInTexture) / numRowsInTexture);
なぜ両方のデータセットで機能しないのか、本当にわかりません... GPU(WebGLインスペクター)をダンプしようとしました。両方のテクスチャが GPU で有効に読み込まれます (同じ向き、同じ寸法)。すべてが同じです。
私を助けてください....ありがとう。