次の方法で共有


ID3DXPRTEngine::ComputeDirectLightingSHGPU

GPU を使用して、光源放射輝度が球面調和 (SH) 近似で表される 3D オブジェクトへの直接ライティングのコントリビューションを計算します。GPU 上でのライティングの計算は、一般に、CPU 上での計算よりもはるかに高速となります。

HRESULT 
ComputeDirectLightingSHGPU(
  LPDIRECT3DDEVICE9 pDevice,
  UINT Flags,
  UINT Order,
  FLOAT ZBias,
  FLOAT ZAngleBias,
  LPD3DXPRTBUFFER pDataOut
);

パラメータ

  • pDevice
    GPU 上でシミュレーションを実行するために使用する IDirect3DDevice9 デバイス オブジェクトへのポインターです。デバイスは、ps_2_0 ピクセル シェーダーをサポートしている必要があります。

        コールバック関数では、GPU シミュレーターが使用する IDirect3DDevice9 デバイス オブジェクトを使用しないでください。

  • Flags
    シャドウ z バッファーの解像度を定義する GPU シミュレーション パラメーターです。D3DXSHGPUSIMOPT の定数値のいずれかを設定する必要があります。高精度なシミュレーションを指定する場合は、D3DXSHGPUSIMOPT_HIGHQUALITY 値を D3DXSHGPUSIMOPT_SHADOWRESxxx のいずれかと組み合わせることができます。

  • Order
    SH 評価の順序です。D3DXSH_MINORDER から D3DXSH_MAXORDER の範囲で指定する必要があります。評価では、Order2 の係数が生成されます。評価の次数は Order - 1 です。

  • ZBias
    法線方向のバイアスです。

  • ZAngleBias
    1 から光線との角度のコサインを減算した値でスケーリングした、法線方向のバイアスです。

  • pDataOut
    ID3DXPRTBuffer オブジェクトへのポインターです。このバッファーは、シミュレーション用に割り当てられた適切な数のカラー チャンネルを持つことが必要です。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_INVALIDCALL、E_OUTOFMEMORY

解説 

このメソッドでは、アルベドはライト信号で乗算されず、入射するライトのみがシミュレーターに組み込まれます。アルベドを乗算しない場合、アルベドの変動を光源放射輝度よりも微細なスケールでモデリングすることができ、それによって、圧縮の結果がより正確になります。

それぞれの事前演算済み放射輝度伝播 (PRT) ベクトルをアルベドで乗算するには、ID3DXPRTEngine::MultiplyAlbedo を呼び出します。

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容