1

私はシャドウ マップを使用してポイント ライトを作成しています。現在、6 つの深度マップ テクスチャを使用して作成しており、それぞれが個別にレンダリングされ、ライト マップに適用されています。これは非常にうまく機能しますが、パフォーマンス コストが高くなります。

ここで、FBO の変更と、デプスマップ シェーダーとライトマップ シェーダーの間のシェーダー スワッピングを減らしてパフォーマンスを向上させるために、いくつかのアプローチを考えていました。1 つ目は、シャドウ マップの 6 倍の大きさのテクスチャを 1 つ用意し、すべてのポイント ライト深度マップを「一度に」レンダリングしてから、このテクスチャを使用してライト マップを 1 回の呼び出しでレイアウトします。テクスチャの一部だけをレンダリングすることはできますか?

最初の例を詳しく説明すると、次のようになります。

1. Set shadow map size to 128x128
2. Create a depth map texture of 384x256 (3 x 2 shadow map)
3. Render the first 'side' of a point light to the rectangle (0, 0, 128, 128)
4. Render the second 'side' to the rectangle (128, 0, 128, 128)
5. - 9. Render the other 'sides' in a similar manner
10. Swap to light map mode
11. Render the light map in a single call using the 'cube-map'-ish depth texture

私が考えた 2 番目の方法は、部分レンダリングの代わりに 3D テクスチャを使用することですが、同様の質問がまだあります。他のレイヤーを保持しながら、3D テクスチャの特定の「レイヤー」のみにレンダリングできますか?

4

1 に答える 1