私は、スプライトの束でレンダリングされたOpenGLシーンを持っています。それらにすべてドロップシャドーを自動的に追加したいと思います。ここで私が何を意味するかを示す画像です:2Dスプライト用のOpenGL ESドロップシャドウ
シーンが正投影を使用して、スプライトはテクスチャクワッドであり、私は背中にフロントそれらを描画するためにデプスバッファを使用しています。私はOpenGL ES 2.0を使って作業していますが、iOSや非ES環境からの考えも高く評価されます。私はこれについて私がどのように進むことができるかについての私の頭の中でいくつかのアイデアを捨てました。そして、最も有望なものを見つけたいと思います。
- それぞれのスプライトを2回描画します。通常は最初のスプライトを描画し、通常は2番目のスプライトを描画します。ドロップシャドウシェーダをいくつか追加して、少し深く描画します。これが可能かどうか分かりませんか?
- スプライトを描画し、再度描画し、暗くしていくつかのアルファを使用して、いくつかのランダムジッタを頂点に適用します。これは愚かに見えるかもしれませんし、まったく影のようではありません。
- テクスチャに背景のないベースシーンを描画し、ぼかして濃くして1つの大きなドロップシャドウを作成します。その後、ドロップシャドウテクスチャ上にベースシーンを描画し、最後にバックグラウンド上に描画します。しかし、これはスプライト間の影を失うことになります。
- 後処理パスでのSSAO。最もダイナミックかつ自動であるかもしれませんが、ファジィ/粒状になり、実際には遅くなります。
- 作成時に、各スプライトのシャドウテクスチャを生成します。レンダリングのために、スプライトを描いてから、そのシャドウテクスチャをシーンの少し深く描きます。私はローディング時間と余分なメモリの必要性のためにこれを避けたいと思いますが、これは最速で最善の方法でしょうか?
私はさまざまなスケールで同じスプライトテクスチャを使用し、プリベークされたシャドウは不自然に拡大するので、外部テクスチャでシャドウワークを行いたくありません。
他のどのタイプより優れていますか?私が考えていない他の選択肢はありますか?ありがとう!
#3については、後処理のためのImagination Technologiesの推奨事項に興味があります。http://www.imgtec.com/powervr/insider/docs/PowerVR.Post%20Processing%20Effects%20Development%20Recommendations.1.7f。 External.pdfには、高効率ブルームフィルタの説明が含まれています。暗いバージョンのオブジェクトをレンダリングするだけでハイパスフィルタを置き換えると、すばやくドロップシャドーが得られるはずです。 –
良い読書、Brad。私が#3と一緒に行くなら、私はその方法を使うかもしれません。 – Josh