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 |
|
| Bibliothek |
|