MayaFlux 0.4.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 74 of file ComputeMeshBuffer.cpp.

75{
76 auto self = std::dynamic_pointer_cast<ComputeMeshBuffer>(shared_from_this());
77
78 auto layout = Kakshya::VertexLayout::for_meshes(sizeof(Kakshya::MeshVertex));
79 layout.vertex_count = static_cast<uint32_t>(
80 worst_case_bytes(m_res_x, m_res_y, m_res_z) / sizeof(Kakshya::MeshVertex));
81 set_vertex_layout(layout);
82
84 if (!chain) {
85 chain = std::make_shared<BufferProcessingChain>();
87 }
88 chain->set_preferred_token(token);
89
90 if (m_gpu_field) {
91 m_prep_processor = std::make_shared<SDFPrepProcessor>(m_res_x, m_res_y, m_res_z);
92 m_prep_processor->set_processing_token(token);
94
95 m_field_processor = std::make_shared<SDFFieldProcessor>(
96 m_prep_processor->grid_buf(),
100 m_field_processor->set_processing_token(token);
101 chain->add_preprocessor(m_field_processor, self);
102
103 m_sdf_processor = std::make_shared<SDFMeshProcessor>(
104 m_prep_processor->grid_buf(),
105 m_prep_processor->counter_buf(),
109
110 m_sdf_processor->set_processing_token(token);
111
112 chain->add_processor(m_sdf_processor, self);
113
114 } else {
115 m_sdf_processor = std::make_shared<SDFMeshProcessor>(
116 std::move(m_field),
120 m_sdf_processor->set_processing_token(token);
122 }
123}
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
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set vertex layout for this buffer.
Definition VKBuffer.cpp:410
std::shared_ptr< Buffers::BufferProcessingChain > get_processing_chain() override
Access the buffer's processing chain.
Definition VKBuffer.cpp:286
void set_default_processor(const std::shared_ptr< BufferProcessor > &processor) override
Set the buffer's default processor.
Definition VKBuffer.cpp:270
void set_processing_chain(const std::shared_ptr< BufferProcessingChain > &chain, bool force=false) override
Replace the buffer's processing chain.
Definition VKBuffer.cpp:291
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_meshes(uint32_t stride=60)
Factory: layout for MeshVertex (position, color, weight, uv, normal, tangent)

References MayaFlux::Kakshya::VertexLayout::for_meshes(), MayaFlux::Buffers::VKBuffer::get_processing_chain(), m_bounds_max, m_bounds_min, m_field, 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: