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