다음을 통해 공유


ID3DXPRTEngine::ComputeSS 메서드

ID3DXPRTEngine::SetMeshMaterials에서 설정한 재질 속성을 사용하여 하위 표면 분산에서 발생하는 원본 광채를 계산합니다. 이 메서드는 메시 개체의 꼭짓점당 정의된 재질에만 사용할 수 있습니다.

구문

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

매개 변수

pDataIn [in]

형식: LPD3DXPRTBUFFER

이전 라이트 바운스의 3D 개체를 나타내는 입력 ID3DXPRTBuffer 개체에 대한 포인터입니다. 이 입력 버퍼에는 시뮬레이션에 할당된 적절한 수의 색 채널이 있어야 합니다.

pDataOut [in, out]

형식: LPD3DXPRTBUFFER

하위 표면 분산 조명의 단일 바운스를 모델링하는 출력 ID3DXPRTBuffer 개체에 대한 포인터입니다. 이 출력 버퍼에는 시뮬레이션에 할당된 적절한 수의 색 채널이 있어야 합니다.

pDataTotal [in, out]

형식: LPD3DXPRTBUFFER

모든 이전 pDataOut 출력의 실행 합계인 선택적 ID3DXPRTBuffer 개체에 대한 포인터입니다. NULL일 수 있습니다.

반환 값

형식: HRESULT

메서드가 성공하면 반환 값이 D3D_OK. 메서드가 실패하면 반환 값은 D3DERR_INVALIDCALL, E_OUTOFMEMORY 중 하나일 수 있습니다.

설명

하위 표면 분산을 모델링하려면 ID3DXPRTEngine::ComputeDirectLighting 메서드가 호출된 후 각 광원 바운스에 대해 이 메서드를 호출합니다.

다음 호출 시퀀스를 사용하여 하위 표면 분산을 모델링합니다.

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;

이 메서드의 출력에는 albedo가 포함되지 않으며 들어오는 표시등만 시뮬레이터에 통합됩니다. albedo를 곱하지 않으면 원본 광채보다 더 미세한 크기로 albedo 변형을 모델링하여 압축에서 보다 정확한 결과를 얻을 수 있습니다.

ID3DXPRTEngine::MultiplyAlbedo를 호출하여 사전 계산된 각 PRT(Radiance Transfer) 벡터에 albedo를 곱합니다.

요구 사항

요구 사항
헤더
D3DX9Mesh.h
라이브러리
D3dx9.lib

추가 정보

ID3DXPRTEngine

ID3DXPRTEngine::ComputeBounce