From bf3a09cd00596c6134393365ed76ea8d9f826e8c Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 28 Jan 2016 12:14:20 -0800 Subject: [PATCH 1/4] Fixing the default value for the TOneMapping curve and cleaning the code into the ToneMappingEffect file --- .../render-utils/src/RenderDeferredTask.cpp | 15 +--------- .../render-utils/src/RenderDeferredTask.h | 28 ------------------ .../render-utils/src/ToneMappingEffect.cpp | 17 ++++++++++- .../render-utils/src/ToneMappingEffect.h | 29 ++++++++++++++++++- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index eb46129777..d76d0a77de 100755 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -27,6 +27,7 @@ #include "render/DrawStatus.h" #include "AmbientOcclusionEffect.h" #include "AntialiasingEffect.h" +#include "ToneMappingEffect.h" #include "RenderDeferredTask.h" @@ -67,20 +68,6 @@ void RenderDeferred::run(const SceneContextPointer& sceneContext, const RenderCo DependencyManager::get()->render(renderContext); } -void ToneMappingDeferred::configure(const Config& config) { - if (config.exposure >= 0.0f) { - _toneMappingEffect.setExposure(config.exposure); - } - - if (config.curve >= 0) { - _toneMappingEffect.setToneCurve((ToneMappingEffect::ToneCurve)config.curve); - } -} - -void ToneMappingDeferred::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext) { - _toneMappingEffect.render(renderContext->args); -} - RenderDeferredTask::RenderDeferredTask(CullFunctor cullFunctor) { cullFunctor = cullFunctor ? cullFunctor : [](const RenderArgs*, const AABox&){ return true; }; diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 414b019b31..8d773a9b21 100755 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -16,8 +16,6 @@ #include "render/DrawTask.h" -#include "ToneMappingEffect.h" - class SetupDeferred { public: void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext); @@ -40,32 +38,6 @@ public: using JobModel = render::Job::Model; }; - -class ToneMappingConfig : public render::Job::Config { - Q_OBJECT - Q_PROPERTY(bool enabled MEMBER enabled) - Q_PROPERTY(float exposure MEMBER exposure NOTIFY dirty); - Q_PROPERTY(int curve MEMBER curve NOTIFY dirty); -public: - ToneMappingConfig() : render::Job::Config(true) {} - - float exposure{ 0.0f }; - int curve{ 3 }; -signals: - void dirty(); -}; - -class ToneMappingDeferred { -public: - using Config = ToneMappingConfig; - using JobModel = render::Job::Model; - - void configure(const Config& config); - void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext); - - ToneMappingEffect _toneMappingEffect; -}; - class DrawConfig : public render::Job::Config { Q_OBJECT Q_PROPERTY(int numDrawn READ getNumDrawn) diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index 55b7d41ab3..da11507965 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -145,4 +145,19 @@ void ToneMappingEffect::render(RenderArgs* args) { batch.setResourceTexture(ToneMappingEffect_LightingMapSlot, lightingBuffer); batch.draw(gpu::TRIANGLE_STRIP, 4); }); -} \ No newline at end of file +} + + +void ToneMappingDeferred::configure(const Config& config) { + if (config.exposure >= 0.0f) { + _toneMappingEffect.setExposure(config.exposure); + } + + if (config.curve >= 0) { + _toneMappingEffect.setToneCurve((ToneMappingEffect::ToneCurve)config.curve); + } +} + +void ToneMappingDeferred::run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext) { + _toneMappingEffect.render(renderContext->args); +} diff --git a/libraries/render-utils/src/ToneMappingEffect.h b/libraries/render-utils/src/ToneMappingEffect.h index 20ee9024cf..f6747180a2 100644 --- a/libraries/render-utils/src/ToneMappingEffect.h +++ b/libraries/render-utils/src/ToneMappingEffect.h @@ -17,6 +17,8 @@ #include #include +#include + class RenderArgs; @@ -50,7 +52,7 @@ private: float _exposure = 0.0f; float _twoPowExposure = 1.0f; glm::vec2 spareA; - int _toneCurve = Filmic; + int _toneCurve = Gamma22; glm::vec3 spareB; Parameters() {} @@ -61,4 +63,29 @@ private: void init(); }; +class ToneMappingConfig : public render::Job::Config { + Q_OBJECT + Q_PROPERTY(bool enabled MEMBER enabled) + Q_PROPERTY(float exposure MEMBER exposure NOTIFY dirty); + Q_PROPERTY(int curve MEMBER curve NOTIFY dirty); +public: + ToneMappingConfig() : render::Job::Config(true) {} + + float exposure{ 0.0f }; + int curve{ 1 }; +signals: + void dirty(); +}; + +class ToneMappingDeferred { +public: + using Config = ToneMappingConfig; + using JobModel = render::Job::Model; + + void configure(const Config& config); + void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext); + + ToneMappingEffect _toneMappingEffect; +}; + #endif // hifi_ToneMappingEffect_h From 62d5a45829222c981d804e910d8a78f577566abf Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 28 Jan 2016 12:20:09 -0800 Subject: [PATCH 2/4] Cleaner init --- libraries/render-utils/src/ToneMappingEffect.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/ToneMappingEffect.h b/libraries/render-utils/src/ToneMappingEffect.h index f6747180a2..e9a4479dc9 100644 --- a/libraries/render-utils/src/ToneMappingEffect.h +++ b/libraries/render-utils/src/ToneMappingEffect.h @@ -72,7 +72,7 @@ public: ToneMappingConfig() : render::Job::Config(true) {} float exposure{ 0.0f }; - int curve{ 1 }; + int curve{ ToneMappingEffect::Gamma22 }; signals: void dirty(); }; From ef451d40df3d2516cbda67d927c5825eda05c6b3 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 28 Jan 2016 12:39:52 -0800 Subject: [PATCH 3/4] Cleaner... --- libraries/render-utils/src/ToneMappingEffect.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/ToneMappingEffect.h b/libraries/render-utils/src/ToneMappingEffect.h index e9a4479dc9..aa48494ca0 100644 --- a/libraries/render-utils/src/ToneMappingEffect.h +++ b/libraries/render-utils/src/ToneMappingEffect.h @@ -66,11 +66,15 @@ private: class ToneMappingConfig : public render::Job::Config { Q_OBJECT Q_PROPERTY(bool enabled MEMBER enabled) - Q_PROPERTY(float exposure MEMBER exposure NOTIFY dirty); - Q_PROPERTY(int curve MEMBER curve NOTIFY dirty); + Q_PROPERTY(float exposure MEMBER exposure WRITE setExposure); + Q_PROPERTY(int curve MEMBER curve WRITE setCurve); public: ToneMappingConfig() : render::Job::Config(true) {} + void setExposure(float newExposure) { exposure = std::max(0.0f, newExposure); emit dirty(); } + void setCurve(int newCurve) { curve = std::max((int)ToneMappingEffect::None, std::min((int)ToneMappingEffect::Filmic, newCurve)); emit dirty(); } + + float exposure{ 0.0f }; int curve{ ToneMappingEffect::Gamma22 }; signals: From 5863e340af253586217bf4ef18eae36205b3fa1e Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 28 Jan 2016 12:46:18 -0800 Subject: [PATCH 4/4] Cleaner... --- libraries/render-utils/src/ToneMappingEffect.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/ToneMappingEffect.h b/libraries/render-utils/src/ToneMappingEffect.h index aa48494ca0..3dd212c2dc 100644 --- a/libraries/render-utils/src/ToneMappingEffect.h +++ b/libraries/render-utils/src/ToneMappingEffect.h @@ -65,8 +65,8 @@ private: class ToneMappingConfig : public render::Job::Config { Q_OBJECT - Q_PROPERTY(bool enabled MEMBER enabled) - Q_PROPERTY(float exposure MEMBER exposure WRITE setExposure); + Q_PROPERTY(bool enabled MEMBER enabled) + Q_PROPERTY(float exposure MEMBER exposure WRITE setExposure); Q_PROPERTY(int curve MEMBER curve WRITE setCurve); public: ToneMappingConfig() : render::Job::Config(true) {}