From 34f2a96888552aebf7e0143adaeab629b277964c Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 18 Jul 2016 18:11:51 -0700 Subject: [PATCH] Adding the check for Obscurrance --- libraries/render-utils/src/LightAmbient.slh | 4 ++++ libraries/render-utils/src/LightingModel.cpp | 11 ++++++++++- libraries/render-utils/src/LightingModel.h | 13 +++++++++++-- libraries/render-utils/src/LightingModel.slh | 8 ++++++-- libraries/render-utils/src/SurfaceGeometryPass.cpp | 4 ++-- libraries/render-utils/src/SurfaceGeometryPass.h | 2 +- libraries/render/src/render/BlurTask.cpp | 2 ++ libraries/render/src/render/BlurTask.h | 1 - .../developer/utilities/render/deferredLighting.qml | 1 + .../utilities/render/surfaceGeometryPass.qml | 9 ++++++++- 10 files changed, 45 insertions(+), 10 deletions(-) diff --git a/libraries/render-utils/src/LightAmbient.slh b/libraries/render-utils/src/LightAmbient.slh index d40bd921af..ec665e6deb 100644 --- a/libraries/render-utils/src/LightAmbient.slh +++ b/libraries/render-utils/src/LightAmbient.slh @@ -98,6 +98,10 @@ void evalLightingAmbient(out vec3 diffuse, out vec3 specular, Light light, vec3 } <@endif@> + if (!(isObscuranceEnabled() > 0.0)) { + obscurance = 1.0; + } + float lightEnergy = obscurance * getLightAmbientIntensity(light); if (isAlbedoEnabled() > 0.0) { diff --git a/libraries/render-utils/src/LightingModel.cpp b/libraries/render-utils/src/LightingModel.cpp index 7f05daac51..5a251fc5e9 100644 --- a/libraries/render-utils/src/LightingModel.cpp +++ b/libraries/render-utils/src/LightingModel.cpp @@ -49,7 +49,14 @@ void LightingModel::setBackground(bool enable) { bool LightingModel::isBackgroundEnabled() const { return (bool)_parametersBuffer.get().enableBackground; } - +void LightingModel::setObscurance(bool enable) { + if (enable != isObscuranceEnabled()) { + _parametersBuffer.edit().enableObscurance = (float)enable; + } +} +bool LightingModel::isObscuranceEnabled() const { + return (bool)_parametersBuffer.get().enableObscurance; +} void LightingModel::setScattering(bool enable) { if (enable != isScatteringEnabled()) { @@ -136,6 +143,8 @@ void MakeLightingModel::configure(const Config& config) { _lightingModel->setLightmap(config.enableLightmap); _lightingModel->setBackground(config.enableBackground); + _lightingModel->setObscurance(config.enableObscurance); + _lightingModel->setScattering(config.enableScattering); _lightingModel->setDiffuse(config.enableDiffuse); _lightingModel->setSpecular(config.enableSpecular); diff --git a/libraries/render-utils/src/LightingModel.h b/libraries/render-utils/src/LightingModel.h index 82e674db7b..87a6703dc6 100644 --- a/libraries/render-utils/src/LightingModel.h +++ b/libraries/render-utils/src/LightingModel.h @@ -36,6 +36,9 @@ public: void setBackground(bool enable); bool isBackgroundEnabled() const; + void setObscurance(bool enable); + bool isObscuranceEnabled() const; + void setScattering(bool enable); bool isScatteringEnabled() const; void setDiffuse(bool enable); @@ -46,6 +49,7 @@ public: void setAlbedo(bool enable); bool isAlbedoEnabled() const; + void setAmbientLight(bool enable); bool isAmbientLightEnabled() const; void setDirectionalLight(bool enable); @@ -77,13 +81,16 @@ protected: float enableSpecular{ 1.0f }; float enableAlbedo{ 1.0f }; + float enableAmbientLight{ 1.0f }; float enableDirectionalLight{ 1.0f }; float enablePointLight{ 1.0f }; float enableSpotLight{ 1.0f }; float showLightContour{ 0.0f }; // false by default - glm::vec3 spares{ 0.0f }; + float enableObscurance{ 1.0f }; + + glm::vec2 spares{ 0.0f }; Parameters() {} }; @@ -103,6 +110,8 @@ class MakeLightingModelConfig : public render::Job::Config { Q_PROPERTY(bool enableLightmap MEMBER enableLightmap NOTIFY dirty) Q_PROPERTY(bool enableBackground MEMBER enableBackground NOTIFY dirty) + Q_PROPERTY(bool enableObscurance MEMBER enableObscurance NOTIFY dirty) + Q_PROPERTY(bool enableScattering MEMBER enableScattering NOTIFY dirty) Q_PROPERTY(bool enableDiffuse MEMBER enableDiffuse NOTIFY dirty) Q_PROPERTY(bool enableSpecular MEMBER enableSpecular NOTIFY dirty) @@ -122,7 +131,7 @@ public: bool enableEmissive{ true }; bool enableLightmap{ true }; bool enableBackground{ true }; - + bool enableObscurance{ true }; bool enableScattering{ true }; bool enableDiffuse{ true }; diff --git a/libraries/render-utils/src/LightingModel.slh b/libraries/render-utils/src/LightingModel.slh index b246516df9..c0722945bc 100644 --- a/libraries/render-utils/src/LightingModel.slh +++ b/libraries/render-utils/src/LightingModel.slh @@ -17,7 +17,7 @@ struct LightingModel { vec4 _UnlitEmissiveLightmapBackground; vec4 _ScatteringDiffuseSpecularAlbedo; vec4 _AmbientDirectionalPointSpot; - vec4 _ShowContour; + vec4 _ShowContourObscuranceSpare2; }; uniform lightingModelBuffer { @@ -36,6 +36,9 @@ float isLightmapEnabled() { float isBackgroundEnabled() { return lightingModel._UnlitEmissiveLightmapBackground.w; } +float isObscuranceEnabled() { + return lightingModel._ShowContourObscuranceSpare2.y; +} float isScatteringEnabled() { return lightingModel._ScatteringDiffuseSpecularAlbedo.x; @@ -64,9 +67,10 @@ float isSpotEnabled() { } float isShowLightContour() { - return lightingModel._ShowContour.x; + return lightingModel._ShowContourObscuranceSpare2.x; } + <@endfunc@> <$declareLightingModel()$> diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index a30d8524da..f60fd3f3f8 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -326,8 +326,8 @@ SurfaceGeometryPass::SurfaceGeometryPass() { void SurfaceGeometryPass::configure(const Config& config) { - if (config.depthThreshold != getCurvatureDepthThreshold()) { - _parametersBuffer.edit().curvatureInfo.x = config.depthThreshold; + if ((config.depthThreshold * 100.0f) != getCurvatureDepthThreshold()) { + _parametersBuffer.edit().curvatureInfo.x = config.depthThreshold * 100.0f; } if (config.basisScale != getCurvatureBasisScale()) { diff --git a/libraries/render-utils/src/SurfaceGeometryPass.h b/libraries/render-utils/src/SurfaceGeometryPass.h index 14c8316d9e..3f42a7ab1f 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.h +++ b/libraries/render-utils/src/SurfaceGeometryPass.h @@ -146,7 +146,7 @@ class SurfaceGeometryPassConfig : public render::Job::Config { public: SurfaceGeometryPassConfig() : render::Job::Config(true) {} - float depthThreshold{ 0.005f }; // meters + float depthThreshold{ 5.0f }; // centimeters float basisScale{ 1.0f }; float curvatureScale{ 10.0f }; int resolutionLevel{ 0 }; diff --git a/libraries/render/src/render/BlurTask.cpp b/libraries/render/src/render/BlurTask.cpp index 597df37b7a..862c08bcbb 100644 --- a/libraries/render/src/render/BlurTask.cpp +++ b/libraries/render/src/render/BlurTask.cpp @@ -374,3 +374,5 @@ void BlurGaussianDepthAware::run(const SceneContextPointer& sceneContext, const batch.setUniformBuffer(BlurTask_ParamsSlot, nullptr); }); } + + diff --git a/libraries/render/src/render/BlurTask.h b/libraries/render/src/render/BlurTask.h index c6e4e76ca5..7d8fb62fbc 100644 --- a/libraries/render/src/render/BlurTask.h +++ b/libraries/render/src/render/BlurTask.h @@ -156,7 +156,6 @@ protected: BlurInOutResource _inOutResources; }; - } #endif // hifi_render_BlurTask_h diff --git a/scripts/developer/utilities/render/deferredLighting.qml b/scripts/developer/utilities/render/deferredLighting.qml index fedb99fc74..635d8b1471 100644 --- a/scripts/developer/utilities/render/deferredLighting.qml +++ b/scripts/developer/utilities/render/deferredLighting.qml @@ -38,6 +38,7 @@ Column { spacing: 10 Repeater { model: [ + "Obscurance:LightingModel:enableObscurance", "Scattering:LightingModel:enableScattering", "Diffuse:LightingModel:enableDiffuse", "Specular:LightingModel:enableSpecular", diff --git a/scripts/developer/utilities/render/surfaceGeometryPass.qml b/scripts/developer/utilities/render/surfaceGeometryPass.qml index 23a846ee79..ad5a9dd03d 100644 --- a/scripts/developer/utilities/render/surfaceGeometryPass.qml +++ b/scripts/developer/utilities/render/surfaceGeometryPass.qml @@ -18,9 +18,16 @@ Column { spacing: 10 Column{ + ConfigSlider { + label: qsTr("Depth Threshold [cm]") + integral: false + config: Render.getConfig("SurfaceGeometry") + property: "depthThreshold" + max: 5.0 + min: 0.0 + } Repeater { model: [ - "Depth Threshold:depthThreshold:0.05:false", "Basis Scale:basisScale:2.0:false", "Curvature Scale:curvatureScale:100.0:false", "Downscale:resolutionLevel:4:true"