D3DXSHEvalHemisphereLight 関数 (D3DX10.h)
Note
D3DX (D3DX 9、D3DX 10、および D3DX 11) ユーティリティ ライブラリは非推奨であり、Windows ストア アプリではサポートされていません。
Note
この関数を使用する代わりに、 球面調和演算 ライブラリ関数 XMSHEvalHemisphereLight を使用することをお勧めします。
球上の 2 色間の線形補間であるライトを評価します。
構文
HRESULT D3DXSHEvalHemisphereLight(
_In_ UINT Order,
_In_ const D3DXVECTOR3 *pDir,
_In_ D3DXCOLOR Top,
_In_ D3DXCOLOR Bottom,
_In_ FLOAT *pROut,
_In_ FLOAT *pGOut,
_In_ FLOAT *pBOut
);
パラメーター
-
Order [in]
-
型: UINT
球面調和(SH)評価の順序。 D3DXSH_MINORDERからD3DXSH_MAXORDERまでの範囲に含める必要があります。 この評価では、Order² 係数が生成されます。 評価の次数は Order - 1 です。
-
pDir [in]
-
型: const D3DXVECTOR3*
SH基底関数を評価する(x,y,z)半球軸方向ベクトルへのポインター。 「解説」を参照してください。
-
上位 [入力]
-
種類: D3DXCOLOR
空の色。
-
下 [入力]
-
種類: D3DXCOLOR
地面の色。
-
pROut [in]
-
型: FLOAT*
赤成分の出力 SH ベクトルへのポインター。
-
pGOut [in]
-
型: FLOAT*
緑色のコンポーネントの出力 SH ベクトルへのポインター。
-
pBOut [in]
-
型: FLOAT*
青成分の出力 SH ベクトルへのポインター。
戻り値
種類: HRESULT
関数が成功した場合、戻り値はD3D_OK。 関数が失敗した場合、戻り値は D3DERR_INVALIDCALL になります。
解説
補間は、球の表面上ではなく、2 つの点の間で直線的に行われます (つまり、軸が (0,0,1) の場合は、アジムタール角ではなく Z で線形になります)。 結果として得られる球面照明関数は正規化され、シャドウのない完全に拡散したサーフェス上の点と pDir 方向を指す法線によって、値が 1 の終了放射が発生します (上の色が白で、下の色が黒の場合)。 これは非常に単純なモデルで、Top は "空" の強度を表し、Bottom は "地面" の強度を表します。
次の図に示すように、単位半径を持つ球では、θ、右方向の z 軸に関する角度、z からの角度 phi を使用して、方向を指定できます。
次の式は、単位球上のデカルト (x、y、z) と球面 (θ,phi) 座標の関係を示しています。 角度θは0〜2 piの範囲で変化し、phiは0からpiの範囲で変化する。
必要条件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目