Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In addition to the low level API in the Enlighten library itself, the Enlighten SDK now includes a high level run time layer built on top of the low level API.

This part of Enlighten is shipped as source code. As well as being available for integration into a game engine, it serves as example usage of the Enlighten low level API. More details are available in the High Level Runtime section of the SDK documentation.

Classes

NameDescription
Enlighten::AsyncTaskThreadGroup

A thread group which executes Enlighten tasks by calling the AsyncTaskCallback a given number of times, and uses GeoEvent signalling to wait until all threads have completed execution.

Enlighten::BakedProbeOutputInfo

Parameters to be enqueued for a SetBakedProbeOutput() command The pointer contents will be copied; when the command has executed the original data may be released.

Enlighten::BaseAlbedoHandler

Base Albedo Handler.

Enlighten::BaseCubeMap

Base class used by the update manager to hold all of the resources for a cube map (regardless of where the solving happens).

Enlighten::BaseDynamicObject

Base class which holds everything a dynamic object must have (regardless of where the solving happens).

Enlighten::BaseEnvironment

Trivial base class used to lend a base type to environment maps.

Enlighten::BaseProbeSet

Class used by the update manager to hold all of the resources for a probe set together.

Enlighten::BaseSystem

Base class which holds everything a system must have (regardless of where the solving happens).

Enlighten::BaseSystemSolutionSpace

Base implementation of ISystemSolutionSpace.

Enlighten::BaseWorker

Base implementation of the worker class, containing functionality common to all platforms.

Enlighten::Command

Basic interface for commands to be executed on the worker thread.

Enlighten::CopyAlbedoBufferInfo

Parameters to be enqueued for a CopyInputLightingBuffer() command.

Enlighten::CopyBounceBufferInfo

Parameters to be enqueued for a CopyInputLightingBuffer() command.

Enlighten::CopyEmissiveBufferInfo

Parameters to be enqueued for a CopyInputLightingBuffer() command.

Enlighten::CopyEmissiveEnvironmentInfo

Parameters to be enqueued for the CopyEmissiveEnvironment() command.

Enlighten::CopyInputLightingBufferInfo

Parameters to be enqueued for a CopyInputLightingBuffer() command.

Enlighten::CopyProbeOutputInfo

Parameters to be enqueued for a CopyProbeOutputInfo() command.

Enlighten::CopyRawOutputInfo

Parameters to be enqueued for a CopyRawOutput() command.

Enlighten::CopyTransparencyBufferInfo

Parameters to be enqueued for a CopyMaterialTransparencyBuffer() or CopyGeometryTransparencyBuffer() command.

Enlighten::CopyVisibilityBufferInfo

Parameters to be enqueued for a CopyVisibilityBuffer() command.

Enlighten::CpuAlbedoHandler

Implementation of BaseAlbedoHandler for the CPU solver.

Enlighten::CpuCubeMap

Derived class of BaseCubeMap used by the CPU and console update managers.

Enlighten::CpuDynamicObject

Implementation of BaseDynamicObject for Cpu Solving.

Enlighten::CpuEnvironment

Class used by the CPU and console update managers to represent an environment map.

Enlighten::CpuSystem

System for the CPU solver.

Enlighten::CpuSystemSolutionSpace

System solution space for the CPU solver.

Enlighten::CpuWorker

Implementation of the worker class, containing functionality common to all platforms which solve radiosity on a CPU or SPU.

Enlighten::DefaultThreadGroup

Default implementation of IThreadGroup which executes tasks serially on the calling thread (the worker thread).

Enlighten::Dx11TextureUpdater

Implementation for managing solver output and Dx11 GPU textures.

Enlighten::Dx9TextureUpdater

Implementation for managing solver output and Dx9 GPU textures.

Enlighten::DynamicObject

Class representing the local bounding box and corresponding output probe resolution of a dynamic object, so that it can be lit with volume textures of SH probe data.

Enlighten::EnlightenProfile

A container for Enlighten runtime profile statistics.

Enlighten::EnlightenTask

A task to be executed by a TaskProcessor. It consists of a task type and an object pointer.

Enlighten::FixedTimeLimiter

Simple implementation of ILimiter which prevents new tasks from starting after a fixed time has elapsed from the start of UpdateRadiosity().

Enlighten::GlTextureUpdater

Implementation for managing solver output and OpenGL GPU textures.

Enlighten::GpuTextureWrapper

Concrete implementation of IGpuTexture.

Enlighten::IAsyncTask

Async task interface.

Enlighten::IGpuTexture

IGpuTexture is the main interface used by the HLRT to keep track of output textures.

Enlighten::IGpuTextureAllocator

Interface which enables Enlighten to allocate GPU textures to hold the solved output.

Enlighten::IGpuTextureUpdater

IGpuTextureUpdater is the interface used by the HLRT to manage Enlighten solver output and associated GPU texture resources.

Enlighten::ILimiter

Interface which can prevent Enlighten tasks from starting in the current call to UpdateRadiosity.

Enlighten::ISystemSolutionSpace

A solution space for a system.

Enlighten::IThreadGroup

Interface through which MultithreadCpuWorker runs tasks on multiple threads in parallel.

Enlighten::IUpdateManager

This class is the base interface for the singleton object which manages all of the Enlighten updates for the systems and lights in the world, according to the current update strategy, solve type and albedo type.

Enlighten::IUpdateManagerWorker

Interface of the update manager worker.

Enlighten::LightMethodSelector

Light Method Selector.

Enlighten::MultithreadCpuUpdateManager

An update manager for Enlighten that does CPU updates.

Enlighten::MultithreadCpuWorker

Worker for the mulithreaded CPU update manager.

Enlighten::MultithreadCpuWorkerCommon

Implementation of the worker class, containing functionality for platforms which run tasks on a multithreaded CPU.

Enlighten::ProfileHistory

A simple class for recording a history of double valued stats.

Enlighten::RawBuffer

A range of bytes.

Enlighten::ReadInputLightingBufferInfo

Parameters to be enqueued for a ReadInputLightingBufferInfo() command.

Enlighten::RefTextureAllocator

Texture allocator for creating CPU solution spaces for Enlighten without any associated GPU resources.

Enlighten::RefTextureUpdater

Reference texture updater.

Enlighten::ReleaseSystemSolutionSpacesInfo

Parameters to be enqueued for a ReleaseSystemSolutionSpaces() command.

Enlighten::RemoveInfo

Parameters to be enqueued for a RemoveSystem(), RemoveProbeSet(), RemoveCubeMap() or RemoveDynamicObject() command.

Enlighten::SetLightBankUpdateCounterInfo

Parameters to be enqueued for a SetLightBankUpdateCounter() command.

Enlighten::SetParameterCommand

Command to set a parameter on an object.

Enlighten::SetProbeSetTransformInfo

Parameters to be enqueued for a SetProbeSetTransform() command.

Enlighten::SetSystemSolutionSpacesCommand

Command to set solutions spaces for given system.

Enlighten::SetTransparencySamplePositionOffsetInfo

Parameters to be enqueued for a SetTransparencySamplePositionOffset() command.

Enlighten::SetVisibilityBitsInfo

Parameters to be enqueued for a SetVisibilityBits() command.

Enlighten::SystemAlbedoData

Class representing the albedo data for a system (or dynamic object which contributes to radiosity).

Enlighten::TaskProcessor

TaskProcessor runs a loop for pulling tasks off the current queue until either the whole list is done, or an ILimiter tells it to stop.

Enlighten::TextureSubSection

Defines a sub-section of a texture, specified in texels.

Enlighten::TriggerVolumeTransparencyGeneric

Command to trigger a transprency volume.

Enlighten::UpdateEnvironmentInfo

Parameters to be enqueued for the UpdateEmissiveEnvironment() command.

Enlighten::UpdateLightCommandGeneric

Command to update a light.

Enlighten::UpdateLightInfo

Parameters to be enqueued for the UpdateLight() command.

Enlighten::UpdateLightOptions

Optional parameters to the UpdateLight() command.

Enlighten::UpdateManagerLight

Class which extends the Enlighten input light class with extra data used only by the high level runtime, and not by Enlighten itself.

Enlighten::UpdateManagerProperties

This class contains the properties of an Update Manager which must be supplied on creation and can't be changed.

Enlighten::UpdateManagerWorkerProperties

Class representing the global state of the update manager worker.

Enlighten::WorkerFunctionCommand

Command to execute a function in the IUpdaetManagerWorker interface with no input arguments.

Enlighten::WorkerFunctionParameterCommand

Command to execute a function in the IUpdateManagerWorker interface with one input argument.

Enlighten::WorkerFunctionTwoParametersCommand

Command to execute a function in the IUpdateManagerWorker interface with two parameters.

Enlighten::WorkerObjectFunctionCommand

Command to execute paramless method on an an object specified by the guid.

Enlighten::WorkerThreadData

Helper class for holding per-thread working data.

Enlighten::WorkspaceAllocator

A specialised circular/stack allocator hybrid for allocating solve workspace memory.

Functions

NameDescription
AddItem(Geo::s32, double)

Add a profile item to the history.

Clear()

Remove all objects from the update manager and free all associated memory.

ConvertToDx9Format(TextureFormat)

Helper function to convert from platform independent Enlighten::TextureFormat to Dx9 texture format.

ConvertToDxgiFormat(TextureFormat)

Helper function to convert from platform independent Enlighten::TextureFormat to DXGI texture format.

Copy(InputLightBase *, const UpdateManagerLight *)

Copies a light.

Copy(UpdateManagerLight *, const InputLightBase *)

Copies a light.

Create(const UpdateManagerProperties &)

Create a multithread CPU update manager.

CyclesToMillisecond(Geo::s64)

Helper function to convert CPU cycles to milliseconds.

CyclesToSeconds(Geo::s64)

Helper function to convert CPU cycles to seconds.

EnqueueCommand(IUpdateManager *, CommandType &&)

Enqueues a command.

EnqueueCommand(CommandType &&)

Enqueues a command for later execution by the worker thread, if it is running.

EnqueueSetObjectParameter(IUpdateManager *, Geo::GeoGuid, void(ObjectType::*)(ParamType), ArgType &&)

Enqueues a command to set a parameter on an object on the worker thread.

EnqueueSetObjectParameter(IUpdateManager *, ObjectType *, void(ObjectType::*)(const ParamType &), ArgType &&)

Enqueues a command to set a parameter on an object on the worker thread.

EnqueueSetObjectParameter(IUpdateManager *, Geo::GeoGuid, void(ObjectType::*)(const ParamType &), ArgType &&)

Enqueues a command to set a parameter on an object on the worker thread.

EnqueueSetObjectParameter(IUpdateManager *, ObjectType *, void(ObjectType::*)(ParamType), ArgType &&)

Enqueues a command to set a parameter on an object on the worker thread.

FindObject(const Geo::GeoGuid &, BaseSystem *&)

Finds the object with the given GUID.

FindObject(const Geo::GeoGuid &, BaseProbeSet *&)

Finds the object with the given GUID.

FindObject(const Geo::GeoGuid &, BaseCubeMap *&)

Finds the object with the given GUID.

FindObject(const Geo::GeoGuid &, BaseDynamicObject *&)

Finds the object with the given GUID.

FindObject(const Geo::GeoGuid &, CpuSystem *&)

Specialise the BaseWorker::FindObject to deal with a concrete type here.

GetDxgiFormatBytesPerPixel(DXGI_FORMAT)

Helper function to calculate the number of texture bytes per pixel for DXGI texture formats supported by Enlighten.

GetItem(Geo::s32)

Get the last added profile item.

GetItemAverage(Geo::s32)

Get the average of the profile items in the history.

GetItemCount(Geo::s32)

Get the number of profile items in the history.

GetItemMaximum(Geo::s32)

Get the max value of the profile items in the history.

GetItemMinimum(Geo::s32)

Get the min value of the profile items in the history.

GetOutputTextureRangeEnd(const RadSystemCore &, SolveType)

Return the end of the range of output texture types that can be updated for this combination of solve type and radiosity core.

GetTextureBytesPerPixel(TextureFormat)

Gets the number of bytes required for each pixel of the given texture format.

MultithreadCpuUpdateManager(const UpdateManagerProperties &)

Protected constructor. Do not call directly, use Create instead.

ProfileHistory(const Geo::GeoGuid &)

Construct a history from a guid.

Reset()

Reset to empty (clear all history)

SetWorkerProperties(const UpdateManagerWorkerProperties &)

Set the worker global state.

UpdateRadiosity(const Geo::v128 &)

The main radiosity update function.

Enums

NameDescription
AggregateProfileItem

Items we record for totals.

CubeMapProfileItem

Items we record against cube maps.

EnlightenTaskType

The MultithreadCpuWorker works by putting tasks in a list, and then executing TaskProcessors on several threads in parallel.

OutputTextureType

Enumeration of the different output textures produced by the Enlighten solvers.

ProbeSetProfileItem

Items we record against probe sets.

ProbeVolumeOutputTextureType

Enumeration of the different probe volume output textures.

SolveType

Enumeration of the different types of solve.

SystemProfileItem

Items we record against systems.

TextureFormat

Enumeration of output texture formats used by the high level run-time.

Typedefs

NameDescription
void(GEO_CALL * AsyncTaskCallback)(IAsyncTask *Task, const char *Name)

Function pointer type for the callback for executing tasks asynchronously.

void(* CommandCompletedCallback)(void *)

Callback signature for when a command is completed.

ProfileHistory< NUM_AGGREGATE_PROFILE_ITEMS > EnlightenAggregateProfile

History profile for aggregate stats.

ProfileHistory< NUM_CUBE_MAP_PROFILE_ITEMS > EnlightenCubeMapProfile

History profile for cube maps.

ProfileHistory< NUM_PROBE_SET_PROFILE_ITEMS > EnlightenProbeSetProfile

History profile for probesets.

ProfileHistory< NUM_SYSTEM_PROFILE_ITEMS > EnlightenSystemProfile

History profile for systems.

Geo::GeoString< char > ProfileDescription

String for describing a profile, used by EnlightenProfile.

Geo::GeoMap< Geo::GeoGuid, Geo::s32 > TGuidIndexMap

GeoGuid-to-s32 map used by EnlightenProfile.

Variables

NameDescription
const Geo::u64 DEFAULT_WORKER_THREAD_AFFINITY = Geo::g_MaxU64

Constant defining the default affinity for the worker thread of a MultithreadCpuWorker.

const Geo::s32 INFINITE_UPDATES = -1

Set the update counter for a system to this value to request continuous updates.


Anchor
a83691ce3b61393ae37d3a6dc31b976e0
a83691ce3b61393ae37d3a6dc31b976e0

void Enlighten::ProfileHistory< tNumProfileItems >::AddItem

...

public: void AddItem
(
    Geo::s32 item,
    double value
)

...

Add a profile item to the history.


Anchor
a7136b9d0ea16d3a6f916c4d61d7a9396
a7136b9d0ea16d3a6f916c4d61d7a9396

virtual void Enlighten::MultithreadCpuUpdateManager::Clear

...

public: virtual void Clear()

...

Remove all objects from the update manager and free all associated memory.


Anchor
ab4c01111768feac6a2db0f4be7bd4386
ab4c01111768feac6a2db0f4be7bd4386

D3DFORMAT Enlighten::ConvertToDx9Format

...

public: D3DFORMAT ConvertToDx9Format
(
    TextureFormat format
)

...

Helper function to convert from platform independent Enlighten::TextureFormat to Dx9 texture format.


Anchor
a388ada4f0424fd9608565fbe099669c7
a388ada4f0424fd9608565fbe099669c7

DXGI_FORMAT Enlighten::ConvertToDxgiFormat

...

public: DXGI_FORMAT ConvertToDxgiFormat
(
    TextureFormat format
)

...

Helper function to convert from platform independent Enlighten::TextureFormat to DXGI texture format.


Anchor
ae3c44ab58dfa795bffebd3e445e6f0d3
ae3c44ab58dfa795bffebd3e445e6f0d3

void Enlighten::LightMethodSelector::Copy

...

public: void Copy
(
    InputLightBase * lightDst,
    const UpdateManagerLight * lightSrc
) const

...

Copies a light.


Anchor
a42c2727198636553abaa1fa007975936
a42c2727198636553abaa1fa007975936

void Enlighten::LightMethodSelector::Copy

...

public: void Copy
(
    UpdateManagerLight * lightDst,
    const InputLightBase * lightSrc
) const

...

Copies a light.


Anchor
a6faa566d9781f29f0450b3bfb67ffdb7
a6faa566d9781f29f0450b3bfb67ffdb7

static IUpdateManager* Enlighten::MultithreadCpuUpdateManager::Create

...

public: IUpdateManager * Create
(
    const UpdateManagerProperties & properties
)

...

Create a multithread CPU update manager.

Note: Call GeoAttachLogger to listen for important error and warning messages. Returns null if no logger was attached!


Anchor
a439690387473e76b36a7a851f354288b
a439690387473e76b36a7a851f354288b

double Enlighten::CyclesToMillisecond

...

public: double CyclesToMillisecond
(
    Geo::s64 cycles
)

...

Helper function to convert CPU cycles to milliseconds.


Anchor
a1411be71d0b4efe563329db792293594
a1411be71d0b4efe563329db792293594

double Enlighten::CyclesToSeconds

...

public: double CyclesToSeconds
(
    Geo::s64 cycles
)

...

Helper function to convert CPU cycles to seconds.


Anchor
a24fbec8720b7d418d58852c1216d3ae2
a24fbec8720b7d418d58852c1216d3ae2

void Enlighten::EnqueueCommand

...

public: void EnqueueCommand
(
    IUpdateManager * updateManager,
    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. CommandType is expected to be derived from the Command class - see Command.h


Anchor
ae76228f2d1e67b1c79e584777f2d4546
ae76228f2d1e67b1c79e584777f2d4546

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.


Anchor
aa6b6c9431276dd313005f5fcdf01fdd4
aa6b6c9431276dd313005f5fcdf01fdd4

void Enlighten::EnqueueSetObjectParameter

...

public: void EnqueueSetObjectParameter
(
    IUpdateManager * updateManager,
    Geo::GeoGuid objectId,
    void(ObjectType::*)(ParamType) function,
    ArgType && value
)

...

Enqueues a command to set a parameter on an object on the worker thread.

ObjectType may be BaseSystem, BaseDynamicObject, BaseCubeMap or Probes.


Anchor
a9f699499ff111f9ac18b8156b741c9b6
a9f699499ff111f9ac18b8156b741c9b6

void Enlighten::EnqueueSetObjectParameter

...

public: void EnqueueSetObjectParameter
(
    IUpdateManager * updateManager,
    ObjectType * object,
    void(ObjectType::*)(const ParamType &) function,
    ArgType && value
)

...

Enqueues a command to set a parameter on an object on the worker thread.

ObjectType may be BaseSystem, BaseDynamicObject, BaseCubeMap or Probes.


Anchor
a4d4674f3139b7bb7f1c36ce18eae29db
a4d4674f3139b7bb7f1c36ce18eae29db

void Enlighten::EnqueueSetObjectParameter

...

public: void EnqueueSetObjectParameter
(
    IUpdateManager * updateManager,
    Geo::GeoGuid objectId,
    void(ObjectType::*)(const ParamType &) function,
    ArgType && value
)

...

Enqueues a command to set a parameter on an object on the worker thread.

ObjectType may be BaseSystem, BaseDynamicObject, BaseCubeMap or Probes.


Anchor
a47fb5f5a80c92659647868ce1ae1d57a
a47fb5f5a80c92659647868ce1ae1d57a

void Enlighten::EnqueueSetObjectParameter

...

public: void EnqueueSetObjectParameter
(
    IUpdateManager * updateManager,
    ObjectType * object,
    void(ObjectType::*)(ParamType) function,
    ArgType && value
)

...

Enqueues a command to set a parameter on an object on the worker thread.

ObjectType may be BaseSystem, BaseDynamicObject, BaseCubeMap or Probes.


Anchor
aef05d84ceb1255af0cc20fb7c6d00066
aef05d84ceb1255af0cc20fb7c6d00066

bool Enlighten::BaseWorker::FindObject

...

public: bool FindObject
(
    const Geo::GeoGuid & id,
    BaseSystem *& systemPtr
)

...

Finds the object with the given GUID.


Anchor
addb24bd0857eac31618e5647bdd6b4c4
addb24bd0857eac31618e5647bdd6b4c4

bool Enlighten::BaseWorker::FindObject

...

public: bool FindObject
(
    const Geo::GeoGuid & id,
    BaseProbeSet *& probeSetPtr
)

...

Finds the object with the given GUID.


Anchor
a01ac005fdc0b087ab8ea37d45c30b790
a01ac005fdc0b087ab8ea37d45c30b790

bool Enlighten::BaseWorker::FindObject

...

public: bool FindObject
(
    const Geo::GeoGuid & id,
    BaseCubeMap *& cubeMapPtr
)

...

Finds the object with the given GUID.


Anchor
a5f10da8b5e6afa01e5623d179e786a84
a5f10da8b5e6afa01e5623d179e786a84

bool Enlighten::BaseWorker::FindObject

...

public: bool FindObject
(
    const Geo::GeoGuid & id,
    BaseDynamicObject *& dynamicObjectPtr
)

...

Finds the object with the given GUID.


Anchor
a809c71fa2a83db2da531cfc2c8a94ea0
a809c71fa2a83db2da531cfc2c8a94ea0

bool Enlighten::BaseWorker::FindObject

...

public: bool FindObject
(
    const Geo::GeoGuid & id,
    CpuSystem *& systemObjectPtr
)

...

Specialise the BaseWorker::FindObject to deal with a concrete type here.


Anchor
a687d6eb33308e60bcb4f3fe5fb481e2c
a687d6eb33308e60bcb4f3fe5fb481e2c

Geo::s32 Enlighten::GetDxgiFormatBytesPerPixel

...

public: Geo::s32 GetDxgiFormatBytesPerPixel
(
    DXGI_FORMAT format
)

...

Helper function to calculate the number of texture bytes per pixel for DXGI texture formats supported by Enlighten.


Anchor
aa212ce438aa6b188c78c83e5ea91945b
aa212ce438aa6b188c78c83e5ea91945b

double Enlighten::ProfileHistory< tNumProfileItems >::GetItem

...

public: double GetItem
(
    Geo::s32 item
) const

...

Get the last added profile item.


Anchor
a0a9314222b5f96fabd70d2303cf55931
a0a9314222b5f96fabd70d2303cf55931

double Enlighten::ProfileHistory< tNumProfileItems >::GetItemAverage

...

public: double GetItemAverage
(
    Geo::s32 item
) const

...

Get the average of the profile items in the history.


Anchor
a32083675d913f7f6add97538b619fae7
a32083675d913f7f6add97538b619fae7

Geo::u64 Enlighten::ProfileHistory< tNumProfileItems >::GetItemCount

...

public: Geo::u64 GetItemCount
(
    Geo::s32 item
) const

...

Get the number of profile items in the history.


Anchor
aecd0a49c4588a3bfa6f3b6602058a9ce
aecd0a49c4588a3bfa6f3b6602058a9ce

double Enlighten::ProfileHistory< tNumProfileItems >::GetItemMaximum

...

public: double GetItemMaximum
(
    Geo::s32 item
) const

...

Get the max value of the profile items in the history.


Anchor
abf574418f3328ee1b9ff4d79bc6ad74a
abf574418f3328ee1b9ff4d79bc6ad74a

double Enlighten::ProfileHistory< tNumProfileItems >::GetItemMinimum

...

public: double GetItemMinimum
(
    Geo::s32 item
) const

...

Get the min value of the profile items in the history.


Anchor
a80eb4de66ce6c6834783961cc3b3d175
a80eb4de66ce6c6834783961cc3b3d175

OutputTextureType Enlighten::GetOutputTextureRangeEnd

...

public: OutputTextureType GetOutputTextureRangeEnd
(
    const RadSystemCore & core,
    SolveType solveType
)

...

Return the end of the range of output texture types that can be updated for this combination of solve type and radiosity core.


Anchor
aca8ae5861fb33e4aa446d040caa7a83c
aca8ae5861fb33e4aa446d040caa7a83c

Geo::s32 Enlighten::GetTextureBytesPerPixel

...

public: Geo::s32 GetTextureBytesPerPixel
(
    TextureFormat format
)

...

Gets the number of bytes required for each pixel of the given texture format.


Anchor
a8f90286c358dce45dd874c6977cecf63
a8f90286c358dce45dd874c6977cecf63

Enlighten::MultithreadCpuUpdateManager::MultithreadCpuUpdateManager

...

protected: MultithreadCpuUpdateManager
(
    const UpdateManagerProperties & properties
)

...

Protected constructor. Do not call directly, use Create instead.


Anchor
a05ed0f23a81a5b3c402afde61cb3419a
a05ed0f23a81a5b3c402afde61cb3419a

Enlighten::ProfileHistory< tNumProfileItems >::ProfileHistory

...

public: ProfileHistory
(
    const Geo::GeoGuid & systemGuid
)

...

Construct a history from a guid.


Anchor
aa7d7611e8b9dd54192209852b9830beb
aa7d7611e8b9dd54192209852b9830beb

void Enlighten::ProfileHistory< tNumProfileItems >::Reset

...

public: void Reset()

...

Reset to empty (clear all history)


Anchor
aec0b347bad59266ddb903f0232658212
aec0b347bad59266ddb903f0232658212

void Enlighten::BaseWorker::SetWorkerProperties

...

public: virtual void SetWorkerProperties
(
    const UpdateManagerWorkerProperties & properties
)

...

Set the worker global state.


Anchor
a642a67b0bea1cd3ac657f3a01d7302b7
a642a67b0bea1cd3ac657f3a01d7302b7

GEO_POP_IGNORE_DEPRECATION_WARNING void Enlighten::BaseWorker::UpdateRadiosity

...

public: virtual void UpdateRadiosity
(
    const Geo::v128 & viewOrigin
)

...

The main radiosity update function.


Anchor
a0dc52268052d4ecd76b806146613124b
a0dc52268052d4ecd76b806146613124b

AggregateProfileItem

...

public: enum AggregateProfileItem
{
    API_ENLIGHTEN_TOTAL_CPU = 0,
    API_ENLIGHTEN_TOTAL_GPU,
    API_ENLIGHTEN_TOTAL_PROBES,
    API_ENLIGHTEN_TOTAL_PROBE_INTERPOLATION,
    API_ENLIGHTEN_TOTAL_CUBEMAPS,
    API_ENLIGHTEN_SETUP_WALLCLOCK,
    API_ENLIGHTEN_ENVIRONMENT_WALLCLOCK,
    API_ENLIGHTEN_INPUTLIGHTING_WALLCLOCK,
    API_ENLIGHTEN_SYSTEMS_WALLCLOCK,
    API_ENLIGHTEN_PROBES_WALLCLOCK,
    API_ENLIGHTEN_CUBEMAPS_WALLCLOCK,
    API_ENLIGHTEN_SOLVE_TASKS_WALLCLOCK,
    API_ENLIGHTEN_DYNAMICOBJECTS_WALLCLOCK,
    API_ENLIGHTEN_TIME_BETWEEN_UPDATES,
    API_ENLIGHTEN_OTHER_COMMANDS,
    API_ENLIGHTEN_INPUTLIGHTING_GPU_TICKS,
    API_ENLIGHTEN_NUM_BLOCKED_BUFFER_WRITES,
    API_ENLIGHTEN_BLOCKED_COMMAND_WRITES_DURATION,
    API_ENLIGHTEN_PPPI_UPDATE_TIME_US,
    API_ENLIGHTEN_PPPI_PROBESET_UPDATE_COUNT,
    API_ENLIGHTEN_PPPI_COPIED_PROBE_COUNT,
    API_ENLIGHTEN_PPPI_COPY_TIME_US,
    API_ENLIGHTEN_PPPI_BUILD_TIME_US,
    API_ENLIGHTEN_PPPI_INDIRECTION_UPDATE_TIME_US,
    API_ENLIGHTEN_PPPI_ATLAS_TILE_COUNT,
    NUM_AGGREGATE_PROFILE_ITEMS
}

...

Items we record for totals.

enumerators
API_ENLIGHTEN_TOTAL_CPU
API_ENLIGHTEN_TOTAL_GPU
API_ENLIGHTEN_TOTAL_PROBES
API_ENLIGHTEN_TOTAL_PROBE_INTERPOLATION
API_ENLIGHTEN_TOTAL_CUBEMAPS
API_ENLIGHTEN_SETUP_WALLCLOCK
API_ENLIGHTEN_ENVIRONMENT_WALLCLOCK
API_ENLIGHTEN_INPUTLIGHTING_WALLCLOCK
API_ENLIGHTEN_SYSTEMS_WALLCLOCK
API_ENLIGHTEN_PROBES_WALLCLOCK
API_ENLIGHTEN_CUBEMAPS_WALLCLOCK
API_ENLIGHTEN_SOLVE_TASKS_WALLCLOCK
API_ENLIGHTEN_DYNAMICOBJECTS_WALLCLOCK
API_ENLIGHTEN_TIME_BETWEEN_UPDATES
API_ENLIGHTEN_OTHER_COMMANDS
API_ENLIGHTEN_INPUTLIGHTING_GPU_TICKS
API_ENLIGHTEN_NUM_BLOCKED_BUFFER_WRITES
API_ENLIGHTEN_BLOCKED_COMMAND_WRITES_DURATION
API_ENLIGHTEN_PPPI_UPDATE_TIME_US
API_ENLIGHTEN_PPPI_PROBESET_UPDATE_COUNT
API_ENLIGHTEN_PPPI_COPIED_PROBE_COUNT
API_ENLIGHTEN_PPPI_COPY_TIME_US
API_ENLIGHTEN_PPPI_BUILD_TIME_US
API_ENLIGHTEN_PPPI_INDIRECTION_UPDATE_TIME_US
API_ENLIGHTEN_PPPI_ATLAS_TILE_COUNT
NUM_AGGREGATE_PROFILE_ITEMS


Anchor
a0c396d25aac6100770752ab8a5b89737
a0c396d25aac6100770752ab8a5b89737

CubeMapProfileItem

...

public: enum CubeMapProfileItem
{
    CMPI_SOLVE_TIME = 0,
    CMPI_SETUP_TIME,
    NUM_CUBE_MAP_PROFILE_ITEMS
}

...

Items we record against cube maps.

enumerators
CMPI_SOLVE_TIME
CMPI_SETUP_TIME
NUM_CUBE_MAP_PROFILE_ITEMS


Anchor
a3b68860cf6674b7601bdc7eef557a776
a3b68860cf6674b7601bdc7eef557a776

EnlightenTaskType

...

public: enum EnlightenTaskType
{
    ETT_SYSTEM_INPUT_LIGHTING,
    ETT_SYSTEM_SOLVE,
    ETT_PROBE_SOLVE,
    ETT_CUBE_MAP_SOLVE,
    ETT_DYNAMIC_OBJECT_INTERPOLATION
}

...

The MultithreadCpuWorker works by putting tasks in a list, and then executing TaskProcessors on several threads in parallel.

A TaskProcessor pulls tasks off the list one by one, until either the whole list is done, or an ILimiter tells it to stop.

The executing threads are accessed through the IThreadGroup interface. If none is supplied then the MultithreadCpuWorker will create a DefaultThreadGroup which executes tasks in serial on the calling thread (ie the update manager worker thread). When it is destroyed, the MultithreadCpuWorker will call Release() on the IThreadGroup interface it was passed. There is an implementation of IThreadGroup which uses Intel Threaded Building Blocks in the TbbThreadGroup.h header (which does not get compiled in to EnlightenHRLT).

ILimiter is an optional interface which can be implemented by the application. A simple FixedTimeLimiter is included here which times out after a given fixed time. Note that the limiter only controls the point at which new tasks can be started, not the total time taken.

The Enlighten update loop consists of three multithreaded phases: input lighting, solve tasks, and probe interpolation. Within each phase tasks can run in parallel (for instance, a probe set can be solved at the same time as a system), but tasks from different phases cannot run together.

If no limiter is supplied, the MultithreadCpuWorker will complete one full pass through the update loop for each call to UpdateRadiosity(). However, it can remembers where in the udpate loop it previously stopped, so if a limiter tells it to stop part-way through an update it will resume from where it left off. This ensures that the Enlighten data remains in a consistent state at all times. Enumeration of Enlighten task types. These are executed by the TaskProcessors.

enumerators
ETT_SYSTEM_INPUT_LIGHTING
ETT_SYSTEM_SOLVE
ETT_PROBE_SOLVE
ETT_CUBE_MAP_SOLVE
ETT_DYNAMIC_OBJECT_INTERPOLATION


Anchor
a4de428ca6f85bc0d255d53513f2fa476
a4de428ca6f85bc0d255d53513f2fa476

OutputTextureType

...

public: enum OutputTextureType
{
    ENLIGHTEN_OUTPUT_IRRADIANCE = 0,
    ENLIGHTEN_OUTPUT_DIRECTIONAL = 1,
    ENLIGHTEN_OUTPUT_DIRECTIONAL_G = 2,
    ENLIGHTEN_OUTPUT_DIRECTIONAL_B = 3,
    ENLIGHTEN_NUM_OUTPUT_TEXTURE_TYPES = 4
}

...

Enumeration of the different output textures produced by the Enlighten solvers.

enumerators
ENLIGHTEN_OUTPUT_IRRADIANCE

The Irradiance Output data.

ENLIGHTEN_OUTPUT_DIRECTIONAL

The luminance/red Directional Irradiance Output data.

ENLIGHTEN_OUTPUT_DIRECTIONAL_G

The green Directional Irradiance Output data.

ENLIGHTEN_OUTPUT_DIRECTIONAL_B

The blue Directional Irradiance Output data.

ENLIGHTEN_NUM_OUTPUT_TEXTURE_TYPES

Total number of output textures per system.


Anchor
ab107d5c71aac26db6bcd0ad8eec1cdd0
ab107d5c71aac26db6bcd0ad8eec1cdd0

ProbeSetProfileItem

...

public: enum ProbeSetProfileItem
{
    PSPI_SOLVE_TIME = 0,
    PSPI_SETUP_TIME,
    PSPI_FREEZE_TIME,
    PSPI_NUM_TOTAL_PROBES,
    PSPI_NUM_REAL_PROBES,
    PSPI_NUM_VIRTUAL_PROBES,
    PSPI_NUM_SOLVED_PROBES,
    NUM_PROBE_SET_PROFILE_ITEMS
}

...

Items we record against probe sets.

enumerators
PSPI_SOLVE_TIME
PSPI_SETUP_TIME
PSPI_FREEZE_TIME
PSPI_NUM_TOTAL_PROBES
PSPI_NUM_REAL_PROBES
PSPI_NUM_VIRTUAL_PROBES
PSPI_NUM_SOLVED_PROBES
NUM_PROBE_SET_PROFILE_ITEMS


Anchor
a4d1c2aab170a6c5db2193f81324542f8
a4d1c2aab170a6c5db2193f81324542f8

ProbeVolumeOutputTextureType

...

public: enum ProbeVolumeOutputTextureType
{
    ENLIGHTEN_PROBE_VOLUME_R = 0,
    ENLIGHTEN_PROBE_VOLUME_G = 1,
    ENLIGHTEN_PROBE_VOLUME_B = 2,
    ENLIGHTEN_PROBE_VOLUME_ENV_VIS_SH = 3,
    ENLIGHTEN_PROBE_VOLUME_NUM_TYPES = 4
}

...

Enumeration of the different probe volume output textures.

enumerators
ENLIGHTEN_PROBE_VOLUME_R

The red channel of probe volume data.

ENLIGHTEN_PROBE_VOLUME_G

The green channel of probe volume data.

ENLIGHTEN_PROBE_VOLUME_B

The blue channel of probe volume data.

ENLIGHTEN_PROBE_VOLUME_ENV_VIS_SH

The environment visibility data.

ENLIGHTEN_PROBE_VOLUME_NUM_TYPES

Total number of probe volume output textures.


Anchor
a5aebe0202ccf52c7183af5614b11b8c6
a5aebe0202ccf52c7183af5614b11b8c6

SolveType

...

public: enum SolveType
{
    ENLIGHTEN_IRRADIANCE_ONLY = 0,
    ENLIGHTEN_DIRECTIONAL_IRRADIANCE = 1,
    ENLIGHTEN_DIRECTIONAL_IRRADIANCE_RGB = 2
}

...

Enumeration of the different types of solve.

enumerators
ENLIGHTEN_IRRADIANCE_ONLY

Computes only the irradiance texture.

ENLIGHTEN_DIRECTIONAL_IRRADIANCE

Computes irradiance and the additional directional texture.

ENLIGHTEN_DIRECTIONAL_IRRADIANCE_RGB

Computes irradiance and three additional directional textures for R, G and B channels.


Anchor
aaa21185bbe473b5df8a37d5480b26bbd
aaa21185bbe473b5df8a37d5480b26bbd

SystemProfileItem

...

public: enum SystemProfileItem
{
    SPI_SOLVE_TIME = 0,
    SPI_SOLVE_SETUP_TIME,
    SPI_TRANSPARENCY_TIME,
    SPI_INPUT_LIGHTING_SETUP_TIME,
    SPI_WRITE_INPUT_TIME,
    SPI_DIRECT_INPUT_LIGHTING_TIME = SPI_WRITE_INPUT_TIME,
    SPI_RESAMPLE_LIGHTMAP_BOUNCE,
    SPI_END_INPUT_TIME,
    SPI_INDIRECT_INPUT_LIGHTING_TIME = SPI_END_INPUT_TIME,
    SPI_FREEZE_TIME,
    SPI_SOLVE_PERC,
    SPI_DIRECTIONAL_VISIBILITY_TIME,
    SPI_UPDATE_RATE,
    SPI_NUM_TOTAL_PIXELS,
    SPI_NUM_SOLVED_PIXELS,
    SPI_NUM_LIGHTS_AFFECTING,
    NUM_SYSTEM_PROFILE_ITEMS
}

...

Items we record against systems.

enumerators
SPI_SOLVE_TIME
SPI_SOLVE_SETUP_TIME
SPI_TRANSPARENCY_TIME
SPI_INPUT_LIGHTING_SETUP_TIME
SPI_WRITE_INPUT_TIME
SPI_DIRECT_INPUT_LIGHTING_TIME
SPI_RESAMPLE_LIGHTMAP_BOUNCE
SPI_END_INPUT_TIME
SPI_INDIRECT_INPUT_LIGHTING_TIME
SPI_FREEZE_TIME
SPI_SOLVE_PERC
SPI_DIRECTIONAL_VISIBILITY_TIME
SPI_UPDATE_RATE
SPI_NUM_TOTAL_PIXELS
SPI_NUM_SOLVED_PIXELS
SPI_NUM_LIGHTS_AFFECTING
NUM_SYSTEM_PROFILE_ITEMS


Anchor
a1e01b246e0c89b2e10e1c4dce28d9f93
a1e01b246e0c89b2e10e1c4dce28d9f93

TextureFormat

...

public: enum TextureFormat
{
    TextureFormat_A16B16G16R16F,
    TextureFormat_A32B32G32R32F,
    GEO_DEPRECATED_ENUMERATOR =(TextureFormat_A16B16G16R16_Deprecated),
    TextureFormat_A8R8G8B8,
    GEO_DEPRECATED_ENUMERATOR =(TextureFormat_A16B16G16R16_Deprecated),
    GEO_DEPRECATED_ENUMERATOR =(TextureFormat_A16B16G16R16_Deprecated),
    TextureFormat_R8G8B8A8_UINT,
    TextureFormat_R8,
    TextureFormat_R32F,
    GEO_DEPRECATED_ENUMERATOR =(TextureFormat_A16B16G16R16_Deprecated),
    TextureFormat_R11G11B10,
    TextureFormat_R9G9B9E5,
    TextureFormat_UNKNOWN
}

...

Enumeration of output texture formats used by the high level run-time.

enumerators
TextureFormat_A16B16G16R16F
TextureFormat_A32B32G32R32F
GEO_DEPRECATED_ENUMERATOR
TextureFormat_A8R8G8B8
GEO_DEPRECATED_ENUMERATOR
GEO_DEPRECATED_ENUMERATOR
TextureFormat_R8G8B8A8_UINT
TextureFormat_R8
TextureFormat_R32F
GEO_DEPRECATED_ENUMERATOR
TextureFormat_R11G11B10
TextureFormat_R9G9B9E5
TextureFormat_UNKNOWN