MayaFlux 0.5.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 72 of file RelaxationGridBuffer.cpp.

73{
74 auto layout = Kakshya::VertexLayout::for_raw(sizeof(Kakshya::Vertex));
75 layout.vertex_count = get_cell_count();
76 set_vertex_layout(layout);
77
78 m_step_processor = std::visit(
79 [](const auto& src) { return std::make_shared<RelaxationStepProcessor>(src); },
81
82 m_step_processor->set_processing_token(token);
84
86 if (!chain) {
87 chain = std::make_shared<BufferProcessingChain>();
89 }
90 chain->set_preferred_token(token);
91
92 m_emit_processor = std::visit(
93 [](const auto& src) { return std::make_shared<RelaxationEmitProcessor>(src); },
95 m_emit_processor->set_processing_token(token);
96 chain->add_processor(m_emit_processor, shared_from_this());
97
99 "RelaxationGridBuffer setup_processors: step + emit attached");
100}
#define MF_DEBUG(comp, ctx,...)
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.
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set vertex layout for this buffer.
Definition VKBuffer.cpp:387
std::shared_ptr< Buffers::BufferProcessingChain > get_processing_chain() override
Access the buffer's processing chain.
Definition VKBuffer.cpp:263
void set_default_processor(const std::shared_ptr< BufferProcessor > &processor) override
Set the buffer's default processor.
Definition VKBuffer.cpp:247
void set_processing_chain(const std::shared_ptr< BufferProcessingChain > &chain, bool force=false) override
Replace the buffer's processing chain.
Definition VKBuffer.cpp:268
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.
Tendency< A, C > chain(const Tendency< A, B > &first, const Tendency< B, C > &second)
Sequential composition: evaluate first, feed result into second.
Definition Tendency.hpp:82
static VertexLayout for_raw(uint32_t stride=60)
Factory: layout for raw vertex data with common attributes.

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

+ Here is the call graph for this function: