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);
115 void setup_rendering(
const RenderConfig& config);
124 void add_chain_operator_rendering(
const RenderConfig& config);
133 [[nodiscard]] std::shared_ptr<RenderProcessor> get_chain_render_processor(
size_t index)
const;
145 void update_chain_render_range(
147 uint32_t vertex_offset,
148 uint32_t vertex_count,
149 const std::optional<Kakshya::VertexLayout>& layout);
177 const std::string&
name,
178 size_t element_count,
180 bool double_buffered =
true);
183 [[nodiscard]]
bool has_state(
const std::string&
name)
const;
186 [[nodiscard]]
size_t get_state_bytes(
const std::string&
name)
const;
192 [[nodiscard]] vk::Buffer read_state_handle(
const std::string&
name)
const;
213 [[nodiscard]] vk::Buffer write_state_handle(
const std::string&
name)
const;
235 void swap_state(
const std::string&
name);
263 bool ensure_cluster_ids();
273 uint32_t vertex_offset {};
274 uint32_t vertex_count {};
292 [[nodiscard]]
const StateField* find_state_field(
const std::string&
name,
const char* context)
const;
297 static size_t calculate_buffer_size(
298 const std::shared_ptr<Nodes::Network::NodeNetwork>&
network,
299 float over_allocate_factor);
315 void wire_field_operators();
std::shared_ptr< RenderProcessor > render_processor