@@ -408,12 +408,13 @@ void Viewport::imagePipeline_populate(tsd::rendering::ImagePipeline &p)
408408 m_visualizeAOVPass = p.emplace_back <tsd::rendering::VisualizeAOVPass>();
409409 m_visualizeAOVPass->setEnabled (false );
410410 m_visualizeAOVPass->setEdgeInvert (m_edgeInvert);
411- updateDisplayPassState ();
412411
413412 m_outlinePass = p.emplace_back <tsd::rendering::OutlineRenderPass>();
414413
415414 m_outputPass = p.emplace_back <tsd::rendering::CopyToSDLTexturePass>(
416415 m_app->sdlRenderer ());
416+
417+ syncImagePassState ();
417418}
418419
419420void Viewport::camera_resetView (bool resetAzEl)
@@ -599,6 +600,36 @@ void Viewport::updateImage()
599600 m_maxFL = std::max (m_maxFL, m_latestAnariFL);
600601}
601602
603+ void Viewport::syncImagePassState ()
604+ {
605+ if (!m_anariPass)
606+ return ;
607+
608+ m_anariPass->setColorFormat (m_colorFormat);
609+
610+ if (m_visualizeAOVPass) {
611+ m_visualizeAOVPass->setAOVType (m_visualizeAOV);
612+ m_visualizeAOVPass->setDepthRange (
613+ m_depthVisualMinimum, m_depthVisualMaximum);
614+ m_visualizeAOVPass->setEdgeInvert (m_edgeInvert);
615+ }
616+
617+ m_anariPass->setEnableAlbedo (m_visualizeAOV == tsd::rendering::AOVType::ALBEDO);
618+ m_anariPass->setEnableNormals (m_visualizeAOV == tsd::rendering::AOVType::NORMAL);
619+ m_anariPass->setEnablePrimitiveId (
620+ m_visualizeAOV == tsd::rendering::AOVType::PRIMITIVE_ID);
621+ m_anariPass->setEnableInstanceId (
622+ m_visualizeAOV == tsd::rendering::AOVType::INSTANCE_ID);
623+
624+ const auto selectedNode = appContext ()->getFirstSelected ();
625+ const bool needIDs = selectedNode.valid ()
626+ || m_visualizeAOV == tsd::rendering::AOVType::EDGES
627+ || m_visualizeAOV == tsd::rendering::AOVType::OBJECT_ID;
628+ m_anariPass->setEnableIDs (needIDs);
629+
630+ updateDisplayPassState ();
631+ }
632+
602633void Viewport::updateDisplayPassState ()
603634{
604635 if (!m_toneMapPass || !m_outputTransformPass)
@@ -665,9 +696,8 @@ void Viewport::ui_menubar_Viewport()
665696 format = ANARI_FLOAT32_VEC4;
666697
667698 if (format != m_colorFormat) {
668- m_anariPass->setColorFormat (format);
669699 m_colorFormat = format;
670- updateDisplayPassState ();
700+ syncImagePassState ();
671701 }
672702 ImGui::Unindent (INDENT_AMOUNT);
673703 }
@@ -727,19 +757,7 @@ void Viewport::ui_menubar_Viewport()
727757 ImGui::Combo (" AOV" , &aov, aovItems, IM_ARRAYSIZE (aovItems))) {
728758 if (aov != int (m_visualizeAOV)) {
729759 m_visualizeAOV = static_cast <tsd::rendering::AOVType>(aov);
730- m_visualizeAOVPass->setAOVType (m_visualizeAOV);
731- updateDisplayPassState ();
732- m_anariPass->setEnableAlbedo (
733- m_visualizeAOV == tsd::rendering::AOVType::ALBEDO);
734- m_anariPass->setEnableNormals (
735- m_visualizeAOV == tsd::rendering::AOVType::NORMAL);
736- m_anariPass->setEnableIDs (
737- m_visualizeAOV == tsd::rendering::AOVType::EDGES
738- || m_visualizeAOV == tsd::rendering::AOVType::OBJECT_ID);
739- m_anariPass->setEnablePrimitiveId (
740- m_visualizeAOV == tsd::rendering::AOVType::PRIMITIVE_ID);
741- m_anariPass->setEnableInstanceId (
742- m_visualizeAOV == tsd::rendering::AOVType::INSTANCE_ID);
760+ syncImagePassState ();
743761 }
744762 }
745763
0 commit comments