XNA でゲームを作成していますが、この質問はほとんどの 3D フレームワークに当てはまります。
シーンに複数のポイント ライトが含まれています。各ライトには、位置、強度、色、および半径があります。また、ポイント ライトで照らすことができるいくつかのオブジェクトも含まれています。
私は単純なフォワード レンダラーを使用して、一度に最大 8 つのポイント ライトでオブジェクトを照らすことに成功しました。
ただし、フレームごとに光がゆっくりと消えていく、照らされたオブジェクトなど、他の効果も試してみたいと思います。
マルチパスアプローチを使用したい:
- 照らされた各オブジェクトには、テクスチャとライトマップ (レンダーテクスチャ) があります。
次に、各フレームと各オブジェクトについて:
- ライトマップをクリア (またはフェード)
- フォールオフなどを使用して、各ライトをライトマップに描画します。
- ピクセル シェーダーで texture * lightmap を使用してオブジェクトをレンダリングする
私の問題はテクスチャ座標に関連しています。ライトマップはテクスチャ マップと同じ UV マッピングを使用する必要があるため、オブジェクトを描画すると、色は次のようになります。
tex2D(TextureSampler, uv) * tex2D(LightMapSampler, uv)
別の言い方をすれば、各ライトまでの距離を計算するために、ライトマップ ピクセル シェーダーでライトマップの各ピクセルのワールド位置を計算する必要があります。
これを達成するために必要な座標変換は何ですか?