Método ID3DXPRTEngine::ComputeSS

Calcula la radiación de origen resultante de la dispersión de subsurface, utilizando propiedades de material establecidas por ID3DXPRTEngine::SetMeshMaterials. Este método solo se puede usar para materiales definidos por vértice en un objeto de malla.

Sintaxis

HRESULT ComputeSS(
  [in]      LPD3DXPRTBUFFER pDataIn,
  [in, out] LPD3DXPRTBUFFER pDataOut,
  [in, out] LPD3DXPRTBUFFER pDataTotal
);

Parámetros

pDataIn [in]

Tipo: LPD3DXPRTBUFFER

Puntero a un objeto ID3DXPRTBuffer de entrada que representa el objeto 3D del rebote de luz anterior. Este búfer de entrada debe tener asignado el número adecuado de canales de color para la simulación.

pDataOut [in, out]

Tipo: LPD3DXPRTBUFFER

Puntero a un objeto ID3DXPRTBuffer de salida que modela un solo rebote de la luz dispersa por subsurface. Este búfer de salida debe tener asignado el número adecuado de canales de color para la simulación.

pDataTotal [in, out]

Tipo: LPD3DXPRTBUFFER

Puntero a un objeto ID3DXPRTBuffer opcional que es la suma en ejecución de todas las salidas pDataOut anteriores. Puede ser NULL.

Valor devuelto

Tipo: HRESULT

Si el método se ejecuta correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto puede ser uno de los siguientes: D3DERR_INVALIDCALL, E_OUTOFMEMORY.

Comentarios

Para modelar la dispersión de subsurface, llame a este método para cada rebote de luz después de llamar a un método ID3DXPRTEngine::ComputeDirectLighting.

Use la siguiente secuencia de llamada para modelar la dispersión de subsurface.

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 salida de este método no incluye albedo y solo la luz entrante está integrada en el simulador. Al no multiplicar el albedo, puede modelar la variación albedo a una escala más fina que la radiación de origen, lo que produce resultados más precisos de la compresión.

Llame a ID3DXPRTEngine::MultiplyAlbedo para multiplicar cada vector de transferencia radiancia precalulada (PRT) por el albedo.

Requisitos

Requisito Value
Encabezado
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Consulte también

ID3DXPRTEngine

ID3DXPRTEngine::ComputeBounce