Add per-viewport AOV selection (stageView.py GetRendererAovs port)
Exposes the render delegate's available AOVs in the gear popup under a new "AOV" sub-menu. Selecting an AOV calls SetRendererAov on the engine and persists the choice per-viewport in viewport_settings.ini. Switching the render delegate resets the AOV to "color", matching stageView.py's _handleRendererChanged. Menu is greyed-out when the delegate reports no AOVs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -658,6 +658,7 @@ void ViewportPanel::SaveSettings(const std::string& path) const
|
||||
f << "RenderDelegate=" << s.renderDelegate << "\n";
|
||||
f << "ShowGrid=" << (s.showGrid ? 1 : 0) << "\n";
|
||||
f << "ShowCameraGuide=" << (s.showCameraGuide ? 1 : 0) << "\n";
|
||||
f << "Aov=" << s.aov << "\n";
|
||||
f << "AAEnabled=" << (s.aaEnabled ? 1 : 0) << "\n";
|
||||
f << "BgColorR=" << s.bgColorR << "\n";
|
||||
f << "BgColorG=" << s.bgColorG << "\n";
|
||||
@@ -725,6 +726,7 @@ void ViewportPanel::LoadSettings(const std::string& path)
|
||||
if (key == "RenderDelegate") ts.renderDelegate = val;
|
||||
else if (key == "ShowGrid") ts.showGrid = (val == "1");
|
||||
else if (key == "ShowCameraGuide") ts.showCameraGuide = (val == "1");
|
||||
else if (key == "Aov") ts.aov = val;
|
||||
else if (key == "AAEnabled") ts.aaEnabled = (val == "1");
|
||||
else if (key == "BgColorR") ts.bgColorR = toFloat(val, ts.bgColorR);
|
||||
else if (key == "BgColorG") ts.bgColorG = toFloat(val, ts.bgColorG);
|
||||
|
||||
@@ -94,6 +94,7 @@ ViewportTileSettings ViewportTile::GetSettings() const
|
||||
s.renderDelegate = m_renderer.GetCurrentRendererId().GetString();
|
||||
s.showGrid = m_renderer.ShowGrid();
|
||||
s.showCameraGuide = m_renderer.ShowCameraGuide();
|
||||
s.aov = m_renderer.GetCurrentAov().GetString();
|
||||
s.aaEnabled = m_renderer.GetAAEnabled();
|
||||
const pxr::GfVec3f& bg = m_renderer.GetBackgroundColor();
|
||||
s.bgColorR = bg[0]; s.bgColorG = bg[1]; s.bgColorB = bg[2];
|
||||
@@ -110,6 +111,8 @@ void ViewportTile::ApplySettings(const ViewportTileSettings& s)
|
||||
m_renderer.SetRendererPlugin(pxr::TfToken(s.renderDelegate));
|
||||
m_renderer.SetShowGrid(s.showGrid);
|
||||
m_renderer.SetShowCameraGuide(s.showCameraGuide);
|
||||
if (!s.aov.empty())
|
||||
m_renderer.SetCurrentAov(pxr::TfToken(s.aov));
|
||||
m_renderer.SetAAEnabled(s.aaEnabled);
|
||||
m_renderer.SetBackgroundColor(pxr::GfVec3f(s.bgColorR, s.bgColorG, s.bgColorB));
|
||||
m_renderer.SetBBoxMode(static_cast<BBoxMode>(s.bboxMode));
|
||||
@@ -1008,6 +1011,20 @@ void ViewportTile::RenderCompactToolbar(int tileIndex)
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
// -- AOV ---------------------------------------------------------
|
||||
{
|
||||
pxr::TfTokenVector aovs = m_renderer.GetRendererAovs();
|
||||
if (ImGui::BeginMenu("AOV", !aovs.empty())) {
|
||||
pxr::TfToken currentAov = m_renderer.GetCurrentAov();
|
||||
for (const auto& aov : aovs) {
|
||||
bool checked = (aov == currentAov);
|
||||
if (ImGui::MenuItem(aov.GetText(), nullptr, checked) && !checked)
|
||||
m_renderer.SetCurrentAov(aov);
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
}
|
||||
|
||||
// -- Lighting ----------------------------------------------------
|
||||
if (ImGui::BeginMenu("Lighting")) {
|
||||
bool ambient = m_renderer.GetAmbientLightOnly();
|
||||
|
||||
@@ -23,6 +23,7 @@ struct ViewportTileSettings {
|
||||
std::string renderDelegate; ///< empty = use AppPreferences default on first load
|
||||
bool showGrid = true;
|
||||
bool showCameraGuide = false;
|
||||
std::string aov = "color";
|
||||
bool aaEnabled = false;
|
||||
float bgColorR = 0.15f;
|
||||
float bgColorG = 0.15f;
|
||||
|
||||
Reference in New Issue
Block a user