This is the documentation for Enlighten.
class Enlighten MultithreadCpuWorkerCommon
class Enlighten::MultithreadCpuWorkerCommon
└>Enlighten::CpuWorker
└>Enlighten::BaseWorker
└>Enlighten::IUpdateManagerWorker
Implementation of the worker class, containing functionality for platforms which run tasks on a multithreaded CPU.
This includes Windows PC. There are three possible ways the MulithreadCpuWorker can execute tasks:
via the AsyncTaskCallback, if it is supplied at creation; or
via Intel Threaded Building Blocks (Windows only); or
failing both of these, on a single worker thread
Enums
Name | Description |
|---|---|
Internal enumeration for keeping track of the update loop. |
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. |
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::GeoArray< WorkerThreadData * > m_WorkerThreadData | Internal array of working data for each worker thread. |
Functions
Name | Description |
|---|---|
Add a cube map to the worker. | |
Add a cube map to the worker. | |
Add a cube map to the worker. | |
Add a dynamic object to the worker. | |
Add a dynamic object to the worker. | |
Add a probe set to the worker. | |
Add a probe set to the worker. | |
Add a probe set to the worker. | |
Add a system to the worker, and allocate any required auxiliary resources. | |
Add a system to the worker, and allocate any required auxiliary resources. | |
Add a system to the worker, and allocate any required auxiliary resources. | |
Allocates/Frees memory for visibility data. | |
Base class constructor. | |
Remove all objects from the worker, and free memory allocated by the worker. | |
Remove all objects from the worker, and free memory allocated by the worker. | |
Clears the cube map volume transparency. | |
Clears the cube map volume transparency. | |
Clears the system volume transparency. | |
Clears the system volume transparency. | |
Compute directional light visibility for the given system. | |
Allocate and make a copy of an albedo buffer. | |
Allocate and make a copy of an albedo buffer. | |
Allocate and make a copy of an emissive buffer. | |
Allocate and make a copy of an emissive buffer. | |
Allocate and make a copy of an emissive buffer. | |
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. |
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. |
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. |
Allocate and make a copy of Enlighten probe set output. | |
Allocate and make a copy of Enlighten probe set output. | |
Allocate and make a copy of raw Enlighten texture output. | |
Allocate and make a copy of raw Enlighten texture output. | |
Allocate and make a copy of a visibility data block. | |
Allocate and make a copy of a visibility data block. | |
Constructor, taking properties which are fixed at creation time. | |
Decrements the update counters for all systems, probe sets, cube maps and light banks. | |
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. |
Do the solve task for a cube map using the working memory of the given thread index. | |
Do the interpolation for a single dynamic object, to allow multithreading. | |
Runs the probe interpolation tasks for all dynamic objects, non-multithreaded. | |
Copies the environment values from the application-settable copy to the internal copy. | |
Do the next task on the queue using the working memory of the given thread index. | |
Do the input lighting task for a system using the working memory of the given thread index. | |
Do a freeze of the solution space data. | |
Do a solve of a particular system solution space for a given system and update bounce buffers. | |
Enqueues a command for later execution by the worker thread, if it is running. | |
Tell the update thread to quit. | |
Enqueue a radiosity update on the worker thread. | |
Ensure the solver light buffer is large enough to store all the lights. | |
Have we requested to solve the environment in secondary bounce only. (ie skip primary bounce) | |
Returns the value of the worker property m_ExcludeEnvrionmentInPrimaryBounce. | |
Executes and destroys commands in the command ring buffer until the buffer is empty. | |
Finds the object with the given GUID. | |
Finds the object with the given address. | |
Finds the object with the given GUID. | |
Finds the object with the given GUID. | |
Specialise the BaseWorker::FindObject to deal with a concrete type here. | |
Finds the object with the given GUID. | |
Finds the object with the given GUID. | |
Allocates/Frees memory for visibility data. | |
Gets the precision hint for the input lighting buffer,. | |
Gets the light method selector. | |