This is the documentation for Enlighten.
class Enlighten MultithreadCpuWorker
class Enlighten::MultithreadCpuWorker
└>Enlighten::MultithreadCpuWorkerCommon
└>Enlighten::CpuWorker
└>Enlighten::BaseWorker
└>Enlighten::IUpdateManagerWorker
Worker for the mulithreaded CPU update manager.
Functions
Name | Description |
---|---|
AddCubeMap(BaseCubeMap *const &) | Add a cube map to the worker. |
AddCubeMap(BaseCubeMap *const &) | Add a cube map to the worker. |
AddCubeMap(BaseCubeMap *const &) | Add a cube map to the worker. |
AddDynamicObject(BaseDynamicObject *const &) | Add a dynamic object to the worker. |
AddDynamicObject(BaseDynamicObject *const &) | Add a dynamic object to the worker. |
AddProbeSet(BaseProbeSet *const &) | Add a probe set to the worker. |
AddProbeSet(BaseProbeSet *const &) | Add a probe set to the worker. |
AddProbeSet(BaseProbeSet *const &) | Add a probe set to the worker. |
AddSystem(BaseSystem *const &) | Add a system to the worker, and allocate any required auxiliary resources. |
AddSystem(BaseSystem *const &) | Add a system to the worker, and allocate any required auxiliary resources. |
AddSystem(BaseSystem *const &) | Add a system to the worker, and allocate any required auxiliary resources. |
AddSystem(BaseSystem *const &) | Add a system to the worker, and allocate any required auxiliary resources. |
AllocateVisibilityData(Geo::s32, Enlighten::eLightType) | Allocates/Frees memory for visibility data. |
AllocateVisibilityData(Geo::s32, Enlighten::eLightType) | Allocates/Frees memory for visibility data. |
BaseWorker(SolveType, eOutputFormat, eOutputFormat, eOutputFormatByteOrder, PrecisionHint::Value, bool, bool, EnlightenProfile *) | Base class constructor. |
ClearCubeMapVolumeTransparency(Geo::GeoGuid const &) | Clears the cube map volume transparency. |
ClearCubeMapVolumeTransparency(Geo::GeoGuid const &) | Clears the cube map volume transparency. |
ClearSystemVolumeTransparency(Geo::GeoGuid const &) | Clears the system volume transparency. |
ClearSystemVolumeTransparency(Geo::GeoGuid const &) | Clears the system volume transparency. |
ClearSystemVolumeTransparency(Geo::GeoGuid const &) | Clears the system volume transparency. |
ComputeDirectionalVisibility(CpuSystem *) | Compute directional light visibility for the given system. |
CopyAlbedoBuffer(CopyAlbedoBufferInfo const &) | Allocate and make a copy of an albedo buffer. |
CopyAlbedoBuffer(CopyAlbedoBufferInfo const &) | Allocate and make a copy of an albedo buffer. |
CopyBounceBuffer(CopyBounceBufferInfo const &) | Allocate and make a copy of an emissive buffer. |
CopyBounceBuffer(CopyBounceBufferInfo const &) | Allocate and make a copy of an emissive buffer. |
CopyEmissiveBuffer(CopyEmissiveBufferInfo const &) | Allocate and make a copy of an emissive buffer. |
CopyEmissiveBuffer(CopyEmissiveBufferInfo const &) | Allocate and make a copy of an emissive buffer. |
CopyEmissiveEnvironment(CopyEmissiveEnvironmentInfo const &) | Allocate and make a copy of an emissive environment. |
CopyEmissiveEnvironment(CopyEmissiveEnvironmentInfo const &) | Allocate and make a copy of an emissive environment. |
CopyGeometryTransparencyBuffer(CopyTransparencyBufferInfo const &) | Allocate and make a copy of a geoemtry transparency buffer. |
CopyGeometryTransparencyBuffer(CopyTransparencyBufferInfo const &) | Copies the geometry transparency buffer. |
CopyGeometryTransparencyBuffer(CopyTransparencyBufferInfo const &) | Copies the geometry transparency buffer. |
CopyInputLightingBuffer(CopyInputLightingBufferInfo const &) | Allocate and make a copy of an input lighting buffer. |
CopyInputLightingBuffer(CopyInputLightingBufferInfo const &) | Allocate and make a copy of an input lighting buffer. |
CopyLightsToSolverArray() | Convert UpdateManagerLights to Enlighten::InputLights in preparation for Enlighten work. |
CopyLightsToSolverArray() | Convert UpdateManagerLights to Enlighten::InputLights in preparation for Enlighten work. |
CopyMaterialTransparencyBuffer(CopyTransparencyBufferInfo const &) | Allocate and make a copy of a material transparency buffer. |
CopyMaterialTransparencyBuffer(CopyTransparencyBufferInfo const &) | Allocate and make a copy of a material transparency buffer. |
CopyProbeOutput(CopyProbeOutputInfo const &) | Allocate and make a copy of Enlighten probe set output. |
CopyProbeOutput(CopyProbeOutputInfo const &) | Allocate and make a copy of Enlighten probe set output. |
CopyRawOutput(CopyRawOutputInfo const &) | Allocate and make a copy of raw Enlighten texture output. |
CopyRawOutput(CopyRawOutputInfo const &) | Allocate and make a copy of raw Enlighten texture output. |
CopyVisibilityBuffer(CopyVisibilityBufferInfo const &) | Allocate and make a copy of a visibility data block. |
CopyVisibilityBuffer(CopyVisibilityBufferInfo const &) | Allocate and make a copy of a visibility data block. |
CpuWorker(SolveType, eOutputFormat, eOutputFormat, eOutputFormatByteOrder, PrecisionHint::Value, bool, bool, EnlightenProfile *, Command *) | Constructor, taking properties which are fixed at creation time. |
DecrementUpdateCounters() | Decrements the update counters for all systems, probe sets, cube maps and light banks. |
DestroyAllWorkerObjects() | Release all the objects this worker constructed. |
DoBounceSolverTask(Enlighten::SolveBounceTask, void *, Geo::u32 &, Geo::u32 &, CpuSystem *) | Call the bounce solver and trigger feedback updates if required. |
DoCubeMapSolve(BaseCubeMap *, WorkerThreadData *) | Do the solve task for a cube map using the working memory of the given thread index. |
DoCubeMapSolve(BaseCubeMap *, WorkerThreadData *) | Do the solve task for a cube map using the working memory of the given thread index. |
DoDynamicObjectInterpolation(BaseDynamicObject *) | Do the interpolation for a single dynamic object, to allow multithreading. |
DoDynamicObjectUpdate() | Runs the probe interpolation tasks for all dynamic objects, non-multithreaded. |
DoEnvironmentUpdate() | Copies the environment values from the application-settable copy to the internal copy. |
DoNextTask(Geo::s32) | Do the next task on the queue using the working memory of the given thread index. |
DoSystemInputLighting(BaseSystem *, const Geo::v128 &, WorkerThreadData *) | Do the input lighting task for a system using the working memory of the given thread index. |
DoSystemInputLighting(BaseSystem *, const Geo::v128 &, WorkerThreadData *) | Do the input lighting task for a system using the working memory of the given thread index. |
DoSystemSolutionSpaceFreeze(CpuSystemSolutionSpace *, Enlighten::InputLightingBuffer *, CpuSystem *, WorkerThreadData *, Geo::u32 &, bool) | Do a freeze of the solution space data. |
DoSystemSolutionSpaceSolve(CpuSystem *, CpuSystemSolutionSpace *, void *, const Enlighten::InputLightingBuffer *, float, bool, bool, Geo::u32 &, Geo::u32 &) | Do a solve of a particular system solution space for a given system and update bounce buffers. |
EnqueueCommand(CommandType &&) | Enqueues a command for later execution by the worker thread, if it is running. |
EnqueueQuitCommand() | Tell the update thread to quit. |
EnqueueRadiosityUpdate(const Geo::v128 &) | Enqueue a radiosity update on the worker thread. |
EnsureSolverLightBufferSize() | Ensure the solver light buffer is large enough to store all the lights. |
EnsureSolverLightBufferSize() | Ensure the solver light buffer is large enough to store all the lights. |
ExcludesEnvironmentInPrimaryBounce() | Returns the value of the worker property m_ExcludeEnvrionmentInPrimaryBounce. |
ExcludesEnvironmentInPrimaryBounce() | Have we requested to solve the environment in secondary bounce only. (ie skip primary bounce) |
ExecuteCommands() | Executes and destroys commands in the command ring buffer until the buffer is empty. |
FindObject(const Geo::GeoGuid &, BaseDynamicObject *&) | Finds the object with the given GUID. |
FindObject(const Geo::GeoGuid &, BaseCubeMap *&) | Finds the object with the given GUID. |
FindObject(const Geo::GeoGuid &, BaseProbeSet *&) | Finds the object with the given GUID. |
FindObject(const Geo::GeoGuid &, BaseSystem *&) | Finds the object with the given GUID. |
FindObject(ObjectType *, ObjectType *&) | Finds the object with the given address. |
FindObject(const Geo::GeoGuid &, ObjectType *&) | Finds the object with the given GUID. |
FindObject(const Geo::GeoGuid &, CpuSystem *&) | Specialise the BaseWorker::FindObject to deal with a concrete type here. |
FreeVisibilityData(Geo::s32, bool) | Allocates/Frees memory for visibility data. |
GetInputLightingPrecisionHint() | Gets the precision hint for the input lighting buffer,. |
GetLightMethodSelector() | Gets the light method selector. |
GetLightMethodSelector() | Gets the light method selector. |
GetSizeOfProbeInputWorkspaceMemory() | Get the total size of probe set output workspaces. |
GetSizeOfProbeInputWorkspaceMemory() | Get the total size of probe set output workspaces. |
GetSizeOfProbeOutputWorkspaceMemory() | Get the total size of probe set input workspaces. |
GetSizeOfProbeOutputWorkspaceMemory() | Get the total size of probe set input workspaces. |
GetSizeOfWorkingMemory() | Get the size of the working memory required for solving. |
GetSizeOfWorkingMemory() | Get the size of the working memory required for solving. |
GetSizeOfWorkingMemory() | Get the size of the working memory required for solving. |
GetSystemArray() | Returns the array of systems. Used by the GeoMaya plug in to work out when to trigger refreshes. |
InitThreadGroup() | One-time thread group initialisation. |
IsCommandThreadSafe() | Returns true if called on the worker thread, or if no worker thread is running. |
IsCommandThreadSafe() | Returns true if called on the worker thread, or if no worker thread is running. |
IsEnvOnlyUpdateRequired(CpuSystemSolutionSpace *, bool, const Enlighten::InputLightingBuffer *, Geo::s32) | Returns true if the EnvOnly feature is enabled and an update is required. |
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? |
IsWorkerThreadRunning() | Whether the worker thread is currently running. |
IsWorkerThreadRunning() | Returns true if a separate worker thread is currently running, false if not. |
LogProfiling(const ObjectType *, F) | Log stats with the profiler using an enclosure. |
MultithreadCpuWorker(SolveType, eOutputFormat, eOutputFormat, eOutputFormatByteOrder, PrecisionHint::Value, bool, bool, EnlightenProfile *, Command *, IThreadGroup *, ILimiter *, Geo::u64) | Constructor. |
MultithreadCpuWorkerCommon(SolveType, eOutputFormat, eOutputFormat, eOutputFormatByteOrder, PrecisionHint::Value, bool, bool, EnlightenProfile *, Command *, IThreadGroup *, ILimiter *, Geo::u64) | Constructor. |
ProbeSetManagerSetMaxWeightForProbeSet(Geo::GeoGuid const &, float) | Set max interpolation weight for a given probe set. |
ProbeSetManagerSetMaxWeightForProbeSet(Geo::GeoGuid const &, float) | Set max interpolation weight for a given probe set. |
PushMultipleObjectsToDestroy(Geo::IGeoReleasable *const *, Geo::s32) | Push a list of objects which has been removed from the worker on to a list to be destroyed by the rendering thread. |
PushObjectToDestroy(Geo::IGeoReleasable *) | Push an object which has been removed from the worker on to a list to be destroyed by the rendering thread. |
ReadInputLightingBuffer(ReadInputLightingBufferInfo const &) | These functions are provided for debugging/visualisation purposes. |
ReadInputLightingBuffer(ReadInputLightingBufferInfo const &) | These functions are provided for debugging/visualisation purposes. |
RecreateInterpolationInputList() | Updates the probe interpolation inputs, if required. |
ReleaseSystemSolutionSpaces(ReleaseSystemSolutionSpacesInfo const &) | Release system solution spaces. |
ReleaseSystemSolutionSpaces(ReleaseSystemSolutionSpacesInfo const &) | Release the solution spaces. |
RemoveAllLights() | Remove all lights. |
RemoveAllLights() | Remove all lights. |
RemoveCubeMap(RemoveInfo const &) | Remove a cube map from the worker (either completely or partially) |
RemoveCubeMap(RemoveInfo const &) | Remove a cube map from the worker (either completely or partially) |
RemoveCubeMap(RemoveInfo const &) | Remove a cube map from the worker (either completely or partially) |
RemoveDirectionalLight(Geo::GeoGuid) | Removes a light with the given GUID from the list of directional lights (if one is found), and frees the associated memory. |
RemoveDynamicObject(RemoveInfo const &) | Remove a dynamic object from the worker. |
RemoveDynamicObject(RemoveInfo const &) | Remove a dynamic object from the worker. |
RemoveDynamicObject(RemoveInfo const &) | Remove a dynamic object from the worker. |
RemoveEmissiveEnvironment(Geo::GeoGuid const &) | Remove the environment with the given id. |
RemoveEmissiveEnvironment(Geo::GeoGuid const &) | Remove the environment with the given id. |
RemoveLight(Geo::GeoGuid const &) | Remove the light with the given id. |
RemoveLight(Geo::GeoGuid const &) | Remove the light with the given id. |
RemoveLightBank(Geo::s32 const &) | Remove a light bank. |
RemoveLightBank(Geo::s32 const &) | Remove a light bank. |
RemoveLightWithoutVisibility(Geo::GeoGuid) | Removes a light with the given GUID from the list of lights without visibility (if one is found), and frees the associated memory. |
RemoveLightWithVisibility(Geo::GeoGuid) | Removes a light with the given GUID from the list of lights with visibility (if one is found), and frees the associated memory. |
RemoveProbeSet(RemoveInfo const &) | Remove a probe set from the worker (either completely or partially) |
RemoveProbeSet(RemoveInfo const &) | Remove a probe set from the worker (either completely or partially) |
RemoveProbeSet(RemoveInfo const &) | Remove a probe set from the worker (either completely or partially) |
RemoveSystem(RemoveInfo const &) | Remove a system from the worker (either completely or partially) |
RemoveSystem(RemoveInfo const &) | Remove a system from the worker (either completely or partially) |
RemoveSystem(RemoveInfo const &) | Remove a system from the worker (either completely or partially) |
RemoveSystem(RemoveInfo const &) | Remove a system from the worker (either completely or partially) |
RemoveSystem(RemoveInfo const &) | Remove a system from the worker (either completely or partially) |
RemoveSystemFromDependencyLists(BaseSystem *) | Removes the given system from all cached dependency lists. |
RemoveSystemSolutionSpaces(Geo::GeoGuid const &) | Removes the solution spaces from the system. This function will not release the solution spaces. |
RemoveSystemSolutionSpaces(Geo::GeoGuid const &) | Removes the solution spaces from the system. This function will not release the solution spaces. |
ReRegisterObjectsWithProfiler() | Re-register all objects with the profiler. |
RunWorkerThread() | Start the worker thread if it is not already running. |
RunWorkerThread() | Start the worker thread if it is not already running. |
SetAllUpdateCounters(Geo::s32 const &) | Set all system and probe update counters to count. |
SetAllUpdateCounters(Geo::s32 const &) | Set all system and probe update counters to count. |
SetDoFullSolveNextFrame() | Disable temporal coherence so a full solve is performed next frame. |
SetDoFullSolveNextFrame() | Disable temporal coherence so a full solve is performed next frame. |
SetDoIndirectInputLightingNextFrame(Geo::GeoGuid const &) | Sets a flag to run indirect input lighting on the next frame. |
SetDoIndirectInputLightingNextFrame(Geo::GeoGuid const &) | Sets a flag to run indirect input lighting on the next frame. |
SetDoIndirectInputLightingNextFrame(Geo::GeoGuid const &) | Sets a flag to run indirect input lighting on the next frame. |
SetLightBankUpdateCounter(SetLightBankUpdateCounterInfo const &) | Set a light bank update counter. |
SetLightBankUpdateCounter(SetLightBankUpdateCounterInfo const &) | Set a light bank update counter. |
SetLightBankUpdateCounter(SetLightBankUpdateCounterInfo const &) | Set a light bank update counter. |
SetProbeSetManager(IProbeSetManager *const &) | Set a probe set manager. |
SetProbeSetTransform(SetProbeSetTransformInfo const &) | Set a probe set world-to-local-space transform. |
SetProbeSetTransform(SetProbeSetTransformInfo const &) | Set a probe set world-to-local-space transform. |
SetSystemSolutionSpaces(ISystemSolutionSpace *const *, const Geo::s32, const Geo::s32) | Set the solution spaces used by a system. |
SetSystemSolutionSpaces(ISystemSolutionSpace *const *, const Geo::s32, const Geo::s32) | Set the solution spaces used by a system. |
SetTransparencySamplePositionOffset(SetTransparencySamplePositionOffsetInfo const &) | Sets the transparency sample position offset. |
SetTransparencySamplePositionOffset(SetTransparencySamplePositionOffsetInfo const &) | Sets the transparency sample position offset. |
SetTransparencySamplePositionOffset(SetTransparencySamplePositionOffsetInfo const &) | Sets the transparency sample position offset. |
SetVisibilityBits(SetVisibilityBitsInfo const &) | Sets the visibility block for a (system, light) pair. |
SetVisibilityBits(SetVisibilityBitsInfo const &) | Sets the visibility block for a (system, light) pair. |
SetVisibilityBits(SetVisibilityBitsInfo const &) | Sets the visibility block for a (system, light) pair. |
SetWorkerProperties(const UpdateManagerWorkerProperties &) | Set the worker global state. |
SetWorkerProperties(UpdateManagerWorkerProperties const &) | Set the worker global state. |
SetWorkerProperties(const UpdateManagerWorkerProperties &) | Set the worker global state. |
ShutdownThreadGroup() | One-time therad group shut down. |
StopWorkerThread() | Signal the worker thread to stop and wait until it quits. |
StopWorkerThread() | Signal the worker thread to stop and wait until it quits. |
TriggerTransparencyVolume(const Enlighten::BoxVolume &) | Triggers a transparency volume. |
TriggerTransparencyVolume(const Enlighten::BoxVolume &) | Triggers a transparency volume. |
TriggerTransparencyVolume(const Enlighten::SphereVolume &) | Triggers a transparency volume. |
TriggerTransparencyVolume(const Enlighten::SphereVolume &) | Triggers a transparency volume. |
TriggerTransparencyVolume(const Enlighten::SphereVolume &) | Triggers a transparency volume. |
TriggerTransparencyVolume(const Enlighten::BoxVolume &) | Triggers a transparency volume. |
TriggerTransparencyVolumeGeneric(const VolumeType &) | Triggers a transparency volume. |
UpdateCubeMapDependencyList(BaseCubeMap *) | Creates the cached dependency list for the given cube map. |
UpdateEmissiveEnvironment(UpdateEnvironmentInfo const &) | Update (or add) the environment with the given id. |
UpdateEmissiveEnvironment(UpdateEnvironmentInfo const &) | Update (or add) the environment with the given id. |
UpdateLight(UpdateLightInfo const &) | Update (or add) the light with the given id. |
UpdateLight(UpdateLightInfo const &) | Update (or add) the light with the given id. |
UpdateLightmapBounceBufferData(BaseSystem *) | Update the lightmap bounce buffer data. |
UpdateLightmapBounceBufferData(BaseSystem *) | Update the lightmap bounce buffer data. |
UpdateProbeDependencyList(BaseProbeSet *) | Creates the cached dependency list for the given probe set. |
UpdateRadiosity(const Geo::v128 &) | The main radiosity update function. |
UpdateRadiosity(const Geo::v128 &) | The main radiosity update function. |
UpdateRadiosity(const Geo::v128 &) | The main radiosity update function. |
UpdateSystemDependencyLists(BaseSystem *) | Creates the cached dependency list for the given system, and updates all other lists with the new system. |
WriteVisibilityPointers(void **, BaseSystem *, Geo::s32) | Write ordered list of visibility data pointers for the given system and light bank Returns TRUE if any of the light inputs have changed. |
Variables
Name | Description |
---|---|
Geo::RingBuffer m_CommandBuffer | Buffer of enqueued commands. |
Geo::s64 m_CommandThreadTicks | Time taken to execute commands on the command thread. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseCubeMap > m_CubeMapArray | Cube map GUID to data mapping. |
eOutputFormat m_CubemapOutputFormat | Cubemap output format (immutable) |
ProcessingStage m_CurrentStage | The current processing stage in the Enlighten update loop. |
Geo::GeoCriticalSection m_DestroyArrayCriticalSection | Critical section for modifying the to-be-destroyed array. |
Geo::GeoKeyValueArray< Geo::GeoGuid, UpdateManagerLight > m_DirectionalLights | Array of directional lights. |
Geo::GeoMap< Geo::u32, DirectionPalette * > m_DirectionPalettes | Map of DirectionPalettes for use with EPSS. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseDynamicObject > m_DynamicObjectArray | Dynamic object GUID to data mapping. |
Geo::GeoAtomic< Geo::u32 > m_EnlightenTaskIndex | Index of next task in the Enlighten task queue. |
Geo::GeoArray< EnlightenTask > m_EnlightenTasks | List of low-level Enlighten tasks to do. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseEnvironment > m_EnvironmentArray | Environment GUID to data mapping. |
Geo::GeoEvent m_ExecuteCommandEvent | Handle to event trigger to execute commands. |
UpdateManagerWorkerProperties m_GlobalState | Global solver parameters. |
bool m_InputLightingListDirty | Regenerate the hash of the InputLightingList. |
Geo::u32 m_InputLightingListHash | Hash of the list of InputLightingBuffers. |
PrecisionHint::Value m_InputLightingPrecisionHint | Input lighting precision hint. |
Geo::u32 m_InterpolationInputChangeId | Counter incremented when the list of probe inputs is recreated. |
bool m_InterpolationInputListRecreated | Flag set when the list of probe inputs was recreated. |
Geo::GeoArray< InterpolationInputSet > m_InterpolationInputSets | List of interpolation inputs (ie probe sets with their output) |
Geo::GeoAtomic< Geo::u32 > m_InterpolationTimeUs | Interpolation times in microseconds. |
eOutputFormat m_IrradianceOutputFormat | Irradiance output format (immutable) |
Geo::s64 m_LastUpdateTick | The last time we started to update (used for stats computation). |
Geo::GeoMap< Geo::s32, Geo::s32 > m_LightBankMap | Light bank id to number of updates counter. |
LightMethodSelector * m_LightMethodSelector | Light method selector. |
Geo::GeoKeyValueArray< Geo::GeoGuid, UpdateManagerLight > m_LightsWithoutVisibility | Array of non-directional lights without visibility data. |
Geo::GeoKeyValueArray< Geo::GeoGuid, UpdateManagerLight > m_LightsWithVisibility | Array of non-directional lights with visibility data. |
ILimiter * m_Limiter | Interface to limit amount of Enlighten work performed. |
Geo::GeoAtomic< Geo::u32 > m_NumEnqueuedUpdates | Number of update calls currently in the command queue. |
Geo::GeoArray< Geo::IGeoReleasable * > m_ObjectsToDestroy | Array of objects which need to be destroyed by update manager. |
eOutputFormatByteOrder m_OutputFormatByteOrder | Byte order to output 8-bit textures (immutable) |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseProbeSet > m_ProbeSetArray | ProbeSet GUID to data mapping. |
Enlighten::IProbeSetManager * m_ProbeSetManager | Probe Sets Manager object that can provide probe weights for interpolation. |
Geo::u32 m_PropertiesHash | Hash of the worker properties. |
bool m_QuitThread | Flag which tells the worker thread to quit the update loop. |
bool m_RecreateInterpolationInputList | Flag set when we need to regenerate the list of probe inputs. |
bool m_RegisterWithProfiler | Flag to indicate that all objects need to be registered with the profiler. |
bool m_SolvedRadiosity | Whether we have completed a solve since the last stats update. |
Geo::s32 m_SolverLightArraySize | Size of the solver light array allocation. |
InputLightBase ** m_SolverLights | Array of lights to pass to the Enlighten tasks. |
SolveType m_SolveType | Whether to solve directional irradiance, directional irradiance separately for each colour channel or irradiance only) |
EnlightenProfile * m_StatsProfile | Optional pointer to a statistics profiler. |
Geo::GeoKeyValueArray< Geo::GeoGuid, BaseSystem > m_SystemArray | System GUID to data mapping. |
TaskProcessor * m_TaskProcessors | Multithreaded tasks to execute through the interface. |
Command * m_ThreadCreationCommand | Command to execute on the worker thread on creation. |
IThreadGroup * m_ThreadGroup | Interface to execute asynchronous multithreaded tasks. |
bool m_ThreadRunning | Is the command thread running. |
Geo::s32 m_TotalNumLights | Total number of lights in the current solver array. |
bool m_UseEntireProbeSetSolver | Should we use the EPSS? |
bool m_UseProbeSetLod | Use or not Probe Set LOD. |
Geo::v128 m_ViewOrigin | The position in world units used to determine which lights affect distant systems. This is usually the camera position. |
Geo::GeoArray< WorkerThreadData * > m_WorkerThreadData | Internal array of working data for each worker thread. |
Enums
Name | Description |
---|---|
ProcessingStage | Internal enumeration for keeping track of the update loop. |
virtual void Enlighten::BaseWorker::AddCubeMap
public: virtual void AddCubeMap
(
BaseCubeMap *const & cubeMap
)
Add a cube map to the worker.
virtual void Enlighten::CpuWorker::AddCubeMap
public: virtual void AddCubeMap
(
BaseCubeMap *const & cubeMap
)
Add a cube map to the worker.
virtual void Enlighten::IUpdateManagerWorker::AddCubeMap
public: void AddCubeMap
(
BaseCubeMap *const & cubeMap
)
Add a cube map to the worker.
virtual void Enlighten::IUpdateManagerWorker::AddDynamicObject
public: void AddDynamicObject
(
BaseDynamicObject *const & dynamicObject
)
Add a dynamic object to the worker.
virtual void Enlighten::BaseWorker::AddDynamicObject
public: virtual void AddDynamicObject
(
BaseDynamicObject *const & dynamicObject
)
Add a dynamic object to the worker.
virtual void Enlighten::CpuWorker::AddProbeSet
public: virtual void AddProbeSet
(
BaseProbeSet *const & probeSet
)
Add a probe set to the worker.
virtual void Enlighten::IUpdateManagerWorker::AddProbeSet
public: void AddProbeSet
(
BaseProbeSet *const & probeSet
)
Add a probe set to the worker.
virtual void Enlighten::BaseWorker::AddProbeSet
public: virtual void AddProbeSet
(
BaseProbeSet *const & probeSet
)
Add a probe set to the worker.
virtual void Enlighten::BaseWorker::AddSystem
public: virtual void AddSystem
(
BaseSystem *const & system
)
Add a system to the worker, and allocate any required auxiliary resources.
virtual void Enlighten::MultithreadCpuWorker::AddSystem
public: virtual void AddSystem
(
BaseSystem *const & system
)
Add a system to the worker, and allocate any required auxiliary resources.
virtual void Enlighten::IUpdateManagerWorker::AddSystem
public: void AddSystem
(
BaseSystem *const & system
)
Add a system to the worker, and allocate any required auxiliary resources.
virtual void Enlighten::CpuWorker::AddSystem
public: virtual void AddSystem
(
BaseSystem *const & system
)
Add a system to the worker, and allocate any required auxiliary resources.
virtual void Enlighten::BaseWorker::AllocateVisibilityData
protected: virtual void AllocateVisibilityData
(
Geo::s32 lightIndex,
Enlighten::eLightType lightType
)
Allocates/Frees memory for visibility data.
virtual void Enlighten::MultithreadCpuWorker::AllocateVisibilityData
protected: virtual void AllocateVisibilityData
(
Geo::s32 lightIndex,
Enlighten::eLightType lightType
)
Allocates/Frees memory for visibility data.
Enlighten::BaseWorker::BaseWorker
public: BaseWorker
(
SolveType solveType,
eOutputFormat irradianceOutputFormat,
eOutputFormat cubemapOutputFormat,
eOutputFormatByteOrder byteOrder,
PrecisionHint::Value inputLightingPrecisionHint,
bool useEntireProbeSetSolver,
bool useProbeSetLod,
EnlightenProfile * profile
)
Base class constructor.
Irradiance output format and optional stats profile are common to all worker implementations.
virtual void Enlighten::IUpdateManagerWorker::ClearCubeMapVolumeTransparency
public: void ClearCubeMapVolumeTransparency
(
Geo::GeoGuid const & cubeMapId
)
Clears the cube map volume transparency.
virtual void Enlighten::BaseWorker::ClearCubeMapVolumeTransparency
public: virtual void ClearCubeMapVolumeTransparency
(
Geo::GeoGuid const & cubeMapId
)
Clears the cube map volume transparency.
virtual void Enlighten::MultithreadCpuWorker::ClearSystemVolumeTransparency
public: virtual void ClearSystemVolumeTransparency
(
Geo::GeoGuid const & systemId
)
Clears the system volume transparency.
virtual void Enlighten::BaseWorker::ClearSystemVolumeTransparency
public: virtual void ClearSystemVolumeTransparency
(
Geo::GeoGuid const & systemId
)
Clears the system volume transparency.
virtual void Enlighten::IUpdateManagerWorker::ClearSystemVolumeTransparency
public: void ClearSystemVolumeTransparency
(
Geo::GeoGuid const & systemId
)
Clears the system volume transparency.
void Enlighten::MultithreadCpuWorkerCommon::ComputeDirectionalVisibility
protected: void ComputeDirectionalVisibility
(
CpuSystem * system
)
Compute directional light visibility for the given system.
virtual void Enlighten::CpuWorker::CopyAlbedoBuffer
public: virtual void CopyAlbedoBuffer
(
CopyAlbedoBufferInfo const & copyInfo
)
Allocate and make a copy of an albedo buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyAlbedoBuffer
public: void CopyAlbedoBuffer
(
CopyAlbedoBufferInfo const & copyInfo
)
Allocate and make a copy of an albedo buffer.
virtual void Enlighten::CpuWorker::CopyBounceBuffer
public: virtual void CopyBounceBuffer
(
CopyBounceBufferInfo const & copyInfo
)
Allocate and make a copy of an emissive buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyBounceBuffer
public: void CopyBounceBuffer
(
CopyBounceBufferInfo const & copyInfo
)
Allocate and make a copy of an emissive buffer.
virtual void Enlighten::CpuWorker::CopyEmissiveBuffer
public: virtual void CopyEmissiveBuffer
(
CopyEmissiveBufferInfo const & copyInfo
)
Allocate and make a copy of an emissive buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyEmissiveBuffer
public: void CopyEmissiveBuffer
(
CopyEmissiveBufferInfo const & copyInfo
)
Allocate and make a copy of an emissive buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyEmissiveEnvironment
public: void CopyEmissiveEnvironment
(
CopyEmissiveEnvironmentInfo const & copyEnvironmentInfo
)
Allocate and make a copy of an emissive environment.
virtual void Enlighten::BaseWorker::CopyEmissiveEnvironment
public: virtual void CopyEmissiveEnvironment
(
CopyEmissiveEnvironmentInfo const & copyEnvironmentInfo
)
Allocate and make a copy of an emissive environment.
virtual void Enlighten::IUpdateManagerWorker::CopyGeometryTransparencyBuffer
public: void CopyGeometryTransparencyBuffer
(
CopyTransparencyBufferInfo const & copyInfo
)
Allocate and make a copy of a geoemtry transparency buffer.
virtual void Enlighten::MultithreadCpuWorker::CopyGeometryTransparencyBuffer
protected: virtual void CopyGeometryTransparencyBuffer
(
CopyTransparencyBufferInfo const & copyInfo
)
Copies the geometry transparency buffer.
virtual void Enlighten::BaseWorker::CopyGeometryTransparencyBuffer
public: virtual void CopyGeometryTransparencyBuffer
(
CopyTransparencyBufferInfo const & copyInfo
)
Copies the geometry transparency buffer.
virtual void Enlighten::CpuWorker::CopyInputLightingBuffer
public: virtual void CopyInputLightingBuffer
(
CopyInputLightingBufferInfo const & copyInputLightingBufferInfo
)
Allocate and make a copy of an input lighting buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyInputLightingBuffer
public: void CopyInputLightingBuffer
(
CopyInputLightingBufferInfo const & copyInputLightingBufferInfo
)
Allocate and make a copy of an input lighting buffer.
virtual void Enlighten::MultithreadCpuWorkerCommon::CopyLightsToSolverArray
protected: void CopyLightsToSolverArray()
Convert UpdateManagerLights to Enlighten::InputLights in preparation for Enlighten work.
virtual void Enlighten::MultithreadCpuWorker::CopyLightsToSolverArray
protected: virtual void CopyLightsToSolverArray()
Convert UpdateManagerLights to Enlighten::InputLights in preparation for Enlighten work.
virtual void Enlighten::CpuWorker::CopyMaterialTransparencyBuffer
public: virtual void CopyMaterialTransparencyBuffer
(
CopyTransparencyBufferInfo const & copyInfo
)
Allocate and make a copy of a material transparency buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyMaterialTransparencyBuffer
public: void CopyMaterialTransparencyBuffer
(
CopyTransparencyBufferInfo const & copyInfo
)
Allocate and make a copy of a material transparency buffer.
virtual void Enlighten::IUpdateManagerWorker::CopyProbeOutput
public: void CopyProbeOutput
(
CopyProbeOutputInfo const & copyProbeOutputInfo
)
Allocate and make a copy of Enlighten probe set output.
virtual void Enlighten::BaseWorker::CopyProbeOutput
public: virtual void CopyProbeOutput
(
CopyProbeOutputInfo const & copyProbeOutputInfo
)
Allocate and make a copy of Enlighten probe set output.
virtual void Enlighten::IUpdateManagerWorker::CopyRawOutput
public: void CopyRawOutput
(
CopyRawOutputInfo const & copyRawOutputInfo
)
Allocate and make a copy of raw Enlighten texture output.
virtual void Enlighten::CpuWorker::CopyRawOutput
public: virtual void CopyRawOutput
(
CopyRawOutputInfo const & copyRawOutputInfo
)
Allocate and make a copy of raw Enlighten texture output.
virtual void Enlighten::CpuWorker::CopyVisibilityBuffer
public: virtual void CopyVisibilityBuffer
(
CopyVisibilityBufferInfo const & copyVisibilityBufferInfo
)
Allocate and make a copy of a visibility data block.
virtual void Enlighten::IUpdateManagerWorker::CopyVisibilityBuffer
public: void CopyVisibilityBuffer
(
CopyVisibilityBufferInfo const & copyVisibilityBufferInfo
)
Allocate and make a copy of a visibility data block.
Enlighten::CpuWorker::CpuWorker
public: CpuWorker
(
SolveType solveType,
eOutputFormat irradianceOutputFormat,
eOutputFormat cubemapOutputFormat,
eOutputFormatByteOrder byteOrder,
PrecisionHint::Value inputLightingPrecisionHint,
bool useEntireProbeSetSolver,
bool useProbeSetLod,
EnlightenProfile * profile,
Command * threadCreationCommand
)
Constructor, taking properties which are fixed at creation time.
void Enlighten::BaseWorker::DecrementUpdateCounters
protected: void DecrementUpdateCounters()
Decrements the update counters for all systems, probe sets, cube maps and light banks.
void Enlighten::BaseWorker::DestroyAllWorkerObjects
protected: void DestroyAllWorkerObjects()
Release all the objects this worker constructed.
void Enlighten::MultithreadCpuWorkerCommon::DoBounceSolverTask
protected: void DoBounceSolverTask
(
Enlighten::SolveBounceTask bounceSolverTask,
void * threadWorkingMemory,
Geo::u32 & numSolvedPixels,
Geo::u32 & solveTimeUs,
CpuSystem * system
)
Call the bounce solver and trigger feedback updates if required.
virtual void Enlighten::MultithreadCpuWorker::DoCubeMapSolve
protected: virtual void DoCubeMapSolve
(
BaseCubeMap * cubeMap,
WorkerThreadData * wtd
)
Do the solve task for a cube map using the working memory of the given thread index.
virtual void Enlighten::MultithreadCpuWorkerCommon::DoCubeMapSolve
protected: virtual void DoCubeMapSolve
(
BaseCubeMap * cubeMap,
WorkerThreadData * wtd
)
Do the solve task for a cube map using the working memory of the given thread index.
void Enlighten::BaseWorker::DoDynamicObjectInterpolation
protected: void DoDynamicObjectInterpolation
(
BaseDynamicObject * object
)
Do the interpolation for a single dynamic object, to allow multithreading.
void Enlighten::CpuWorker::DoDynamicObjectUpdate
protected: void DoDynamicObjectUpdate()
Runs the probe interpolation tasks for all dynamic objects, non-multithreaded.
void Enlighten::CpuWorker::DoEnvironmentUpdate
protected: void DoEnvironmentUpdate()
Copies the environment values from the application-settable copy to the internal copy.
bool Enlighten::MultithreadCpuWorkerCommon::DoNextTask
public: bool DoNextTask
(
Geo::s32 threadIdx
)
Do the next task on the queue using the working memory of the given thread index.
virtual void Enlighten::MultithreadCpuWorkerCommon::DoSystemInputLighting
protected: void DoSystemInputLighting
(
BaseSystem * system,
const Geo::v128 & viewOrigin,
WorkerThreadData * wtd
)
Do the input lighting task for a system using the working memory of the given thread index.
virtual void Enlighten::MultithreadCpuWorker::DoSystemInputLighting
protected: virtual void DoSystemInputLighting
(
BaseSystem * system,
const Geo::v128 & viewOrigin,
WorkerThreadData * wtd
)
Do the input lighting task for a system using the working memory of the given thread index.
void Enlighten::MultithreadCpuWorkerCommon::DoSystemSolutionSpaceFreeze
protected: void DoSystemSolutionSpaceFreeze
(
CpuSystemSolutionSpace * solutionSpace,
Enlighten::InputLightingBuffer * envBuffer,
CpuSystem * system,
WorkerThreadData * wtd,
Geo::u32 & freezeTimeUs,
bool isBounceLod
)
Do a freeze of the solution space data.
void Enlighten::MultithreadCpuWorkerCommon::DoSystemSolutionSpaceSolve
protected: void DoSystemSolutionSpaceSolve
(
CpuSystem * system,
CpuSystemSolutionSpace * systemSolutionSpace,
void * threadWorkingMemory,
const Enlighten::InputLightingBuffer * environment,
float temporalCoherenceThreshold,
bool updateAllBuckets,
bool isBounceLod,
Geo::u32 & numSolvedPixels,
Geo::u32 & solveTimeUs
)
Do a solve of a particular system solution space for a given system and update bounce buffers.
void Enlighten::BaseWorker::EnqueueCommand
public: void EnqueueCommand
(
CommandType && newCommand
)
Enqueues a command for later execution by the worker thread, if it is running.
If the worker thread isn't running, the command is executed immediately on the calling thread.
void Enlighten::CpuWorker::EnqueueQuitCommand
protected: void EnqueueQuitCommand()
Tell the update thread to quit.
void Enlighten::BaseWorker::EnqueueRadiosityUpdate
public: void EnqueueRadiosityUpdate
(
const Geo::v128 & viewOrigin
)
Enqueue a radiosity update on the worker thread.
virtual void Enlighten::MultithreadCpuWorker::EnsureSolverLightBufferSize
protected: virtual void EnsureSolverLightBufferSize()
Ensure the solver light buffer is large enough to store all the lights.
virtual void Enlighten::MultithreadCpuWorkerCommon::EnsureSolverLightBufferSize
protected: void EnsureSolverLightBufferSize()
Ensure the solver light buffer is large enough to store all the lights.
virtual bool Enlighten::IUpdateManagerWorker::ExcludesEnvironmentInPrimaryBounce
public: bool ExcludesEnvironmentInPrimaryBounce() const
Returns the value of the worker property m_ExcludeEnvrionmentInPrimaryBounce.
bool Enlighten::BaseWorker::ExcludesEnvironmentInPrimaryBounce
protected: virtual bool ExcludesEnvironmentInPrimaryBounce() const
Have we requested to solve the environment in secondary bounce only. (ie skip primary bounce)
void Enlighten::BaseWorker::ExecuteCommands
public: void ExecuteCommands()
Executes and destroys commands in the command ring buffer until the buffer is empty.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
const Geo::GeoGuid & id,
BaseDynamicObject *& dynamicObjectPtr
)
Finds the object with the given GUID.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
const Geo::GeoGuid & id,
BaseCubeMap *& cubeMapPtr
)
Finds the object with the given GUID.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
const Geo::GeoGuid & id,
BaseProbeSet *& probeSetPtr
)
Finds the object with the given GUID.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
const Geo::GeoGuid & id,
BaseSystem *& systemPtr
)
Finds the object with the given GUID.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
ObjectType * object,
ObjectType *& result
)
Finds the object with the given address.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
const Geo::GeoGuid & id,
ObjectType *& dynamicObjectPtr
)
Finds the object with the given GUID.
bool Enlighten::BaseWorker::FindObject
public: bool FindObject
(
const Geo::GeoGuid & id,
CpuSystem *& systemObjectPtr
)
Specialise the BaseWorker::FindObject to deal with a concrete type here.
virtual void Enlighten::BaseWorker::FreeVisibilityData
protected: virtual void FreeVisibilityData
(
Geo::s32 lightIndex,
bool isDirectional
)
Allocates/Frees memory for visibility data.
PrecisionHint::Value Enlighten::BaseWorker::GetInputLightingPrecisionHint
public: PrecisionHint::Value GetInputLightingPrecisionHint()
Gets the precision hint for the input lighting buffer,.
virtual LightMethodSelector* Enlighten::IUpdateManagerWorker::GetLightMethodSelector
public: LightMethodSelector * GetLightMethodSelector()
Gets the light method selector.
virtual LightMethodSelector* Enlighten::BaseWorker::GetLightMethodSelector
public: virtual LightMethodSelector * GetLightMethodSelector()
Gets the light method selector.
virtual Geo::u32 Enlighten::IUpdateManagerWorker::GetSizeOfProbeInputWorkspaceMemory
public: Geo::u32 GetSizeOfProbeInputWorkspaceMemory() const
Get the total size of probe set output workspaces.
virtual Geo::u32 Enlighten::BaseWorker::GetSizeOfProbeInputWorkspaceMemory
public: virtual Geo::u32 GetSizeOfProbeInputWorkspaceMemory() const
Get the total size of probe set output workspaces.
virtual Geo::u32 Enlighten::IUpdateManagerWorker::GetSizeOfProbeOutputWorkspaceMemory
public: Geo::u32 GetSizeOfProbeOutputWorkspaceMemory() const
Get the total size of probe set input workspaces.
virtual Geo::u32 Enlighten::BaseWorker::GetSizeOfProbeOutputWorkspaceMemory
public: virtual Geo::u32 GetSizeOfProbeOutputWorkspaceMemory() const
Get the total size of probe set input workspaces.
virtual Geo::u32 Enlighten::IUpdateManagerWorker::GetSizeOfWorkingMemory
public: Geo::u32 GetSizeOfWorkingMemory() const
Get the size of the working memory required for solving.
virtual Geo::u32 Enlighten::BaseWorker::GetSizeOfWorkingMemory
public: virtual Geo::u32 GetSizeOfWorkingMemory() const
Get the size of the working memory required for solving.
virtual Geo::u32 Enlighten::MultithreadCpuWorkerCommon::GetSizeOfWorkingMemory
public: virtual Geo::u32 GetSizeOfWorkingMemory() const
Get the size of the working memory required for solving.
Geo::GeoKeyValueArray<Geo::GeoGuid, BaseSystem>& Enlighten::BaseWorker::GetSystemArray
public: Geo::GeoKeyValueArray< Geo::GeoGuid, BaseSystem > & GetSystemArray()
Returns the array of systems. Used by the GeoMaya plug in to work out when to trigger refreshes.
void Enlighten::MultithreadCpuWorkerCommon::InitThreadGroup
public: void InitThreadGroup()
One-time thread group initialisation.
virtual bool Enlighten::MultithreadCpuWorkerCommon::IsCommandThreadSafe
protected: virtual bool IsCommandThreadSafe() const
Returns true if called on the worker thread, or if no worker thread is running.
Only used to assert thread safety in debug builds.
virtual bool Enlighten::BaseWorker::IsCommandThreadSafe
protected: bool IsCommandThreadSafe() const
Returns true if called on the worker thread, or if no worker thread is running.
Only used to assert thread safety in debug builds.
bool Enlighten::MultithreadCpuWorkerCommon::IsEnvOnlyUpdateRequired
protected: bool IsEnvOnlyUpdateRequired
(
CpuSystemSolutionSpace * systemSolutionSpace,
bool doFullSolve,
const Enlighten::InputLightingBuffer * environment,
Geo::s32 framesPerUpdate
) const
Returns true if the EnvOnly feature is enabled and an update is required.
virtual bool Enlighten::IUpdateManagerWorker::IsUpdateLimited
public: 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::BaseWorker::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::CpuWorker::IsWorkerThreadRunning
public: virtual bool IsWorkerThreadRunning()
Whether the worker thread is currently running.
virtual bool Enlighten::BaseWorker::IsWorkerThreadRunning
public: bool IsWorkerThreadRunning()
Returns true if a separate worker thread is currently running, false if not.
void Enlighten::MultithreadCpuWorkerCommon::LogProfiling
protected: void LogProfiling
(
const ObjectType * object,
F f
)
Log stats with the profiler using an enclosure.
Enlighten::MultithreadCpuWorker::MultithreadCpuWorker
public: MultithreadCpuWorker
(
SolveType solveType,
eOutputFormat irradianceOutputFormat,
eOutputFormat cubemapOutputFormat,
eOutputFormatByteOrder byteOrder,
PrecisionHint::Value inputLightingPrecisionHint,
bool useEntireProbeSetSolver,
bool useProbeSetLod,
EnlightenProfile * profile,
Command * threadCreationCommand,
IThreadGroup * threadGroup,
ILimiter * limiter,
Geo::u64 workerThreadAffinity
)
Constructor.
Enlighten::MultithreadCpuWorkerCommon::MultithreadCpuWorkerCommon
public: MultithreadCpuWorkerCommon
(
SolveType solveType,
eOutputFormat irradianceOutputFormat,
eOutputFormat cubemapOutputFormat,
eOutputFormatByteOrder byteOrder,
PrecisionHint::Value inputLightingPrecisionHint,
bool useEntireProbeSetSolver,
bool useProbeSetLod,
EnlightenProfile * profile,
Command * threadCreationCommand,
IThreadGroup * threadGroup,
ILimiter * limiter,
Geo::u64 workerThreadAffinity
)
Constructor.
virtual void Enlighten::IUpdateManagerWorker::ProbeSetManagerSetMaxWeightForProbeSet
public: void ProbeSetManagerSetMaxWeightForProbeSet
(
Geo::GeoGuid const & probeSetGuid,
float maxWeight
)
Set max interpolation weight for a given probe set.
virtual void Enlighten::BaseWorker::ProbeSetManagerSetMaxWeightForProbeSet
public: virtual void ProbeSetManagerSetMaxWeightForProbeSet
(
Geo::GeoGuid const & probeSetGuid,
float maxWeight
)
Set max interpolation weight for a given probe set.
void Enlighten::BaseWorker::PushMultipleObjectsToDestroy
protected: void PushMultipleObjectsToDestroy
(
Geo::IGeoReleasable *const * objects,
Geo::s32 count
)
Push a list of objects which has been removed from the worker on to a list to be destroyed by the rendering thread.
This is required since the objects may contain graphics resources which can only be destroyed by the rendering thread.
void Enlighten::BaseWorker::PushObjectToDestroy
protected: void PushObjectToDestroy
(
Geo::IGeoReleasable * object
)
Push an object which has been removed from the worker on to a list to be destroyed by the rendering thread.
This is required since the object may contain graphics resources which can only be destroyed by the rendering thread.
virtual void Enlighten::CpuWorker::ReadInputLightingBuffer
public: virtual void ReadInputLightingBuffer
(
ReadInputLightingBufferInfo const & parameters
)
These functions are provided for debugging/visualisation purposes.
Read back the contents of an input lighting buffer.
virtual void Enlighten::IUpdateManagerWorker::ReadInputLightingBuffer
public: void ReadInputLightingBuffer
(
ReadInputLightingBufferInfo const & parameters
)
These functions are provided for debugging/visualisation purposes.
Read back the contents of an input lighting buffer.
void Enlighten::BaseWorker::RecreateInterpolationInputList
protected: void RecreateInterpolationInputList()
Updates the probe interpolation inputs, if required.
virtual void Enlighten::BaseWorker::ReleaseSystemSolutionSpaces
public: virtual void ReleaseSystemSolutionSpaces
(
ReleaseSystemSolutionSpacesInfo const & releaseInfo
)
Release system solution spaces.
virtual void Enlighten::IUpdateManagerWorker::ReleaseSystemSolutionSpaces
public: void ReleaseSystemSolutionSpaces
(
ReleaseSystemSolutionSpacesInfo const & releaseInfo
)
Release the solution spaces.
virtual void Enlighten::BaseWorker::RemoveAllLights
public: virtual void RemoveAllLights()
Remove all lights.
virtual void Enlighten::IUpdateManagerWorker::RemoveAllLights
public: void RemoveAllLights()
Remove all lights.
virtual void Enlighten::BaseWorker::RemoveCubeMap
public: virtual void RemoveCubeMap
(
RemoveInfo const & removeInfo
)
Remove a cube map from the worker (either completely or partially)
virtual void Enlighten::IUpdateManagerWorker::RemoveCubeMap
public: void RemoveCubeMap
(
RemoveInfo const & removeInfo
)
Remove a cube map from the worker (either completely or partially)
virtual void Enlighten::MultithreadCpuWorkerCommon::RemoveCubeMap
public: virtual void RemoveCubeMap
(
RemoveInfo const & removeInfo
)
Remove a cube map from the worker (either completely or partially)
void Enlighten::BaseWorker::RemoveDirectionalLight
protected: void RemoveDirectionalLight
(
Geo::GeoGuid lightId
)
Removes a light with the given GUID from the list of directional lights (if one is found), and frees the associated memory.
virtual void Enlighten::MultithreadCpuWorkerCommon::RemoveDynamicObject
public: virtual void RemoveDynamicObject
(
RemoveInfo const & removeInfo
)
Remove a dynamic object from the worker.
virtual void Enlighten::BaseWorker::RemoveDynamicObject
public: virtual void RemoveDynamicObject
(
RemoveInfo const & removeInfo
)
Remove a dynamic object from the worker.
virtual void Enlighten::IUpdateManagerWorker::RemoveDynamicObject
public: void RemoveDynamicObject
(
RemoveInfo const & removeInfo
)
Remove a dynamic object from the worker.
virtual void Enlighten::BaseWorker::RemoveEmissiveEnvironment
public: virtual void RemoveEmissiveEnvironment
(
Geo::GeoGuid const & environmentId
)
Remove the environment with the given id.
virtual void Enlighten::IUpdateManagerWorker::RemoveEmissiveEnvironment
public: void RemoveEmissiveEnvironment
(
Geo::GeoGuid const & environmentId
)
Remove the environment with the given id.
virtual void Enlighten::BaseWorker::RemoveLight
public: virtual void RemoveLight
(
Geo::GeoGuid const & lightId
)
Remove the light with the given id.
virtual void Enlighten::IUpdateManagerWorker::RemoveLight
public: void RemoveLight
(
Geo::GeoGuid const & lightId
)
Remove the light with the given id.
virtual void Enlighten::IUpdateManagerWorker::RemoveLightBank
public: void RemoveLightBank
(
Geo::s32 const & bankId
)
Remove a light bank.
virtual void Enlighten::BaseWorker::RemoveLightBank
public: virtual void RemoveLightBank
(
Geo::s32 const & bankId
)
Remove a light bank.
void Enlighten::BaseWorker::RemoveLightWithoutVisibility
protected: void RemoveLightWithoutVisibility
(
Geo::GeoGuid lightId
)
Removes a light with the given GUID from the list of lights without visibility (if one is found), and frees the associated memory.
void Enlighten::BaseWorker::RemoveLightWithVisibility
protected: void RemoveLightWithVisibility
(
Geo::GeoGuid lightId
)
Removes a light with the given GUID from the list of lights with visibility (if one is found), and frees the associated memory.
virtual void Enlighten::MultithreadCpuWorkerCommon::RemoveProbeSet
public: virtual void RemoveProbeSet
(
RemoveInfo const & removeInfo
)
Remove a probe set from the worker (either completely or partially)
virtual void Enlighten::IUpdateManagerWorker::RemoveProbeSet
public: void RemoveProbeSet
(
RemoveInfo const & removeInfo
)
Remove a probe set from the worker (either completely or partially)
virtual void Enlighten::BaseWorker::RemoveProbeSet
public: virtual void RemoveProbeSet
(
RemoveInfo const & removeInfo
)
Remove a probe set from the worker (either completely or partially)
virtual void Enlighten::MultithreadCpuWorker::RemoveSystem
public: virtual void RemoveSystem
(
RemoveInfo const & removeInfo
)
Remove a system from the worker (either completely or partially)
virtual void Enlighten::CpuWorker::RemoveSystem
public: virtual void RemoveSystem
(
RemoveInfo const & removeInfo
)
Remove a system from the worker (either completely or partially)
virtual void Enlighten::BaseWorker::RemoveSystem
public: virtual void RemoveSystem
(
RemoveInfo const & removeInfo
)
Remove a system from the worker (either completely or partially)
virtual void Enlighten::IUpdateManagerWorker::RemoveSystem
public: void RemoveSystem
(
RemoveInfo const & removeInfo
)
Remove a system from the worker (either completely or partially)
virtual void Enlighten::MultithreadCpuWorkerCommon::RemoveSystem
public: virtual void RemoveSystem
(
RemoveInfo const & removeInfo
)
Remove a system from the worker (either completely or partially)
void Enlighten::CpuWorker::RemoveSystemFromDependencyLists
protected: void RemoveSystemFromDependencyLists
(
BaseSystem * system
)
Removes the given system from all cached dependency lists.
virtual void Enlighten::IUpdateManagerWorker::RemoveSystemSolutionSpaces
public: void RemoveSystemSolutionSpaces
(
Geo::GeoGuid const & systemId
)
Removes the solution spaces from the system. This function will not release the solution spaces.
virtual void Enlighten::BaseWorker::RemoveSystemSolutionSpaces
public: virtual void RemoveSystemSolutionSpaces
(
Geo::GeoGuid const & systemId
)
Removes the solution spaces from the system. This function will not release the solution spaces.
void Enlighten::BaseWorker::ReRegisterObjectsWithProfiler
public: void ReRegisterObjectsWithProfiler()
Re-register all objects with the profiler.
virtual void Enlighten::CpuWorker::RunWorkerThread
public: void RunWorkerThread()
Start the worker thread if it is not already running.
virtual void Enlighten::MultithreadCpuWorkerCommon::RunWorkerThread
public: virtual void RunWorkerThread()
Start the worker thread if it is not already running.
virtual void Enlighten::IUpdateManagerWorker::SetAllUpdateCounters
public: void SetAllUpdateCounters
(
Geo::s32 const & count
)
Set all system and probe update counters to count.
virtual void Enlighten::BaseWorker::SetAllUpdateCounters
public: virtual void SetAllUpdateCounters
(
Geo::s32 const & count
)
Set all system and probe update counters to count.
virtual void Enlighten::IUpdateManagerWorker::SetDoFullSolveNextFrame
public: void SetDoFullSolveNextFrame()
Disable temporal coherence so a full solve is performed next frame.
virtual void Enlighten::BaseWorker::SetDoFullSolveNextFrame
public: virtual void SetDoFullSolveNextFrame()
Disable temporal coherence so a full solve is performed next frame.
virtual void Enlighten::BaseWorker::SetDoIndirectInputLightingNextFrame
public: virtual void SetDoIndirectInputLightingNextFrame
(
Geo::GeoGuid const & systemId
)
Sets a flag to run indirect input lighting on the next frame.
virtual void Enlighten::IUpdateManagerWorker::SetDoIndirectInputLightingNextFrame
public: void SetDoIndirectInputLightingNextFrame
(
Geo::GeoGuid const & systemId
)
Sets a flag to run indirect input lighting on the next frame.
virtual void Enlighten::MultithreadCpuWorker::SetDoIndirectInputLightingNextFrame
public: virtual void SetDoIndirectInputLightingNextFrame
(
Geo::GeoGuid const & systemId
)
Sets a flag to run indirect input lighting on the next frame.
virtual void Enlighten::IUpdateManagerWorker::SetLightBankUpdateCounter
public: void SetLightBankUpdateCounter
(
SetLightBankUpdateCounterInfo const & updateCounterInfo
)
Set a light bank update counter.
virtual void Enlighten::MultithreadCpuWorker::SetLightBankUpdateCounter
public: virtual void SetLightBankUpdateCounter
(
SetLightBankUpdateCounterInfo const & updateCounterInfo
)
Set a light bank update counter.
virtual void Enlighten::BaseWorker::SetLightBankUpdateCounter
public: virtual void SetLightBankUpdateCounter
(
SetLightBankUpdateCounterInfo const & updateCounterInfo
)
Set a light bank update counter.
virtual void Enlighten::BaseWorker::SetProbeSetManager
public: virtual void SetProbeSetManager
(
IProbeSetManager *const & probeSetManager
)
Set a probe set manager.
virtual void Enlighten::BaseWorker::SetProbeSetTransform
public: virtual void SetProbeSetTransform
(
SetProbeSetTransformInfo const & probeSetTransformInfo
)
Set a probe set world-to-local-space transform.
virtual void Enlighten::IUpdateManagerWorker::SetProbeSetTransform
public: void SetProbeSetTransform
(
SetProbeSetTransformInfo const & probeSetTransformInfo
)
Set a probe set world-to-local-space transform.
virtual void Enlighten::IUpdateManagerWorker::SetSystemSolutionSpaces
public: void SetSystemSolutionSpaces
(
ISystemSolutionSpace *const * solutionSpaces,
const Geo::s32 solutionSpacesCount,
const Geo::s32 indexForBounceResampling
)
Set the solution spaces used by a system.
Note that a system with a matching guid needs to already be added to the worker. This will only set the solution spaces if they all belong to the same system.
Parameters
solutionSpaces | Raw array of ISystemSolutionSpace pointers |
|
solutionSpacesCount | Number of elements in the solutionSpaces array. |
|
indexForBounceResampling | The index for the solution space to use for bounce resampling. Should be the index of the solution space with the smallest output pixel size. |
virtual void Enlighten::BaseWorker::SetSystemSolutionSpaces
public: virtual void SetSystemSolutionSpaces
(
ISystemSolutionSpace *const * solutionSpaces,
const Geo::s32 solutionSpacesCount,
const Geo::s32 indexForBounceResampling
)
Set the solution spaces used by a system.
Note that a system with a matching guid needs to already be added to the worker. This will only set the solution spaces if they all belong to the same system.
virtual void Enlighten::MultithreadCpuWorker::SetTransparencySamplePositionOffset
public: virtual void SetTransparencySamplePositionOffset
(
SetTransparencySamplePositionOffsetInfo const & offsetInfo
)
Sets the transparency sample position offset.
virtual void Enlighten::BaseWorker::SetTransparencySamplePositionOffset
public: virtual void SetTransparencySamplePositionOffset
(
SetTransparencySamplePositionOffsetInfo const & offsetInfo
)
Sets the transparency sample position offset.
virtual void Enlighten::IUpdateManagerWorker::SetTransparencySamplePositionOffset
public: void SetTransparencySamplePositionOffset
(
SetTransparencySamplePositionOffsetInfo const & offsetInfo
)
Sets the transparency sample position offset.
virtual void Enlighten::CpuWorker::SetVisibilityBits
public: virtual void SetVisibilityBits
(
SetVisibilityBitsInfo const & visibilityBitsInfo
)
Sets the visibility block for a (system, light) pair.
virtual void Enlighten::IUpdateManagerWorker::SetVisibilityBits
public: void SetVisibilityBits
(
SetVisibilityBitsInfo const & visibilityBitsInfo
)
Sets the visibility block for a (system, light) pair.
virtual void Enlighten::MultithreadCpuWorker::SetVisibilityBits
protected: virtual void SetVisibilityBits
(
SetVisibilityBitsInfo const & visibilityBitsInfo
)
Sets the visibility block for a (system, light) pair.
void Enlighten::BaseWorker::SetWorkerProperties
public: virtual void SetWorkerProperties
(
const UpdateManagerWorkerProperties & properties
)
Set the worker global state.
virtual void Enlighten::IUpdateManagerWorker::SetWorkerProperties
public: void SetWorkerProperties
(
UpdateManagerWorkerProperties const & properties
)
Set the worker global state.
virtual void Enlighten::MultithreadCpuWorkerCommon::SetWorkerProperties
public: virtual void SetWorkerProperties
(
const UpdateManagerWorkerProperties & properties
)
Set the worker global state.
void Enlighten::MultithreadCpuWorkerCommon::ShutdownThreadGroup
public: void ShutdownThreadGroup()
One-time therad group shut down.
virtual void Enlighten::MultithreadCpuWorkerCommon::StopWorkerThread
public: virtual void StopWorkerThread()
Signal the worker thread to stop and wait until it quits.
virtual void Enlighten::CpuWorker::StopWorkerThread
public: void StopWorkerThread()
Signal the worker thread to stop and wait until it quits.
virtual void Enlighten::MultithreadCpuWorker::TriggerTransparencyVolume
public: virtual void TriggerTransparencyVolume
(
const Enlighten::BoxVolume & volume
)
Triggers a transparency volume.
virtual void Enlighten::IUpdateManagerWorker::TriggerTransparencyVolume
public: void TriggerTransparencyVolume
(
const Enlighten::BoxVolume & volume
)
Triggers a transparency volume.
virtual void Enlighten::IUpdateManagerWorker::TriggerTransparencyVolume
public: void TriggerTransparencyVolume
(
const Enlighten::SphereVolume & volume
)
Triggers a transparency volume.
virtual void Enlighten::BaseWorker::TriggerTransparencyVolume
public: virtual void TriggerTransparencyVolume
(
const Enlighten::SphereVolume & volume
)
Triggers a transparency volume.
virtual void Enlighten::MultithreadCpuWorker::TriggerTransparencyVolume
public: virtual void TriggerTransparencyVolume
(
const Enlighten::SphereVolume & volume
)
Triggers a transparency volume.
virtual void Enlighten::BaseWorker::TriggerTransparencyVolume
public: virtual void TriggerTransparencyVolume
(
const Enlighten::BoxVolume & volume
)
Triggers a transparency volume.
void Enlighten::MultithreadCpuWorker::TriggerTransparencyVolumeGeneric
public: void TriggerTransparencyVolumeGeneric
(
const VolumeType & volume
)
Triggers a transparency volume.
void Enlighten::CpuWorker::UpdateCubeMapDependencyList
protected: void UpdateCubeMapDependencyList
(
BaseCubeMap * cubeMap
)
Creates the cached dependency list for the given cube map.
virtual void Enlighten::CpuWorker::UpdateEmissiveEnvironment
public: virtual void UpdateEmissiveEnvironment
(
UpdateEnvironmentInfo const & updateEnvironmentInfo
)
Update (or add) the environment with the given id.
virtual void Enlighten::IUpdateManagerWorker::UpdateEmissiveEnvironment
public: void UpdateEmissiveEnvironment
(
UpdateEnvironmentInfo const & updateEnvironmentInfo
)
Update (or add) the environment with the given id.
virtual void Enlighten::BaseWorker::UpdateLight
public: virtual void UpdateLight
(
UpdateLightInfo const & updateLightInfo
)
Update (or add) the light with the given id.
virtual void Enlighten::IUpdateManagerWorker::UpdateLight
public: void UpdateLight
(
UpdateLightInfo const & updateLightInfo
)
Update (or add) the light with the given id.
virtual void Enlighten::MultithreadCpuWorkerCommon::UpdateLightmapBounceBufferData
protected: virtual void UpdateLightmapBounceBufferData
(
BaseSystem * system
)
Update the lightmap bounce buffer data.
virtual void Enlighten::MultithreadCpuWorker::UpdateLightmapBounceBufferData
protected: virtual void UpdateLightmapBounceBufferData
(
BaseSystem * system
)
Update the lightmap bounce buffer data.
void Enlighten::CpuWorker::UpdateProbeDependencyList
protected: void UpdateProbeDependencyList
(
BaseProbeSet * probeSet
)
Creates the cached dependency list for the given probe set.
GEO_POP_IGNORE_DEPRECATION_WARNING void Enlighten::BaseWorker::UpdateRadiosity
public: virtual void UpdateRadiosity
(
const Geo::v128 & viewOrigin
)
The main radiosity update function.
virtual void Enlighten::MultithreadCpuWorkerCommon::UpdateRadiosity
public: virtual void UpdateRadiosity
(
const Geo::v128 & viewOrigin
)
The main radiosity update function.
virtual void Enlighten::IUpdateManagerWorker::UpdateRadiosity
public: void UpdateRadiosity
(
const Geo::v128 & viewOrigin
)
The main radiosity update function.
void Enlighten::CpuWorker::UpdateSystemDependencyLists
protected: void UpdateSystemDependencyLists
(
BaseSystem * newSystem
)
Creates the cached dependency list for the given system, and updates all other lists with the new system.
bool Enlighten::BaseWorker::WriteVisibilityPointers
protected: bool WriteVisibilityPointers
(
void ** writeAt,
BaseSystem * system,
Geo::s32 lightBank
)
Write ordered list of visibility data pointers for the given system and light bank Returns TRUE if any of the light inputs have changed.
ProcessingStage
protected: enum ProcessingStage
{
STAGE_SETUP,
STAGE_QUEUE_INPUT_LIGHTING,
STAGE_INPUT_LIGHTING,
STAGE_QUEUE_SOLVING,
STAGE_SOLVING,
STAGE_QUEUE_INTERPOLATION,
STAGE_INTERPOLATION,
STAGE_HOUSEKEEPING
}
Internal enumeration for keeping track of the update loop.
enumerators
STAGE_SETUP | |
STAGE_QUEUE_INPUT_LIGHTING | |
STAGE_INPUT_LIGHTING | |
STAGE_QUEUE_SOLVING | |
STAGE_SOLVING | |
STAGE_QUEUE_INTERPOLATION | |
STAGE_INTERPOLATION | |
STAGE_HOUSEKEEPING |