Computes the source radiance resulting from subsurface scattering, using material properties set by ID3DXPRTEngine::SetMeshMaterials. This method can be used only for materials defined per-vertex in a mesh object.
HRESULT ComputeSS( LPD3DXPRTBUFFER pDataIn, LPD3DXPRTBUFFER pDataOut, LPD3DXPRTBUFFER pDataTotal );
If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, E_OUTOFMEMORY.
To model subsurface scattering, call this method for each light bounce after an ID3DXPRTEngine::ComputeDirectLighting method is called.
Use the following calling sequence to model subsurface scattering.
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;
The output of this method does not include albedo, and only incoming light is integrated in the simulator. By not multiplying the albedo, you can model albedo variation at a finer scale than the source radiance, thereby yielding more accurate results from compression.
Call ID3DXPRTEngine::MultiplyAlbedo to multiply each precomputed radiance transfer (PRT) vector by the albedo.
Header: Declared in D3dx9mesh.h.