58 std::shared_ptr<Nodes::Network::NodeNetwork>
network,
59 const std::string& binding_name =
"network_geometry",
60 float over_allocate_factor = 2.0F);
72 [[nodiscard]] std::shared_ptr<Nodes::Network::NodeNetwork>
get_network()
const
80 [[nodiscard]] std::shared_ptr<NetworkGeometryProcessor>
get_processor()
const
90 return m_binding_name;
96 [[nodiscard]] uint32_t get_vertex_count()
const;
106 if (m_network && m_network->is_enabled()) {
107 m_network->process_batch(num_samples);
123 void setup_rendering(
const RenderConfig& config);
136 void add_chain_operator_rendering(
const RenderConfig& config);
145 [[nodiscard]] std::shared_ptr<RenderProcessor> get_chain_render_processor(
size_t index)
const;
164 void update_chain_render_range(
166 uint32_t vertex_offset,
167 uint32_t vertex_count,
168 const std::optional<Kakshya::VertexLayout>& layout,
169 std::vector<Portal::Graphics::DrawRun> runs = {});
179 void update_render_runs(std::vector<Portal::Graphics::DrawRun> runs);
207 const std::string&
name,
208 size_t element_count,
210 bool double_buffered =
true);
213 [[nodiscard]]
bool has_state(
const std::string&
name)
const;
216 [[nodiscard]]
size_t get_state_bytes(
const std::string&
name)
const;
222 [[nodiscard]] vk::Buffer read_state_handle(
const std::string&
name)
const;
236 [[nodiscard]] VKBufferResources::GenerationSlot read_state_slot(
const std::string&
name)
const;
243 [[nodiscard]] vk::Buffer write_state_handle(
const std::string&
name)
const;
256 [[nodiscard]] VKBufferResources::GenerationSlot write_state_slot(
const std::string&
name)
const;
265 void swap_state(
const std::string&
name);
293 bool ensure_cluster_ids();
303 uint32_t vertex_offset {};
304 uint32_t vertex_count {};
322 [[nodiscard]]
const StateField* find_state_field(
const std::string&
name,
const char* context)
const;
327 static size_t calculate_buffer_size(
328 const std::shared_ptr<Nodes::Network::NodeNetwork>&
network,
329 float over_allocate_factor);
345 void wire_field_operators();
std::shared_ptr< RenderProcessor > render_processor