Skip to main content

ShaderCompileSystem Class Template

System that batches shader compile requests for active shader entities. More...

Declaration

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY> class helios::engine::rendering::shader::systems::ShaderCompileSystem<THandle, TCommandBuffer, TCapacity> { ... }

Public Member Typedefs Index

template < ... >
usingEngineRoleTag = SystemRole
template < ... >
usingCommandBuffer_type = TCommandBuffer

Public Constructors Index

template < ... >
ShaderCompileSystem (size_t capacity=TCapacity)

Public Member Functions Index

template < ... >
voidupdate (UpdateContext &updateContext, TCommandBuffer &cmdBuffer) noexcept

Collects active shader handles and queues one batch compile command. More...

Private Member Attributes Index

template < ... >
std::vector< THandle >shaderHandles_
template < ... >
size_tcapacity_

Description

System that batches shader compile requests for active shader entities.

Template Parameters
THandle

Shader handle type.

TCommandBuffer

Command buffer type used for queued compile commands.

TCapacity

Initial reserve size for the internal handle cache.

Definition at line 48 of file ShaderCompileSystem.ixx.

Public Member Typedefs

CommandBuffer_type

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY>
using helios::engine::rendering::shader::systems::ShaderCompileSystem< THandle, TCommandBuffer, TCapacity >::CommandBuffer_type = TCommandBuffer

Definition at line 57 of file ShaderCompileSystem.ixx.

EngineRoleTag

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY>
using helios::engine::rendering::shader::systems::ShaderCompileSystem< THandle, TCommandBuffer, TCapacity >::EngineRoleTag = SystemRole

Definition at line 56 of file ShaderCompileSystem.ixx.

Public Constructors

ShaderCompileSystem()

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY>
helios::engine::rendering::shader::systems::ShaderCompileSystem< THandle, TCommandBuffer, TCapacity >::ShaderCompileSystem (size_t capacity=TCapacity)
inline explicit

Definition at line 59 of file ShaderCompileSystem.ixx.

59 explicit ShaderCompileSystem(size_t capacity = TCapacity) : capacity_(capacity) {
60 shaderHandles_.reserve(capacity);
61 }

Reference helios::engine::rendering::registerComponents.

Public Member Functions

update()

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY>
void helios::engine::rendering::shader::systems::ShaderCompileSystem< THandle, TCommandBuffer, TCapacity >::update (UpdateContext & updateContext, TCommandBuffer & cmdBuffer)
inline noexcept

Collects active shader handles and queues one batch compile command.

Parameters
updateContext

Frame update context.

Definition at line 68 of file ShaderCompileSystem.ixx.

69
70 for (auto [entity, scc, ac] : updateContext.view<
74 >().whereEnabled()) {
75 shaderHandles_.push_back(entity.handle());
76 }
77
78 cmdBuffer.template add<ShaderBatchCompileCommand<THandle>>(std::move(shaderHandles_));
79
80 shaderHandles_.clear();
81 shaderHandles_.reserve(capacity_);
82
83
84 }

Reference helios::engine::rendering::registerComponents.

Private Member Attributes

capacity_

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY>
size_t helios::engine::rendering::shader::systems::ShaderCompileSystem< THandle, TCommandBuffer, TCapacity >::capacity_

Definition at line 52 of file ShaderCompileSystem.ixx.

52 size_t capacity_;

shaderHandles_

template <typename THandle, typename TCommandBuffer = NullCommandBuffer, size_t TCapacity = DEFAULT_SHADER_POOL_CAPACITY>
std::vector<THandle> helios::engine::rendering::shader::systems::ShaderCompileSystem< THandle, TCommandBuffer, TCapacity >::shaderHandles_

Definition at line 50 of file ShaderCompileSystem.ixx.

50 std::vector<THandle> shaderHandles_;

The documentation for this class was generated from the following file:


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.