MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Buffers::CompositeGeometryProcessor Class Reference

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< GeometryCollectionget_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< GeometryCollectionm_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::BufferServicem_buffer_service = nullptr
 
Registry::Service::ComputeServicem_compute_service = nullptr
 
- Protected Attributes inherited from MayaFlux::Buffers::BufferProcessor
ProcessingToken m_processing_token { ProcessingToken::AUDIO_BACKEND }
 

Detailed Description

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:

  • Upload phase: Aggregate all vertices into single buffer (this processor)
  • Render phase: Multiple RenderProcessors, one per topology

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.


The documentation for this class was generated from the following files: