ID3DXPRTEngine::ComputeSS メソッド

ID3DXPRTEngine::SetMeshMaterials によって設定されたマテリアル プロパティを使用して、サブサーフェス スキャッタリングによって得られるソースの放射輝度を計算します。 このメソッドは、メッシュ オブジェクトの頂点ごとに定義されたマテリアルにのみ使用できます。

構文

HRESULT ComputeSS(
  [in]      LPD3DXPRTBUFFER pDataIn,
  [in, out] LPD3DXPRTBUFFER pDataOut,
  [in, out] LPD3DXPRTBUFFER pDataTotal
);

パラメーター

pDataIn [in]

種類: LPD3DXPRTBUFFER

前のライト バウンスからの 3D オブジェクトを表す入力 ID3DXPRTBuffer オブジェクトへのポインター。 この入力バッファーには、シミュレーションに適切な数のカラー チャネルが割り当てられている必要があります。

pDataOut [in, out]

種類: LPD3DXPRTBUFFER

サブサーフェス散乱ライトの 1 つのバウンスをモデル化する出力 ID3DXPRTBuffer オブジェクトへのポインター。 この出力バッファーには、シミュレーションに割り当てられた適切な数のカラー チャネルが必要です。

pDataTotal [in, out]

種類: LPD3DXPRTBUFFER

以前のすべての pDataOut 出力の実行合計である省略可能な ID3DXPRTBuffer オブジェクトへのポインター。 NULL を指定できます。

戻り値

種類: HRESULT

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

注釈

サブサーフェス スキャッタリングをモデル化するには、ID3DXPRTEngine::ComputeDirectLighting メソッドが呼び出された後に、ライト バウンスごとにこのメソッドを呼び出します。

サブサーフェス スキャッタリングをモデル化するには、次の呼び出しシーケンスを使用します。

LPD3DXPRTBUFFER pDataA, pDataB, pDataC; // initialization
ID3DXPRTEngine* m_pPRTEngine;
    
hr = m_pPRTEngine->ComputeDirectLightingSH( SHOrder, pDataA );
    
// *pDataC should be set to zero. The ComputeSS call will add together the    
// direct lighting results from pDataA for non-subsurface scattering elements   
// and subsurface scattering results for the subsurface scattering elements.
    
hr = m_pPRTEngine->ComputeSS( pDataA, pDataB, pDataC );
if ( FAILED( hr ) ) goto Exit;

このメソッドの出力には albedo は含まれていないので、シミュレーターには入力ライトのみが統合されます。 アルベドを乗算しないことで、アルベドの変動をソース放射よりも細かいスケールでモデル化できるため、圧縮によるより正確な結果が得られます。

ID3DXPRTEngine::MultiplyAlbedo を呼び出して、事前計算済みの各放射転送 (PRT) ベクトルに albedo を乗算します。

要件

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

こちらもご覧ください

ID3DXPRTEngine

ID3DXPRTEngine::ComputeBounce