|
MayaFlux 0.4.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 Types | |
| enum class | ProcessingMode : uint8_t { INTERNAL , EXTERNAL } |
Public Member Functions | |
| void | add_node (const std::string &aggregate_name, const std::shared_ptr< Nodes::Node > &node, const std::shared_ptr< VKBuffer > &target, ProcessingMode mode=ProcessingMode::INTERNAL) |
| Add a node to a named aggregate. | |
| AggregateBindingsProcessor ()=default | |
| Default constructor. | |
| void | clear_aggregate (const std::string &aggregate_name) |
| Clear all nodes from an aggregate. | |
| void | clear_all_aggregates () |
| Clear all aggregates. | |
| size_t | get_aggregate_count () const |
| Get number of aggregates. | |
| std::vector< std::string > | get_aggregate_names () const |
| Get all aggregate names. | |
| 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. | |
| void | processing_function (const std::shared_ptr< Buffer > &buffer) override |
| BufferProcessor interface - uploads all aggregates. | |
| void | remove_node (const std::string &aggregate_name, const std::shared_ptr< Nodes::Node > &node) |
| Remove a node from an aggregate. | |
Public Member Functions inherited from MayaFlux::Buffers::BufferProcessor | |
| 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. | |
| 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. | |
| void | process (const std::shared_ptr< Buffer > &buffer) |
| Applies a computational transformation to the data in the provided buffer. | |
| virtual void | set_processing_token (ProcessingToken token) |
| Gets the preferred processing backend for this processor. | |
| virtual | ~BufferProcessor ()=default |
| Virtual destructor for proper cleanup of derived classes. | |
Private Attributes | |
| std::unordered_map< std::string, AggregateBinding > | m_aggregates |
Additional Inherited Members | |
Protected Member Functions inherited from MayaFlux::Buffers::VKBufferProcessor | |
| void | ensure_initialized (const std::shared_ptr< VKBuffer > &buffer) |
| 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.