Metodo ID3DXPRTEngine::ComputeSS
Calcola la luminosità di origine risultante dalla dispersione della sottosurface, usando le proprietà del materiale impostate da ID3DXPRTEngine::SetMeshMaterials. Questo metodo può essere utilizzato solo per i materiali definiti per vertice in un oggetto mesh.
Sintassi
HRESULT ComputeSS(
[in] LPD3DXPRTBUFFER pDataIn,
[in, out] LPD3DXPRTBUFFER pDataOut,
[in, out] LPD3DXPRTBUFFER pDataTotal
);
Parametri
-
pDataIn [in]
-
Tipo: LPD3DXPRTBUFFER
Puntatore a un oggetto ID3DXPRTBuffer di input che rappresenta l'oggetto 3D dal rimbalzo della luce precedente. Questo buffer di input deve avere il numero appropriato di canali di colore allocati per la simulazione.
-
pDataOut [in, out]
-
Tipo: LPD3DXPRTBUFFER
Puntatore a un oggetto ID3DXPRTBuffer di output che modella un singolo rimbalzo della luce a dispersione sottosurface. Questo buffer di output deve avere il numero appropriato di canali di colore allocati per la simulazione.
-
pDataTotal [in, out]
-
Tipo: LPD3DXPRTBUFFER
Puntatore a un oggetto ID3DXPRTBuffer facoltativo che corrisponde alla somma in esecuzione di tutti gli output pDataOut precedenti. Può essere NULL.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, il valore restituito viene D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere uno dei seguenti: D3DERR_INVALIDCALL, E_OUTOFMEMORY.
Commenti
Per modellare la dispersione della sottosurface, chiamare questo metodo per ogni rimbalzo di luce dopo la chiamata di un metodo ID3DXPRTEngine::ComputeDirectLighting.
Usare la sequenza chiamante seguente per modellare la dispersione della sottosupertura.
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;
L'output di questo metodo non include albedo e solo la luce in ingresso è integrata nel simulatore. Non moltiplicando l'albedo, è possibile modellare la variazione albedo a una scala più fine rispetto alla radiazione di origine, ottenendo così risultati più accurati dalla compressione.
Chiamare ID3DXPRTEngine::MultiplyAlbedo per moltiplicare ogni vettore di trasferimento di radianza precompilata (PRT) per l'albedo.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|
Vedi anche