Revision control

++ // Copyright (C) 2021 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("Shadows")
++ width: parent.width
++
++ SectionLayout {
++
++ PropertyLabel {
++ text: qsTr("Casts Shadow")
++ tooltip: qsTr("Enables shadow casting for this light.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ id: shadowCheckBox
++ text: backendValues.castsShadow.valueToString
++ backendValue: backendValues.castsShadow
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ // ### all the following should only be shown when shadows are enabled
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("Amount")
++ tooltip: qsTr("Sets how dark the cast shadows should be.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ SpinBox {
++ minimumValue: 0.0
++ maximumValue: 100.0
++ decimals: 0
++ sliderIndicatorVisible: true
++ backendValue: backendValues.shadowFactor
++ enabled: shadowCheckBox.backendValue.value === true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("Quality")
++ tooltip: qsTr("Sets the quality of the shadow map created for shadow rendering.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ ComboBox {
++ scope: "Light"
++ model: ["ShadowMapQualityLow", "ShadowMapQualityMedium", "ShadowMapQualityHigh", "ShadowMapQualityVeryHigh", "ShadowMapQualityUltra"]
++ backendValue: backendValues.shadowMapQuality
++ enabled: shadowCheckBox.backendValue.value === true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("Bias")
++ tooltip: qsTr("Sets a slight offset to avoid self-shadowing artifacts.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 9999999
++ decimals: 2
++ stepSize: 1
++ backendValue: backendValues.shadowBias
++ enabled: shadowCheckBox.backendValue.value === true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("Soft Shadow Quality")
++ tooltip: qsTr("Sets the quality of the soft shadows.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ ComboBox {
++ scope: "Light"
++ model: ["Hard", "PCF4", "PCF8", "PCF16", "PCF32", "PCF64"]
++ backendValue: backendValues.softShadowQuality
++ enabled: shadowCheckBox.backendValue.value === true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("PCF Factor")
++ tooltip: qsTr("Sets the PCF (percentage-closer filtering) factor.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 9999999
++ decimals: 1
++ stepSize: 0.1
++ backendValue: backendValues.pcfFactor
++ enabled: shadowCheckBox.backendValue.value === true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("Far Distance")
++ tooltip: qsTr("Sets the maximum distance for the shadow map.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 9999999
++ decimals: 0
++ stepSize: 10
++ backendValue: backendValues.shadowMapFar
++ enabled: shadowCheckBox.backendValue.value === true
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ visible: shadowCheckBox.checked
++ text: qsTr("Use 32-bit Shadowmap")
++ tooltip: qsTr("Enables a 32-bit shadowmap texture for this light.")
++ }
++
++ SecondColumnLayout {
++ visible: shadowCheckBox.checked
++ CheckBox {
++ text: backendValues.use32BitShadowmap.valueToString
++ backendValue: backendValues.use32BitShadowmap
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++ }
++ }