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

◆ extract_network_gpu_data()

MAYAFLUX_API NetworkGpuData MayaFlux::Buffers::extract_network_gpu_data ( const std::shared_ptr< Nodes::Network::NodeNetwork > &  network,
std::string_view  name 
)

Extract GPU geometry data from a NodeNetwork via its GraphicsOperator.

vertex_data/vertex_count are empty when the network has no operator, the operator is not a GraphicsOperator, or it has no vertex data this frame (e.g. an AssemblyOperator with zero items so far). layout is still populated whenever the operator can report one regardless of count, so a render pipeline can be built from it before any data exists – an operator's attribute shape is not data-dependent even when its current vertex count is zero. Logs at TRACE level for empty/missing data, WARN for operator type mismatch.

Parameters
networkNetwork to extract from
nameLogical name used in log messages
Returns
Populated NetworkGpuData; vertex_data/vertex_count empty/zero if there is nothing to upload this frame, layout set regardless when the operator can provide one

Definition at line 323 of file BufferUtils.cpp.

326{
327 auto* op = network->get_operator();
328 if (!op) {
329 MF_RT_TRACE(Journal::Component::Buffers, Journal::Context::BufferProcessing,
330 "Network '{}' has no operator", name);
331 return {};
332 }
333
334 auto* graphics_op = dynamic_cast<Nodes::Network::GraphicsOperator*>(op);
335 if (!graphics_op) {
336 MF_RT_WARN(Journal::Component::Buffers, Journal::Context::BufferProcessing,
337 "Network '{}' operator '{}' is not a GraphicsOperator",
338 name, op->get_type_name());
339 return {};
340 }
341
342 auto vertex_data = graphics_op->get_vertex_data();
343 size_t vertex_count = graphics_op->get_vertex_count();
344
345 if (vertex_data.empty() || vertex_count == 0) {
346 MF_RT_TRACE(Journal::Component::Buffers, Journal::Context::BufferProcessing,
347 "Network '{}' has no vertex data this frame", name);
348 return { .layout = graphics_op->get_vertex_layout() };
349 }
350
351 return {
352 .vertex_data = vertex_data,
353 .vertex_count = vertex_count,
354 .layout = graphics_op->get_vertex_layout()
355 };
356}
#define MF_RT_WARN(comp, ctx,...)
#define MF_RT_TRACE(comp, ctx,...)
Core::GlobalNetworkConfig network
Definition Config.cpp:43
std::string name
Definition VKDevice.cpp:123

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MF_RT_TRACE, MF_RT_WARN, name, and network.

Referenced by MayaFlux::Buffers::NetworkGeometryProcessor::processing_function(), and MayaFlux::Buffers::DescriptorBindingsProcessor::update_from_network().

+ Here is the caller graph for this function: