ID3DXPRTEngine::ComputeSS, méthode
Calcule le rayonnement source résultant de la diffusion de sous-surface, à l’aide de propriétés matérielles définies par ID3DXPRTEngine::SetMeshMaterials. Cette méthode ne peut être utilisée que pour les matériaux définis par sommet dans un objet maillage.
Syntaxe
HRESULT ComputeSS(
[in] LPD3DXPRTBUFFER pDataIn,
[in, out] LPD3DXPRTBUFFER pDataOut,
[in, out] LPD3DXPRTBUFFER pDataTotal
);
Paramètres
-
pDataIn [in]
-
Type : LPD3DXPRTBUFFER
Pointeur vers un objet ID3DXPRTBuffer d’entrée qui représente l’objet 3D du rebond lumineux précédent. Ce tampon d’entrée doit avoir le nombre approprié de canaux de couleur alloués pour la simulation.
-
pDataOut [in, out]
-
Type : LPD3DXPRTBUFFER
Pointeur vers un objet ID3DXPRTBuffer de sortie qui modélise un seul rebond de la lumière diffusée en sous-surface. Ce tampon de sortie doit avoir le nombre approprié de canaux de couleur alloués pour la simulation.
-
pDataTotal [in, out]
-
Type : LPD3DXPRTBUFFER
Pointeur vers un objet ID3DXPRTBuffer facultatif qui est la somme en cours d’exécution de toutes les sorties pDataOut précédentes. Peut être NULL.
Valeur retournée
Type : HRESULT
Si la méthode réussit, la valeur de retour est D3D_OK. Si la méthode échoue, la valeur de retour peut être l’une des suivantes : D3DERR_INVALIDCALL, E_OUTOFMEMORY.
Notes
Pour modéliser la diffusion de sous-surface, appelez cette méthode pour chaque rebond de lumière après l’appel d’une méthode ID3DXPRTEngine::ComputeDirectLighting.
Utilisez la séquence d’appel suivante pour modéliser la diffusion de sous-surface.
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;
La sortie de cette méthode n’inclut pas l’albédo, et seule la lumière entrante est intégrée dans le simulateur. En ne multipliant pas l’albédo, vous pouvez modéliser la variation de l’albédo à une échelle plus fine que le rayonnement source, ce qui donne des résultats plus précis de la compression.
Appelez ID3DXPRTEngine::MultiplyAlbedo pour multiplier chaque vecteur de transfert de rayonnement précalculé (PRT) par l’albedo.
Spécifications
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|
Voir aussi