2

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

ありがとう、

-ジョン

4

1 に答える 1

1

Deferred Rendering を使用すると、世界自体がレンダリングされた後にライティングを適用できます。

  • モデルを描画する前にモデルに影響を与えるライトを選択する必要がないという意味で、複雑さを軽減します (通常、最も近い/最も重要なもの)。

  • 半透明処理とアンチエイリアシングがより複雑になる可能性があります。

  • これにより、多くのライトを適用してシーン内を移動できますが、これはフォワード ライティングでは実用的ではありません。

  • いくつかのバッファが存在する必要があります - 最低でもジオメトリ バッファですが、通常のバッファとスペキュラ バッファも役に立ちます。このようなバッファをパックするテクニックは存在しますが、より多くのメモリを必要とし、書き込みに帯域幅を使用します。つまり、遅延レンダリングは、フォワード レンダリングよりも前払いのコストが大きくなりますが、ライトの量や移動に関してはより柔軟に対応できます。

  • Starcraft 2、Gears of War、その他のゲームは遅延レンダラーを使用しているため、確かに実績のあるソリューションです。

  • XNA 4 での複雑さの点ではそれほど違いはありません。ここでは、XNA 4 での実装を示すリンクを示します。主な違いは、直接アクセスするのではなく、z バッファーのコピーを明示的に格納する必要がある場合です。http://roy-t.nl/index.php/tag/deferred-rendering/ライト プリパスも検討できますhttp://jcoluna.wordpress.com/

スポットライト効果が必要なので、スポットライトは動的であると推測しているため、遅延レンダリングを検討する理由がわかります。ただし、これまで遅延レンダリングを使用したことがない場合は、上記の Roy のリンクを調べて、コストと複雑さに満足しているかどうかを判断することをお勧めします。

于 2012-06-20T15:17:00.977 に答える