Files
2026-04-29 07:19:21 +03:00

175 lines
5.5 KiB
QML

// 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 {}
}
}
}