MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ bind_vector_node()

void MayaFlux::Buffers::DescriptorBindingsProcessor::bind_vector_node ( const std::string &  name,
const std::shared_ptr< Nodes::Node > &  node,
const std::string &  descriptor_name,
uint32_t  set,
vk::DescriptorType  type = vk::DescriptorType::eStorageBuffer 
)

Bind vector node (VectorContext) to descriptor.

Parameters
nameLogical binding name
nodeNode that creates VectorContext
descriptor_nameName in shader config bindings
setDescriptor set index
typeTypically eStorageBuffer for arrays

Definition at line 68 of file DescriptorBindingsProcessor.cpp.

74{
75 if (!node) {
77 "Cannot bind null node '{}'", name);
78 return;
79 }
80
81 if (m_config.bindings.find(descriptor_name) == m_config.bindings.end()) {
83 "Descriptor '{}' not found in shader config", descriptor_name);
84 return;
85 }
86
87 const auto& binding_config = m_config.bindings[descriptor_name];
88
89 size_t initial_size = 4096 * sizeof(float);
90 auto gpu_buffer = create_descriptor_buffer(initial_size, type);
91
92 m_bindings[name] = DescriptorBinding {
93 .node = node,
94 .descriptor_name = descriptor_name,
95 .set_index = set,
96 .binding_index = binding_config.binding,
97 .type = type,
98 .binding_type = BindingType::VECTOR,
99 .gpu_buffer = gpu_buffer,
100 .buffer_offset = 0,
101 .buffer_size = initial_size
102 };
103
104 bind_buffer(descriptor_name, gpu_buffer);
105
107 "Bound vector node '{}' to descriptor '{}'", name, descriptor_name);
108}
#define MF_ERROR(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
std::shared_ptr< VKBuffer > create_descriptor_buffer(size_t size, vk::DescriptorType type)
Create GPU buffer for a descriptor binding.
std::unordered_map< std::string, DescriptorBinding > m_bindings
void bind_buffer(const std::string &descriptor_name, const std::shared_ptr< VKBuffer > &buffer)
Bind a VKBuffer to a named shader descriptor.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.
std::unordered_map< std::string, ShaderBinding > bindings

References MayaFlux::Buffers::ShaderProcessor::bind_buffer(), MayaFlux::Buffers::ShaderProcessorConfig::bindings, MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, create_descriptor_buffer(), m_bindings, MayaFlux::Buffers::ShaderProcessor::m_config, MF_DEBUG, MF_ERROR, MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::node, and VECTOR.

+ Here is the call graph for this function: