2010-12-20 12 views
2

誰かがXbox 360のXNAでライティングを処理するための良いパターンを持っているのだろうかと思います。私は現在、スポットライトコンポーネントを実装しようとしています。私は、複雑さを軽減する手段として遅延シェーディングについて読んできました。私はこれもXbox 360のための良いアイデアではなく、XNA 3.0よりもXNA 4.0では難しいと聞いています。私の目標は、ゲームを通して使用できるスポットライト効果をカプセル化する再利用可能なコンポーネントを作ることです。Xbox 360用のXNA 4.0で点灯するデザインパターン?

おかげで、

- ジョン

答えて

1

遅延レンダリングは、世界自体がレンダリングされた後、あなたが照明を適用することができます。

  • それはあなたがそれ(通常は最も近い/最も重要なもの)を描画する前に、モデルに影響を与えるライトかを選択することを余儀なくされていないという意味で複雑さを減らすん。

  • これは、半透明処理とアンチエイリアシングをより複雑にすることができます。

  • これは、多くのライトが適用され、シーンの周りを移動することを可能にします。これは、前方照明では実用的ではありません。

  • ジオメトリバッファが最低限必要ですが、通常バッファとスペキュラバッファも必要です。このようなバッファをパックする手法は存在しますが、より多くのメモリが必要で、書き込みに帯域幅を使用します。これは、遅延レンダリングが前方レンダリングよりも大きなフロントコストを持つことを意味しますが、ライトの量に関連してより柔軟になり、それらを移動させることを意味します。

  • スタークラフト2、ギアーズ・オブ・ウォー(Gears of War)などのゲームでは、遅延レンダラーが使用されているため、確かに実績のあるソリューションです。

  • XNA 4では、複雑さの面であまり違いはありません。ここでは、XNA 4の実装を示すリンクがあります.zバッファのコピーを明示的に格納する必要がある場合は、直接アクセスするのではなく、 http://roy-t.nl/index.php/tag/deferred-rendering/、あなたはスポットライトの効果をしたいので、私はスポットライトが動的であることを推測しているとして、あなたは、遅延レンダリングを検討したい、なぜ私が見ることができるhttp://jcoluna.wordpress.com/

も光前パスを検討することができます。しかし、以前に遅延レンダリングを使用していない場合は、上記のRoyのリンクを調べて、コスト/複雑さに満足しているかどうかを判断することをおすすめします。