Microsoft DirectX 8.0 (C++) |
ライティング ステージの出力は、RGBA フォーマットでのディフューズ (D) 色およびスペキュラ (s) 色である。ライティングは次の 2 つのステートのいずれかである。
1. ライティング オフ (D3DRENDERSTATE_LIGHTING が FALSE に設定されている)。このステートでは、頂点カラーは次のように計算される。
D3DRENDERSTATE_COLORVETEX は無視される。
ディフューズ頂点カラーが存在する場合、出力ディフューズ色は頂点のディフューズ色に等しい。それ以外の場合は、ディフューズ色はデフォルトのディフューズ色 (255,255,255,255) に等しい。出力ディフューズ色は [0, 255] の範囲にスケーリングおよびクランプされる。
スペキュラ頂点カラーが存在する場合、出力スペキュラ色は頂点のスペキュラ色に等しい。それ以外の場合は、スペキュラ色はデフォルトのスペキュラ色 (0,0,0,0) に等しい。出力スペキュラ色は [0, 255] の範囲にスケーリングおよびクランプされる。
2. ライティング オン (D3DRENDERSTATE_LIGHTING が TRUE に設定されている)。このステートでは、Direct3D は以下の公式に従って頂点カラーを計算する。
頂点に法線が存在しない場合、ライティングの式で内積に依存する部分は 0 に設定される。ライティングが計算される。
ライティングがカメラ空間で行われる。
alpha 成分は次のライティングの式では使用されない。