MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ setup_processors()

void MayaFlux::Buffers::RelaxationGridBuffer::setup_processors ( ProcessingToken  token)
overridevirtual

Create and attach RelaxationStepProcessor (default processor) and RelaxationEmitProcessor (flat processor), and set the per-cell vertex layout on this buffer's own storage.

Parameters
tokenProcessing domain (typically GRAPHICS_BACKEND).

Reimplemented from MayaFlux::Buffers::VKBuffer.

Definition at line 187 of file RelaxationGridBuffer.cpp.

188{
189 auto layout = Kakshya::VertexLayout::for_raw(sizeof(Kakshya::Vertex));
190 layout.vertex_count = get_cell_count();
191 set_vertex_layout(layout);
192
193 m_step_processor = std::visit(
194 [](const auto& src) { return std::make_shared<RelaxationStepProcessor>(src); },
196
197 m_step_processor->set_processing_token(token);
199 apply_constants(m_step_processor, sizeof(RelaxationStepProcessor::GridExtent), m_rule_constants);
200
202 if (!chain) {
203 chain = std::make_shared<BufferProcessingChain>();
205 }
206 chain->set_preferred_token(token);
207
208 m_emit_processor = std::visit(
209 [](const auto& src) { return std::make_shared<RelaxationEmitProcessor>(src); },
211 m_emit_processor->set_processing_token(token);
212 chain->add_processor(m_emit_processor, shared_from_this());
213 apply_constants(m_emit_processor, sizeof(RelaxationEmitProcessor::EmitParams), m_emit_constants);
214 m_emit_processor->set_extent(m_extent);
215 m_emit_processor->set_point_size(m_point_size);
216
218 "RelaxationGridBuffer setup_processors: step + emit attached");
219}
#define MF_DEBUG(comp, ctx,...)
BufferProcessingChain * chain
const uint32_t * src
std::vector< GridConfig::Constant > m_rule_constants
Rule constants from GridConfig, written at setup_processors.
std::vector< GridConfig::Constant > m_emit_constants
Emit constants from GridConfig, written at setup_processors.
std::shared_ptr< RelaxationEmitProcessor > m_emit_processor
Emit stage, retained for parameter access.
ShaderSource m_emit_source
Either a path to a hand-written emit shader or a generated ShaderSpec.
uint32_t get_cell_count() const
Total cell count, width * height.
std::shared_ptr< RelaxationStepProcessor > m_step_processor
Rule stage, retained for parameter access.
ShaderSource m_rule_source
Either a path to a hand-written rule shader or a generated ShaderSpec.
float m_extent
Emit extent applied at setup_processors.
float m_point_size
Emit point size applied at setup_processors.
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set vertex layout for this buffer.
Definition VKBuffer.cpp:453
std::shared_ptr< Buffers::BufferProcessingChain > get_processing_chain() override
Access the buffer's processing chain.
Definition VKBuffer.cpp:271
void set_default_processor(const std::shared_ptr< BufferProcessor > &processor) override
Set the buffer's default processor.
Definition VKBuffer.cpp:255
void set_processing_chain(const std::shared_ptr< BufferProcessingChain > &chain, bool force=false) override
Replace the buffer's processing chain.
Definition VKBuffer.cpp:276
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.
static VertexLayout for_raw(uint32_t stride=60)
Factory: layout for raw vertex data with common attributes.

References MayaFlux::Journal::Buffers, chain, MayaFlux::Kakshya::VertexLayout::for_raw(), get_cell_count(), MayaFlux::Buffers::VKBuffer::get_processing_chain(), MayaFlux::Journal::Init, m_emit_constants, m_emit_processor, m_emit_source, m_extent, m_point_size, m_rule_constants, m_rule_source, m_step_processor, MF_DEBUG, MayaFlux::Buffers::VKBuffer::set_default_processor(), MayaFlux::Buffers::VKBuffer::set_processing_chain(), MayaFlux::Buffers::VKBuffer::set_vertex_layout(), and src.

+ Here is the call graph for this function: