Platform SDK: DirectX |
Direct3D のライトは、システムによるライティング計算で独立して使用される、ディフューズ色、アンビエント色、およびスペキュラ色の 3 つの色を放射する。それぞれの色は、Direct3D ライティング モジュールによって組み込まれ、現在のマテリアルの色と相互作用し、最終的にレンダリングで使用される色が生成される。ディフューズ色は現在のマテリアルのディフューズ プロパティと相互作用し、スペキュラ色はマテリアルのスペキュラ属性と相互作用する、という具合に処理される (Direct3D でのこれらの色の適用方法については、「Direct3D のライティングにおける数学的計算」を参照すること)。
C++ アプリケーションの場合、D3DLIGHT7 構造体にこれらの色を表す 3 つのメンバ dcvDiffuse、dcvAmbient、および dcvSpecular が含まれる。各メンバは、放射する色を定義する D3DCOLORVALUE 構造体である。
Visual Basic の場合、D3DLIGHT7 型にこれらの色を表す 3 つのメンバ dcvDiffuse、dcvAmbient、および dcvSpecular が含まれる。各メンバは、放射する色を定義する D3DCOLORVALUE 型である。
システムの計算負荷が最も大きいのは、ディフューズ色である。最も一般的なディフューズ色は白色 (R:1.0 G:1.0 B:1.0) であるが、希望のエフェクトを出すために必要に応じて色を作成できる。たとえば、暖炉に赤色のライトを使用したり、"Go" になった交通信号に緑色を使用することができる。
一般には、ライトの色成分を 0.0 と 1.0 を含む 0.0 〜 1.0 の値に設定するが、これ以外の値に設定することもできる。たとえば、すべての成分を 2.0 に設定して、"白色よりも明るい" ライトを作成できる。このような設定は、定数以外の減衰設定を使用するときには特に便利である。
Direct3D ではライトに RGBA 値を使用するが、アルファ成分は使用しない。詳細については、「ライティングとマテリアルのカラー値」を参照すること。