2016-11-27 10 views
0

私はいくつかのGLSLを探求しており、実装しようとしているものがあります。GLSL - ジオメトリテクスチャとテクスチャテクスチャとのフラグメントワールド空間座標交差のテスト

私は、フラグメントのワールド空間座標(rgb = xyz)のみを格納する以前にレンダリングされたテクスチャを持っています。このテクスチャは別のレンダーパスに渡されます。世界の位置テクスチャを取り込み、現在のフラグメントのワールド空間座標をテストして一致するかどうかを調べることは可能でしょうか?

例では、カメラAによってテクスチャにレンダリングされた3D空間内の点のいずれかもまたカメラB.

によって見ることができるかどうかを確認するテスト、2台のカメラであってもよい、そのテクスチャーを有することが可能ですいくつかの異なるシェーダ間で変更できますか?つまりカメラでテクスチャをレンダリングし、そのテクスチャを別のシェーダに渡して変更しますか?

すべてのヘルプは大歓迎され、感謝

答えて

1

:)私は、断片の唯一のワールド空間座標を保存する前にレンダリング質感を持っている(RGB = XYZ)。このテクスチャは別のレンダーパスに渡されます。世界の位置テクスチャを取り込み、現在のフラグメントのワールド空間座標をテストして一致するかどうかを調べることは可能でしょうか?

例では、カメラAによってテクスチャにレンダリングされた3D空間内の点のいずれも、はい、それは可能であるカメラB

によって見ることができるかどうかを確認するテスト、2台のカメラであってもよいです。これは本質的にシャドウマップですが、サンプリング中に手動で距離を計算する必要があります。なぜあなたはワールドスペースのXYZ座標を格納することを主張しているのか、これのユースケースは何なのかは不明です。深度テクスチャに深度を格納し、組み込み深度テクスチャルックアップを使用する方がずっと簡単で効率的です。

また、いくつかの異なるシェーダ間で変更可能なテクスチャを持つことは可能ですか?つまりカメラでテクスチャをレンダリングし、そのテクスチャを別のシェーダに渡して変更しますか?

はい。テクスチャをレンダリングしてからimageLoadimageStore(および関連するAPI)を別のシェーダで使用して修正することができます。ただし、フィードバックループで注意する必要があります。 GPUの並列性とそのキャッシュインコヒーレントなアーキテクチャのために、複雑になる可能性があり、詳細な答えはあなたが達成しようとしている正確なものに依存します。

+0

ありがとうございました!私はまだシャドウマッピングの周りを包んでいるので、私はそれをさらに深く見て、自分のニーズに合わせて調整できるかどうかを見ていきます。私が取り組んでいるアイデアの潜在的な解決策のためにXYZをテクスチャに保存することを考えていました – whatsthisnow

関連する問題