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 成分は次のライティングの式では使用されない。