diff --git a/libraries/render-utils/src/BloomEffect.cpp b/libraries/render-utils/src/BloomEffect.cpp index f83c05cff8..0c499a9d34 100644 --- a/libraries/render-utils/src/BloomEffect.cpp +++ b/libraries/render-utils/src/BloomEffect.cpp @@ -35,12 +35,13 @@ void BloomThreshold::run(const render::RenderContextPointer& renderContext, cons const auto frameTransform = inputs.get0(); const auto inputFrameBuffer = inputs.get1(); const auto bloomFrame = inputs.get2(); + const auto lightingModel = inputs.get3(); const auto& bloomStage = renderContext->_scene->getStage(); graphics::BloomPointer bloom; if (bloomStage && bloomFrame->_blooms.size()) { bloom = bloomStage->getBloom(bloomFrame->_blooms.front()); } - if (!bloom) { + if (!bloom || (lightingModel && !lightingModel->isBloomEnabled())) { renderContext->taskFlow.abortTask(); return; } diff --git a/libraries/render-utils/src/BloomEffect.h b/libraries/render-utils/src/BloomEffect.h index 9c170e771a..47558affd9 100644 --- a/libraries/render-utils/src/BloomEffect.h +++ b/libraries/render-utils/src/BloomEffect.h @@ -17,6 +17,7 @@ #include "BloomStage.h" #include "DeferredFrameTransform.h" +#include "LightingModel.h" class BloomConfig : public render::Task::Config { Q_OBJECT @@ -28,7 +29,7 @@ class BloomThresholdConfig : public render::Job::Config { class BloomThreshold { public: - using Inputs = render::VaryingSet3; + using Inputs = render::VaryingSet4; using Outputs = render::VaryingSet3; using Config = BloomThresholdConfig; using JobModel = render::Job::ModelIO; @@ -131,14 +132,14 @@ private: class BloomEffect { public: - using Inputs = render::VaryingSet3; + using Inputs = render::VaryingSet4; using Config = BloomConfig; - using JobModel = render::Task::ModelI; + using JobModel = render::Task::ModelI; - BloomEffect(); + BloomEffect(); - void configure(const Config& config); - void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs); + void configure(const Config& config); + void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs); }; diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index cfcc6777d6..c506f22bc7 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -227,7 +227,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("Antialiasing", antialiasingInputs); // Add bloom - const auto bloomInputs = BloomEffect::Inputs(deferredFrameTransform, lightingFramebuffer, bloomFrame).asVarying(); + const auto bloomInputs = BloomEffect::Inputs(deferredFrameTransform, lightingFramebuffer, bloomFrame, lightingModel).asVarying(); task.addJob("Bloom", bloomInputs); const auto destFramebuffer = static_cast(nullptr); diff --git a/scripts/developer/utilities/render/deferredLighting.qml b/scripts/developer/utilities/render/deferredLighting.qml deleted file mode 100644 index f2891ddc55..0000000000 --- a/scripts/developer/utilities/render/deferredLighting.qml +++ /dev/null @@ -1,103 +0,0 @@ -// -// deferredLighting.qml -// -// Created by Sam Gateau on 6/6/2016 -// Copyright 2016 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html -// -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.3 - -import stylesUit 1.0 -import controlsUit 1.0 as HifiControls -import "configSlider" -import "luci" - -Rectangle { - HifiConstants { id: hifi;} - id: render; - anchors.margins: hifi.dimensions.contentMargin.x - - color: hifi.colors.baseGray; - property var mainViewTask: Render.getConfig("RenderMainView") - - Column { - spacing: 5 - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: hifi.dimensions.contentMargin.x - - - HifiControls.Label { - text: "Shading" - } - ShadingModel {} - - Separator {} - ToneMapping {} - - Separator {} - Column { - anchors.left: parent.left - anchors.right: parent.right - spacing: 5 - Repeater { - model: [ "MSAA:PreparePrimaryBufferForward:numSamples:4:1" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: true - config: render.mainViewTask.getConfig(modelData.split(":")[1]) - property: modelData.split(":")[2] - max: modelData.split(":")[3] - min: modelData.split(":")[4] - - anchors.left: parent.left - anchors.right: parent.right - } - } - } - Separator {} - Framebuffer {} - - Separator {} - BoundingBoxes { - - } - Separator {} - Row { - HifiControls.Button { - text: "Engine" - // activeFocusOnPress: false - onClicked: { - sendToScript({method: "openEngineView"}); - } - } - HifiControls.Button { - text: "LOD" - // activeFocusOnPress: false - onClicked: { - sendToScript({method: "openEngineLODView"}); - } - } - HifiControls.Button { - text: "Cull" - // activeFocusOnPress: false - onClicked: { - sendToScript({method: "openCullInspectorView"}); - } - } - } - Row { - HifiControls.Button { - text: "Material" - onClicked: { - sendToScript({method: "openMaterialInspectorView"}); - } - } - } - } -} diff --git a/scripts/developer/utilities/render/luci.js b/scripts/developer/utilities/render/luci.js index fd84f55e65..e2e5523ccd 100644 --- a/scripts/developer/utilities/render/luci.js +++ b/scripts/developer/utilities/render/luci.js @@ -1,80 +1,84 @@ -"use strict"; - -// -// Luci.js -// tablet-engine app -// -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// +var MaterialInspector = Script.require('./materialInspector.js'); +var Page = Script.require('./luci/Page.js'); -(function() { - var AppUi = Script.require('appUi'); - - var MaterialInspector = Script.require('./materialInspector.js'); - var Page = Script.require('./luci/Page.js'); - var moveDebugCursor = false; - var onMousePressEvent = function (e) { - if (e.isMiddleButton) { - moveDebugCursor = true; - setDebugCursor(e.x, e.y); - } - }; - Controller.mousePressEvent.connect(onMousePressEvent); - - var onMouseReleaseEvent = function () { - moveDebugCursor = false; - }; - Controller.mouseReleaseEvent.connect(onMouseReleaseEvent); - - var onMouseMoveEvent = function (e) { - if (moveDebugCursor) { - setDebugCursor(e.x, e.y); - } - }; - Controller.mouseMoveEvent.connect(onMouseMoveEvent); - - function setDebugCursor(x, y) { - var nx = 2.0 * (x / Window.innerWidth) - 1.0; - var ny = 1.0 - 2.0 * ((y) / (Window.innerHeight)); - - Render.getConfig("RenderMainView").getConfig("DebugDeferredBuffer").size = { x: nx, y: ny, z: 1.0, w: 1.0 }; - } +function openView() { + //window.closed.connect(function() { Script.stop(); }); var pages = new Pages(); - - pages.addPage('openEngineLODView', 'Render LOD', '../lod.qml', 300, 400); - pages.addPage('openCullInspectorView', 'Cull Inspector', '../luci/Culling.qml', 300, 400); - pages.addPage('openMaterialInspectorView', 'Material Inspector', '../materialInspector.qml', 300, 400, MaterialInspector.setWindow); - function fromQml(message) { if (pages.open(message.method)) { return; } } - var ui; - function startup() { - ui = new AppUi({ - buttonName: "LUCI", - home: Script.resolvePath("deferredLighting.qml"), - additionalAppScreens : Script.resolvePath("engineInspector.qml"), - onMessage: fromQml, - normalButton: Script.resolvePath("../../../system/assets/images/luci-i.svg"), - activeButton: Script.resolvePath("../../../system/assets/images/luci-a.svg") - }); + var luciWindow + function openLuciWindow(window) { + if (luciWindow !== undefined) { + activeWindow.fromQml.disconnect(fromQml); + } + if (window !== undefined) { + window.fromQml.connect(fromQml); + } + luciWindow = window; + + + var moveDebugCursor = false; + var onMousePressEvent = function (e) { + if (e.isMiddleButton) { + moveDebugCursor = true; + setDebugCursor(e.x, e.y); + } + }; + Controller.mousePressEvent.connect(onMousePressEvent); + + var onMouseReleaseEvent = function () { + moveDebugCursor = false; + }; + Controller.mouseReleaseEvent.connect(onMouseReleaseEvent); + + var onMouseMoveEvent = function (e) { + if (moveDebugCursor) { + setDebugCursor(e.x, e.y); + } + }; + Controller.mouseMoveEvent.connect(onMouseMoveEvent); + + function setDebugCursor(x, y) { + var nx = 2.0 * (x / Window.innerWidth) - 1.0; + var ny = 1.0 - 2.0 * ((y) / (Window.innerHeight)); + + Render.getConfig("RenderMainView").getConfig("DebugDeferredBuffer").size = { x: nx, y: ny, z: 1.0, w: 1.0 }; + } + } - startup(); - Script.scriptEnding.connect(function () { + + function closeLuciWindow() { + if (luciWindow !== undefined) { + activeWindow.fromQml.disconnect(fromQml); + } + luciWindow = {}; + Controller.mousePressEvent.disconnect(onMousePressEvent); Controller.mouseReleaseEvent.disconnect(onMouseReleaseEvent); Controller.mouseMoveEvent.disconnect(onMouseMoveEvent); pages.clear(); - }); -}()); + } + + pages.addPage('Luci', 'Luci', '../luci.qml', 300, 420, openLuciWindow, closeLuciWindow); + pages.addPage('openEngineInspectorView', 'Render Engine Inspector', '../engineInspector.qml', 300, 400); + pages.addPage('openEngineLODView', 'Render LOD', '../lod.qml', 300, 400); + pages.addPage('openMaterialInspectorView', 'Material Inspector', '../materialInspector.qml', 300, 400, MaterialInspector.setWindow, MaterialInspector.setWindow); + + pages.open('Luci'); + + + return pages; +} + + +openView(); + diff --git a/scripts/developer/utilities/render/luci/Bloom.qml b/scripts/developer/utilities/render/luci/Bloom.qml index 0edaea702b..7db75d94ef 100644 --- a/scripts/developer/utilities/render/luci/Bloom.qml +++ b/scripts/developer/utilities/render/luci/Bloom.qml @@ -18,6 +18,12 @@ Column { property var config: Render.getConfig("RenderMainView.DebugBloom") + Prop.PropBool { + label: "Apply Bloom" + object: Render.getConfig("RenderMainView.LightingModel") + property: "enableBloom" + } + function setDebugMode(mode) { console.log("Bloom mode is " + mode) bloom.config.enabled = (mode != 0); @@ -38,11 +44,5 @@ Column { valueVarSetter: function (mode) { bloom.setDebugMode(mode) } } - - Prop.PropBool { - label: "Debug Bloom Buffer" - object: Render.getConfig("RenderMainView.Bloom") - property: "enabled" - } } diff --git a/scripts/developer/utilities/render/luci/BoundingBoxes.qml b/scripts/developer/utilities/render/luci/BoundingBoxes.qml index 636267729c..6b34e41b4c 100644 --- a/scripts/developer/utilities/render/luci/BoundingBoxes.qml +++ b/scripts/developer/utilities/render/luci/BoundingBoxes.qml @@ -54,7 +54,7 @@ Column { Prop.PropCheckBox { text: "Zones" checked: root.mainViewTask.getConfig("DrawZones")["enabled"] - onCheckedChanged: { root.mainViewTask.getConfig("ZoneRenderer")["enabled"] = checked; root.mainViewTask.getConfig("DrawZones")["enabled"] = checked; } + onCheckedChanged: { root.mainViewTask.getConfig("DrawZones")["enabled"] = checked; } } } Column { diff --git a/scripts/developer/utilities/render/luci2.js b/scripts/developer/utilities/render/luci2.js deleted file mode 100644 index e2e5523ccd..0000000000 --- a/scripts/developer/utilities/render/luci2.js +++ /dev/null @@ -1,84 +0,0 @@ - - -var MaterialInspector = Script.require('./materialInspector.js'); -var Page = Script.require('./luci/Page.js'); - - -function openView() { - //window.closed.connect(function() { Script.stop(); }); - - - var pages = new Pages(); - function fromQml(message) { - if (pages.open(message.method)) { - return; - } - } - - var luciWindow - function openLuciWindow(window) { - if (luciWindow !== undefined) { - activeWindow.fromQml.disconnect(fromQml); - } - if (window !== undefined) { - window.fromQml.connect(fromQml); - } - luciWindow = window; - - - var moveDebugCursor = false; - var onMousePressEvent = function (e) { - if (e.isMiddleButton) { - moveDebugCursor = true; - setDebugCursor(e.x, e.y); - } - }; - Controller.mousePressEvent.connect(onMousePressEvent); - - var onMouseReleaseEvent = function () { - moveDebugCursor = false; - }; - Controller.mouseReleaseEvent.connect(onMouseReleaseEvent); - - var onMouseMoveEvent = function (e) { - if (moveDebugCursor) { - setDebugCursor(e.x, e.y); - } - }; - Controller.mouseMoveEvent.connect(onMouseMoveEvent); - - function setDebugCursor(x, y) { - var nx = 2.0 * (x / Window.innerWidth) - 1.0; - var ny = 1.0 - 2.0 * ((y) / (Window.innerHeight)); - - Render.getConfig("RenderMainView").getConfig("DebugDeferredBuffer").size = { x: nx, y: ny, z: 1.0, w: 1.0 }; - } - - } - - function closeLuciWindow() { - if (luciWindow !== undefined) { - activeWindow.fromQml.disconnect(fromQml); - } - luciWindow = {}; - - Controller.mousePressEvent.disconnect(onMousePressEvent); - Controller.mouseReleaseEvent.disconnect(onMouseReleaseEvent); - Controller.mouseMoveEvent.disconnect(onMouseMoveEvent); - pages.clear(); - } - - pages.addPage('Luci', 'Luci', '../luci.qml', 300, 420, openLuciWindow, closeLuciWindow); - pages.addPage('openEngineInspectorView', 'Render Engine Inspector', '../engineInspector.qml', 300, 400); - pages.addPage('openEngineLODView', 'Render LOD', '../lod.qml', 300, 400); - pages.addPage('openMaterialInspectorView', 'Material Inspector', '../materialInspector.qml', 300, 400, MaterialInspector.setWindow, MaterialInspector.setWindow); - - pages.open('Luci'); - - - return pages; -} - - -openView(); -