mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 00:57:24 +02:00
Rework the qml for brevity
This commit is contained in:
parent
9c5881345a
commit
3bace3cdbb
9 changed files with 136 additions and 375 deletions
|
@ -1,102 +0,0 @@
|
||||||
//
|
|
||||||
// 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")
|
|
||||||
|
|
||||||
// TODO: Enable the gpuTimer when it is fixed in cpp
|
|
||||||
// Timer {
|
|
||||||
// interval: 500
|
|
||||||
// running: true
|
|
||||||
// repeat: true
|
|
||||||
// onTriggered: { parent.timer.text = config.gpuTime.toFixed(2) }
|
|
||||||
// }
|
|
||||||
// Label { id: timer; x: 140 }
|
|
||||||
|
|
||||||
Label { text: qsTr("Ambient Occlusion") }
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,99 +0,0 @@
|
||||||
//
|
|
||||||
// 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) } }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -12,47 +12,55 @@ import QtQuick 2.5
|
||||||
import QtQuick.Controls 1.4
|
import QtQuick.Controls 1.4
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
id: root
|
||||||
width: 400
|
width: 400
|
||||||
height: 24
|
height: 24
|
||||||
property string label
|
property bool integral: false
|
||||||
property QtObject config
|
property var config
|
||||||
property string prop
|
property string property
|
||||||
property real min: 0.0
|
property alias label: labelControl.text
|
||||||
property real max: 1.0
|
property alias min: sliderControl.minimumValue
|
||||||
|
property alias max: sliderControl.maximumValue
|
||||||
|
|
||||||
function init() {
|
Component.onCompleted: {
|
||||||
stat.text = config[prop].toFixed(2);
|
// Binding favors qml value, so set it first
|
||||||
slider.value = (config[prop] - min) / (max - min);
|
sliderControl.value = root.config[root.property];
|
||||||
}
|
bindingControl.when = true;
|
||||||
Component.onCompleted: init()
|
|
||||||
|
|
||||||
function update() {
|
|
||||||
var val = min + (max - min) * slider.value;
|
|
||||||
stat.text = val.toFixed(2);
|
|
||||||
config[prop] = val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: parent.label
|
id: labelControl
|
||||||
y: 7
|
text: root.label
|
||||||
anchors.left: parent.left
|
anchors.left: root.left
|
||||||
anchors.leftMargin: 8
|
anchors.leftMargin: 8
|
||||||
|
anchors.top: root.top
|
||||||
|
anchors.topMargin: 7
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
id: stat
|
text: sliderControl.value.toFixed(root.integral ? 0 : 2)
|
||||||
y: 7
|
anchors.left: root.left
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: 140
|
anchors.leftMargin: 140
|
||||||
|
anchors.top: root.top
|
||||||
|
anchors.topMargin: 7
|
||||||
|
}
|
||||||
|
|
||||||
|
Binding {
|
||||||
|
id: bindingControl
|
||||||
|
target: root.config
|
||||||
|
property: root.property
|
||||||
|
value: sliderControl.value
|
||||||
|
when: false
|
||||||
}
|
}
|
||||||
|
|
||||||
Slider {
|
Slider {
|
||||||
id: slider
|
id: sliderControl
|
||||||
y: 3
|
stepSize: root.integral ? 1.0 : 0.0
|
||||||
width: 192
|
width: 192
|
||||||
height: 20
|
height: 20
|
||||||
onValueChanged: parent.update()
|
anchors.right: root.right
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.rightMargin: 8
|
anchors.rightMargin: 8
|
||||||
|
anchors.top: root.top
|
||||||
|
anchors.topMargin: 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
//
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
//
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -11,8 +11,12 @@
|
||||||
|
|
||||||
oldConfig = Render.toJSON();
|
oldConfig = Render.toJSON();
|
||||||
Render.RenderShadowTask.enabled = true;
|
Render.RenderShadowTask.enabled = true;
|
||||||
Render.RenderDeferredTask.AmbientOcclusion.enabled = true;
|
var RDT = Render.RenderDeferredTask;
|
||||||
Render.RenderDeferredTask.DebugDeferredBuffer.enabled = false;
|
RDT.AmbientOcclusion.enabled = true;
|
||||||
|
RDT.DebugDeferredBuffer.enabled = false;
|
||||||
|
["DrawOpaqueDeferred", "DrawTransparentDeferred", "DrawOverlay3DOpaque", "DrawOverlay3DTransparent"]
|
||||||
|
.map(function(name) { return RDT[name]; })
|
||||||
|
.forEach(function(job) { job.maxDrawn = job.numDrawn; });
|
||||||
|
|
||||||
// Set up the qml ui
|
// Set up the qml ui
|
||||||
var qml = Script.resolvePath('main.qml');
|
var qml = Script.resolvePath('main.qml');
|
||||||
|
|
|
@ -11,54 +11,100 @@
|
||||||
import QtQuick 2.5
|
import QtQuick 2.5
|
||||||
import QtQuick.Controls 1.4
|
import QtQuick.Controls 1.4
|
||||||
|
|
||||||
Item {
|
Column {
|
||||||
// Items
|
spacing: 8
|
||||||
ItemsSlider {
|
|
||||||
y: 0 * 25
|
Repeater {
|
||||||
label: qsTr("Opaque")
|
model: [ "Opaque:DrawOpaqueDeferred", "Transparent:DrawTransparentDeferred",
|
||||||
config: Render.getConfig("DrawOpaqueDeferred")
|
"Opaque Overlays:DrawOverlay3DOpaque", "Transparent Overlays:DrawOverlay3DTransparent" ]
|
||||||
}
|
ConfigSlider {
|
||||||
ItemsSlider {
|
label: qsTr(modelData.split(":")[0])
|
||||||
y: 1 * 25
|
integral: true
|
||||||
label: qsTr("Transparent")
|
config: Render.getConfig(modelData.split(":")[1])
|
||||||
config: Render.getConfig("DrawTransparentDeferred")
|
property: "maxDrawn"
|
||||||
}
|
max: config.numDrawn
|
||||||
ItemsSlider {
|
}
|
||||||
y: 2 * 25
|
|
||||||
label: qsTr("Overlay3D")
|
|
||||||
config: Render.getConfig("DrawOverlay3D")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw status
|
Row {
|
||||||
Item {
|
|
||||||
y: 100
|
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
text: qsTr("Display Status")
|
text: qsTr("Display Status")
|
||||||
partiallyCheckedEnabled: false
|
|
||||||
onCheckedChanged: { Render.getConfig("DrawStatus").showDisplay = checked }
|
onCheckedChanged: { Render.getConfig("DrawStatus").showDisplay = checked }
|
||||||
}
|
}
|
||||||
CheckBox {
|
CheckBox {
|
||||||
x: 200
|
|
||||||
text: qsTr("Network/Physics Status")
|
text: qsTr("Network/Physics Status")
|
||||||
partiallyCheckedEnabled: false
|
|
||||||
onCheckedChanged: { Render.getConfig("DrawStatus").showNetwork = checked }
|
onCheckedChanged: { Render.getConfig("DrawStatus").showNetwork = checked }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tone mapping
|
|
||||||
ConfigSlider {
|
ConfigSlider {
|
||||||
y: 125
|
|
||||||
config: Render.getConfig("ToneMapping")
|
|
||||||
prop: "exposure"
|
|
||||||
label: qsTr("Tone Mapping Exposure")
|
label: qsTr("Tone Mapping Exposure")
|
||||||
|
config: Render.getConfig("ToneMapping")
|
||||||
|
property: "exposure"
|
||||||
min: -10; max: 10
|
min: -10; max: 10
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ambient occlusion
|
Column {
|
||||||
AO { y: 175 }
|
id: ambientOcclusion
|
||||||
|
property var config: Render.getConfig("AmbientOcclusion")
|
||||||
|
|
||||||
// Debug buffer
|
Label { text: qsTr("Ambient Occlusion") }
|
||||||
Buffer { y: 475 }
|
// TODO: Add gpuTimer
|
||||||
|
CheckBox { text: qsTr("Dithering"); checked: ambientOcclusion.config.ditheringEnabled }
|
||||||
|
Repeater {
|
||||||
|
model: [
|
||||||
|
"Resolution Level:resolutionLevel:4",
|
||||||
|
"Obscurance Level:obscuranceLevel:1",
|
||||||
|
"Radius:radius:2",
|
||||||
|
"Falloff Bias:falloffBias:0.2",
|
||||||
|
"Edge Sharpness:edgeSharpness:1",
|
||||||
|
"Blur Radius:blurRadius:6",
|
||||||
|
"Blur Deviation:blurDeviation:3"
|
||||||
|
]
|
||||||
|
ConfigSlider {
|
||||||
|
label: qsTr(modelData.split(":")[0])
|
||||||
|
config: ambientOcclusion.config
|
||||||
|
property: modelData.split(":")[1]
|
||||||
|
max: modelData.split(":")[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Repeater {
|
||||||
|
model: [
|
||||||
|
"Samples:numSamples:32",
|
||||||
|
"Spiral Turns:numSpiralTurns:30:"
|
||||||
|
]
|
||||||
|
ConfigSlider {
|
||||||
|
label: qsTr(modelData.split(":")[0])
|
||||||
|
integral: true
|
||||||
|
config: ambientOcclusion.config
|
||||||
|
property: modelData.split(":")[1]
|
||||||
|
max: modelData.split(":")[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: debug
|
||||||
|
property var config: Render.getConfig("DebugDeferredBuffer")
|
||||||
|
|
||||||
|
function setDebugMode(mode) {
|
||||||
|
debug.config.enabled = (mode != 0);
|
||||||
|
debug.config.mode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label { text: qsTr("Debug Buffer") }
|
||||||
|
ExclusiveGroup { id: bufferGroup }
|
||||||
|
Repeater {
|
||||||
|
model: [
|
||||||
|
"Off", "Diffuse", "Metallic", "Roughness", "Normal", "Depth",
|
||||||
|
"Lighting", "Shadow", "Pyramid Depth", "Ambient Occlusion", "Custom Shader"
|
||||||
|
]
|
||||||
|
RadioButton {
|
||||||
|
text: qsTr(modelData)
|
||||||
|
exclusiveGroup: bufferGroup
|
||||||
|
checked: index == 0
|
||||||
|
onCheckedChanged: if (checked) debug.setDebugMode(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,8 @@ void DrawDeferred::run(const SceneContextPointer& sceneContext, const RenderCont
|
||||||
batch.setStateScissorRect(args->_viewport);
|
batch.setStateScissorRect(args->_viewport);
|
||||||
args->_batch = &batch;
|
args->_batch = &batch;
|
||||||
|
|
||||||
config->numDrawn = (int)inItems.size();
|
config->setNumDrawn((int)inItems.size());
|
||||||
|
emit config->numDrawnChanged();
|
||||||
|
|
||||||
glm::mat4 projMat;
|
glm::mat4 projMat;
|
||||||
Transform viewMat;
|
Transform viewMat;
|
||||||
|
@ -179,7 +180,8 @@ void DrawOverlay3D::run(const SceneContextPointer& sceneContext, const RenderCon
|
||||||
inItems.emplace_back(id);
|
inItems.emplace_back(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config->numItems = (int)inItems.size();
|
config->setNumDrawn((int)inItems.size());
|
||||||
|
emit config->numDrawnChanged();
|
||||||
|
|
||||||
if (!inItems.empty()) {
|
if (!inItems.empty()) {
|
||||||
RenderArgs* args = renderContext->args;
|
RenderArgs* args = renderContext->args;
|
||||||
|
|
|
@ -40,15 +40,20 @@ public:
|
||||||
|
|
||||||
class DrawConfig : public render::Job::Config {
|
class DrawConfig : public render::Job::Config {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(int numDrawn READ getNumDrawn)
|
Q_PROPERTY(int numDrawn READ getNumDrawn NOTIFY numDrawnChanged)
|
||||||
Q_PROPERTY(int maxDrawn MEMBER maxDrawn NOTIFY dirty)
|
Q_PROPERTY(int maxDrawn MEMBER maxDrawn NOTIFY dirty)
|
||||||
public:
|
public:
|
||||||
int getNumDrawn() { return numDrawn; }
|
int getNumDrawn() { return numDrawn; }
|
||||||
|
void setNumDrawn(int num) { numDrawn = num; emit numDrawnChanged(); }
|
||||||
|
|
||||||
int numDrawn{ 0 };
|
|
||||||
int maxDrawn{ -1 };
|
int maxDrawn{ -1 };
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void numDrawnChanged();
|
||||||
void dirty();
|
void dirty();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int numDrawn{ 0 };
|
||||||
};
|
};
|
||||||
|
|
||||||
class DrawDeferred {
|
class DrawDeferred {
|
||||||
|
@ -86,15 +91,20 @@ public:
|
||||||
|
|
||||||
class DrawOverlay3DConfig : public render::Job::Config {
|
class DrawOverlay3DConfig : public render::Job::Config {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(int numItems READ getNumItems)
|
Q_PROPERTY(int numDrawn READ getNumDrawn NOTIFY numDrawnChanged)
|
||||||
Q_PROPERTY(int maxDrawn MEMBER maxDrawn NOTIFY dirty)
|
Q_PROPERTY(int maxDrawn MEMBER maxDrawn NOTIFY dirty)
|
||||||
public:
|
public:
|
||||||
int getNumItems() { return numItems; }
|
int getNumDrawn() { return numDrawn; }
|
||||||
|
void setNumDrawn(int num) { numDrawn = num; emit numDrawnChanged(); }
|
||||||
|
|
||||||
int numItems{ 0 };
|
|
||||||
int maxDrawn{ -1 };
|
int maxDrawn{ -1 };
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void numDrawnChanged();
|
||||||
void dirty();
|
void dirty();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int numDrawn{ 0 };
|
||||||
};
|
};
|
||||||
|
|
||||||
class DrawOverlay3D {
|
class DrawOverlay3D {
|
||||||
|
|
Loading…
Reference in a new issue