Metodo ID3DXPRTEngine::ComputeSSAdaptive
Calcola un vettore di trasferimento che esegue il mapping dello radianza di origine all'uscita dalla radiazione risultante dalla dispersione sottosuperforma, usando il campionamento adattivo e le proprietà dei materiali impostate da ID3DXPRTEngine::SetMeshMaterials. Il metodo genera nuovi vertici e visi sulla mesh per approssimare in modo più accurato il segnale di trasferimento diradizione pre-calcolata (PRT). Questo metodo può essere utilizzato solo per i materiali definiti per vertice in un oggetto mesh.
Sintassi
HRESULT ComputeSSAdaptive(
[in] LPD3DXPRTBUFFER pDataIn,
[in] FLOAT AdaptiveThresh,
[in] FLOAT MinEdgeLength,
[in] UINT MaxSubdiv,
[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.
-
AdaptiveThresh [in]
-
Tipo: FLOAT
Soglia per il vettore PRT da usare per suddividere vertici e visi mesh. Se minore di 1e-6f, viene specificato un valore predefinito 1e-6f.
-
MinEdgeLength [in]
-
Tipo: FLOAT
Lunghezza minima del bordo del viso che verrà generata nel campionamento adattivo. Se il metodo determina che il valore è troppo piccolo, viene specificato un valore dipendente dal modello.
-
MaxSubdiv [in]
-
Tipo: UINT
Livello massimo di suddivisione di un viso che verrà usato nel campionamento adattivo. Se zero, viene specificato un valore predefinito pari a 4.
-
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 delle sottosurface, chiamare questo metodo per ogni rimbalzo di luce dopo la chiamata di un metodo ID3DXPRTEngine::ComputeDirectLightingSHAdaptive .
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 PRT per l'albedo.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|
Vedi anche