ID3DXPRTEngine::ComputeSS-Methode

Berechnet die Quellleistung, die sich aus der Streuung der Unterfläche ergibt, mithilfe von Materialeigenschaften, die von ID3DXPRTEngine::SetMeshMaterialsfestgelegt wurden. Diese Methode kann nur für Materialien verwendet werden, die pro Scheitelpunkt in einem Gittermodellobjekt definiert sind.

Syntax

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

Parameter

pDataIn [ In]

Typ: LPD3DXPRTBUFFER

Zeiger auf ein EINGABE-ID3DXPRTBuffer-Objekt, das das 3D-Objekt aus dem vorherigen lichten Hüpfen darstellt. Diesem Eingabepuffer muss die richtige Anzahl von Farbkanälen für die Simulation zugeordnet sein.

pDataOut [ in, out]

Typ: LPD3DXPRTBUFFER

Zeiger auf ein ID3DXPRTBuffer-Ausgabeobjekt, das eine einzelne Abprallfläche des Lichts mit Streufläche modelliert. Diesem Ausgabepuffer muss die richtige Anzahl von Farbkanälen für die Simulation zugeordnet sein.

pDataTotal [ in, out]

Typ: LPD3DXPRTBUFFER

Zeiger auf ein optionales ID3DXPRTBuffer-Objekt, das die laufende Summe aller vorherigen pDataOut-Ausgaben ist. Kann NULL sein.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, lautet der Rückgabewert D3D _ OK. Wenn die Methode fehlschlägt, kann der Rückgabewert einer der folgenden Werte sein: D3DERR _ INVALIDCALL, E _ OUTOFMEMORY.

Bemerkungen

Rufen Sie zum Modellieren der Oberflächensuchfläche diese Methode für jeden Lichtprall auf, nachdem eine ID3DXPRTEngine::ComputeDirectLighting-Methode aufgerufen wurde.

Verwenden Sie die folgende aufrufende Sequenz, um die Streuung von Unterflächen zu modellieren.

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;

Die Ausgabe dieser Methode enthält nicht albedo, und nur eingehendes Licht ist in den Simulator integriert. Indem Sie den Albedo nicht multiplizieren, können Sie albedo-Variationen in einem feineren Maßstab als die Quellleistung modellieren und so genauere Ergebnisse der Komprimierung erzielen.

Rufen Sie ID3DXPRTEngine::MultiplyAlbedo auf, um jeden voraus berechneten PRT-Vektor (Radiance Transfer) mit dem Albedo zu multiplizieren.

Requirements (Anforderungen)

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Weitere Informationen

ID3DXPRTEngine

ID3DXPRTEngine::ComputeButnce