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

◆ setup_processors()

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

Setup processors with a processing token.

Parameters
tokenProcessingToken to assign.

For VKBuffer this is a no-op as processors get the token. This is meant for derived classes that need to setup default processors

Reimplemented from MayaFlux::Buffers::VKBuffer.

Definition at line 56 of file ComputeMeshBuffer.cpp.

57{
58 auto self = std::dynamic_pointer_cast<ComputeMeshBuffer>(shared_from_this());
59
60 auto layout = Kakshya::VertexLayout::for_meshes(sizeof(Kakshya::MeshVertex));
61 layout.vertex_count = static_cast<uint32_t>(
62 worst_case_bytes(m_res_x, m_res_y, m_res_z) / sizeof(Kakshya::MeshVertex));
63 set_vertex_layout(layout);
64
66 if (!chain) {
67 chain = std::make_shared<BufferProcessingChain>();
69 }
70 chain->set_preferred_token(token);
71
72 if (m_gpu_field) {
73 m_prep_processor = std::make_shared<SDFPrepProcessor>(m_res_x, m_res_y, m_res_z);
74 m_prep_processor->set_processing_token(token);
76
78 m_field_processor = std::make_shared<SDFFieldProcessor>(
79 m_prep_processor->grid_buf(),
83 } else {
84 m_field_processor = std::make_shared<SDFFieldProcessor>(
85 m_prep_processor->grid_buf(),
89 }
90 m_field_processor->set_processing_token(token);
91 chain->add_preprocessor(m_field_processor, self);
92
93 m_sdf_processor = std::make_shared<SDFMeshProcessor>(
94 m_prep_processor->grid_buf(),
95 m_prep_processor->counter_buf(),
99
100 m_sdf_processor->set_processing_token(token);
101
102 chain->add_processor(m_sdf_processor, self);
103
104 } else {
105 m_sdf_processor = std::make_shared<SDFMeshProcessor>(
106 std::move(m_field),
110 m_sdf_processor->set_processing_token(token);
112 }
113}
BufferProcessingChain * chain
std::shared_ptr< SDFMeshProcessor > m_sdf_processor
std::shared_ptr< SDFFieldProcessor > m_field_processor
static size_t worst_case_bytes(uint32_t res_x, uint32_t res_y, uint32_t res_z) noexcept
std::shared_ptr< SDFPrepProcessor > m_prep_processor
std::optional< Kinesis::FieldSource > m_field_expression
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
static VertexLayout for_meshes(uint32_t stride=60)
Factory: layout for MeshVertex (position, color, weight, uv, normal, tangent)

References chain, MayaFlux::Kakshya::VertexLayout::for_meshes(), MayaFlux::Buffers::VKBuffer::get_processing_chain(), m_bounds_max, m_bounds_min, m_field, m_field_expression, m_field_processor, m_field_shader, m_gpu_field, m_iso_level, m_prep_processor, m_res_x, m_res_y, m_res_z, m_sdf_processor, MayaFlux::Buffers::VKBuffer::set_default_processor(), MayaFlux::Buffers::VKBuffer::set_processing_chain(), MayaFlux::Buffers::VKBuffer::set_vertex_layout(), and worst_case_bytes().

+ Here is the call graph for this function: