1

複数の交差する透明なオブジェクトが存在する可能性のあるシーンのレンダリングに取り組んでいます。これにより、並べ替えと前から後ろへの描画の標準的な方法が問題になります (三角形が交差する場合、三角形の並べ替えでさえ機能しません)。そこで、GLSL フラグメント シェーダーを使用して深度ピーリングを実装し、2 番目の深度テストを行いました。それは素晴らしい作品です。

ここで、シェーダーを使用して特定の効果を適用できるようにしたいと考えています。シーン内のオブジェクトの 1 つが注射器で、ガラス効果を適用したいと考えています。背面から前面に描画する場合、これは簡単です。シリンジを描画するときにシェーダーを開始するだけです。シリンジの背後にあるものはすべてフレーム バッファーにあるからです。ただし、深度ピーリングを使用する場合、このアプローチは機能しません。

だから私の質問は:

  1. 深度ピーリングを使用しているときに、シーン内の単一のオブジェクトにシェーダー効果を適用するにはどうすればよいですか?
  2. エフェクト シェーダーとデプス ピーリング シェーダーを組み合わせるにはどうすればよいですか (同時に実行する必要がある場合)。

私はシェーダーを使用するのにかなり慣れていないことに注意してください。そのため、コード例は大歓迎です!

4

1 に答える 1

0

レイ トレーシングなしでそれが可能であるとしたら、私は驚きます。私の知る限り、屈折シェーダーを使用する方法は、環境マップでテクスチャ ルックアップを行うことです。このマップは、事前に計算することも、別のレンダリング パスでオンザフライで計算することもできます。後者のオプションでは、シェーダーを使用するオブジェクトごとに 1 つの個別の環境マップと 1 つの追加パスが必要になります。オブジェクトが互いに交差する場合、それが可能であるとは思えません。たとえそうであったとしても、これらのパスごとに、デプス ピーリングのためにさらに 2 回のパスが必要になります。デプス ピーリング シェーダー パスで周囲のオブジェクトの屈折を考慮したい場合、これはすぐに手に負えなくなります。

于 2013-05-04T19:14:56.690 に答える