Microsoft DirectX 8.0 (Visual Basic) |
ここでは、Microsoft® Direct3D® ライティング エンジンのしくみおよび実装の詳細を説明する。Direct3D は、自然光の振る舞いを評価してライティングをモデル化する。Direct3D ライティング モデルは、ライトの色、ライトの進行方向と距離、ビューアの位置座標、およびマテリアルの特性を監視して、面の各頂点で 2 つの色成分を計算する。Direct3D は、これらの色成分を使用して、面のピクセルをラスタ化するときに描画する色を計算する。
注 すべての計算はモデル空間で行われる。ワールド行列の逆行列を使用してカメラ位置座標と共にライトの位置座標と方向をモデル空間にトランスフォームし、次に逆トランスフォームする。その結果、ワールド行列またはビュー行列によって一様でないスケーリングが生じる場合は、最終的なライティングが不正確になることがある。
ここでは、ディフューズ成分とスペキュラ成分を提供するために Direct3D で使用する公式について技術的観点から説明する。Direct3D の方法を理解すれば、Direct3D ライティング モデルが要望に合うかどうかをより正確に判断できるようになる。Direct3D ライティング モデルは、正確さ、効率性、および使いやすさを目指して設計されている。しかし、Direct3D で使用する公式がニーズに合わない場合は、Direct3D ライティング モジュールは使用せず、独自のライティング モデルを実装することもできる。説明するトピックは、次のとおりである
この公式で使用されるパラメータを、次の表に示す。各表には、対応するデフォルト値、型、および許容値の範囲を示す。
次の表は、位置パラメータを示している。
パラメータ | デフォルト値 | 型 | 説明 |
---|---|---|---|
Pe | (0,0,0) | D3DVECTOR | カメラ空間でのカメラの位置座標。 |
Po | N/A | D3DVECTOR | カメラ空間における現在のモデル原点 (0,0,0,1) の位置。これは Mw*Mv 行列の 4 行目である。 |
Mw | N/A | D3DMATRIX | D3DTRANSFORMSTATE_VIEW によって設定されるワールド行列。 |
Mv | N/A | D3DMATRIX | D3DTRANSFORMSTATE_VIEW によって設定されるビュー行列。 |
Mwv | N/A | D3DMATRIX | Mw*Mv。 |
Halfway | N/A | D3DVECTOR | 正規化されたベクトル。スペキュラ反射を計算するために使用される。 |
La | (0.0, 0.0, 0.0, 0.0) | D3DCOLORVALUE | ライト ステートのアンビエント色。D3DRENDERSTATE_AMBIENT によって設定される。 |
V | N/A | D3DVECTOR | カメラ空間での頂点の位置座標。 |
N | N/A | D3DVECTOR | カメラ空間での正規化された頂点の法線。 |
Vcd | N/A | D3DCOLORVALUE | 頂点のディフューズ色。 |
Vcs | N/A | D3DCOLORVALUE | 頂点のスペキュラ色。 |
次の表は、マテリアル パラメータを示している。
パラメータ | デフォルト値 | 型 | 説明 |
---|---|---|---|
Ma | (0.0, 0.0, 0.0, 0.0) | D3DCOLORVALUE | アンビエント色。 |
Md | (255, 255, 255, 255) | D3DCOLORVALUE | ディフューズ色。 |
Ms | (0.0, 0.0, 0.0, 0.0) | D3DCOLORVALUE | スペキュラ色。 |
Me | (0.0, 0.0, 0.0, 0.0) | D3DCOLORVALUE | エミッション色。 |
Mp | 0.0 | D3DVALUE | スペキュラ指数。範囲 : (-∞,+∞) |
次の表は、光源 i パラメータを示している。
パラメータ | デフォルト値 | 型 | 説明 |
---|---|---|---|
LpI | (0.0, 0.0, 0.0) | D3DVECTOR | カメラ空間での位置座標。 |
LdI | (0.0, 0.0, 1.0) | D3DVECTOR | カメラ空間でのライトへの方向。 |
LrI | 0.0 | D3DVALUE | 距離の範囲。範囲 : [0.0, D3DLIGHT_RANGE_MAX]。 |
LcaI | (0.0, 0.0, 0.0, 0.0) | D3DCOLORVALUE | アンビエント色。 |
LcsI | (0.0, 0.0, 0.0, 0.0) | D3DCOLORVALUE | スペキュラ色。 |
LcI | (1.0, 1.0, 1.0, 0.0) | D3DCOLORVALUE | ディフューズ色。 |
att0I | 0.0 | D3DVALUE | 固定減衰係数。範囲 : (0, +∞) |
att1I | 0.0 | D3DVALUE | 線形減衰係数。範囲 : (0, +∞) |
att2I | 0.0 | D3DVALUE | 2 次減衰係数。範囲 : (0, +∞) |
falloffI | 0.0 | D3DVALUE | フォールオフ係数。範囲 : (-∞, +∞) |
thetaI | 0.0 | D3DVALUE | スポットライトの本影角度 (ラジアン単位)。範囲 : [0, π) |
phiI | 0.0 | D3DVALUE | スポットライトの半影角度 (ラジアン単位)。範囲 : [thetaI, π)。 |