This is the documentation for Enlighten.
7.1.2.4. プローブ バウンスの更新
Probe Radiosity
インスタンスを含むシステムは、高レベル ビルド システム内で最適化された経路をとり、ライトマップ データを生成しないようにします。結果として、このシステムには RadSystemCore
がないため、ラジオシティ ソルバーは使用できません。その代わり、すべてのプローブ セットが解決された後、InputLighting
が呼び出される前に新しいプローブ値で ProbeBounceBuffer
を更新する必要があります。次に、この更新された ProbeBounceBuffer
オブジェクトは、DoIndirectInputLighting()
の呼び出しの前に、入力として IndirectInputLighting
パラメーターに渡されます。
低レベル API
プリコンピュートでは、ProbeBounceBuffer
を作成するために必要なデータが生成され、その後で新しいオプションの InputWorkspace RadDataBlock
が利用可能になります。
class InputWorkspace { public: ... /// オプションのプリコンピュートされたデータが Probe Radiosity に使用されます RadDataBlock m_ClusterProbeSampleBounceData; };
以下の API 呼び出しにより、ProbeBounceBuffer
オブジェクトを作成できます。
Geo::u32 GEO_CALL CalcProbeBounceBufferSize(const Enlighten::InputWorkspace* inputWorkspace, Geo::s32 numInterpolants, PrecisionHint::Value precision = PrecisionHint::DEFAULT_PRECISION); Enlighten::ProbeBounceBuffer* GEO_CALL CreateProbeBounceBuffer(void* memory, const Enlighten::InputWorkspace* inputWorkspace, Geo::s32 numInterpolants, PrecisionHint::Value precision=PrecisionHint::DEFAULT_PRECISION);
その後、以下の関数で更新されます。この関数はプローブ値が変更されるたびに呼び出す必要があります。
void GEO_CALL UpdateProbeBounceBuffer( const InputWorkspace* inputWorkspace, Enlighten::ProbeBounceBuffer *probeBounceBuffer, const InterpolationInputSet* interpolationInputs, Geo::s32 numInterpolationInputs, bool recomputeInterpolants);
注: 新しいプローブ セットが内外にストリーミングされるたびに補間箇所を再計算し、InterpolationInputSet
配列を変更する必要があります。