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

◆ bind_network()

void MayaFlux::Buffers::NetworkGeometryProcessor::bind_network ( const std::string &  name,
const std::shared_ptr< Nodes::Network::NodeNetwork > &  network,
const std::shared_ptr< VKBuffer > &  vertex_buffer 
)

Bind a network to a GPU vertex buffer.

Parameters
nameLogical name for this binding
networkNodeNetwork to aggregate geometry from
vertex_bufferGPU vertex buffer to upload to

If vertex_buffer is device-local, a staging buffer is automatically created.

Definition at line 19 of file NetworkGeometryProcessor.cpp.

23{
24 if (!network) {
25 error<std::invalid_argument>(
28 std::source_location::current(),
29 "Cannot bind null network '{}'", name);
30 }
31
32 if (!vertex_buffer) {
33 error<std::invalid_argument>(
36 std::source_location::current(),
37 "Cannot bind network '{}' to null vertex buffer", name);
38 }
39
40 std::shared_ptr<VKBuffer> staging = nullptr;
41 if (!vertex_buffer->is_host_visible()) {
42 staging = create_staging_buffer(vertex_buffer->get_size_bytes());
43
45 "Created staging buffer for device-local network geometry '{}' ({} bytes)",
46 name, vertex_buffer->get_size_bytes());
47 } else {
49 "No staging needed for host-visible network geometry '{}'", name);
50 }
51
52 m_bindings[name] = NetworkBinding {
53 .network = network,
54 .gpu_vertex_buffer = vertex_buffer,
55 .staging_buffer = staging
56 };
57
59 "Bound network '{}' ({} nodes, {} bytes buffer)",
60 name, network->get_node_count(), vertex_buffer->get_size_bytes());
61}
#define MF_DEBUG(comp, ctx,...)
Core::GlobalNetworkConfig network
Definition Config.cpp:37
std::unordered_map< std::string, NetworkBinding > m_bindings
std::shared_ptr< VKBuffer > create_staging_buffer(size_t size)
Create staging buffer for transfers.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Buffers::create_staging_buffer(), m_bindings, MF_DEBUG, network, and MayaFlux::Buffers::NetworkGeometryProcessor::NetworkBinding::network.

+ Here is the call graph for this function: