|
MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
|
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, AggregateBinding > | m_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::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 } |
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:
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.