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

◆ mill_runs()

uint32_t MayaFlux::Buffers::RenderProcessor::mill_runs ( const std::shared_ptr< VKBuffer > &  buffer,
Portal::Graphics::PrimitiveMill &  mill 
)
private

Mill m_runs into this attachment's output.

Returns
Number of vertices prepared for drawing.

Definition at line 659 of file RenderProcessor.cpp.

660{
661 std::span<const Portal::Graphics::DrawRun> runs = m_runs;
662
663 Portal::Graphics::DrawRun whole {};
664 if (runs.empty()) {
665 const auto layout = buffer->get_vertex_layout();
666 const uint32_t count = m_vertex_count > 0
668 : (layout.has_value() ? layout->vertex_count : 0U);
669
670 if (count == 0) {
671 return 0;
672 }
673
674 whole = { .topology = m_primitive_topology,
675 .vertex_offset = m_first_vertex,
676 .vertex_count = count };
677 runs = { &whole, 1 };
678 }
679
680 glm::vec3 eye = m_view_transform_active
681 ? glm::vec3(glm::inverse(published_render_transform().view_transform.view)[3])
682 : glm::vec3(0.0F, 0.0F, 1.0e4F);
683
686 const auto& geometry = published_render_transform().geometry;
687 const float determinant = glm::determinant(geometry);
688 if (std::isfinite(determinant) && determinant != 0.0F) {
689 const glm::vec4 local_eye = glm::inverse(geometry) * glm::vec4(eye, 1.0F);
690 if (std::isfinite(local_eye.x) && std::isfinite(local_eye.y)
691 && std::isfinite(local_eye.z) && std::isfinite(local_eye.w)
692 && local_eye.w != 0.0F) {
693 eye = glm::vec3(local_eye) / local_eye.w;
694 }
695 }
696 }
697
698 const Portal::Graphics::MillView view { .eye = eye };
699
700 return mill.mill(buffer, runs, view);
701}
std::shared_ptr< NetworkGeometryBuffer > buffer
size_t count
std::vector< Portal::Graphics::DrawRun > m_runs
Portal::Graphics::MillSpec m_mill_spec
const Kinesis::RenderTransform & published_render_transform() const
Transform published for this frame by publish_render_transform().
Portal::Graphics::PrimitiveTopology m_primitive_topology
std::function< glm::mat4()> m_geometry_transform_source
std::optional< glm::mat4 > m_geometry_transform
@ WorldFacing
Turned to face the viewpoint, in world space.

References buffer, count, MayaFlux::Portal::Graphics::MillView::eye, MayaFlux::Portal::Graphics::PrimitiveMill::mill(), MayaFlux::Portal::Graphics::DrawRun::topology, and MayaFlux::Portal::Graphics::MillSpec::WorldFacing.

+ Here is the call graph for this function: