40 std::shared_ptr<Nodes::Network::MeshNetwork>
network);
45 void on_attach(
const std::shared_ptr<Buffer>&
buffer)
override;
46 void on_detach(
const std::shared_ptr<Buffer>&
buffer)
override;
47 void processing_function(
const std::shared_ptr<Buffer>&
buffer)
override;
50 std::shared_ptr<Nodes::Network::MeshNetwork>
m_network;
70 void allocate_gpu_buffers(
const std::shared_ptr<VKBuffer>& vertex_buf);
71 void upload_combined(
const std::shared_ptr<VKBuffer>& vertex_buf);
72 void link_index_resources(
const std::shared_ptr<VKBuffer>& vertex_buf);
74 [[nodiscard]]
bool any_slot_dirty()
const;
75 void clear_slot_dirty_flags();
77 [[nodiscard]]
size_t total_vertex_bytes()
const;
78 [[nodiscard]]
size_t total_index_count()
const;
80 void allocate_ssbo_buffers();
82 void push_ssbo_bindings(
const std::shared_ptr<VKBuffer>&
buffer);
Core::GlobalNetworkConfig network
std::shared_ptr< NetworkGeometryBuffer > buffer
std::shared_ptr< VKBuffer > m_slot_index_ssbo
Per-vertex slot index. One uint32_t per concatenated vertex.
std::vector< uint32_t > m_slot_index_aggregate
CPU-side scratch for per-vertex slot indices, reused each cycle.
std::vector< uint8_t > m_vertex_aggregate
Aggregate scratch buffers reused each cycle to avoid allocation.
std::shared_ptr< VKBuffer > m_index_staging
~MeshNetworkProcessor() override=default
std::vector< uint32_t > m_index_aggregate
std::shared_ptr< VKBuffer > m_vertex_staging
std::shared_ptr< VKBuffer > m_gpu_index_buffer
std::shared_ptr< Nodes::Network::MeshNetwork > m_network
std::shared_ptr< VKBuffer > m_model_ssbo
Per-slot world matrices in sorted_indices order. One mat4 per slot.
std::vector< glm::mat4 > m_model_aggregate
CPU-side scratch for model matrices, reused each cycle.
Uploads concatenated vertex and index data from all MeshNetwork slots.