MayaFlux 0.3.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.

Returns empty NetworkGpuData if the network has no operator, the operator is not a GraphicsOperator, or the operator has no vertex data this frame. 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, or empty if not available

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 {};
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,...)

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

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

+ Here is the caller graph for this function: