次の方法で共有


ID3DXPRTEngine::ComputeSSAdaptive メソッド

ID3DXPRTEngine::SetMeshMaterials によって設定されたアダプティブ サンプリングとマテリアル プロパティを使用して、ソースの放射をサブサーフェススキャッタリングから得られる放射を終了するようにマップする転送ベクトルを計算します。 このメソッドは、事前計算された放射転送 (PRT) 信号をより正確に近似するために、メッシュ上に新しい頂点と面を生成します。 このメソッドは、メッシュ オブジェクトの頂点ごとに定義されたマテリアルにのみ使用できます。

構文

HRESULT ComputeSSAdaptive(
  [in]      LPD3DXPRTBUFFER pDataIn,
  [in]      FLOAT           AdaptiveThresh,
  [in]      FLOAT           MinEdgeLength,
  [in]      UINT            MaxSubdiv,
  [in, out] LPD3DXPRTBUFFER pDataOut,
  [in, out] LPD3DXPRTBUFFER pDataTotal
);

パラメーター

pDataIn [in]

種類: LPD3DXPRTBUFFER

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

AdaptiveThresh [in]

型: FLOAT

メッシュ頂点と面を再分割するために使用する PRT ベクトルのしきい値。 1e-6f 未満の場合は、既定値の 1e-6f が指定されます。

MinEdgeLength [in]

型: FLOAT

アダプティブ サンプリングで生成される顔エッジの最小長。 メソッドが値が小さすぎると判断した場合は、モデルに依存する値が指定されます。

MaxSubdiv [in]

型: UINT

アダプティブ サンプリングで使用される顔のサブディビジョンの最大レベル。 0 の場合、既定値の 4 が指定されます。

pDataOut [in, out]

種類: LPD3DXPRTBUFFER

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

pDataTotal [in, out]

種類: LPD3DXPRTBUFFER

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

戻り値

種類: HRESULT

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

注釈

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

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

ID3DXPRTEngine::MultiplyAlbedo を呼び出して、各 PRT ベクトルに albedo を乗算します。

要件

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

こちらもご覧ください

ID3DXPRTEngine

ID3DXPRTEngine::ComputeBounce

ID3DXPRTEngine::Computess