From 21e069c90c1ce459abd08f91259221eb449a42a6 Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 16 May 2018 13:09:55 -0700 Subject: [PATCH] Adding a toggle button to the developer/Render menu to be able to disable taa and fall back to Fxaa --- interface/src/Menu.cpp | 20 ++++++++++++++++++ interface/src/Menu.h | 1 + .../render-utils/src/AntialiasingEffect.h | 8 +++++-- .../utilities/render/antialiasing.qml | 21 ++++++++++--------- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 4384635147..310e873212 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -47,6 +47,7 @@ #include "AmbientOcclusionEffect.h" #include "RenderShadowTask.h" +#include "AntialiasingEffect.h" #if defined(Q_OS_MAC) || defined(Q_OS_WIN) #include "SpeechRecognizer.h" @@ -380,6 +381,25 @@ Menu::Menu() { // Developer > Render >>> MenuWrapper* renderOptionsMenu = developerMenu->addMenu("Render"); + + action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AntiAliasing, 0, true); + connect(action, &QAction::triggered, [action] { + auto renderConfig = qApp->getRenderEngine()->getConfiguration(); + if (renderConfig) { + auto mainViewJitterCamConfig = renderConfig->getConfig("RenderMainView.JitterCam"); + auto mainViewAntialiasingConfig = renderConfig->getConfig("RenderMainView.Antialiasing"); + if (mainViewJitterCamConfig && mainViewAntialiasingConfig) { + if (action->isChecked()) { + mainViewJitterCamConfig->play(); + mainViewAntialiasingConfig->debugFXAAX = 1.0; + } else { + mainViewJitterCamConfig->none(); + mainViewAntialiasingConfig->debugFXAAX = 0.0; + } + } + } + }); + action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, true); connect(action, &QAction::triggered, [action] { auto renderConfig = qApp->getRenderEngine()->getConfiguration(); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index bba70a6a89..92885f0801 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -210,6 +210,7 @@ namespace MenuOption { const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar"; const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar"; const QString Shadows = "Shadows"; + const QString AntiAliasing = "Temporal Antialiasing (FXAA if disabled)"; const QString AmbientOcclusion = "Ambient Occlusion"; } diff --git a/libraries/render-utils/src/AntialiasingEffect.h b/libraries/render-utils/src/AntialiasingEffect.h index a89666f58b..175f7b41e4 100644 --- a/libraries/render-utils/src/AntialiasingEffect.h +++ b/libraries/render-utils/src/AntialiasingEffect.h @@ -62,7 +62,7 @@ public: }; using Config = JitterSampleConfig; - using Output = glm::vec2; + using Output = glm::vec2; using JobModel = render::Job::ModelO; void configure(const Config& config); @@ -95,7 +95,7 @@ class AntialiasingConfig : public render::Job::Config { Q_PROPERTY(bool debug MEMBER debug NOTIFY dirty) Q_PROPERTY(float debugX MEMBER debugX NOTIFY dirty) - Q_PROPERTY(float debugFXAAX MEMBER debugFXAAX NOTIFY dirty) + Q_PROPERTY(bool fxaaOnOff READ debugFXAA WRITE setDebugFXAA NOTIFY dirty) Q_PROPERTY(float debugShowVelocityThreshold MEMBER debugShowVelocityThreshold NOTIFY dirty) Q_PROPERTY(bool showCursorPixel MEMBER showCursorPixel NOTIFY dirty) Q_PROPERTY(glm::vec2 debugCursorTexcoord MEMBER debugCursorTexcoord NOTIFY dirty) @@ -106,6 +106,10 @@ class AntialiasingConfig : public render::Job::Config { public: AntialiasingConfig() : render::Job::Config(true) {} + void setDebugFXAA(bool debug) { debugFXAAX = (debug ? 0.0f : 1.0f); emit dirty();} + bool debugFXAA() const { return (debugFXAAX == 0.0f ? true : false); } + + float blend{ 0.25f }; float sharpen{ 0.05f }; diff --git a/scripts/developer/utilities/render/antialiasing.qml b/scripts/developer/utilities/render/antialiasing.qml index 8bdd5c6a0d..1a8f9dac2d 100644 --- a/scripts/developer/utilities/render/antialiasing.qml +++ b/scripts/developer/utilities/render/antialiasing.qml @@ -38,21 +38,22 @@ Rectangle { id: fxaaOnOff property bool debugFXAA: false HifiControls.Button { - text: { - if (fxaaOnOff.debugFXAA) { - return "FXAA" - } else { - return "TAA" - } + function getTheText() { + if (Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff) { + return "FXAA" + } else { + return "TAA" + } } + text: getTheText() onClicked: { - fxaaOnOff.debugFXAA = !fxaaOnOff.debugFXAA - if (fxaaOnOff.debugFXAA) { + var onOff = !Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff; + if (onOff) { Render.getConfig("RenderMainView.JitterCam").none(); - Render.getConfig("RenderMainView.Antialiasing").debugFXAAX = 0; + Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = true; } else { Render.getConfig("RenderMainView.JitterCam").play(); - Render.getConfig("RenderMainView.Antialiasing").debugFXAAX = 1.0; + Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false; } }