57 std::shared_ptr<Nodes::Node>
node;
58 std::shared_ptr<Buffers::Buffer>
buffer;
59 std::shared_ptr<Nodes::Network::NodeNetwork>
network;
67 size_t buffer_offset {};
69 std::atomic<ProcessingMode> processing_mode { ProcessingMode::INTERNAL };
93 void bind_scalar_node(
94 const std::string& name,
95 const std::shared_ptr<Nodes::Node>& node,
96 const std::string& descriptor_name,
99 ProcessingMode mode = ProcessingMode::INTERNAL);
110 void bind_vector_node(
111 const std::string& name,
112 const std::shared_ptr<Nodes::Node>& node,
113 const std::string& descriptor_name,
116 ProcessingMode mode = ProcessingMode::INTERNAL);
121 void bind_matrix_node(
122 const std::string& name,
123 const std::shared_ptr<Nodes::Node>& node,
124 const std::string& descriptor_name,
127 ProcessingMode mode = ProcessingMode::INTERNAL);
137 void bind_structured_node(
138 const std::string& name,
139 const std::shared_ptr<Nodes::Node>& node,
140 const std::string& descriptor_name,
143 ProcessingMode mode = ProcessingMode::INTERNAL);
157 void bind_audio_buffer(
158 const std::string& name,
159 const std::shared_ptr<AudioBuffer>& buffer,
160 const std::string& descriptor_name,
177 void bind_host_vk_buffer(
178 const std::string& name,
179 const std::shared_ptr<VKBuffer>& buffer,
180 const std::string& descriptor_name,
200 const std::string& name,
201 const std::shared_ptr<Nodes::Network::NodeNetwork>& network,
202 const std::string& descriptor_name,
209 void unbind(
const std::string& name);
214 bool has_binding(
const std::string& name)
const;
219 std::vector<std::string> get_binding_names()
const;
226 void set_processing_mode(
const std::string& name, ProcessingMode mode);
232 void set_processing_mode(ProcessingMode mode);
239 ProcessingMode get_processing_mode(
const std::string& name)
const;
247 void execute_shader(
const std::shared_ptr<VKBuffer>& buffer)
override;
254 std::unordered_map<std::string, DescriptorBinding>
m_bindings;
274 std::shared_ptr<VKBuffer> create_descriptor_buffer(