This is the documentation for Enlighten.
class Enlighten CpuUpdateManager
class Enlighten::CpuUpdateManager
└>Enlighten::BaseUpdateManager
└>Enlighten::IUpdateManager
└>Geo::IGeoReleasable
Base class update managers for Enlighten that perform updates on the CPU, and aren't blocking the rendering thread.
Functions
Name | Description |
---|---|
AllocateCubeMap(const RadCubeMapCore *, IGpuTexture *) | Allocate a cube map. This will add the cube map to the update manager's list but it must be separately added to the worker's copy via EnqueueAddCubeMap(). |
AllocateCubeMap(const RadCubeMapCore *, IGpuTexture *) | Allocate a cube map object. |
AllocateCubeMapInternal() | Implementation-specific object allocator. |
AllocateCubeMapInternal() | Implementation-specific object allocator. |
AllocateDynamicObject(const Enlighten::DynamicObject &) | Allocate a dynamic object. This will add the object to the update manager's list but it must be separately added to the worker's copy via EnqueueAddDynamicObject. |
AllocateDynamicObject(const Enlighten::DynamicObject &) | Allocate a dynamic object. |
AllocateDynamicObject(const Enlighten::DynamicObject &, bool) | Allocate a dynamic object. This will add the object to the update manager's list but it must be separately added to the worker's copy via EnqueueAddDynamicObject. |
AllocateDynamicObjectInternal(const DynamicObject &) | Implementation-specific object allocator. |
AllocateDynamicObjectInternal(const DynamicObject &) | Implementation-specific object allocator. |
AllocateProbeSet(const RadProbeSetCore *, bool, Enlighten::eSHOrder, RawBuffer) | Allocate a probe set object. |
AllocateProbeSet(const RadProbeSetCore *, bool, Enlighten::eSHOrder, RawBuffer) | Allocate a probe set. This will add the probe set to the update manager's list but it must be separately added to the worker's copy via EnqueueAddProbeSet. |
AllocateProbeSet(const RadProbeSetCore *, bool, const Geo::v128 *, Enlighten::eSHOrder, RawBuffer) | Allocate a probe set. This will add the probe set to the update manager's list but it must be separately added to the worker's copy via EnqueueAddProbeSet. |
AllocateProbeSetImpl(const RadProbeSetCore *, bool, bool, const Geo::v128 *, Enlighten::eSHOrder, RawBuffer) | Allocate a probe set. This will add the probe set to the update manager's list but it must be separately added to the worker's copy via EnqueueAddProbeSet. |
AllocateProbeSetInternal() | Implementation-specific object allocator. |
AllocateProbeSetInternal() | Implementation-specific object allocator. |
AllocateStaticProbeSet(const RadProbeSetCore *, bool, Enlighten::eSHOrder, RawBuffer) | Allocate a static probe set. |
AllocateStaticProbeSet(const RadProbeSetCore *, bool, Enlighten::eSHOrder, RawBuffer) | Allocate a probe set object that is not solved at runtime. |
AllocateStaticSystem(Geo::GeoGuid, InputLightingBuffer *, Geo::s32) | Allocate a static system. This will add the system to the update manager's list of systems but it must separately be added to the worker's copy via EnqueueAddSystem. |
AllocateStaticSystem(Geo::GeoGuid, InputLightingBuffer *, Geo::s32) | Allocate a radiosity system where the lighting does not change at runtime. |
AllocateStaticSystem(Geo::GeoGuid, InputLightingBuffer *) | Allocate a radiosity system where the lighting does not change at runtime. |
AllocateSystem(const InputWorkspace *, const PrecomputedVisibilityData *, Geo::s32) | Allocate a radiosity system. |
AllocateSystem(const RadSystemCore *, const InputWorkspace *, const PrecomputedVisibilityData *, IGpuTexture *, Geo::s32) | Allocate a radiosity system. |
AllocateSystem(const RadSystemCore *, const InputWorkspace *, const PrecomputedVisibilityData *, IGpuTexture *) | Allocate a radiosity system. |
AllocateSystem(const InputWorkspace *, const PrecomputedVisibilityData *, Geo::s32) | Allocate a system. |
AllocateSystem(const InputWorkspace *, const PrecomputedVisibilityData *) | Allocate a radiosity system. |
AllocateSystem(const RadSystemCore *, const InputWorkspace *, const PrecomputedVisibilityData *, IGpuTexture *, Geo::s32) | Allocate a radiosity system. |
AllocateSystemInternal() | Implementation-specific object allocator. |
AllocateSystemInternal() | Implementation-specific object allocator. |
AllocateSystemMemory(Geo::GeoGuid) | Allocates system memory. |
AllocateSystemSolutionSpace(const RadSystemCore *) | Allocate the solution space, which contains the textures and memory for the output, for a system. |
AllocateSystemSolutionSpace(const RadSystemCore *) | Allocate the solution space, which contains the textures and memory for the output, for a system. |
AllocateSystemSolutionSpace(const RadSystemCore *, IGpuTexture *) | Allocate the solution space, which contains the textures and memory for the output, for a system. |
AllocateSystemSolutionSpace(const RadSystemCore *, IGpuTexture *) | Allocate the solution space, which contains the textures and memory for the output, for a system. |
AllocateSystemSolutionSpace(const RadSystemCore *, IGpuTexture *, eOutputFormat) | Allocate the solution space, which contains the textures and memory for the output, for a system. |
AllocateSystemSolutionSpaceInternal(const RadSystemCore *, IGpuTexture *) | Allocates a system solution space. |
AllocateSystemSolutionSpaceInternal(const RadSystemCore *, IGpuTexture *) | Allocates a system solution space. |
BaseUpdateManager(const UpdateManagerProperties &, const ILogHandler *) | Base class constructor. |
Clear() | Wait until asynchronous processing has finished, then remove all objects from the udpate manager. |
Clear() | Wait until asynchronous processing has finished, then remove all objects from the update manager. |
Clear() | Remove all objects from the update manager and free all associated memory. |
CpuUpdateManager(const UpdateManagerProperties &, const ILogHandler *) | Protected constructor. Use the Create function of a derived class. |
DestroyAllObjects() | Destroy all objects. |
DestroyObjects() | Destroy objects marked for deletion by worker thread. |
DetachCubeMap(Geo::GeoGuid) | Advanced: remove a cube map from the render thread-side list, prior to its removal. |
DetachCubeMap(Geo::GeoGuid) | Advanced: remove a cube map from the render thread-side list, prior to its removal. |
DetachDynamicObject(Geo::GeoGuid) | Advanced: remove a dynamic object from the render thread-side list, prior to its removal. |
DetachDynamicObject(Geo::GeoGuid) | Advanced: remove a dynamic object from the render thread-side list, prior to its removal. |
DetachProbeSet(Geo::GeoGuid) | Advanced: remove a probe set from the render thread-side system list, prior to its removal. |
DetachProbeSet(Geo::GeoGuid) | Advanced: remove a probe set from the render thread-side list, prior to its removal. |
DetachProbeSet(Geo::GeoGuid) | Advanced: remove a probe set from the render thread-side list, prior to its removal. |
DetachSystem(Geo::GeoGuid) | Advanced: remove a system from the render thread-side system list, prior to its removal. |
DetachSystem(Geo::GeoGuid) | Advanced: remove a system from the render thread-side system list, prior to its removal. |
EnqueueAddCubeMap(BaseCubeMap *) | Add a previously allocated cube map to the worker's list. |
EnqueueAddCubeMap(BaseCubeMap *) | Add a previously allocated cube map to the worker's list. |
EnqueueAddDynamicObject(BaseDynamicObject *) | Add a previously allocated dynamic object to the worker's list. |
EnqueueAddDynamicObject(BaseDynamicObject *) | Add a previously allocated dynamic object to the worker's list. |
EnqueueAddProbeSet(BaseProbeSet *) | Add a previously allocated probe set to the worker's list. |
EnqueueAddProbeSet(BaseProbeSet *) | Add a previously allocated probe set to the worker's list. |
EnqueueAddSystem(BaseSystem *) | Add a previously allocated system to the worker's list. |
EnqueueAddSystem(BaseSystem *) | Add a previously allocated system to the worker's list. |
EnqueueCommand(CommandType &&) | Enqueues a command. The command will be executed on the worker thread if one exists, otherwise it will be executed immediately on the calling thread. |
EnqueueReleaseSystemSolutionSpaces(ISystemSolutionSpace *const *, Geo::s32) | Enqueue system solution spaces release. |
EnqueueReleaseSystemSolutionSpaces(ISystemSolutionSpace *const *, Geo::s32) | Enqueue system solution spaces release. |
EnqueueRemoveAllLights() | Removes all lights. |
EnqueueRemoveAllLights() | Removes all lights. |
EnqueueRemoveCubeMap(Geo::GeoGuid, RemovalMode) | Remove or disable updates for a cube map. |
EnqueueRemoveCubeMap(Geo::GeoGuid, RemovalMode) | Remove or disable updates for a cube map. |
EnqueueRemoveDynamicObject(Geo::GeoGuid) | Removes a dynamic object. |
EnqueueRemoveDynamicObject(Geo::GeoGuid) | Removes a dynamic object. |
EnqueueRemoveEmissiveEnvironment(Geo::GeoGuid) | Removes an environment. |
EnqueueRemoveEmissiveEnvironment(Geo::GeoGuid) | Removes an environment. |
EnqueueRemoveLight(Geo::GeoGuid) | Removes a light. |
EnqueueRemoveLight(Geo::GeoGuid) | Removes a light. |
EnqueueRemoveProbeSet(Geo::GeoGuid, RemovalMode) | Remove or disable updates for a probe set. |
EnqueueRemoveProbeSet(Geo::GeoGuid, RemovalMode) | Remove or disable updates for a probe set. |
EnqueueRemoveSystem(Geo::GeoGuid, RemovalMode) | Remove or disable updates for a system. |
EnqueueRemoveSystem(Geo::GeoGuid, RemovalMode) | Remove or disable updates for a system. |
EnqueueRemoveSystemSolutionSpaces(Geo::GeoGuid) | Enqueue system solution spaces remove. |
EnqueueRemoveSystemSolutionSpaces(Geo::GeoGuid) | Enqueue system solution spaces remove. |
EnqueueSetAllUpdateCounters(Geo::s32) | Set the update counters for all systems, probe sets and cube maps in the update manager. |
EnqueueSetAllUpdateCounters(Geo::s32) | Set the update counters for all systems, probe sets and cube maps in the update manager. |
EnqueueSetDoFullSolveNextFrame() | Set the flag which turns off temporal coherence for the next frame and performs a full solve from scratch. |
EnqueueSetDoFullSolveNextFrame() | Set the flag which turns off temporal coherence for the next frame and performs a full solve from scratch. |
EnqueueSetLightBankUpdateCounter(Geo::s32, Geo::s32) | Set the light bank update counter for the given light bank. |
EnqueueSetLightBankUpdateCounter(Geo::s32, Geo::s32) | Set the light bank update counter for the given light bank. |
EnqueueSetObjectParameter(PointerType, void(ObjectType::*)(ParamType), ArgType &&) | Enqueues a command to set an object parameter. |
EnqueueSetProbeSetManager(IProbeSetManager *) | Set the Probe Set Manager object. |
EnqueueSetProbeSetManager(IProbeSetManager *) | Set the Probe Set Manager object. |
EnqueueSetProbeSetTransform(Geo::GeoGuid, const Geo::Matrix &) | Set the world-to-local-space transform for the given probe set. This will trigger a global recomputation of all probe interpolants. |
EnqueueSetProbeSetTransform(Geo::GeoGuid, const Geo::Matrix &) | Set the world-to-local-space transform for the given probe set. This will trigger a global recomputation of all probe interpolants. |
EnqueueSetVisibilityBits(Geo::GeoGuid, Geo::GeoGuid, void *) | Set the visibility data associated to a given (system/cube map, spotlight) pair. |
EnqueueSetVisibilityBits(Geo::GeoGuid, Geo::GeoGuid, void *) | Set the visibility data associated to a given (system/cube map, spotlight) pair. |
EnqueueSetWorkerProperties(const UpdateManagerWorkerProperties &) | Sets the worker's global state. |
EnqueueSetWorkerProperties(const UpdateManagerWorkerProperties &) | Enqueue a change to the worker's global state. |
EnqueueUpdateEmissiveEnvironment(Geo::GeoGuid, Geo::s32, const Geo::v128 *) | Update the environment with the given GUID. If this environment hasn't been updated before it will be added to the update manager. |
EnqueueUpdateEmissiveEnvironment(Geo::GeoGuid, Geo::s32, const Geo::v128 *) | Update the environment with the given GUID. If this environment hasn't been updated before it will be added to the update manager. |
EnqueueUpdateLight(const Geo::GeoGuid &, const LightType &, UpdateLightOptions) | Add the light. |
FlushCommands() | Wait for all commands to be executed before proceeding. This blocks the current thread, potentially for a long time. |
FlushCommands() | Wait until all commands currently in the queue have been executed. |
GetCubeMapTexture(Geo::GeoGuid) | Get the output texture for the cube map texture. |
GetCubeMapTexture(Geo::GeoGuid) | Get the output texture for the cube map texture. |
GetDynamicObjectEnvironmentVisibilityShCoeff(Geo::GeoGuid, Geo::SHCoeff &) | Gets the environment visibility probe output for a given dynamic object. |
GetDynamicObjectEnvironmentVisibilityShCoeff(Geo::GeoGuid, Geo::SHCoeff &) | Gets the environment visibility probe output for a given dynamic object. |
GetDynamicObjectShCoeff(Geo::GeoGuid, Geo::SHCoeff &, Geo::SHCoeff &, Geo::SHCoeff &) | Gets the probe output for a given dynamic object. |
GetDynamicObjectShCoeff(Geo::GeoGuid, Geo::SHCoeff &, Geo::SHCoeff &, Geo::SHCoeff &) | Gets the probe output for a given dynamic object. |
GetInputLightingPrecisionHint() | Gets the precision hint of the input lighting buffer. |
GetNumCubeMaps() | Returns number of cube maps registered with the update manager. |
GetNumCubeMaps() | Returns number of cube maps registered with the update manager. |
GetNumDynamicObjects() | Returns number of dynamic objects registered with the update manager. |
GetNumDynamicObjects() | Returns number of dynamic objects registered with the update manager. |
GetNumProbeSets() | Returns number of probe sets registered with the update manager. |
GetNumProbeSets() | Returns number of probe sets registered with the update manager. |
GetNumSystems() | Returns number of systems registered with the update manager. |
GetNumSystems() | Returns number of systems registered with the update manager. |
GetOutputTexture(Geo::GeoGuid, OutputTextureType) | Gets the output texture of the given type for the given system. |
GetOutputTexture(Geo::GeoGuid, OutputTextureType) | Gets the output texture of the given type for the given system. |
GetPppiRequiredOutputTextures() | Returns information about the required PPPI output textures. |
GetProbeOutput(Geo::GeoGuid, Geo::s32) | Returns the probe output for the given probe set and probe index, or NULL if the probe set produces compressed output. |
GetProbeOutput(Geo::GeoGuid, Geo::s32) | Returns the probe output for the given probe set and probe index, or NULL if the probe set produces compressed output. |
GetProbeOutputIfUpdated(Geo::GeoGuid, Geo::s32 *) | Returns the probe output if the probeset has been updated since this function was last called on it, otherwise NULL. |
GetProbeOutputIfUpdated(Geo::GeoGuid, Geo::s32 *) | Returns the probe output if the probeset has been updated since this function was last called on it, otherwise NULL. |
GetTextureUpdateTicks() | Get the total number of ticks spent updating GPU textures. |
GetTextureUpdateTicks() | Get the total number of ticks spent updating GPU textures. |
GetTextureUpdateTicks() | Get the total number of ticks spent updating GPU textures. |
GetU8ProbeOutput(Geo::GeoGuid, Geo::s32) | Returns the compressed probe output for the given probe set and probe index, or NULL if the probe set produces uncompressed output. |
GetU8ProbeOutput(Geo::GeoGuid, Geo::s32) | Returns the compressed probe output for the given probe set and probe index, or NULL if the probe set produces uncompressed output. |
GetWorldToUvwMatrix(Geo::GeoGuid) | Gets the matrix to transform world space to UVW texture space for a dynamic object. |
GetWorldToUvwMatrix(Geo::GeoGuid) | Gets the matrix to transform world space to UVW texture space for a dynamic object. |
HasCubeMap(Geo::GeoGuid) | Returns true if the update manager has a cube map with this GUID; false if it doesn't. |
HasCubeMap(Geo::GeoGuid) | Returns true if the update manager has a cube map with this GUID; false if it doesn't. |
HasDynamicObject(Geo::GeoGuid) | Returns true if the udpate manager has a dynamic object with this GUID. |
HasDynamicObject(Geo::GeoGuid) | Returns true if the update manager has a dynamic object with this GUID. |
HasProbeSet(Geo::GeoGuid) | Returns true if the update manager has a probe set with this GUID; false if it doesn't. |
HasProbeSet(Geo::GeoGuid) | Returns true if the update manager has a probe set with this GUID; false if it doesn't. |
HasSystem(Geo::GeoGuid) | Returns true if the update manager has a system with this GUID; false if it doesn't. |
HasSystem(Geo::GeoGuid) | Returns true if the update manager has a system with this GUID; false if it doesn't. |
IsCubeMapStatic(Geo::GeoGuid) | Returns true if the cube map update counter is 0 (ie no updates are pending for this cube map). |
IsProbeSetStatic(Geo::GeoGuid) | Returns true if the probe set update counter is 0 (ie no updates are pending for this probe set). |
IsSystemStatic(Geo::GeoGuid) | Returns true if the system update counter is 0 (ie no updates are pending for this system). |
IsUpdateLimited() | Are we at the limit of the number of allowed enqueued updates, and therefore the update rate is throttled? |
IsUpdateLimited() | Are we at the limit of the number of allowed enqueued updates, and therefore the update rate is throttled? |
LoadInputLightingBuffer(Geo::GeoGuid, const char *) | Loads light buffer dump data into the given system's input lighting buffer. |
LoadProbeTaskDump(Geo::GeoGuid, const char *) | Loads probe task dump data into the given probe set's output buffer. |
LoadRadTaskDump(Geo::GeoGuid, const char *) | Debug functions. |
Release() | Destroys the update manager and all the resources it owns. |
Release() | Destroys the update manager and all the resources it owns. |
Release() | Free this object that was created within the Enlighten libraries. |
RequiresVisibilityDataOnCpu() | Returns true for Update Managers that require spotlight visibility to be copied to the CPU before it can be used. |
RequiresVisibilityDataOnCpu() | Returns true for Update Managers that require spotlight visibility to be copied to the CPU before it can be used. |
SetGpuTexture(Geo::GeoGuid, ProbeVolumeOutputTextureType, IGpuTexture *) | Sets an output texture for the given dynamic object. |
SetGpuTexture(Geo::GeoGuid, OutputTextureType, IGpuTexture *) | Sets an output texture for the given system. |
SetGpuTexture(Geo::GeoGuid, IGpuTexture *) | Sets an output texture for the given cube map. |
SetPppiOutputWorkspace(const PppiOutputWorkspace &, IPppiTextureUpdateHandler *) | Use the provided PPPI output textures. |
StopWorking() | Tell the worker thread to quit and wait until it does. |
StopWorking() | Wait for all asynchronous processing to finish, then quit the worker thread(s), if any. |
Update() | The main update function. |
Update() | The main update function. This should be called once per frame from the rendering thread. |
UpdateGpuTextures() | Update the GPU textures of all objects. |
UpdatePppi(const Geo::v128 &, const IViewVolumeIntersector *, float) | Update PPPI indirection texture based on the view origin. |
UpdatePppiBorder(const PppiIrradiance &) | Update the lighting for parts of the PPPI volume not covered by any probe set. |
Variables
Name | Description |
---|---|
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseCubeMap > m_CubeMapArray | Cube map GUID to data mapping. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseDynamicObject > m_DynamicObjectArray | Dynamic object GUID to data mapping. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseProbeSet > m_ProbeSetArray | ProbeSet GUID to data mapping. |
UpdateManagerProperties m_Properties | Properties which are set on creation. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseSystem > m_SystemArray | These object arrays are render thread copies - they are updated on object creation and destruction. |
IUpdateManagerWorker * m_Worker | The radiosity worker! |
virtual BaseCubeMap* Enlighten::BaseUpdateManager::AllocateCubeMap
public: virtual BaseCubeMap * AllocateCubeMap
(
const RadCubeMapCore * coreData,
IGpuTexture * outputTexture
)
Allocate a cube map. This will add the cube map to the update manager's list but it must be separately added to the worker's copy via EnqueueAddCubeMap().
virtual BaseCubeMap* Enlighten::IUpdateManager::AllocateCubeMap
public: BaseCubeMap * AllocateCubeMap
(
const RadCubeMapCore * coreData,
IGpuTexture * outputTexture
)
Allocate a cube map object.
Pointer parameters that are are owned by the caller may be read any time after EnqueueAddCubeMap and before the completion of the async RemoveCubeMap command.
Parameters
[in] | coreData | The runtime data that represents the cube map. |
[in] | coreData | The radiosity core data for the cubemap. Does not take ownership. |
[in] | outputTexture | The cubemap output texture. Takes ownership. |
virtual BaseCubeMap* Enlighten::BaseUpdateManager::AllocateCubeMapInternal
protected: BaseCubeMap * AllocateCubeMapInternal()
Implementation-specific object allocator.
virtual BaseCubeMap* Enlighten::CpuUpdateManager::AllocateCubeMapInternal
protected: virtual BaseCubeMap * AllocateCubeMapInternal()
Implementation-specific object allocator.
virtual BaseDynamicObject* Enlighten::BaseUpdateManager::AllocateDynamicObject
public: virtual BaseDynamicObject * AllocateDynamicObject
(
const Enlighten::DynamicObject & dynamicObjectDesc
)
Allocate a dynamic object. This will add the object to the update manager's list but it must be separately added to the worker's copy via EnqueueAddDynamicObject.
virtual BaseDynamicObject* Enlighten::IUpdateManager::AllocateDynamicObject
public: BaseDynamicObject * AllocateDynamicObject
(
const Enlighten::DynamicObject & dynamicObjectDesc
)
Allocate a dynamic object.
This will add the object to the update manager's list but it must be separately added to the worker's copy via EnqueueAddDynamicObject.
Parameters
[in] | dynamicObjectDesc | The dynamic object to add |
virtual BaseDynamicObject* Enlighten::BaseUpdateManager::AllocateDynamicObject
public: virtual BaseDynamicObject * AllocateDynamicObject
(
const Enlighten::DynamicObject & dynamicObjectDesc,
bool useVolumeTextures
)
Allocate a dynamic object. This will add the object to the update manager's list but it must be separately added to the worker's copy via EnqueueAddDynamicObject.
virtual BaseDynamicObject* Enlighten::CpuUpdateManager::AllocateDynamicObjectInternal
protected: virtual BaseDynamicObject * AllocateDynamicObjectInternal
(
const DynamicObject & objectDesc
)
Implementation-specific object allocator.
virtual BaseDynamicObject* Enlighten::BaseUpdateManager::AllocateDynamicObjectInternal
protected: BaseDynamicObject * AllocateDynamicObjectInternal
(
const DynamicObject & objectDesc
)
Implementation-specific object allocator.
virtual BaseProbeSet* Enlighten::IUpdateManager::AllocateProbeSet
public: BaseProbeSet * AllocateProbeSet
(
const RadProbeSetCore * coreData,
bool useU8Output,
Enlighten::eSHOrder shOrder,
RawBuffer output
)
Allocate a probe set object.
Pointer parameters that are are owned by the caller may be read (and output may be written) any time after EnqueueAddProbeSet and before the completion of the async RemoveProbeSet command.
Parameters
[in] | coreData | The runtime data that represents the probe set. Owned by the caller. |
[in] | useU8Output | When true, this probe set is solved to compressed probe output format. This may reduce lighting quality and introduce artifacts. |
[in] | shOrder | The number of spherical harmonic coefficients in the solved output for this probe set. |
[in] | output | The (optional) output buffer. Owned by the caller. This buffer may be written to any time after AddProbeSet and before the completion of the async RemoveProbeSet command. |
virtual BaseProbeSet* Enlighten::CpuUpdateManager::AllocateProbeSet
public: virtual BaseProbeSet * AllocateProbeSet
(
const RadProbeSetCore * coreData,
bool useU8Output,
Enlighten::eSHOrder shOrder,
RawBuffer output
)
Allocate a probe set. This will add the probe set to the update manager's list but it must be separately added to the worker's copy via EnqueueAddProbeSet.
virtual BaseProbeSet* Enlighten::CpuUpdateManager::AllocateProbeSet
public: virtual BaseProbeSet * AllocateProbeSet
(
const RadProbeSetCore * coreData,
bool useU8Output,
const Geo::v128 * probePositions,
Enlighten::eSHOrder shOrder,
RawBuffer output
)
Allocate a probe set. This will add the probe set to the update manager's list but it must be separately added to the worker's copy via EnqueueAddProbeSet.
BaseProbeSet* Enlighten::BaseUpdateManager::AllocateProbeSetImpl
public: BaseProbeSet * AllocateProbeSetImpl
(
const RadProbeSetCore * coreData,
bool isStatic,
bool useU8Output,
const Geo::v128 * probePositions,
Enlighten::eSHOrder shOrder,
RawBuffer output
)
Allocate a probe set. This will add the probe set to the update manager's list but it must be separately added to the worker's copy via EnqueueAddProbeSet.
virtual BaseProbeSet* Enlighten::CpuUpdateManager::AllocateProbeSetInternal
protected: virtual BaseProbeSet * AllocateProbeSetInternal()
Implementation-specific object allocator.
virtual BaseProbeSet* Enlighten::BaseUpdateManager::AllocateProbeSetInternal
protected: BaseProbeSet * AllocateProbeSetInternal()
Implementation-specific object allocator.
virtual BaseProbeSet* Enlighten::CpuUpdateManager::AllocateStaticProbeSet
public: virtual BaseProbeSet * AllocateStaticProbeSet
(
const RadProbeSetCore * coreData,
bool useU8Output,
Enlighten::eSHOrder shOrder,
RawBuffer output
)
Allocate a static probe set.
virtual BaseProbeSet* Enlighten::IUpdateManager::AllocateStaticProbeSet
public: BaseProbeSet * AllocateStaticProbeSet
(
const RadProbeSetCore * coreData,
bool useU8Output,
Enlighten::eSHOrder shOrder,
RawBuffer output
)
Allocate a probe set object that is not solved at runtime.
Pointer parameters that are are owned by the caller may be read (and output may be written) any time after EnqueueAddProbeSet and before the completion of the async RemoveProbeSet command.
Parameters
[in] | coreData | The runtime data that represents the probe set. Owned by the caller. |
[in] | useU8Output | When true, this probe set is solved to compressed probe output format. This may reduce lighting quality and introduce artifacts. |
[in] | shOrder | The number of spherical harmonic coefficients in the solved output for this probe set. |
[in] | output | The (optional) output buffer. Owned by the caller. This buffer may be written to any time after AddProbeSet and before the completion of the async RemoveProbeSet command. |
virtual BaseSystem* Enlighten::CpuUpdateManager::AllocateStaticSystem
public: virtual BaseSystem * AllocateStaticSystem
(
Geo::GeoGuid systemId,
InputLightingBuffer * inputLightingBuffer,
Geo::s32 lightChannels
)
Allocate a static system. This will add the system to the update manager's list of systems but it must separately be added to the worker's copy via EnqueueAddSystem.
virtual BaseSystem* Enlighten::IUpdateManager::AllocateStaticSystem
public: BaseSystem * AllocateStaticSystem
(
Geo::GeoGuid systemId,
InputLightingBuffer * inputLightingBuffer,
Geo::s32 lightChannels
)
Allocate a radiosity system where the lighting does not change at runtime.
A saved InputLightingBuffer ensures that the lighting bounces into systems which depend on this system. Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command.
Parameters
[in] | systemId | The unique ID of the system. Provide the same value to RemoveSystem. |
[in] | inputLightingBuffer | The (static) input lighting for the system. Owned by the caller. |
[in] | lightChannels | Only lights which have the same light channel bit set are used as input for this system. |
BaseSystem* Enlighten::IUpdateManager::AllocateStaticSystem
public: BaseSystem * AllocateStaticSystem
(
Geo::GeoGuid systemId,
InputLightingBuffer * inputLightingBuffer
)
Allocate a radiosity system where the lighting does not change at runtime.
A saved InputLightingBuffer ensures that the lighting bounces into systems which depend on this system. Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command.
Parameters
[in] | systemId | The unique ID of the system. Provide the same value to RemoveSystem. |
[in] | inputLightingBuffer | The (static) input lighting for the system. Owned by the caller. |
virtual BaseSystem* Enlighten::IUpdateManager::AllocateSystem
public: BaseSystem * AllocateSystem
(
const InputWorkspace * inputWorkspace,
const PrecomputedVisibilityData * visibilityData,
Geo::s32 lightChannels
)
Allocate a radiosity system.
Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command.
Parameters
[in] | inputWorkspace | The input workspace data for this system. Owned by the caller. |
[in] | visibilityData | The directional visibility data for this system. Owned by the caller. |
[in] | lightChannels | Only lights which have the same light channel bit set are used as input for this system. |
virtual BaseSystem* Enlighten::IUpdateManager::AllocateSystem
public: BaseSystem * AllocateSystem
(
const RadSystemCore * coreData,
const InputWorkspace * inputWorkspace,
const PrecomputedVisibilityData * visibilityData,
IGpuTexture * outputTextures,
Geo::s32 lightChannels
)
Allocate a radiosity system.
Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command. Takes ownership of the output textures.
BaseSystem* Enlighten::IUpdateManager::AllocateSystem
public: BaseSystem * AllocateSystem
(
const RadSystemCore * coreData,
const InputWorkspace * inputWorkspace,
const PrecomputedVisibilityData * visibilityData,
IGpuTexture * outputTextures
)
Allocate a radiosity system.
Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command. Takes ownership of the output textures.
virtual BaseSystem* Enlighten::BaseUpdateManager::AllocateSystem
public: virtual BaseSystem * AllocateSystem
(
const InputWorkspace * inputWorkspace,
const PrecomputedVisibilityData * visibilityData,
Geo::s32 lightChannels
)
Allocate a system.
This will add the system to the update manager's list of systems but it must separately be added to the worker's copy via EnqueueAddSystem. If this is a lightmap system, at least one solution space needs to be set using SetSolutionSpace() or SetSolutionSpaces(), otherwise it will not solve the lightmap.
BaseSystem* Enlighten::IUpdateManager::AllocateSystem
public: BaseSystem * AllocateSystem
(
const InputWorkspace * inputWorkspace,
const PrecomputedVisibilityData * visibilityData
)
Allocate a radiosity system.
Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command.
Parameters
[in] | inputWorkspace | The input workspace data for this system. Owned by the caller. |
[in] | visibilityData | The directional visibility data for this system. Owned by the caller. |
virtual BaseSystem* Enlighten::BaseUpdateManager::AllocateSystem
public: virtual BaseSystem * AllocateSystem
(
const RadSystemCore * coreData,
const InputWorkspace * inputWorkspace,
const PrecomputedVisibilityData * visibilityData,
IGpuTexture * outputTextures,
Geo::s32 lightChannels
)
Allocate a radiosity system.
Pointer parameters that are are owned by the caller may be read any time after EnqueueAddSystem and before the completion of the async RemoveSystem command. Takes ownership of the output textures.
virtual BaseSystem* Enlighten::CpuUpdateManager::AllocateSystemInternal
protected: virtual BaseSystem * AllocateSystemInternal()
Implementation-specific object allocator.
virtual BaseSystem* Enlighten::BaseUpdateManager::AllocateSystemInternal
protected: BaseSystem * AllocateSystemInternal()
Implementation-specific object allocator.
virtual BaseSystem* Enlighten::BaseUpdateManager::AllocateSystemMemory
protected: virtual BaseSystem * AllocateSystemMemory
(
Geo::GeoGuid guid
)
Allocates system memory.
virtual ISystemSolutionSpace* Enlighten::IUpdateManager::AllocateSystemSolutionSpace
public: ISystemSolutionSpace * AllocateSystemSolutionSpace
(
const RadSystemCore * coreData
)
Allocate the solution space, which contains the textures and memory for the output, for a system.
This version requires an IGpuTextureAllocator to have been set on the update manager properties.
virtual ISystemSolutionSpace* Enlighten::BaseUpdateManager::AllocateSystemSolutionSpace
public: virtual ISystemSolutionSpace * AllocateSystemSolutionSpace
(
const RadSystemCore * coreData
)
Allocate the solution space, which contains the textures and memory for the output, for a system.
This version requires an IGpuTextureAllocator to have been set on the update manager properties.
virtual ISystemSolutionSpace* Enlighten::BaseUpdateManager::AllocateSystemSolutionSpace
public: virtual ISystemSolutionSpace * AllocateSystemSolutionSpace
(
const RadSystemCore * coreData,
IGpuTexture * outputTextures
)
Allocate the solution space, which contains the textures and memory for the output, for a system.
This version requires the customer allocated textures to be provided.
virtual ISystemSolutionSpace* Enlighten::IUpdateManager::AllocateSystemSolutionSpace
public: ISystemSolutionSpace * AllocateSystemSolutionSpace
(
const RadSystemCore * coreData,
IGpuTexture * outputTextures
)
Allocate the solution space, which contains the textures and memory for the output, for a system.
This version requires the customer allocated textures to be provided.
ISystemSolutionSpace* Enlighten::IUpdateManager::AllocateSystemSolutionSpace
public: ISystemSolutionSpace * AllocateSystemSolutionSpace
(
const RadSystemCore * coreData,
IGpuTexture * outputTextures,
eOutputFormat irradianceTextureFormat
)
Allocate the solution space, which contains the textures and memory for the output, for a system.
This version requires the customer allocated textures to be provided. Deprecated
The irradianceTextureFormat argument is deprecated.
virtual ISystemSolutionSpace* Enlighten::CpuUpdateManager::AllocateSystemSolutionSpaceInternal
protected: virtual ISystemSolutionSpace * AllocateSystemSolutionSpaceInternal
(
const RadSystemCore * coreData,
IGpuTexture * outputTextures
)
Allocates a system solution space.
virtual ISystemSolutionSpace* Enlighten::BaseUpdateManager::AllocateSystemSolutionSpaceInternal
protected: ISystemSolutionSpace * AllocateSystemSolutionSpaceInternal
(
const RadSystemCore * coreData,
IGpuTexture * outputTextures
)
Allocates a system solution space.
Enlighten::BaseUpdateManager::BaseUpdateManager
public: BaseUpdateManager
(
const UpdateManagerProperties & properties,
const ILogHandler * logger
)
Base class constructor.
Parameters
[in] | properties | The UpdateManagerProperties class contains parameters common to all implementations. |
[in] | logger | This is attached to the GeoAttachLogger/GeoDetachLogger API in order to connect up the ILogHandler to all Enlighten messages. |
virtual void Enlighten::BaseUpdateManager::Clear
public: virtual void Clear()
Wait until asynchronous processing has finished, then remove all objects from the udpate manager.
virtual void Enlighten::IUpdateManager::Clear
public: void Clear()
Wait until asynchronous processing has finished, then remove all objects from the update manager.
virtual void Enlighten::CpuUpdateManager::Clear
public: virtual void Clear()
Remove all objects from the update manager and free all associated memory.
Enlighten::CpuUpdateManager::CpuUpdateManager
public: CpuUpdateManager
(
const UpdateManagerProperties & properties,
const ILogHandler * logger
)
Protected constructor. Use the Create function of a derived class.
void Enlighten::BaseUpdateManager::DestroyAllObjects
protected: void DestroyAllObjects()
Destroy all objects.
void Enlighten::BaseUpdateManager::DestroyObjects
protected: void DestroyObjects()
Destroy objects marked for deletion by worker thread.
virtual void Enlighten::BaseUpdateManager::DetachCubeMap
public: virtual void DetachCubeMap
(
Geo::GeoGuid cubeMapId
)
Advanced: remove a cube map from the render thread-side list, prior to its removal.
This is automatically performed by EnqueueRemoveCubeMap, so only needs to be called if you are using a custom command to perform the removal.
virtual void Enlighten::IUpdateManager::DetachCubeMap
public: void DetachCubeMap
(
Geo::GeoGuid cubeMapId
)
Advanced: remove a cube map from the render thread-side list, prior to its removal.
This is automatically performed by EnqueueRemoveCubeMap, so only needs to be called if you are using a custom command to perform the removal.
virtual void Enlighten::BaseUpdateManager::DetachDynamicObject
public: virtual void DetachDynamicObject
(
Geo::GeoGuid objectId
)
Advanced: remove a dynamic object from the render thread-side list, prior to its removal.
This is automatically performed by EnqueueRemoveDynamicObject, so only needs to be called if you are using a custom command to perform the removal.
virtual void Enlighten::IUpdateManager::DetachDynamicObject
public: void DetachDynamicObject
(
Geo::GeoGuid objectId
)
Advanced: remove a dynamic object from the render thread-side list, prior to its removal.
This is automatically performed by EnqueueRemoveDynamicObject, so only needs to be called if you are using a custom command to perform the removal.
virtual BaseProbeSet* Enlighten::BaseUpdateManager::DetachProbeSet
public: virtual BaseProbeSet * DetachProbeSet
(
Geo::GeoGuid probeSetId
)
Advanced: remove a probe set from the render thread-side system list, prior to its removal.
This is automatically performed by EnqueueRemoveProbeSet, so only needs to be called if you are using a custom command to perform the removal.
virtual BaseProbeSet* Enlighten::IUpdateManager::DetachProbeSet
public: BaseProbeSet * DetachProbeSet
(
Geo::GeoGuid probeSetId
)
Advanced: remove a probe set from the render thread-side list, prior to its removal.
This is automatically performed by EnqueueRemoveProbeSet, so only needs to be called if you are using a custom command to perform the removal.
BaseProbeSet* Enlighten::CpuUpdateManager::DetachProbeSet
public: virtual BaseProbeSet * DetachProbeSet
(
Geo::GeoGuid probeSetId
)
Advanced: remove a probe set from the render thread-side list, prior to its removal.
virtual void Enlighten::BaseUpdateManager::DetachSystem
public: virtual void DetachSystem
(
Geo::GeoGuid systemId
)
Advanced: remove a system from the render thread-side system list, prior to its removal.
This is automatically performed by EnqueueRemoveSystem, so only needs to be called if you are using a custom command to perform the removal.
virtual void Enlighten::IUpdateManager::DetachSystem
public: void DetachSystem
(
Geo::GeoGuid systemId
)
Advanced: remove a system from the render thread-side system list, prior to its removal.
This is automatically performed by EnqueueRemoveSystem, so only needs to be called if you are using a custom command to perform the removal.
virtual bool Enlighten::BaseUpdateManager::EnqueueAddCubeMap
public: virtual bool EnqueueAddCubeMap
(
BaseCubeMap * cubeMap
)
Add a previously allocated cube map to the worker's list.
virtual bool Enlighten::IUpdateManager::EnqueueAddCubeMap
public: bool EnqueueAddCubeMap
(
BaseCubeMap * cubeMap
)
Add a previously allocated cube map to the worker's list.
virtual bool Enlighten::IUpdateManager::EnqueueAddDynamicObject
public: bool EnqueueAddDynamicObject
(
BaseDynamicObject * object
)
Add a previously allocated dynamic object to the worker's list.
virtual bool Enlighten::BaseUpdateManager::EnqueueAddDynamicObject
public: virtual bool EnqueueAddDynamicObject
(
BaseDynamicObject * object
)
Add a previously allocated dynamic object to the worker's list.
virtual bool Enlighten::IUpdateManager::EnqueueAddProbeSet
public: bool EnqueueAddProbeSet
(
BaseProbeSet * probeSet
)
Add a previously allocated probe set to the worker's list.
virtual bool Enlighten::BaseUpdateManager::EnqueueAddProbeSet
public: virtual bool EnqueueAddProbeSet
(
BaseProbeSet * probeSet
)
Add a previously allocated probe set to the worker's list.
virtual bool Enlighten::IUpdateManager::EnqueueAddSystem
public: bool EnqueueAddSystem
(
BaseSystem * system
)
Add a previously allocated system to the worker's list.
virtual bool Enlighten::BaseUpdateManager::EnqueueAddSystem
public: virtual bool EnqueueAddSystem
(
BaseSystem * system
)
Add a previously allocated system to the worker's list.
void Enlighten::BaseUpdateManager::EnqueueCommand
public: void EnqueueCommand
(
CommandType && command
)
Enqueues a command. The command will be executed on the worker thread if one exists, otherwise it will be executed immediately on the calling thread.
virtual void Enlighten::IUpdateManager::EnqueueReleaseSystemSolutionSpaces
public: void EnqueueReleaseSystemSolutionSpaces
(
ISystemSolutionSpace *const * ,
Geo::s32 count
)
Enqueue system solution spaces release.
This will add the solution spaces to a list of objects to destroy on next update.
virtual void Enlighten::BaseUpdateManager::EnqueueReleaseSystemSolutionSpaces
public: virtual void EnqueueReleaseSystemSolutionSpaces
(
ISystemSolutionSpace *const * solutionSpaces,
Geo::s32 count
)
Enqueue system solution spaces release.
This will add the solution spaces to a list of objects to destroy on next update.
virtual void Enlighten::IUpdateManager::EnqueueRemoveAllLights
public: void EnqueueRemoveAllLights()
Removes all lights.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveAllLights
public: virtual void EnqueueRemoveAllLights()
Removes all lights.
virtual void Enlighten::IUpdateManager::EnqueueRemoveCubeMap
public: void EnqueueRemoveCubeMap
(
Geo::GeoGuid cubeMapId,
RemovalMode removalMode
)
Remove or disable updates for a cube map.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveCubeMap
public: virtual void EnqueueRemoveCubeMap
(
Geo::GeoGuid cubeMapId,
RemovalMode removalMode
)
Remove or disable updates for a cube map.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveDynamicObject
public: virtual void EnqueueRemoveDynamicObject
(
Geo::GeoGuid objectId
)
Removes a dynamic object.
virtual void Enlighten::IUpdateManager::EnqueueRemoveDynamicObject
public: void EnqueueRemoveDynamicObject
(
Geo::GeoGuid objectId
)
Removes a dynamic object.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveEmissiveEnvironment
public: virtual void EnqueueRemoveEmissiveEnvironment
(
Geo::GeoGuid environmentId
)
Removes an environment.
virtual void Enlighten::IUpdateManager::EnqueueRemoveEmissiveEnvironment
public: void EnqueueRemoveEmissiveEnvironment
(
Geo::GeoGuid environmentId
)
Removes an environment.
virtual void Enlighten::IUpdateManager::EnqueueRemoveLight
public: void EnqueueRemoveLight
(
Geo::GeoGuid lightId
)
Removes a light.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveLight
public: virtual void EnqueueRemoveLight
(
Geo::GeoGuid lightId
)
Removes a light.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveProbeSet
public: virtual void EnqueueRemoveProbeSet
(
Geo::GeoGuid probeSetId,
RemovalMode removalMode
)
Remove or disable updates for a probe set.
virtual void Enlighten::IUpdateManager::EnqueueRemoveProbeSet
public: void EnqueueRemoveProbeSet
(
Geo::GeoGuid probeSetId,
RemovalMode removalMode
)
Remove or disable updates for a probe set.
virtual void Enlighten::IUpdateManager::EnqueueRemoveSystem
public: void EnqueueRemoveSystem
(
Geo::GeoGuid systemId,
RemovalMode removalMode
)
Remove or disable updates for a system.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveSystem
public: virtual void EnqueueRemoveSystem
(
Geo::GeoGuid systemId,
RemovalMode removalMode
)
Remove or disable updates for a system.
virtual void Enlighten::IUpdateManager::EnqueueRemoveSystemSolutionSpaces
public: void EnqueueRemoveSystemSolutionSpaces
(
Geo::GeoGuid systemId
)
Enqueue system solution spaces remove.
This will remove all the solution spaces from a system.
virtual void Enlighten::BaseUpdateManager::EnqueueRemoveSystemSolutionSpaces
public: virtual void EnqueueRemoveSystemSolutionSpaces
(
Geo::GeoGuid systemId
)
Enqueue system solution spaces remove.
This will remove all the solution spaces from a system.
virtual void Enlighten::BaseUpdateManager::EnqueueSetAllUpdateCounters
public: virtual void EnqueueSetAllUpdateCounters
(
Geo::s32 count
)
Set the update counters for all systems, probe sets and cube maps in the update manager.
virtual void Enlighten::IUpdateManager::EnqueueSetAllUpdateCounters
public: void EnqueueSetAllUpdateCounters
(
Geo::s32 count
)
Set the update counters for all systems, probe sets and cube maps in the update manager.
virtual void Enlighten::BaseUpdateManager::EnqueueSetDoFullSolveNextFrame
public: virtual void EnqueueSetDoFullSolveNextFrame()
Set the flag which turns off temporal coherence for the next frame and performs a full solve from scratch.
virtual void Enlighten::IUpdateManager::EnqueueSetDoFullSolveNextFrame
public: void EnqueueSetDoFullSolveNextFrame()
Set the flag which turns off temporal coherence for the next frame and performs a full solve from scratch.
virtual void Enlighten::IUpdateManager::EnqueueSetLightBankUpdateCounter
public: void EnqueueSetLightBankUpdateCounter
(
Geo::s32 lightBankId,
Geo::s32 count
)
Set the light bank update counter for the given light bank.
virtual void Enlighten::BaseUpdateManager::EnqueueSetLightBankUpdateCounter
public: virtual void EnqueueSetLightBankUpdateCounter
(
Geo::s32 lightBankId,
Geo::s32 count
)
Set the light bank update counter for the given light bank.
void Enlighten::BaseUpdateManager::EnqueueSetObjectParameter
public: void EnqueueSetObjectParameter
(
PointerType object,
void(ObjectType::*)(ParamType) function,
ArgType && value
)
Enqueues a command to set an object parameter.
ObjectType may be BaseSystem, BaseDynamicObject, BaseCubeMap or BaseProbeSet. IdType may be Geo::GeoGuid or a pointer to the object.
virtual bool Enlighten::IUpdateManager::EnqueueSetProbeSetManager
public: bool EnqueueSetProbeSetManager
(
IProbeSetManager * probeSetManager
)
Set the Probe Set Manager object.
virtual bool Enlighten::BaseUpdateManager::EnqueueSetProbeSetManager
public: virtual bool EnqueueSetProbeSetManager
(
IProbeSetManager * probeSetManager
)
Set the Probe Set Manager object.
virtual void Enlighten::IUpdateManager::EnqueueSetProbeSetTransform
public: void EnqueueSetProbeSetTransform
(
Geo::GeoGuid probeSetId,
const Geo::Matrix & transform
)
Set the world-to-local-space transform for the given probe set. This will trigger a global recomputation of all probe interpolants.
virtual void Enlighten::BaseUpdateManager::EnqueueSetProbeSetTransform
public: virtual void EnqueueSetProbeSetTransform
(
Geo::GeoGuid probeSetId,
const Geo::Matrix & transform
)
Set the world-to-local-space transform for the given probe set. This will trigger a global recomputation of all probe interpolants.
virtual void Enlighten::BaseUpdateManager::EnqueueSetVisibilityBits
public: virtual void EnqueueSetVisibilityBits
(
Geo::GeoGuid objectId,
Geo::GeoGuid lightId,
void * visibilityBits
)
Set the visibility data associated to a given (system/cube map, spotlight) pair.
Typically, this data will have been computed using the GPU (for instance, in GeoRadiosity by the GpuSpotlightVisibilityEngine).
virtual void Enlighten::IUpdateManager::EnqueueSetVisibilityBits
public: void EnqueueSetVisibilityBits
(
Geo::GeoGuid objectId,
Geo::GeoGuid lightId,
void * visibilityBits
)
Set the visibility data associated to a given (system/cube map, spotlight) pair.
Typically, this data will have been computed using the GPU (for instance, in GeoRadiosity by the GpuSpotlightVisibilityEngine).
virtual bool Enlighten::BaseUpdateManager::EnqueueSetWorkerProperties
public: virtual bool EnqueueSetWorkerProperties
(
const UpdateManagerWorkerProperties & properties
)
Sets the worker's global state.
virtual bool Enlighten::IUpdateManager::EnqueueSetWorkerProperties
public: bool EnqueueSetWorkerProperties
(
const UpdateManagerWorkerProperties & properties
)
Enqueue a change to the worker's global state.
virtual void Enlighten::BaseUpdateManager::EnqueueUpdateEmissiveEnvironment
public: virtual void EnqueueUpdateEmissiveEnvironment
(
Geo::GeoGuid environmentId,
Geo::s32 resolution,
const Geo::v128 * values
)
Update the environment with the given GUID. If this environment hasn't been updated before it will be added to the update manager.
virtual void Enlighten::IUpdateManager::EnqueueUpdateEmissiveEnvironment
public: void EnqueueUpdateEmissiveEnvironment
(
Geo::GeoGuid environmentId,
Geo::s32 resolution,
const Geo::v128 * values
)
Update the environment with the given GUID. If this environment hasn't been updated before it will be added to the update manager.
void Enlighten::IUpdateManager::EnqueueUpdateLight
public: void EnqueueUpdateLight
(
const Geo::GeoGuid & guid,
const LightType & light,
UpdateLightOptions options
)
Add the light.
Parameters
[in] | guid | The unique ID of the light source. |
[in] | light | The light object derived from Enlighten::InputLightBase |
[in] | options | Optional properties of the light. |
virtual void Enlighten::IUpdateManager::FlushCommands
public: void FlushCommands()
Wait for all commands to be executed before proceeding. This blocks the current thread, potentially for a long time.
virtual void Enlighten::CpuUpdateManager::FlushCommands
public: virtual void FlushCommands()
Wait until all commands currently in the queue have been executed.
virtual IGpuTexture* Enlighten::IUpdateManager::GetCubeMapTexture
public: IGpuTexture * GetCubeMapTexture
(
Geo::GeoGuid cubeMapId
) const
Get the output texture for the cube map texture.
Implemented with a binary search by GUID. To avoid calling this, keep a reference to the output texture you provide to AllocateCubeMap.
virtual IGpuTexture* Enlighten::BaseUpdateManager::GetCubeMapTexture
public: virtual IGpuTexture * GetCubeMapTexture
(
Geo::GeoGuid cubeMapId
) const
Get the output texture for the cube map texture.
Implemented with a binary search by GUID. To avoid calling this, keep a reference to the output texture you provide to AllocateCubeMap.
virtual bool Enlighten::BaseUpdateManager::GetDynamicObjectEnvironmentVisibilityShCoeff
public: virtual bool GetDynamicObjectEnvironmentVisibilityShCoeff
(
Geo::GeoGuid objectId,
Geo::SHCoeff & envVisCoeff
) const
Gets the environment visibility probe output for a given dynamic object.
virtual bool Enlighten::IUpdateManager::GetDynamicObjectEnvironmentVisibilityShCoeff
public: bool GetDynamicObjectEnvironmentVisibilityShCoeff
(
Geo::GeoGuid objectId,
Geo::SHCoeff & envVisCoeff
) const
Gets the environment visibility probe output for a given dynamic object.
virtual bool Enlighten::IUpdateManager::GetDynamicObjectShCoeff
public: bool GetDynamicObjectShCoeff
(
Geo::GeoGuid objectId,
Geo::SHCoeff & redCoeff,
Geo::SHCoeff & greenCoeff,
Geo::SHCoeff & blueCoeff
) const
Gets the probe output for a given dynamic object.
virtual bool Enlighten::BaseUpdateManager::GetDynamicObjectShCoeff
public: virtual bool GetDynamicObjectShCoeff
(
Geo::GeoGuid objectId,
Geo::SHCoeff & redCoeff,
Geo::SHCoeff & greenCoeff,
Geo::SHCoeff & blueCoeff
) const
Gets the probe output for a given dynamic object.
PrecisionHint::Value Enlighten::BaseUpdateManager::GetInputLightingPrecisionHint
public: PrecisionHint::Value GetInputLightingPrecisionHint()
Gets the precision hint of the input lighting buffer.
virtual Geo::s32 Enlighten::IUpdateManager::GetNumCubeMaps
public: Geo::s32 GetNumCubeMaps() const
Returns number of cube maps registered with the update manager.
virtual Geo::s32 Enlighten::BaseUpdateManager::GetNumCubeMaps
public: virtual Geo::s32 GetNumCubeMaps() const
Returns number of cube maps registered with the update manager.
virtual Geo::s32 Enlighten::IUpdateManager::GetNumDynamicObjects
public: Geo::s32 GetNumDynamicObjects() const
Returns number of dynamic objects registered with the update manager.
virtual Geo::s32 Enlighten::BaseUpdateManager::GetNumDynamicObjects
public: virtual Geo::s32 GetNumDynamicObjects() const
Returns number of dynamic objects registered with the update manager.
virtual Geo::s32 Enlighten::BaseUpdateManager::GetNumProbeSets
public: virtual Geo::s32 GetNumProbeSets() const
Returns number of probe sets registered with the update manager.
virtual Geo::s32 Enlighten::IUpdateManager::GetNumProbeSets
public: Geo::s32 GetNumProbeSets() const
Returns number of probe sets registered with the update manager.
virtual Geo::s32 Enlighten::BaseUpdateManager::GetNumSystems
public: virtual Geo::s32 GetNumSystems() const
Returns number of systems registered with the update manager.
virtual Geo::s32 Enlighten::IUpdateManager::GetNumSystems
public: Geo::s32 GetNumSystems() const
Returns number of systems registered with the update manager.
virtual IGpuTexture* Enlighten::IUpdateManager::GetOutputTexture
public: IGpuTexture * GetOutputTexture
(
Geo::GeoGuid systemId,
OutputTextureType textureType
) const
Gets the output texture of the given type for the given system.
Implemented with a binary search by GUID. To avoid calling this, keep a reference to the output textures you provide to AllocateSystem or AllocateSystemSolutionSpace.
virtual IGpuTexture* Enlighten::BaseUpdateManager::GetOutputTexture
public: virtual IGpuTexture * GetOutputTexture
(
Geo::GeoGuid systemId,
OutputTextureType textureType
) const
Gets the output texture of the given type for the given system.
Implemented with a binary search by GUID. To avoid calling this, keep a reference to the output textures you provide to AllocateSystem or AllocateSystemSolutionSpace.
virtual PppiOutputTextureRequirements Enlighten::IUpdateManager::GetPppiRequiredOutputTextures
public: PppiOutputTextureRequirements GetPppiRequiredOutputTextures() const
Returns information about the required PPPI output textures.
virtual const float* Enlighten::BaseUpdateManager::GetProbeOutput
public: virtual const float * GetProbeOutput
(
Geo::GeoGuid probeSetId,
Geo::s32 probeIndex
) const
Returns the probe output for the given probe set and probe index, or NULL if the probe set produces compressed output.
virtual const float* Enlighten::IUpdateManager::GetProbeOutput
public: const float * GetProbeOutput
(
Geo::GeoGuid probeSetId,
Geo::s32 probeIndex
) const
Returns the probe output for the given probe set and probe index, or NULL if the probe set produces compressed output.
virtual const float* Enlighten::IUpdateManager::GetProbeOutputIfUpdated
public: const float * GetProbeOutputIfUpdated
(
Geo::GeoGuid probeSetId,
Geo::s32 * outStride
) const
Returns the probe output if the probeset has been updated since this function was last called on it, otherwise NULL.
/param[out] outStride If not NULL, receives the output stride in floats.
virtual const float* Enlighten::BaseUpdateManager::GetProbeOutputIfUpdated
public: virtual const float * GetProbeOutputIfUpdated
(
Geo::GeoGuid probeSetId,
Geo::s32 * outStride
) const
Returns the probe output if the probeset has been updated since this function was last called on it, otherwise NULL.
/param[out] outStride If not NULL, receives the output stride in floats.
virtual Geo::s64 Enlighten::CpuUpdateManager::GetTextureUpdateTicks
public: virtual Geo::s64 GetTextureUpdateTicks() const
Get the total number of ticks spent updating GPU textures.
virtual Geo::s64 Enlighten::IUpdateManager::GetTextureUpdateTicks
public: Geo::s64 GetTextureUpdateTicks() const
Get the total number of ticks spent updating GPU textures.
virtual Geo::s64 Enlighten::BaseUpdateManager::GetTextureUpdateTicks
public: virtual Geo::s64 GetTextureUpdateTicks() const
Get the total number of ticks spent updating GPU textures.
virtual const Geo::u8* Enlighten::BaseUpdateManager::GetU8ProbeOutput
public: virtual const Geo::u8 * GetU8ProbeOutput
(
Geo::GeoGuid probeSetId,
Geo::s32 probeIndex
) const
Returns the compressed probe output for the given probe set and probe index, or NULL if the probe set produces uncompressed output.
virtual const Geo::u8* Enlighten::IUpdateManager::GetU8ProbeOutput
public: const Geo::u8 * GetU8ProbeOutput
(
Geo::GeoGuid probeSetId,
Geo::s32 probeIndex
) const
Returns the compressed probe output for the given probe set and probe index, or NULL if the probe set produces uncompressed output.
virtual Geo::Matrix Enlighten::BaseUpdateManager::GetWorldToUvwMatrix
public: virtual Geo::Matrix GetWorldToUvwMatrix
(
Geo::GeoGuid objectId
) const
Gets the matrix to transform world space to UVW texture space for a dynamic object.
virtual Geo::Matrix Enlighten::IUpdateManager::GetWorldToUvwMatrix
public: Geo::Matrix GetWorldToUvwMatrix
(
Geo::GeoGuid objectId
) const
Gets the matrix to transform world space to UVW texture space for a dynamic object.
virtual bool Enlighten::BaseUpdateManager::HasCubeMap
public: virtual bool HasCubeMap
(
Geo::GeoGuid cubeMapId
)
Returns true if the update manager has a cube map with this GUID; false if it doesn't.
virtual bool Enlighten::IUpdateManager::HasCubeMap
public: bool HasCubeMap
(
Geo::GeoGuid cubeMapId
)
Returns true if the update manager has a cube map with this GUID; false if it doesn't.
virtual bool Enlighten::BaseUpdateManager::HasDynamicObject
public: virtual bool HasDynamicObject
(
Geo::GeoGuid objectId
)
Returns true if the udpate manager has a dynamic object with this GUID.
virtual bool Enlighten::IUpdateManager::HasDynamicObject
public: bool HasDynamicObject
(
Geo::GeoGuid objectId
)
Returns true if the update manager has a dynamic object with this GUID.
virtual bool Enlighten::IUpdateManager::HasProbeSet
public: bool HasProbeSet
(
Geo::GeoGuid probeSetId
)
Returns true if the update manager has a probe set with this GUID; false if it doesn't.
virtual bool Enlighten::BaseUpdateManager::HasProbeSet
public: virtual bool HasProbeSet
(
Geo::GeoGuid probeSetId
)
Returns true if the update manager has a probe set with this GUID; false if it doesn't.
virtual bool Enlighten::BaseUpdateManager::HasSystem
public: virtual bool HasSystem
(
Geo::GeoGuid systemId
)
Returns true if the update manager has a system with this GUID; false if it doesn't.
virtual bool Enlighten::IUpdateManager::HasSystem
public: bool HasSystem
(
Geo::GeoGuid systemId
)
Returns true if the update manager has a system with this GUID; false if it doesn't.
virtual bool Enlighten::BaseUpdateManager::IsCubeMapStatic
public: virtual bool IsCubeMapStatic
(
Geo::GeoGuid cubeMapId
) const
Returns true if the cube map update counter is 0 (ie no updates are pending for this cube map).
virtual bool Enlighten::BaseUpdateManager::IsProbeSetStatic
public: virtual bool IsProbeSetStatic
(
Geo::GeoGuid probeSetId
) const
Returns true if the probe set update counter is 0 (ie no updates are pending for this probe set).
virtual bool Enlighten::BaseUpdateManager::IsSystemStatic
public: virtual bool IsSystemStatic
(
Geo::GeoGuid systemId
) const
Returns true if the system update counter is 0 (ie no updates are pending for this system).
virtual bool Enlighten::BaseUpdateManager::IsUpdateLimited
public: virtual bool IsUpdateLimited() const
Are we at the limit of the number of allowed enqueued updates, and therefore the update rate is throttled?
virtual bool Enlighten::IUpdateManager::IsUpdateLimited
public: bool IsUpdateLimited() const
Are we at the limit of the number of allowed enqueued updates, and therefore the update rate is throttled?
bool Enlighten::CpuUpdateManager::LoadInputLightingBuffer
public: bool LoadInputLightingBuffer
(
Geo::GeoGuid systemId,
const char * filename
)
Loads light buffer dump data into the given system's input lighting buffer.
bool Enlighten::CpuUpdateManager::LoadProbeTaskDump
public: bool LoadProbeTaskDump
(
Geo::GeoGuid probeSetId,
const char * filename
)
Loads probe task dump data into the given probe set's output buffer.
bool Enlighten::CpuUpdateManager::LoadRadTaskDump
public: bool LoadRadTaskDump
(
Geo::GeoGuid systemId,
const char * filename
)
Debug functions.
These don't rely on the debug objects themselves, but we assume the same platforms apply.Loads rad task dump data into the given system's output textures.
virtual void Enlighten::IUpdateManager::Release
public: void Release()
Destroys the update manager and all the resources it owns.
virtual void Enlighten::BaseUpdateManager::Release
public: virtual void Release()
Destroys the update manager and all the resources it owns.
virtual void Geo::IGeoReleasable::Release
public: void Release()
Free this object that was created within the Enlighten libraries.
Expect this to behave in a similar way to calling 'delete(this)'
virtual bool Enlighten::BaseUpdateManager::RequiresVisibilityDataOnCpu
public: virtual bool RequiresVisibilityDataOnCpu() const
Returns true for Update Managers that require spotlight visibility to be copied to the CPU before it can be used.
virtual bool Enlighten::IUpdateManager::RequiresVisibilityDataOnCpu
public: bool RequiresVisibilityDataOnCpu() const
Returns true for Update Managers that require spotlight visibility to be copied to the CPU before it can be used.
virtual void Enlighten::BaseUpdateManager::SetGpuTexture
public: virtual void SetGpuTexture
(
Geo::GeoGuid objectId,
ProbeVolumeOutputTextureType textureType,
IGpuTexture * gpuTexture
)
Sets an output texture for the given dynamic object.
virtual void Enlighten::BaseUpdateManager::SetGpuTexture
public: virtual void SetGpuTexture
(
Geo::GeoGuid systemId,
OutputTextureType textureType,
IGpuTexture * gpuTexture
)
Sets an output texture for the given system.
virtual void Enlighten::BaseUpdateManager::SetGpuTexture
public: virtual void SetGpuTexture
(
Geo::GeoGuid cubeMapId,
IGpuTexture * gpuTexture
)
Sets an output texture for the given cube map.
virtual void Enlighten::IUpdateManager::SetPppiOutputWorkspace
public: void SetPppiOutputWorkspace
(
const PppiOutputWorkspace & outputWorkspace,
IPppiTextureUpdateHandler * updateHandler
)
Use the provided PPPI output textures.
Call once, before AllocateProbeSet.
Parameters
[in] | outputWorkspace | The output textures. |
[in] | updateHandler | If non-null, will be called after partial updates of the output textures. Owned by the caller. May be called at any time before the update manager is destroyed. |
virtual void Enlighten::CpuUpdateManager::StopWorking
public: virtual void StopWorking()
Tell the worker thread to quit and wait until it does.
virtual void Enlighten::IUpdateManager::StopWorking
public: void StopWorking()
Wait for all asynchronous processing to finish, then quit the worker thread(s), if any.
virtual void Enlighten::CpuUpdateManager::Update
public: virtual void Update()
The main update function.
Destroys pending objects, updates GPU textures, ensures the worker thread is running and enqueues a radiosity update.
virtual void Enlighten::IUpdateManager::Update
public: void Update()
The main update function. This should be called once per frame from the rendering thread.
void Enlighten::CpuUpdateManager::UpdateGpuTextures
protected: void UpdateGpuTextures()
Update the GPU textures of all objects.
virtual PppiShaderParameters Enlighten::IUpdateManager::UpdatePppi
public: PppiShaderParameters UpdatePppi
(
const Geo::v128 & viewOrigin,
const IViewVolumeIntersector * viewVolume,
float lodDistance
)
Update PPPI indirection texture based on the view origin.
Update PPPI atlas texture with output for all probe sets that changed since the last update.
Parameters
[in] | viewOrigin | The position in world units at which the greatest level of detail is required. This is usually the camera position. |
[in] | viewVolume | The view volume within which probe sets are updated. If null, all probe sets are updated. |
[in] | lodDistance | The distance in voxel units from the view origin at which to begin reduction of the level of detail, zero for maximum. |
virtual void Enlighten::IUpdateManager::UpdatePppiBorder
public: void UpdatePppiBorder
(
const PppiIrradiance & border
)
Update the lighting for parts of the PPPI volume not covered by any probe set.