From e1e4d9ac6c8f55c881519c75f4ec854a17132421 Mon Sep 17 00:00:00 2001
From: Sam Gateau <sam@highfidelity.io>
Date: Tue, 20 Aug 2019 18:15:35 -0700
Subject: [PATCH] Exposing the AA mode of the AA job

---
 .../render-utils/src/AntialiasingEffect.cpp   |  7 +++++
 .../render-utils/src/AntialiasingEffect.h     | 14 ++++++++++
 .../utilities/render/luci/Antialiasing.qml    | 28 +++++--------------
 3 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp
index 0e70cb7f3c..c9da8373db 100644
--- a/libraries/render-utils/src/AntialiasingEffect.cpp
+++ b/libraries/render-utils/src/AntialiasingEffect.cpp
@@ -139,6 +139,11 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const
 }
 #else
 
+void AntialiasingConfig::setAAMode(int mode) {
+    _mode = std::min((int)AntialiasingConfig::MODE_COUNT, std::max(0, mode));
+    emit dirty();
+}
+
 Antialiasing::Antialiasing(bool isSharpenEnabled) : 
     _isSharpenEnabled{ isSharpenEnabled } {
 }
@@ -189,6 +194,8 @@ const gpu::PipelinePointer& Antialiasing::getDebugBlendPipeline() {
 }
 
 void Antialiasing::configure(const Config& config) {
+    _mode = (AntialiasingConfig::Mode) config.getAAMode();
+
     _sharpen = config.sharpen * 0.25f;
     if (!_isSharpenEnabled) {
         _sharpen = 0.0f;
diff --git a/libraries/render-utils/src/AntialiasingEffect.h b/libraries/render-utils/src/AntialiasingEffect.h
index 415571d348..1a760a8b06 100644
--- a/libraries/render-utils/src/AntialiasingEffect.h
+++ b/libraries/render-utils/src/AntialiasingEffect.h
@@ -88,6 +88,7 @@ private:
 
 class AntialiasingConfig : public render::Job::Config {
     Q_OBJECT
+    Q_PROPERTY(int mode READ getAAMode WRITE setAAMode NOTIFY dirty)
     Q_PROPERTY(float blend MEMBER blend NOTIFY dirty)
     Q_PROPERTY(float sharpen MEMBER sharpen NOTIFY dirty)
     Q_PROPERTY(float covarianceGamma MEMBER covarianceGamma NOTIFY dirty)
@@ -108,9 +109,21 @@ class AntialiasingConfig : public render::Job::Config {
 public:
     AntialiasingConfig() : render::Job::Config(true) {}
 
+    enum Mode {
+        OFF = 0,
+        TAA,
+        FXAA,
+        MODE_COUNT
+    };
+
+    void setAAMode(int mode);
+    int getAAMode() const { return _mode; }
+
     void setDebugFXAA(bool debug) { debugFXAAX = (debug ? 0.0f : 1.0f); emit dirty();}
     bool debugFXAA() const { return (debugFXAAX == 0.0f ? true : false); }
 
+    int _mode{ TAA };
+
     float blend{ 0.25f };
     float sharpen{ 0.05f };
 
@@ -197,6 +210,7 @@ private:
     gpu::PipelinePointer _debugBlendPipeline;
 
     TAAParamsBuffer _params;
+    AntialiasingConfig::Mode _mode{ AntialiasingConfig::TAA };
     float _sharpen{ 0.15f };
     bool _isSharpenEnabled{ true };
 };
diff --git a/scripts/developer/utilities/render/luci/Antialiasing.qml b/scripts/developer/utilities/render/luci/Antialiasing.qml
index 46d8a8fcdb..2a52dfed46 100644
--- a/scripts/developer/utilities/render/luci/Antialiasing.qml
+++ b/scripts/developer/utilities/render/luci/Antialiasing.qml
@@ -38,44 +38,29 @@ Column{
 
     Prop.PropEnum {
         label: "Deferred AA Method"
+        object: Render.getConfig("RenderMainView.Antialiasing")
+        property: "mode"
         enums: [
             "Off",
             "TAA",
             "FXAA",
                 ]
-
-        valueVarSetter: function (mode) { setAAMode(mode) }
-        valueVarGetter: function () { return Render.getConfig("RenderMainView.JitterCam").state +
-                                             Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff * 2 }
-
-        function setAAMode(mode) {
-            console.log("Deferred AA mode is " + mode)
-            
-            if (mode == 0) {
-                Render.getConfig("RenderMainView.JitterCam").state = 0;
-                Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
-            } else if (mode == 1) {
-                Render.getConfig("RenderMainView.JitterCam").state = 1;
-                Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
-            } else {
-                Render.getConfig("RenderMainView.JitterCam").state = 0;
-                Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = true;
-            }
-        }
     }
-    Separator {}          
     Prop.PropEnum {
+        id: jitter
         label: "Jitter"
         object: Render.getConfig("RenderMainView.JitterCam")
         property: "state"
-
         enums: [
             "Off",
             "On",
             "Paused",
                 ]
     }
+    Separator {}          
+
     Prop.PropScalar {
+        visible: (Render.getConfig("RenderMainView.JitterCam").state == 2)
         label: "Sample Index"
         object: Render.getConfig("RenderMainView.JitterCam")
         property: "index"
@@ -85,6 +70,7 @@ Column{
         integral: true
     }
     Row {
+        visible: (Render.getConfig("RenderMainView.JitterCam").state == 2)
         spacing: 10
 
         HifiControls.Button {