1

SSAO 手法の実装についていくつか質問があります。

  1. すべてのジオメトリで 2 つ目 (またはそれ以上) のパイプラインが本当に必要ですか? つまり、いくつかのチュートリアルやそれに関するものを見つけましたが、ほとんどの場合、詳細を入力せずに、それを行うための指示を与えるだけです.

  2. 可能な最適化はありますか?私は OSG を使用していますが、CPU 用のテクスチャを送信し、GPU に再度スローするのは最善の解決策ではないという印象を受けました。

  3. シェーダーがバッファ内のサンプル深度でテクスチャを生成し、画面のクワッド、色、シーンの深度、およびテストの深度のみを使用して 2 番目のパイプラインに送信することは可能ですか? 私は osg を使用していますが、ドキュメントでそれを適切に行う方法を見つけることができませんでした。

4

1 に答える 1

3

一般に、SSAO はディファード シェーディング アプローチの一部として実装するのに最適です。厳密なフォワード シェーディング アプローチは可能ですが、それでも 2 つのレンダリング パスが必要であり、SSAO はディファード シェーディング エンジンの 2 番目のレンダリング パスに簡単に追加できます。SSAO では、オクルージョンを計算できるようにするには、シーンの完全な深度バッファーが必要です。そのため、質問のセクション 1 に対する簡単な答えは「はい」です。SSAO には 2 つのレンダリング パスが必要です。

ディファード シェーディングでは、2 つのレンダリング パスがありますが、複雑なジオメトリ (つまり、モデル) は最初のパスでのみレンダリングされ、2 番目のパスは通常、ライトの種類ごとにレンダリングされる単純なポリゴン シェイプで構成されることに注意してください。これは、質問のセクション 3 で提案しているものとほとんど同じです。

質問のセクション 2 に関しては、正しく設定されていれば、2 つのレンダリング パスの間に中間テクスチャを CPU に戻し、次に GPU に戻す必要はありません。最初のレンダリング パスのテクスチャを 2 番目のレンダリング パスのリソースとして使用できるようにするだけです。

于 2014-06-18T19:12:38.367 に答える