Condividi tramite


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
D3DX9Mesh.h
Libreria
D3dx9.lib

Vedi anche

ID3DXPRTEngine

ID3DXPRTEngine::ComputeBounce