class LightObjectStorageBase

Contains render thread representation of light objects, stored in packed arrays accessible by PackedRendererId.

Implements main -> render thread synchronization logic for light objects.

Public

Methods

SyncRead

void *SyncRead(ecs::Registry &registry, FrameAllocator &allocator) override

Scans the provided registry for dirty objects, generates the update packets and stores them into a batch buffer allocated by .

Returns pointer to the batch buffer memory.

SyncWrite

void SyncWrite(void *batchData, FrameAllocator &allocator) override

Applies data from a batch buffer generated by SyncRead to objects on the render thread, and frees the frame-allocated batch data via .

GetLightProxy

render::LightProxy &GetLightProxy(PackedRendererId slotId)

Returns the light proxy at the given slot.

GetLightProxy

const render::LightProxy &GetLightProxy(PackedRendererId slotId) const

Returns the light proxy at the given slot (const).

GetLightCount

u32 GetLightCount() const

Returns the total number of lights.

CreateRenderState

virtual void CreateRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each new light being added, or a light whose data needs to be rebuilt after a significant update (in which case DestroyRenderState will be called first).

DestroyRenderState

virtual void DestroyRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each light that is being removed, or a light that needs to be rebuilt after a significant update (in which case CreateRenderState will be called right after).

UpdateRenderState

virtual void UpdateRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each light that needs to be updated after a minor update (e.g. one that doesn't require a full render state rebuild, such as a transform change).

Protected

Fields

mLightProxies