|
MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
|
One independent, arbitrary-topology geometry item. More...
#include <GeometryLeafNode.hpp>
Inheritance diagram for MayaFlux::Nodes::GpuSync::GeometryLeafNode:
Collaboration diagram for MayaFlux::Nodes::GpuSync::GeometryLeafNode:Public Member Functions | |
| void | clear_geometry () |
| void | compute_frame () override |
| No-op unless a mutator has run since the last call, so AssemblyOperator::process() calling this on every item every frame stays cheap regardless of how many items exist. | |
| GeometryLeafNode (size_t initial_capacity=64) | |
| GeometryLeafNode (std::vector< glm::vec3 > positions) | |
| GeometryLeafNode (std::vector< Vertex > vertices) | |
| std::vector< Vertex > & | get_geometry () |
| Mutable access for in-place edits. | |
| const std::vector< Vertex > & | get_geometry () const |
| void | set_geometry (std::vector< Vertex > vertices) |
| Replace geometry with fully specified vertices. | |
| void | set_positions (std::vector< glm::vec3 > positions) |
| Replace geometry with plain positions (color/scalar/normal/uv default). | |
| size_t | size () const |
| void | update_vertex (size_t index, const Vertex &vertex) |
Public Member Functions inherited from MayaFlux::Nodes::GpuSync::GeometryWriterNode | |
| void | clear () |
| Clear vertex buffer and reset count. | |
| void | clear_and_resize (uint32_t vertex_count) |
| Clear vertex buffer and resize to specified count. | |
| void | clear_gpu_update_flag () override |
| Clear the dirty flag after GPU upload completes. | |
| void | clear_layout_update_flag () |
| Clear layout update flag. | |
| GeometryWriterNode (uint32_t initial_capacity=1024) | |
| Constructor. | |
| uint32_t | get_index_count () const |
| Get number of indices in index buffer. | |
| std::span< const uint32_t > | get_index_data () const |
| Get raw index buffer data. | |
| NodeContext & | get_last_context () override |
| Retrieves the last created context object. | |
| virtual Portal::Graphics::PrimitiveTopology | get_primitive_topology () const |
| Primitive topology this node's vertex data represents. | |
| std::span< const uint8_t > | get_vertex (uint32_t vertex_index) const |
| Get a single vertex by index. | |
| size_t | get_vertex_buffer_size_bytes () const |
| Get vertex buffer size in bytes. | |
| uint32_t | get_vertex_count () const |
| Get number of vertices. | |
| std::span< const uint8_t > | get_vertex_data () const |
| Get raw vertex buffer data. | |
| std::optional< Kakshya::VertexLayout > | get_vertex_layout () const |
| Get cached vertex layout. | |
| size_t | get_vertex_stride () const |
| Get stride (bytes per vertex) | |
| template<typename T > | |
| T | get_vertex_typed (uint32_t index) const |
| Get a single vertex by index as typed data. | |
| bool | has_indices () const |
| Check if index buffer has been set. | |
| void | mark_vertex_data_dirty (bool state) |
| Set vertex data dirty flag. | |
| bool | needs_gpu_update () const override |
| Check if vertex data or layout changed since last GPU sync. | |
| bool | needs_layout_update () const |
| Check if layout needs update. | |
| bool | needs_vertex_data_update () const |
| Check if vertex data has changed since last GPU sync. | |
| std::vector< double > | process_batch (unsigned int num_samples) override |
| Process batch for geometry generation. | |
| void | resize_vertex_buffer (uint32_t vertex_count, bool preserve_data=false) |
| Resize vertex buffer to hold specified number of vertices. | |
| void | restore_state () override |
| Restore saved geometry state. | |
| void | save_state () override |
| Save current geometry state. | |
| void | set_indices (std::span< const uint32_t > indices) |
| Set index buffer for indexed drawing. | |
| void | set_primitive_topology (Portal::Graphics::PrimitiveTopology topology) |
| Set the topology get_primitive_topology() reports. | |
| void | set_vertex (uint32_t vertex_index, const void *data, size_t size_bytes) |
| Set a single vertex by index. | |
| void | set_vertex_data (const void *data, size_t size_bytes) |
| Copy raw vertex data into buffer. | |
| void | set_vertex_layout (const Kakshya::VertexLayout &layout) |
| Set cached vertex layout. | |
| void | set_vertex_stride (size_t stride) |
| Set vertex stride (bytes per vertex) | |
| template<typename T > | |
| void | set_vertex_typed (uint32_t index, const T &vertex) |
| Set a single vertex by index from typed data. | |
| template<typename T > | |
| void | set_vertices (std::span< const T > vertices) |
| Set multiple vertices from typed array. | |
| void | update_context (double value) override |
| Updates the context object with the current node state. | |
| ~GeometryWriterNode () override=default | |
Public Member Functions inherited from MayaFlux::Nodes::GpuSync::GpuSync | |
| std::vector< double > | process_batch (unsigned int num_samples) override |
| Batch processing for GPU nodes. | |
| double | process_sample (double) override |
| Single sample processing hook. | |
| ~GpuSync () override=default | |
Public Member Functions inherited from MayaFlux::Nodes::Node | |
| void | add_buffer_reference () |
| Increments the buffer reference count This method is called when a new buffer starts using this node to ensure proper lifecycle management. | |
| virtual void | enable_mock_process (bool mock_process) |
| Allows RootNode to process the Generator without using the processed sample. | |
| uint64_t | get_active_snapshot_context () const |
| Get the active snapshot context ID. | |
| const std::atomic< uint32_t > & | get_channel_mask () const |
| Retrieves the current bitmask of active channels using this node. | |
| uint32_t | get_frame_rate () const |
| std::span< const float > | get_gpu_data_buffer () const |
| Provides access to the GPU data buffer. | |
| virtual double | get_last_output () |
| Retrieves the most recent output value produced by the node. | |
| std::vector< ModulatorTree > | get_modulator_tree () const |
| Returns the full modulator tree rooted at this node. | |
| virtual std::vector< std::pair< ModulatorRole, std::shared_ptr< Node > > > | get_modulators () const |
| Returns direct modulator nodes and their roles. | |
| RoutingState & | get_routing_state () |
| Retrieves the current routing state of the network (non-const) | |
| const RoutingState & | get_routing_state () const |
| Retrieves the current routing state of the network. | |
| uint32_t | get_sample_rate () const |
| bool | has_active_snapshot () const |
| Check if node is currently being snapshotted by any context. | |
| bool | has_capability (NodeCapability cap) const |
| Query a single capability. | |
| bool | is_buffer_processed () const |
| Checks if the buffer has been processed. | |
| bool | is_gpu_compatible () const |
| Checks if the node supports GPU processing. | |
| bool | is_in_network () const |
| Sets whether the node is part of a NodeNetwork. | |
| bool | is_in_snapshot_context (uint64_t context_id) const |
| Check if currently in a snapshot context. | |
| bool | is_used_by_channel (uint32_t channel_id) const |
| Checks if the node is currently used by a specific channel. | |
| bool | mark_buffer_processed () |
| Marks the node as having been processed by a buffer. | |
| bool | needs_channel_routing () const |
| Checks if the network is currently in a routing transition phase. | |
| virtual uint8_t | node_capabilities () const |
| Declare which data shapes this node's context can produce. | |
| virtual void | on_tick (const NodeHook &callback) |
| Registers a callback to be called on each tick. | |
| virtual void | on_tick_if (const NodeCondition &condition, const NodeHook &callback) |
| Registers a conditional callback. | |
| void | register_channel_usage (uint32_t channel_id) |
| Mark the specificed channel as a processor/user. | |
| void | release_snapshot_context (uint64_t context_id) |
| Release snapshot context. | |
| virtual void | remove_all_hooks () |
| Removes all registered callbacks. | |
| void | remove_buffer_reference () |
| Decrements the buffer reference count This method is called when a buffer stops using this node to ensure proper lifecycle management. | |
| virtual bool | remove_conditional_hook (const NodeCondition &callback) |
| Removes a previously registered conditional callback. | |
| virtual bool | remove_hook (const NodeHook &callback) |
| Removes a previously registered callback. | |
| void | request_buffer_reset () |
| Requests a reset of the buffer state. | |
| void | request_reset_from_channel (uint32_t channel_id) |
| Requests a reset of the processed state from a specific channel. | |
| virtual void | reset_processed_state () |
| Resets the processed state of the node and any attached input nodes. | |
| void | set_frame_rate (uint32_t frame_rate) |
| virtual void | set_gpu_compatible (bool compatible) |
| Sets whether the node is compatible with GPU processing. | |
| void | set_in_network (bool networked) |
| Marks the node as being part of a NodeNetwork. | |
| void | set_sample_rate (uint32_t sample_rate) |
| virtual bool | should_mock_process () const |
| Checks if the generator should mock process. | |
| bool | try_claim_snapshot_context (uint64_t context_id) |
| Attempt to claim snapshot context for this processing cycle. | |
| void | unregister_channel_usage (uint32_t channel_id) |
| Removes the specified channel from the usage tracking. | |
| virtual | ~Node ()=default |
| Virtual destructor for proper cleanup of derived classes. | |
Private Attributes | |
| bool | m_geometry_dirty { true } |
| std::vector< Vertex > | m_items |
Additional Inherited Members | |
Public Attributes inherited from MayaFlux::Nodes::Node | |
| bool | m_fire_events_during_snapshot = false |
| Internal flag controlling whether notify_tick fires during state snapshots Default: false (events don't fire during isolated buffer processing) Can be exposed in future if needed via concrete implementation in parent. | |
| std::atomic< uint32_t > | m_modulator_count { 0 } |
| Counter tracking how many other nodes are using this node as a modulator. | |
| std::atomic< NodeState > | m_state { NodeState::INACTIVE } |
| Atomic state flag tracking the node's processing status. | |
Protected Member Functions inherited from MayaFlux::Nodes::GpuSync::GpuSync | |
| void | notify_tick (double) override |
| GPU sync nodes don't emit tick callbacks. | |
Protected Member Functions inherited from MayaFlux::Nodes::Node | |
| virtual void | reset_processed_state_internal () |
| Resets the processed state of the node directly. | |
Protected Attributes inherited from MayaFlux::Nodes::GpuSync::GeometryWriterNode | |
| GeometryContext | m_context { 0.0, {}, 0, 0 } |
| std::vector< uint32_t > | m_index_buffer |
| Optional index buffer for indexed drawing (not used by default) | |
| bool | m_needs_layout_update {} |
| Flag indicating if layout needs update. | |
| Portal::Graphics::PrimitiveTopology | m_primitive_topology { Portal::Graphics::PrimitiveTopology::POINT_LIST } |
| std::vector< uint8_t > | m_vertex_buffer |
| Vertex data buffer (flat array of bytes) | |
| uint32_t | m_vertex_count {} |
| Number of vertices in buffer. | |
| bool | m_vertex_data_dirty { true } |
| Flag: vertex data or layout changed since last GPU upload. | |
| std::optional< Kakshya::VertexLayout > | m_vertex_layout |
| Cached vertex layout for descriptor binding. | |
| size_t | m_vertex_stride {} |
| Bytes per vertex (stride for vertex buffer binding) | |
Protected Attributes inherited from MayaFlux::Nodes::Node | |
| std::vector< NodeHook > | m_callbacks |
| Collection of standard callback functions. | |
| std::vector< std::pair< NodeHook, NodeCondition > > | m_conditional_callbacks |
| Collection of conditional callback functions with their predicates. | |
| uint32_t | m_frame_rate { 60 } |
| Frame rate for time-based processing, used for normalization. | |
| bool | m_gpu_compatible {} |
| Flag indicating if the node supports GPU processing This flag is set by derived classes to indicate whether the node can be processed on the GPU. | |
| std::vector< float > | m_gpu_data_buffer |
| GPU data buffer for context objects. | |
| double | m_last_output { 0 } |
| The most recent sample value generated by this oscillator. | |
| bool | m_networked_node {} |
| Flag indicating if the node is part of a NodeNetwork This flag is used to disable event firing when the node is managed within a NodeNetwork, preventing redundant or conflicting event notifications. | |
| uint8_t | m_node_capability { NodeCapability::SCALAR } |
| Bitmask of capabilities declared by this node. | |
| uint32_t | m_sample_rate { 48000 } |
| Sample rate for audio processing, used for normalization. | |
| bool | m_state_saved {} |
| tracks if the node's state has been saved by a snapshot operation | |
| uint32_t | m_timing_rate { m_sample_rate } |
| Current timing rate for the node, used for timing calculations (can be sample rate or frame rate) | |
One independent, arbitrary-topology geometry item.
Concrete GeometryWriterNode leaf holding a flat Vertex array, with no interpolation, connectivity, or simulation of its own: callers supply finished geometry (Kinesis generators, input, procedural code) and this just holds and uploads it. Topology comes from the inherited set_primitive_topology()/get_primitive_topology() (default POINT_LIST); the reported vertex layout tracks whichever topology is current, since Vertex/PointVertex/LineVertex/MeshVertex share one 60-byte offset table and differ only in the scalar field's name.
Intended to be held in bulk by AssemblyOperator, alongside other GeometryWriterNode subclasses, with no shared layout or relation assumed between items.
Definition at line 25 of file GeometryLeafNode.hpp.