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
輸入 ID3DXPRTBuffer 物件的指標,代表前一個光線彈跳的 3D 物件。 此輸入緩衝區必須有配置給模擬的適當色彩通道數目。
-
AdaptiveThresh [in]
-
類型: FLOAT
用於細分網格頂點和臉部的 PRT 向量臨界值。 如果小於 1e-6f,則會指定預設值 1e-6f。
-
MinEdgeLength [in]
-
類型: FLOAT
將在調適型取樣中產生的最小臉部邊緣長度。 如果方法判斷值太小,則會指定模型相依值。
-
MaxSubdiv [in]
-
類型: UINT
將在調適型取樣中使用的臉部細分層級上限。 如果為零,則會指定預設值 4。
-
pDataOut [in, out]
-
類型: LPD3DXPRTBUFFER
輸出 ID3DXPRTBuffer 物件的指標,該物件會建立單一子表面散佈光線彈跳的模型。 此輸出緩衝區必須配置給模擬的適當色彩通道數目。
-
pDataTotal [in, out]
-
類型: LPD3DXPRTBUFFER
選擇性 ID3DXPRTBuffer 物件的指標,這是所有先前 pDataOut 輸出的執行總和。 可為 Null。
傳回值
類型: HRESULT
如果方法成功,傳回值會D3D_OK。 如果方法失敗,傳回值可以是下列其中一項:D3DERR_INVALIDCALL,E_OUTOFMEMORY。
備註
若要建立子表面散佈的模型,請在呼叫 ID3DXPRTEngine::ComputeDirectLightingSHAdaptive 方法之後,針對每個光線彈跳呼叫這個方法。
這個方法的輸出不包含 albedo,而且只有傳入光線會整合到模擬器中。 藉由不相乘 albedo,您可以比來源弧度更精細地建立 albedo 變化的模型,藉此從壓縮產生更精確的結果。
呼叫 ID3DXPRTEngine::MultiplyAlbedo 以將每個 PRT 向量乘以 albedo。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱