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

◆ compute_frame()

void MayaFlux::Nodes::GpuSync::PathGeneratorNode::compute_frame ( )
overridevirtual

Compute frame - generates interpolated vertices from control points.

Implements MayaFlux::Nodes::GpuSync::GpuSync.

Definition at line 465 of file PathGeneratorNode.cpp.

466{
467 if (m_control_points.empty() && m_draw_vertices.empty() && m_completed_draws.empty()) {
469 return;
470 }
471
472 if (m_geometry_dirty) {
474 m_geometry_dirty = false;
475 }
476
477 if (!m_vertex_data_dirty) {
478 return;
479 }
480
481 m_combined_cache.clear();
482 m_combined_cache.reserve(m_vertices.size() + m_completed_draws.size() + m_draw_vertices.size());
483 m_combined_cache.insert(m_combined_cache.end(), m_vertices.begin(), m_vertices.end());
486
487 if (m_combined_cache.empty()) {
489 return;
490 }
491
492#ifdef MAYAFLUX_PLATFORM_MACOS
493 std::vector<LineVertex> expanded = expand_lines_to_triangles(m_combined_cache);
494 set_vertices<LineVertex>(std::span { expanded.data(), expanded.size() });
495
496 auto layout = get_vertex_layout();
497 layout->vertex_count = static_cast<uint32_t>(expanded.size());
498 set_vertex_layout(*layout);
499#else
500 set_vertices<LineVertex>(std::span { m_combined_cache.data(), m_combined_cache.size() });
501
502 auto layout = get_vertex_layout();
503 layout->vertex_count = static_cast<uint32_t>(m_combined_cache.size());
504 set_vertex_layout(*layout);
505#endif
506}
bool m_vertex_data_dirty
Flag: vertex data or layout changed since last GPU upload.
std::optional< Kakshya::VertexLayout > get_vertex_layout() const
Get cached vertex layout.
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set cached vertex layout.
void resize_vertex_buffer(uint32_t vertex_count, bool preserve_data=false)
Resize vertex buffer to hold specified number of vertices.
Memory::HistoryBuffer< LineVertex > m_control_points

References MayaFlux::Nodes::GpuSync::GeometryWriterNode::get_vertex_layout(), m_combined_cache, m_completed_draws, m_control_points, m_draw_vertices, m_geometry_dirty, MayaFlux::Nodes::GpuSync::GeometryWriterNode::m_vertex_data_dirty, m_vertices, regenerate_geometry(), MayaFlux::Nodes::GpuSync::GeometryWriterNode::resize_vertex_buffer(), and MayaFlux::Nodes::GpuSync::GeometryWriterNode::set_vertex_layout().

+ Here is the call graph for this function: