mirror of
https://github.com/overte-org/overte.git
synced 2025-04-19 16:23:39 +02:00
Revamp render engine debug JS script
This commit is contained in:
parent
991d6328ef
commit
dbc59ccc2b
8 changed files with 468 additions and 216 deletions
101
examples/utilities/tools/render/AO.qml
Normal file
101
examples/utilities/tools/render/AO.qml
Normal file
|
@ -0,0 +1,101 @@
|
|||
//
|
||||
// AO.qml
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Created by Zach Pomerantz on 2/8/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.5
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {
|
||||
width: 200
|
||||
height: 200
|
||||
property QtObject config: Render.getConfig("AmbientOcclusion")
|
||||
|
||||
Timer {
|
||||
interval: 500
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: { parent.timer.text = config.gpuTime.toFixed(2) }
|
||||
}
|
||||
|
||||
Label { text: qsTr("Ambient Occlusion") }
|
||||
Label { id: timer; x: 140 }
|
||||
|
||||
CheckBox {
|
||||
y: 1 * 25
|
||||
text: qsTr("Dithering")
|
||||
partiallyCheckedEnabled: false
|
||||
checked: parent.config.ditheringEnabled
|
||||
onCheckedChanged: { parent.config.ditheringEnabled = checked }
|
||||
}
|
||||
|
||||
ConfigSlider {
|
||||
y: 2 * 25
|
||||
config: parent.config
|
||||
prop: "resolutionLevel"
|
||||
label: qsTr("Resolution Level")
|
||||
min: 0; max: 4
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 3 * 25
|
||||
config: parent.config
|
||||
prop: "obscuranceLevel"
|
||||
label: qsTr("Obscurance Level")
|
||||
min: 0; max: 1
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 4 * 25
|
||||
config: parent.config
|
||||
prop: "radius"
|
||||
label: qsTr("Radius")
|
||||
min: 0; max: 2
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 5 * 25
|
||||
config: parent.config
|
||||
prop: "numSamples"
|
||||
label: qsTr("Samples")
|
||||
min: 0; max: 32
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 6 * 25
|
||||
config: parent.config
|
||||
prop: "numSpiralTurns"
|
||||
label: qsTr("Spiral Turns")
|
||||
min: 0; max: 30
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 7 * 25
|
||||
config: parent.config
|
||||
prop: "falloffBias"
|
||||
label: qsTr("Falloff Bias")
|
||||
min: 0; max: 0.2
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 8 * 25
|
||||
config: parent.config
|
||||
prop: "edgeSharpness"
|
||||
label: qsTr("Edge Sharpness")
|
||||
min: 0; max: 1
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 9 * 25
|
||||
config: parent.config
|
||||
prop: "blurRadius"
|
||||
label: qsTr("Blur Radius")
|
||||
min: 0; max: 6
|
||||
}
|
||||
ConfigSlider {
|
||||
y: 10 * 25
|
||||
config: parent.config
|
||||
prop: "blurDeviation"
|
||||
label: qsTr("Blur Deviation")
|
||||
min: 0; max: 3
|
||||
}
|
||||
}
|
||||
|
99
examples/utilities/tools/render/Buffer.qml
Normal file
99
examples/utilities/tools/render/Buffer.qml
Normal file
|
@ -0,0 +1,99 @@
|
|||
//
|
||||
// Buffer.qml
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Created by Zach Pomerantz on 2/8/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.5
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {
|
||||
width: 200
|
||||
height: 270
|
||||
|
||||
Label {
|
||||
text: qsTr("Debug Buffer")
|
||||
}
|
||||
|
||||
ExclusiveGroup { id: buffer }
|
||||
|
||||
function setDebugMode(mode) {
|
||||
var debug = Render.getConfig("DebugDeferredBuffer");
|
||||
console.log(mode);
|
||||
debug.enabled = (mode != 0);
|
||||
debug.mode = mode;
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 0 * 23
|
||||
text: qsTr("Off")
|
||||
exclusiveGroup: buffer
|
||||
checked: true
|
||||
onCheckedChanged: { if (checked) { setDebugMode(0) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 1 * 23
|
||||
text: qsTr("Diffuse")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(1) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 2 * 23
|
||||
text: qsTr("Metallic")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(2) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 3 * 23
|
||||
text: qsTr("Roughness")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(3) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 4 * 23
|
||||
text: qsTr("Normal")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(4) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 5 * 23
|
||||
text: qsTr("Depth")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(5) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 6 * 23
|
||||
text: qsTr("Lighting")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(6) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 7 * 23
|
||||
text: qsTr("Shadow")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(7) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 8 * 23
|
||||
text: qsTr("Pyramid Depth")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(8) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 9 * 23
|
||||
text: qsTr("Ambient Occlusion")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(9) } }
|
||||
}
|
||||
RadioButton {
|
||||
x: 8; y: 19 + 10 * 23
|
||||
text: qsTr("Custom Shader")
|
||||
exclusiveGroup: buffer
|
||||
onCheckedChanged: { if (checked) { setDebugMode(10) } }
|
||||
}
|
||||
}
|
||||
|
58
examples/utilities/tools/render/ConfigSlider.qml
Normal file
58
examples/utilities/tools/render/ConfigSlider.qml
Normal file
|
@ -0,0 +1,58 @@
|
|||
//
|
||||
// ConfigSlider.qml
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Created by Zach Pomerantz on 2/8/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.5
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {
|
||||
width: 400
|
||||
height: 24
|
||||
property string label
|
||||
property QtObject config
|
||||
property string prop
|
||||
property real min: 0.0
|
||||
property real max: 1.0
|
||||
|
||||
function init() {
|
||||
stat.text = config[prop].toFixed(2);
|
||||
slider.value = (config[prop] - min) / (max - min);
|
||||
}
|
||||
Component.onCompleted: init()
|
||||
|
||||
function update() {
|
||||
var val = min + (max - min) * slider.value;
|
||||
stat.text = val.toFixed(2);
|
||||
config[prop] = val;
|
||||
}
|
||||
|
||||
Label {
|
||||
text: parent.label
|
||||
y: 7
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 8
|
||||
}
|
||||
|
||||
Label {
|
||||
id: stat
|
||||
y: 7
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 140
|
||||
}
|
||||
|
||||
Slider {
|
||||
id: slider
|
||||
y: 3
|
||||
width: 192
|
||||
height: 20
|
||||
onValueChanged: parent.update()
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 8
|
||||
}
|
||||
}
|
59
examples/utilities/tools/render/ItemsSlider.qml
Normal file
59
examples/utilities/tools/render/ItemsSlider.qml
Normal file
|
@ -0,0 +1,59 @@
|
|||
//
|
||||
// ItemsSlider.qml
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Created by Zach Pomerantz on 2/8/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.5
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {
|
||||
width: 400
|
||||
height: 24
|
||||
property string label
|
||||
property QtObject config
|
||||
|
||||
function update() {
|
||||
var val = slider.value;
|
||||
var max = config.numDrawn;
|
||||
var drawn = Math.round(val * max);
|
||||
stat.text = drawn + " / " + max;
|
||||
config.maxDrawn = (val == 1.0 ? -1 : drawn);
|
||||
}
|
||||
|
||||
Timer {
|
||||
interval: 500
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: parent.update()
|
||||
}
|
||||
|
||||
Label {
|
||||
text: parent.label
|
||||
y: 7
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 8
|
||||
}
|
||||
|
||||
Label {
|
||||
id: stat
|
||||
y: 7
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 108
|
||||
}
|
||||
|
||||
Slider {
|
||||
id: slider
|
||||
y: 3
|
||||
width: 192
|
||||
height: 20
|
||||
value: 1.0
|
||||
onValueChanged: update()
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 8
|
||||
}
|
||||
}
|
49
examples/utilities/tools/render/Tone.qml
Normal file
49
examples/utilities/tools/render/Tone.qml
Normal file
|
@ -0,0 +1,49 @@
|
|||
//
|
||||
// Tone.qml
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Created by Zach Pomerantz on 2/8/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.5
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {
|
||||
width: 400
|
||||
height: 24
|
||||
property string label: qsTr("Tone Mapping Exposure")
|
||||
|
||||
function update() {
|
||||
var val = (slider.value - 0.5) * 20;
|
||||
stat.text = val.toFixed(2);
|
||||
Render.getConfig("ToneMapping").exposure = val;
|
||||
}
|
||||
|
||||
Label {
|
||||
text: parent.label
|
||||
y: 7
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 8
|
||||
}
|
||||
|
||||
Label {
|
||||
id: stat
|
||||
y: 7
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 150
|
||||
}
|
||||
|
||||
Slider {
|
||||
id: slider
|
||||
y: 3
|
||||
width: 192
|
||||
height: 20
|
||||
value: Render.getConfig("ToneMapping").exposure
|
||||
onValueChanged: parent.update()
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 8
|
||||
}
|
||||
}
|
38
examples/utilities/tools/render/debug.js
Normal file
38
examples/utilities/tools/render/debug.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
//
|
||||
// debug.js
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Zach Pomerantz, created on 1/27/2016.
|
||||
// Copyright 2016 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
|
||||
//
|
||||
|
||||
oldConfig = Render.toJSON();
|
||||
Render.RenderShadowTask.enabled = true;
|
||||
Render.RenderDeferredTask.AmbientOcclusion.enabled = true;
|
||||
Render.RenderDeferredTask.DebugDeferredBuffer.enabled = false;
|
||||
|
||||
// Set up the qml ui
|
||||
var qml = Script.resolvePath('main.qml');
|
||||
var window = new OverlayWindow({
|
||||
title: 'Render Engine Configuration',
|
||||
source: qml,
|
||||
width: 400, height: 900,
|
||||
});
|
||||
window.setPosition(25, 50);
|
||||
window.closed.connect(function() { Script.stop(); });
|
||||
|
||||
// Debug buffer sizing
|
||||
var resizing = false;
|
||||
Controller.mousePressEvent.connect(function() { resizing = true; });
|
||||
Controller.mouseReleaseEvent.connect(function() { resizing = false; });
|
||||
Controller.mouseMoveEvent.connect(function(e) { resizing && setDebugBufferSize(e.x); });
|
||||
function setDebugBufferSize(x) {
|
||||
x = (2.0 * (x / Window.innerWidth) - 1.0); // scale
|
||||
x = Math.min(Math.max(-1, x), 1); // clamp
|
||||
Render.RenderDeferredTask.DebugDeferredBuffer.size = {x: x, y: -1, z: 1, w: 1};
|
||||
}
|
||||
|
||||
Script.scriptEnding.connect(function() { Render.fromJSON(oldConfig); } );
|
64
examples/utilities/tools/render/main.qml
Normal file
64
examples/utilities/tools/render/main.qml
Normal file
|
@ -0,0 +1,64 @@
|
|||
//
|
||||
// main.qml
|
||||
// examples/utilities/tools/render
|
||||
//
|
||||
// Created by Zach Pomerantz on 2/8/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.5
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {
|
||||
// Items
|
||||
ItemsSlider {
|
||||
y: 0 * 25
|
||||
label: qsTr("Opaque")
|
||||
config: Render.getConfig("DrawOpaqueDeferred")
|
||||
}
|
||||
ItemsSlider {
|
||||
y: 1 * 25
|
||||
label: qsTr("Transparent")
|
||||
config: Render.getConfig("DrawTransparentDeferred")
|
||||
}
|
||||
ItemsSlider {
|
||||
y: 2 * 25
|
||||
label: qsTr("Overlay3D")
|
||||
config: Render.getConfig("DrawOverlay3D")
|
||||
}
|
||||
|
||||
// Draw status
|
||||
Item {
|
||||
y: 100
|
||||
|
||||
CheckBox {
|
||||
text: qsTr("Display Status")
|
||||
partiallyCheckedEnabled: false
|
||||
onCheckedChanged: { Render.getConfig("DrawStatus").showDisplay = checked }
|
||||
}
|
||||
CheckBox {
|
||||
x: 200
|
||||
text: qsTr("Network/Physics Status")
|
||||
partiallyCheckedEnabled: false
|
||||
onCheckedChanged: { Render.getConfig("DrawStatus").showNetwork = checked }
|
||||
}
|
||||
}
|
||||
|
||||
// Tone mapping
|
||||
ConfigSlider {
|
||||
y: 125
|
||||
config: Render.getConfig("ToneMapping")
|
||||
prop: "exposure"
|
||||
label: qsTr("Tone Mapping Exposure")
|
||||
min: -10; max: 10
|
||||
}
|
||||
|
||||
// Ambient occlusion
|
||||
AO { y: 175 }
|
||||
|
||||
// Debug buffer
|
||||
Buffer { y: 475 }
|
||||
}
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
//
|
||||
// renderEngineDebug.js
|
||||
// examples/utilities/tools
|
||||
//
|
||||
// Sam Gateau
|
||||
// Copyright 2015 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
|
||||
//
|
||||
|
||||
Script.include("cookies.js");
|
||||
|
||||
var MENU = "Developer>Render>Debug Deferred Buffer";
|
||||
var ACTIONS = ["Off", "Diffuse", "Metallic", "Roughness", "Normal", "Depth", "Lighting", "Shadow", "PyramidDepth", "AmbientOcclusion", "OcclusionBlurred", "Custom"];
|
||||
var SETTINGS_KEY = "EngineDebugScript.DebugMode";
|
||||
|
||||
Number.prototype.clamp = function(min, max) {
|
||||
return Math.min(Math.max(this, min), max);
|
||||
};
|
||||
|
||||
var panel = new Panel(10, 100);
|
||||
|
||||
function CounterWidget(parentPanel, name, counter) {
|
||||
var subPanel = parentPanel.newSubPanel(name);
|
||||
var widget = parentPanel.items[name];
|
||||
widget.editTitle({ width: 270 });
|
||||
|
||||
subPanel.newSlider('Max Drawn', -1, 1,
|
||||
function(value) { counter.maxDrawn = value; }, // setter
|
||||
function() { return counter.maxDrawn; }, // getter
|
||||
function(value) { return value; });
|
||||
|
||||
var slider = subPanel.getWidget('Max Drawn');
|
||||
|
||||
this.update = function () {
|
||||
var numDrawn = counter.numDrawn; // avoid double polling
|
||||
var numMax = Math.max(numDrawn, 1);
|
||||
var title = [
|
||||
' ' + name,
|
||||
numDrawn + ' / ' + counter.numFeed
|
||||
].join('\t');
|
||||
|
||||
widget.editTitle({ text: title });
|
||||
slider.setMaxValue(numMax);
|
||||
};
|
||||
};
|
||||
|
||||
var opaquesCounter = new CounterWidget(panel, "Opaques", Render.opaque);
|
||||
var transparentsCounter = new CounterWidget(panel, "Transparents", Render.transparent);
|
||||
var overlaysCounter = new CounterWidget(panel, "Overlays", Render.overlay3D);
|
||||
|
||||
var resizing = false;
|
||||
var previousMode = Settings.getValue(SETTINGS_KEY, -1);
|
||||
previousMode = 8;
|
||||
Menu.addActionGroup(MENU, ACTIONS, ACTIONS[previousMode + 1]);
|
||||
Render.deferredDebugMode = previousMode;
|
||||
Render.deferredDebugSize = { x: 0.0, y: -1.0, z: 1.0, w: 1.0 }; // Reset to default size
|
||||
|
||||
function setEngineDeferredDebugSize(eventX) {
|
||||
var scaledX = (2.0 * (eventX / Window.innerWidth) - 1.0).clamp(-1.0, 1.0);
|
||||
Render.deferredDebugSize = { x: scaledX, y: -1.0, z: 1.0, w: 1.0 };
|
||||
}
|
||||
function shouldStartResizing(eventX) {
|
||||
var x = Math.abs(eventX - Window.innerWidth * (1.0 + Render.deferredDebugSize.x) / 2.0);
|
||||
var mode = Render.deferredDebugMode;
|
||||
return mode !== -1 && x < 20;
|
||||
}
|
||||
|
||||
function menuItemEvent(menuItem) {
|
||||
var index = ACTIONS.indexOf(menuItem);
|
||||
if (index >= 0) {
|
||||
Render.deferredDebugMode = (index - 1);
|
||||
}
|
||||
}
|
||||
|
||||
// see libraries/render/src/render/Engine.h
|
||||
var showDisplayStatusFlag = 1;
|
||||
var showNetworkStatusFlag = 2;
|
||||
|
||||
panel.newCheckbox("Display status",
|
||||
function(value) { Render.displayItemStatus = (value ?
|
||||
Render.displayItemStatus | showDisplayStatusFlag :
|
||||
Render.displayItemStatus & ~showDisplayStatusFlag); },
|
||||
function() { return (Render.displayItemStatus & showDisplayStatusFlag) > 0; },
|
||||
function(value) { return (value & showDisplayStatusFlag) > 0; }
|
||||
);
|
||||
|
||||
panel.newCheckbox("Network/Physics status",
|
||||
function(value) { Render.displayItemStatus = (value ?
|
||||
Render.displayItemStatus | showNetworkStatusFlag :
|
||||
Render.displayItemStatus & ~showNetworkStatusFlag); },
|
||||
function() { return (Render.displayItemStatus & showNetworkStatusFlag) > 0; },
|
||||
function(value) { return (value & showNetworkStatusFlag) > 0; }
|
||||
);
|
||||
|
||||
panel.newSlider("Tone Mapping Exposure", -10, 10,
|
||||
function (value) { Render.tone.exposure = value; },
|
||||
function() { return Render.tone.exposure; },
|
||||
function (value) { return (value); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Resolution Level", 0.0, 4.0,
|
||||
function (value) { Render.ambientOcclusion.resolutionLevel = value; },
|
||||
function() { return Render.ambientOcclusion.resolutionLevel; },
|
||||
function (value) { return (value); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Radius", 0.0, 2.0,
|
||||
function (value) { Render.ambientOcclusion.radius = value; },
|
||||
function() { return Render.ambientOcclusion.radius; },
|
||||
function (value) { return (value.toFixed(2)); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Level", 0.0, 1.0,
|
||||
function (value) { Render.ambientOcclusion.level = value; },
|
||||
function() { return Render.ambientOcclusion.level; },
|
||||
function (value) { return (value.toFixed(2)); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Num Samples", 1, 32,
|
||||
function (value) { Render.ambientOcclusion.numSamples = value; },
|
||||
function() { return Render.ambientOcclusion.numSamples; },
|
||||
function (value) { return (value); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Num Spiral Turns", 0.0, 30.0,
|
||||
function (value) { Render.ambientOcclusion.numSpiralTurns = value; },
|
||||
function() { return Render.ambientOcclusion.numSpiralTurns; },
|
||||
function (value) { return (value.toFixed(2)); });
|
||||
|
||||
panel.newCheckbox("Ambient Occlusion Dithering",
|
||||
function (value) { Render.ambientOcclusion.ditheringEnabled = value; },
|
||||
function() { return Render.ambientOcclusion.ditheringEnabled; },
|
||||
function (value) { return (value); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Falloff Bias", 0.0, 0.2,
|
||||
function (value) { Render.ambientOcclusion.falloffBias = value; },
|
||||
function() { return Render.ambientOcclusion.falloffBias; },
|
||||
function (value) { return (value.toFixed(2)); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Edge Sharpness", 0.0, 1.0,
|
||||
function (value) { Render.ambientOcclusion.edgeSharpness = value; },
|
||||
function() { return Render.ambientOcclusion.edgeSharpness; },
|
||||
function (value) { return (value.toFixed(2)); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Blur Radius", 0.0, 6.0,
|
||||
function (value) { Render.ambientOcclusion.blurRadius = value; },
|
||||
function() { return Render.ambientOcclusion.blurRadius; },
|
||||
function (value) { return (value); });
|
||||
|
||||
panel.newSlider("Ambient Occlusion Blur Deviation", 0.0, 3.0,
|
||||
function (value) { Render.ambientOcclusion.blurDeviation = value; },
|
||||
function() { return Render.ambientOcclusion.blurDeviation; },
|
||||
function (value) { return (value.toFixed(2)); });
|
||||
|
||||
|
||||
panel.newSlider("Ambient Occlusion GPU time", 0.0, 10.0,
|
||||
function (value) {},
|
||||
function() { return Render.ambientOcclusion.gpuTime; },
|
||||
function (value) { return (value.toFixed(2) + " ms"); });
|
||||
|
||||
|
||||
var tickTackPeriod = 500;
|
||||
|
||||
function updateCounters() {
|
||||
opaquesCounter.update();
|
||||
transparentsCounter.update();
|
||||
overlaysCounter.update();
|
||||
panel.update("Ambient Occlusion GPU time");
|
||||
}
|
||||
Script.setInterval(updateCounters, tickTackPeriod);
|
||||
|
||||
function mouseMoveEvent(event) {
|
||||
if (resizing) {
|
||||
setEngineDeferredDebugSize(event.x);
|
||||
} else {
|
||||
panel.mouseMoveEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
function mousePressEvent(event) {
|
||||
if (shouldStartResizing(event.x)) {
|
||||
resizing = true;
|
||||
} else {
|
||||
panel.mousePressEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
function mouseReleaseEvent(event) {
|
||||
if (resizing) {
|
||||
resizing = false;
|
||||
} else {
|
||||
panel.mouseReleaseEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
Controller.mouseMoveEvent.connect(mouseMoveEvent);
|
||||
Controller.mousePressEvent.connect(mousePressEvent);
|
||||
Controller.mouseReleaseEvent.connect(mouseReleaseEvent);
|
||||
|
||||
Menu.menuItemEvent.connect(menuItemEvent);
|
||||
|
||||
function scriptEnding() {
|
||||
panel.destroy();
|
||||
Menu.removeActionGroup(MENU);
|
||||
// Reset
|
||||
Settings.setValue(SETTINGS_KEY, Render.deferredDebugMode);
|
||||
Render.deferredDebugMode = -1;
|
||||
Render.deferredDebugSize = { x: 0.0, y: -1.0, z: 1.0, w: 1.0 };
|
||||
Render.opaque.maxDrawn = -1;
|
||||
Render.transparent.maxDrawn = -1;
|
||||
Render.overlay3D.maxDrawn = -1;
|
||||
}
|
||||
Script.scriptEnding.connect(scriptEnding);
|
||||
|
||||
|
||||
// Collapse items
|
||||
panel.mousePressEvent({ x: panel.x, y: panel.items["Overlays"].y});
|
||||
panel.mousePressEvent({ x: panel.x, y: panel.items["Transparents"].y});
|
||||
panel.mousePressEvent({ x: panel.x, y: panel.items["Opaques"].y});
|
Loading…
Reference in a new issue