次の方法で共有


D3DXSHEvalSphericalLight 関数 (D3dx9math.h)

球面光を評価し、スペクトル球面調和 (SH) データを返します。

Note

D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは非推奨であり、Windows ストア アプリではサポートされていません。

Note

この関数を使用する代わりに、 球面調和数学 ライブラリ関数 XMSHEval SphericalalLight を使用することをお勧めします。

構文

HRESULT D3DXSHEvalSphericalLight(
  _In_        UINT        Order,
  _In_  const D3DXVECTOR3 *pPos,
  _In_        FLOAT       Radius,
  _In_        FLOAT       RIntensity,
  _In_        FLOAT       GIntensity,
  _In_        FLOAT       BIntensity,
  _Out_       FLOAT       *pROut,
  _Out_       FLOAT       *pGOut,
  _Out_       FLOAT       *pBOut
);

パラメーター

順序 [入力]

型: UINT

SH評価の順序。 D3DXSH_MAXORDERまでのD3DXSH_MINORDERの範囲内である必要があります(両端を含む)。 この評価では、Order² 係数が生成されます。 評価の次数は Order - 1 です。

pPos [in]

型: const D3DXVECTOR3*

ライト位置へのポインター。

半径 [入力]

型: FLOAT

球面光源の半径。

RIntensity [in]

型: FLOAT

光の赤色の強度。

GIntensity [in]

型: FLOAT

光の緑色の強度。

BIntensity [in]

型: FLOAT

光の青色の強度。

pROut [out]

型: FLOAT*

赤いコンポーネントの出力 SH ベクターへのポインター。

pGOut [out]

型: FLOAT*

緑のコンポーネントの出力 SH ベクターへのポインター。

pBOut [out]

型: FLOAT*

青いコンポーネントの出力 SH ベクターへのポインター。

戻り値

型: HRESULT

関数が成功した場合、戻り値はD3D_OK。 関数が失敗した場合、戻り値は D3DERR_INVALIDCALL になります。

解説

球面光を評価し、スペクトル SH データを返します。 ディレクショナル ライトの場合と同様に、ライトの強度の正規化は行われません。そのため、強度を指定するときは注意が必要です。 これにより、3 つのスペクトル サンプルが計算されます。 pROut が返され、 pGOutpBOut が返される場合があります。

次の図に示すように、単位半径を持つ球体では、方向は ta、 右利き方向の z 軸を中心とした角度、φ は z からの角度で指定できます。

単位半径を持つ球体の図

次の式は、単位球上のデカルト (x, y, z) と球形 (θ, phi) 座標の関係を示しています。 角度θは 0 ~ 2 pi の範囲で変化し、phi は 0 から pi の範囲で変化します。

デカルト座標と球面座標の関係の数式

要件

要件
ヘッダー
D3dx9math.h
ライブラリ
D3dx9.lib

関連項目

数値演算関数

事前計算済みの放射転送 (Direct3D 9)