42 std::shared_ptr<Nodes::Node>
node;
49 size_t buffer_offset {};
73 void bind_scalar_node(
74 const std::string& name,
75 const std::shared_ptr<Nodes::Node>& node,
76 const std::string& descriptor_name,
78 vk::DescriptorType type = vk::DescriptorType::eUniformBuffer);
88 void bind_vector_node(
89 const std::string& name,
90 const std::shared_ptr<Nodes::Node>& node,
91 const std::string& descriptor_name,
93 vk::DescriptorType type = vk::DescriptorType::eStorageBuffer);
98 void bind_matrix_node(
99 const std::string& name,
100 const std::shared_ptr<Nodes::Node>& node,
101 const std::string& descriptor_name,
103 vk::DescriptorType type = vk::DescriptorType::eStorageBuffer);
113 void bind_structured_node(
114 const std::string& name,
115 const std::shared_ptr<Nodes::Node>& node,
116 const std::string& descriptor_name,
118 vk::DescriptorType type = vk::DescriptorType::eStorageBuffer);
123 void unbind_node(
const std::string& name);
128 bool has_binding(
const std::string& name)
const;
133 std::vector<std::string> get_binding_names()
const;
141 void execute_shader(
const std::shared_ptr<VKBuffer>& buffer)
override;
148 std::unordered_map<std::string, DescriptorBinding>
m_bindings;
168 std::shared_ptr<VKBuffer> create_descriptor_buffer(
170 vk::DescriptorType type);