42 std::shared_ptr<Nodes::Node>
node;
74 void bind_scalar_node(
75 const std::string& name,
76 const std::shared_ptr<Nodes::Node>& node,
77 const std::string& descriptor_name,
79 vk::DescriptorType type = vk::DescriptorType::eUniformBuffer);
89 void bind_vector_node(
90 const std::string& name,
91 const std::shared_ptr<Nodes::Node>& node,
92 const std::string& descriptor_name,
94 vk::DescriptorType type = vk::DescriptorType::eStorageBuffer);
99 void bind_matrix_node(
100 const std::string& name,
101 const std::shared_ptr<Nodes::Node>& node,
102 const std::string& descriptor_name,
104 vk::DescriptorType type = vk::DescriptorType::eStorageBuffer);
114 void bind_structured_node(
115 const std::string& name,
116 const std::shared_ptr<Nodes::Node>& node,
117 const std::string& descriptor_name,
119 vk::DescriptorType type = vk::DescriptorType::eStorageBuffer);
124 void unbind_node(
const std::string& name);
129 bool has_binding(
const std::string& name)
const;
134 std::vector<std::string> get_binding_names()
const;
140 void on_before_dispatch(
142 const std::shared_ptr<VKBuffer>& buffer)
override;
150 std::unordered_map<std::string, DescriptorBinding>
m_bindings;
170 std::shared_ptr<VKBuffer> create_descriptor_buffer(
172 vk::DescriptorType type);