Revision control
++ // Copyright (C) 2023 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ import QtQuick 2.15
++ import QtQuick.Layouts 1.15
++ import HelperWidgets 2.0
++ import StudioTheme 1.0 as StudioTheme
++
++ Section {
++ caption: qsTr("Lightmapper")
++ width: parent.width
++
++ SectionLayout {
++
++ PropertyLabel {
++ text: qsTr("Adaptive Bias")
++ tooltip: qsTr("Enables additional dynamic biasing based on the surface normal.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ text: backendValues.adaptiveBiasEnabled.valueToString
++ backendValue: backendValues.adaptiveBiasEnabled
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Bias")
++ tooltip: qsTr("Raycasting bias to avoid self-intersection artifacts.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: -9999999
++ maximumValue: 9999999
++ decimals: 5
++ stepSize: 0.001
++ backendValue: backendValues.bias
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Opacity Threshold")
++ tooltip: qsTr("Bounces against materials with opacity values below this threshold are ignored when calculating lighting via raytracing.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 1
++ decimals: 2
++ stepSize: 0.01
++ sliderIndicatorVisible: true
++ backendValue: backendValues.opacityThreshold
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Samples")
++ tooltip: qsTr("The number of samples per lightmap texel.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 2048
++ decimals: 0
++ stepSize: 16
++ sliderIndicatorVisible: true
++ backendValue: backendValues.samples
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Indirect Lighting")
++ tooltip: qsTr("Enables the baking of indirect lighting.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ id: indirectLightEnabledCheckBox
++ text: backendValues.indirectLightEnabled.valueToString
++ backendValue: backendValues.indirectLightEnabled
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: indirectLightEnabledCheckBox.checked
++ text: qsTr("Bounces")
++ tooltip: qsTr("The maximum number of indirect light bounces per sample.")
++ }
++
++ SecondColumnLayout {
++ visible: indirectLightEnabledCheckBox.checked
++ SpinBox {
++ minimumValue: 1
++ maximumValue: 16
++ decimals: 0
++ stepSize: 1
++ backendValue: backendValues.bounces
++ sliderIndicatorVisible: true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: indirectLightEnabledCheckBox.checked
++ text: qsTr("Indirect Light Factor")
++ tooltip: qsTr("Multiplier for the indirect light amount.")
++ }
++
++ SecondColumnLayout {
++ visible: indirectLightEnabledCheckBox.checked
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 10
++ decimals: 2
++ stepSize: 0.01
++ backendValue: backendValues.indirectLightFactor
++ sliderIndicatorVisible: true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: indirectLightEnabledCheckBox.checked
++ text: qsTr("Indirect Workgroup Size")
++ tooltip: qsTr("The size of the workgroup used for indirect light computation.")
++ }
++
++ SecondColumnLayout {
++ visible: indirectLightEnabledCheckBox.checked
++ SpinBox {
++ minimumValue: 1
++ maximumValue: 512
++ decimals: 0
++ stepSize: 1
++ backendValue: backendValues.indirectLightWorkgroupSize
++ sliderIndicatorVisible: true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ }
++ }