ライティングのヒント
ライティングは、各レンダリング フレームで全頂点で負荷がかかるので、アプリケーションでのライトの使用に細心の注意を払うことで、大幅なパフォーマンスの向上を達成することができる。以下にあげるヒントの大部分は、"もっとも速いコードは、決して呼び出されることのないコードである" という標語から導かれたものである。
- 光源の使用をできるだけ控える。全体的レベルのライティングだけでよい場合は、新しい光源を追加するのではなく、アンビエント ライトを使用する (負荷が軽い)。
- ディレクショナル ライトの方が、ポイント ライトやスポット ライトよりも負荷が軽い。ディレクショナル ライトの場合、光の進行方向は一定であり、頂点ごとに計算する必要はない。
- スポット ライトの方が、ポイント ライトよりも負荷が軽い。光のコーンの外側領域の計算がすばやくできるからである。スポット ライトの方が負荷が軽いかどうかは、どれだけのシーンをスポット ライトで照射するかで決まる。
- 照射する必要がある部分のみに光を制限するために範囲パラメータを使用する。すべてのライト タイプは、範囲外になるとかなり早く出て行く。
- スペキュラ ハイライトは負荷がほぼ倍増するため、必要なときにのみ使用する。D3DRENDERSTATE_SPECULARENABLE レンダリング ステートは、できる限り 0 (デフォルト値) に設定しておく。マテリアルを定義するときは、スペキュラ強度値をゼロに設定して、マテリアルのスペキュラ ハイライトをオフする必要がある。スペキュラ色を 0,0,0 に設定するだけでは不十分である。