Microsoft DirectX 8.0 (Visual Basic)

ディフューズ ライト マップ

光源で照らしたとき、光沢のないサーフェスはディフューズ ライトを放つ。ディフューズ ライトの輝きは、光源からの距離、およびサーフェス法線と光源の方向ベクトルとの角度によって異なる。ライティング計算によってシミュレートするディフューズ ライトのエフェクトは一般的なものである。

テクスチャ ライト マップを使用してディフューズ ライトをシミュレートできる。これを行うには、次の Microsoft® Visual Basic® コードで示すように、ディフューズ ライト マップをベース テクスチャに追加する。

' この例で、d3dDevice は Direct3DDevice8 オブジェクトへの
' 有効な参照であると仮定している。
' texBaseTexture は、テクスチャへの有効な参照である。
' texDiffuseLightMap は、RGB ディフューズ ライト マップ データを含む
' テクスチャへの有効な参照である。

' ベース テクスチャを設定する。
Call d3dDevice.SetTexture(0, texBaseTexture)

' ベース テクスチャ処理と引数を設定する。
Call d3dDevice.SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE)
Call d3dDevice.SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE)
Call d3dDevice.SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE)

' ディフューズ ライト マップを設定する。
Call d3dDevice.SetTexture(1, texDiffuseLightMap)

' ブレンディング ステージを設定する。
Call d3dDevice.SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE)
Call d3dDevice.SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE)
Call d3dDevice.SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT)