|
MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
|
Aggregates multiple geometry nodes with independent topologies. More...
#include <CompositeGeometryProcessor.hpp>
Inheritance diagram for MayaFlux::Buffers::CompositeGeometryProcessor:
Collaboration diagram for MayaFlux::Buffers::CompositeGeometryProcessor:Classes | |
| struct | GeometryCollection |
Public Member Functions | |
| CompositeGeometryProcessor () | |
| void | add_geometry (const std::string &name, const std::shared_ptr< Nodes::GpuSync::GeometryWriterNode > &node, Portal::Graphics::PrimitiveTopology topology) |
| Add a geometry collection. | |
| void | remove_geometry (const std::string &name) |
| Remove a geometry collection. | |
| std::optional< GeometryCollection > | get_collection (const std::string &name) const |
| Get collection metadata. | |
| const std::vector< GeometryCollection > & | get_collections () const |
| Get all collections (for RenderProcessor creation) | |
| size_t | get_collection_count () const |
| Get collection count. | |
| void | processing_function (const std::shared_ptr< Buffer > &buffer) override |
| BufferProcessor interface - aggregates all geometry. | |
Public Member Functions inherited from MayaFlux::Buffers::BufferProcessor | |
| virtual | ~BufferProcessor ()=default |
| Virtual destructor for proper cleanup of derived classes. | |
| void | process (const std::shared_ptr< Buffer > &buffer) |
| Applies a computational transformation to the data in the provided buffer. | |
| virtual void | on_attach (const std::shared_ptr< Buffer > &) |
| Called when this processor is attached to a buffer. | |
| virtual void | on_detach (const std::shared_ptr< Buffer > &) |
| Called when this processor is detached from a buffer. | |
| virtual void | set_processing_token (ProcessingToken token) |
| Gets the preferred processing backend for this processor. | |
| virtual ProcessingToken | get_processing_token () const |
| Gets the current processing token for this buffer. | |
| virtual bool | is_compatible_with (const std::shared_ptr< Buffer > &) const |
| Checks if this processor can handle the specified buffer type. | |
Private Attributes | |
| std::vector< GeometryCollection > | m_collections |
| std::vector< uint8_t > | m_staging_aggregate |
Additional Inherited Members | |
Protected Member Functions inherited from MayaFlux::Buffers::VKBufferProcessor | |
| void | initialize_buffer_service () |
| void | initialize_compute_service () |
Protected Attributes inherited from MayaFlux::Buffers::VKBufferProcessor | |
| Registry::Service::BufferService * | m_buffer_service = nullptr |
| Registry::Service::ComputeService * | m_compute_service = nullptr |
Protected Attributes inherited from MayaFlux::Buffers::BufferProcessor | |
| ProcessingToken | m_processing_token { ProcessingToken::AUDIO_BACKEND } |
Aggregates multiple geometry nodes with independent topologies.
Similar to GeometryBindingsProcessor but aggregates all nodes into a single vertex buffer while tracking per-collection offsets and topologies.
Each collection can have different primitive topology (LINE_LIST, LINE_STRIP, POINT_LIST, etc.) and will be rendered with separate RenderProcessors.
Architecture:
Usage: auto processor = std::make_shared<CompositeGeometryProcessor>(); processor->add_geometry("path", path_node, PrimitiveTopology::LINE_STRIP); processor->add_geometry("normals", normals_node, PrimitiveTopology::LINE_LIST);
buffer->set_default_processor(processor);
auto collection = processor->get_collection("path"); render->set_vertex_range(collection.vertex_offset, collection.vertex_count);
Definition at line 36 of file CompositeGeometryProcessor.hpp.