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

BufferProcessor that aggregates multiple node outputs into GPU buffers. More...

#include <AggregateBindingsProcessor.hpp>

+ Inheritance diagram for MayaFlux::Buffers::AggregateBindingsProcessor:
+ Collaboration diagram for MayaFlux::Buffers::AggregateBindingsProcessor:

Classes

struct  AggregateBinding
 

Public Member Functions

 AggregateBindingsProcessor ()=default
 Default constructor.
 
void add_node (const std::string &aggregate_name, const std::shared_ptr< Nodes::Node > &node, const std::shared_ptr< VKBuffer > &target)
 Add a node to a named aggregate.
 
void remove_node (const std::string &aggregate_name, const std::shared_ptr< Nodes::Node > &node)
 Remove a node from an aggregate.
 
void clear_aggregate (const std::string &aggregate_name)
 Clear all nodes from an aggregate.
 
void clear_all_aggregates ()
 Clear all aggregates.
 
size_t get_node_count (const std::string &aggregate_name) const
 Get number of nodes in an aggregate.
 
size_t get_total_node_count () const
 Get total number of nodes across all aggregates.
 
std::vector< std::string > get_aggregate_names () const
 Get all aggregate names.
 
size_t get_aggregate_count () const
 Get number of aggregates.
 
void processing_function (std::shared_ptr< Buffer > buffer) override
 BufferProcessor interface - uploads all aggregates.
 
- Public Member Functions inherited from MayaFlux::Buffers::BufferProcessor
virtual ~BufferProcessor ()=default
 Virtual destructor for proper cleanup of derived classes.
 
void process (std::shared_ptr< Buffer > buffer)
 Applies a computational transformation to the data in the provided buffer.
 
virtual void on_attach (std::shared_ptr< Buffer >)
 Called when this processor is attached to a buffer.
 
virtual void on_detach (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 (std::shared_ptr< Buffer >) const
 Checks if this processor can handle the specified buffer type.
 

Private Attributes

std::unordered_map< std::string, AggregateBindingm_aggregates
 

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

BufferProcessor that aggregates multiple node outputs into GPU buffers.

Collects outputs from multiple nodes and uploads them as contiguous arrays to GPU buffers. Supports multiple independent target buffers, each receiving aggregated data from a subset of nodes.

Behavior:

  • Uploads ALL registered aggregates to their target buffers
  • If attached buffer is one of the targets, it receives its aggregate
  • If attached buffer is NOT a target, it receives the first aggregate

Usage: auto velocity_buffer = std::make_shared<VKBuffer>(1000 * sizeof(float), ...); auto aggregate = std::make_shared<AggregateBindingsProcessor>();

// Add nodes to "velocities" aggregate for (int i = 0; i < 1000; i++) { aggregate->add_node("velocities", velocity_node, velocity_buffer); }

velocity_buffer->set_default_processor(aggregate); velocity_buffer->process_default(); // Uploads all aggregates

Definition at line 36 of file AggregateBindingsProcessor.hpp.


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