ライティングに関するヒント
ライトを適用した場合、レンダリングされる各フレームに頂点ごとの負荷が加わる。したがって、アプリケーションでライトを慎重に使用すれば、パフォーマンスの大幅な向上が見込める。次のヒントのほとんどは、最速のコードは呼び出されないコードであるという考えに基づく。
- 光源は必要最小限で使用する。全体的なライティング レベルを増加させることだけが必要な場合は、新しい光源を追加するのではなく、アンビエント ライトを使用する。負担がずっと軽くなる。
- ディレクショナル ライトは、ポイント ライトやスポットライトより負担が軽い。ディレクショナル ライトの場合、光の方向が固定されているため、頂点ごとに計算する必要がない。
- スポットライトは、ポイント ライトより負担が軽い。光のコーンの外側の領域の計算はすばやく行われるためである。スポットライトの負担が軽いかどうかは、スポットライトでシーンを照らす量によって異なる。
- 範囲パラメータを使用して、必要な部分にだけライトを照らす。範囲外にあるすべてのライトのタイプはすぐに終了する。
- スペキュラ ハイライトは、負担がおよそ 2 倍になるため、必要なときにだけ使用する。D3DRS_SPECULARENABLE レンダリング ステートには、できるだけデフォルト値 0 を設定する。マテリアルを定義するときは、スペキュラ強度値をゼロに設定して、そのマテリアルに対するスペキュラ ハイライトをオフにする。単にスペキュラ色を 0,0,0 に設定するだけでは不十分である。