Fix tray visibility and message reception issues
Some checks failed
build / build-pip (push) Failing after 16s
build / build-win64 (push) Has been cancelled
build / build-macos (push) Has been cancelled

- Disable sound initialization to prevent hanging
- Add missing import re in utils.py
- Fix settings loading for QSettings
- Update file paths to use PROJECT_ROOT
- Revert to working API paths and listener from commit efdc63e
This commit is contained in:
kdusek
2025-12-07 22:39:07 +01:00
parent 7b695d7b7f
commit 5138303016
4060 changed files with 579123 additions and 23 deletions

View File

@@ -0,0 +1,99 @@
// 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
Column {
width: parent.width
Section {
caption: qsTr("Light")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Color")
tooltip: qsTr("Sets the color applied to models illuminated by this light.")
}
ColorEditor {
backendValue: backendValues.color
supportGradient: false
}
PropertyLabel {
text: qsTr("Ambient Color")
tooltip: qsTr("Sets the ambient color applied to materials before being lit by this light.")
}
ColorEditor {
backendValue: backendValues.ambientColor
supportGradient: false
}
PropertyLabel {
text: qsTr("Brightness")
tooltip: qsTr("Sets an overall multiplier for this lights effects.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.brightness
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Scope")
tooltip: qsTr("Sets a Node in the scene to be the scope of this light. Only that node and it's children are affected by this light.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.scope
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Bake Mode")
tooltip: qsTr("Controls if the light is active in baked lighting, such as when generating lightmaps.")
}
SecondColumnLayout {
ComboBox {
scope: "Light"
model: ["BakeModeDisabled", "BakeModeIndirect", "BakeModeAll"]
backendValue: backendValues.bakeMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
ShadowSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,47 @@
// 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("Buffer Input")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Buffer")
tooltip: qsTr("Sets input buffer for a pass.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Buffer"
backendValue: backendValues.buffer
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Parameter")
tooltip: qsTr("Sets buffer input buffer name in the shader.")
}
SecondColumnLayout {
LineEdit {
backendValue: backendValues.param
showTranslateCheckBox: false
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
BufferInputSection {
width: parent.width
}
}

View File

@@ -0,0 +1,118 @@
// 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("Buffer")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Name")
tooltip: qsTr("Sets the buffer name.")
}
SecondColumnLayout {
LineEdit {
backendValue: backendValues.name
showTranslateCheckBox: false
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Format")
tooltip: qsTr("Sets the format of the buffer.")
}
SecondColumnLayout {
ComboBox {
scope: "Buffer"
model: ["Unknown", "R8", "R16", "R16F", "R32I", "R32UI", "R32F", "RG8", "RGBA8", "RGB8", "SRGB8", "SRGB8A8", "RGB565", "RGBA16F", "RG16F", "RG32F", "RGB32F", "RGBA32F", "R11G11B10", "RGB9E5", "Depth16", "Depth24", "Depth32", "Depth24Stencil8"]
backendValue: backendValues.format
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Filter")
tooltip: qsTr("Sets the texture filter for the buffer.")
}
SecondColumnLayout {
ComboBox {
scope: "Buffer"
model: ["Unknown", "Nearest", "Linear"]
backendValue: backendValues.textureFilterOperation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Coordinate Operation")
tooltip: qsTr("Sets the texture coordinate operation for the buffer.")
}
SecondColumnLayout {
ComboBox {
scope: "Buffer"
model: ["Unknown", "ClampToEdge", "MirroredRepeat", "Repeat"]
backendValue: backendValues.textureCoordOperation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Allocation Flags")
tooltip: qsTr("Sets the allocation flags for the buffer.")
}
SecondColumnLayout {
ComboBox {
scope: "Buffer"
model: ["None", "SceneLifetime"]
backendValue: backendValues.bufferFlags
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Size Multiplier")
tooltip: qsTr("Sets the size multiplier for the buffer.")
}
SecondColumnLayout {
SpinBox {
maximumValue: 10000
minimumValue: 0
decimals: 2
realDragRange: 30
backendValue: backendValues.sizeMultiplier
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
BufferSection {
width: parent.width
}
}

View File

@@ -0,0 +1,63 @@
// Copyright (C) 2022 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("Camera")
SectionLayout {
PropertyLabel {
text: qsTr("Frustum Culling")
tooltip: qsTr("When this property is true, objects outside the camera frustum will be culled, meaning they will not be passed to the renderer.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.frustumCullingEnabled.valueToString
backendValue: backendValues.frustumCullingEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("LOD Bias")
tooltip: qsTr("This property changes the threshold for when the automatic level of detail meshes get used.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.levelOfDetailBias
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Look-at Node")
tooltip: qsTr("Sets the look-at node for the camera.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.lookAtNode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,137 @@
// Copyright (C) 2024 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("Cascades")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("No. Splits")
tooltip: qsTr("The number of cascade splits for this light.")
}
SecondColumnLayout {
ComboBox {
id: numSplitsComboBox
valueType: ComboBox.ValueType.Integer
model: [0, 1, 2, 3]
backendValue: backendValues.csmNumSplits
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: numSplitsComboBox.currentIndex > 0
text: qsTr("Blend ratio")
tooltip: qsTr("Defines how much of the shadow of any cascade should be blended together with the previous one.")
}
SecondColumnLayout {
visible: numSplitsComboBox.currentIndex > 0
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.csmBlendRatio
sliderIndicatorVisible: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: numSplitsComboBox.currentIndex > 0
text: qsTr("Split 1")
tooltip: qsTr("Defines where the first cascade of the shadow map split will occur.")
}
SecondColumnLayout {
visible: numSplitsComboBox.currentIndex > 0
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.csmSplit1
sliderIndicatorVisible: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: numSplitsComboBox.currentIndex > 1
text: qsTr("Split 2")
tooltip: qsTr("Defines where the second cascade of the shadow map split will occur.")
}
SecondColumnLayout {
visible: numSplitsComboBox.currentIndex > 1
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.csmSplit2
sliderIndicatorVisible: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: numSplitsComboBox.currentIndex > 2
text: qsTr("Split 3")
tooltip: qsTr("Defines where the third cascade of the shadow map split will occur.")
}
SecondColumnLayout {
visible: numSplitsComboBox.currentIndex > 2
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.csmSplit3
sliderIndicatorVisible: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Lock Shadowmap Texels")
tooltip: qsTr("Locks the shadowmap texels for this light to remove shadow edge shimmering.")
}
SecondColumnLayout {
CheckBox {
id: lockShadowmapTexelsCheckBox
text: backendValues.lockShadowmapTexels.valueToString
backendValue: backendValues.lockShadowmapTexels
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,15 @@
// Copyright (C) 2022 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
Column {
width: parent.width
// CubeMapTexture inherits Texture but doesn't provide any extra properties itself
TextureSection {
width: parent.width
}
}

View File

@@ -0,0 +1,21 @@
// Copyright (C) 2022 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
Column {
width: parent.width
// Custom camera doesn't have any meaningful designable properties itself, so only add
// the generic camera section
CameraSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,127 @@
// 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("Custom Material")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Shading Mode")
tooltip: qsTr("Sets the material type.\nUnshaded materials are not affected by the environment (for example, lights).")
}
SecondColumnLayout {
ComboBox {
scope: "CustomMaterial"
model: ["Unshaded", "Shaded"]
backendValue: backendValues.shadingMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Vertex Shader")
tooltip: qsTr("Sets the path to the vertex shader source file.")
}
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.vertexShader
filter: "*.vert *.vsh *.glslv *.glsl"
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fragment Shader")
tooltip: qsTr("Sets the path to the fragment shader source file.")
}
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.fragmentShader
filter: "*.frag *.fsh *.glslf *.glsl"
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Source Blend")
tooltip: qsTr("Sets the source blend factor.")
}
SecondColumnLayout {
ComboBox {
scope: "CustomMaterial"
model: ["NoBlend", "Zero", "One", "SrcColor", "OneMinusSrcColor", "DstColor", "OneMinusDstColor", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha", "ConstantColor", "OneMinusConstantColor", "ConstantAlpha", "OneMinusConstantAlpha", "SrcAlphaSaturate"]
backendValue: backendValues.sourceBlend
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Destination Blend")
tooltip: qsTr("Sets the destination blend factor.")
}
SecondColumnLayout {
ComboBox {
scope: "CustomMaterial"
model: ["NoBlend", "Zero", "One", "SrcColor", "OneMinusSrcColor", "DstColor", "OneMinusDstColor", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha", "ConstantColor", "OneMinusConstantColor", "ConstantAlpha", "OneMinusConstantAlpha", "SrcAlphaSaturate"]
backendValue: backendValues.destinationBlend
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Always Dirty")
tooltip: qsTr("Sets the material to refresh every time it is used by QtQuick3D.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.alwaysDirty.valueToString
backendValue: backendValues.alwaysDirty
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Line Width")
tooltip: qsTr("Sets the width of the lines when the geometry is using a primitive type of lines or line strips.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 1
maximumValue: 999999
decimals: 2
backendValue: backendValues.lineWidth
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
CustomMaterialSection {
width: parent.width
}
MaterialSection {
width: parent.width
}
}

View File

@@ -0,0 +1,48 @@
// 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("Debug Settings")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Enable Wireframe")
tooltip: qsTr("Meshes will be rendered as wireframes.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.wireframeEnabled.valueToString
backendValue: backendValues.wireframeEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Override Mode")
tooltip: qsTr("Changes how all materials are rendered to only reflect a particular aspect of the overall rendering process")
}
SecondColumnLayout {
ComboBox {
id: backgroundModeComboBox
scope: "DebugSettings"
model: ["None", "BaseColor", "Roughness", "Metalness", "Diffuse", "Specular", "ShadowOcclusion", "Emission", "AmbientOcclusion", "Normals", "Tangents", "Binormals", "FO"]
backendValue: backendValues.materialOverride
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,13 @@
// 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
Column {
width: parent.width
DebugSettingsSection {
width: parent.width
}
}

View File

@@ -0,0 +1,617 @@
// 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
Column {
width: parent.width
Section {
caption: qsTr("Default Material")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Lighting")
tooltip: qsTr("Sets the lighting method. NoLighting is faster while FragmentLighting\ncalculates diffuse and specular lighting for each rendered pixel.")
}
SecondColumnLayout {
ComboBox {
scope: "DefaultMaterial"
model: ["NoLighting", "FragmentLighting"]
backendValue: backendValues.lighting
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Blend Mode")
tooltip: qsTr("Sets how the colors of the model blend with colors behind it.")
}
SecondColumnLayout {
ComboBox {
scope: "DefaultMaterial"
model: ["SourceOver", "Screen", "Multiply"]
backendValue: backendValues.blendMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Enable Vertex Colors")
tooltip: qsTr("Sets the material to use vertex colors from the mesh.\nVertex colors are multiplied with any other color for the material.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.vertexColorsEnabled.valueToString
backendValue: backendValues.vertexColorsEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Point Size")
tooltip: qsTr("Sets the size of the points rendered when the geometry is using a primitive type of points.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pointSize
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Line Width")
tooltip: qsTr("Sets the width of the lines rendered when the geometry is using a primitive type of lines or line strips.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.lineWidth
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}
Section {
caption: qsTr("Diffuse")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Color")
tooltip: qsTr("Sets the base color.")
}
ColorEditor {
backendValue: backendValues.diffuseColor
supportGradient: false
}
PropertyLabel {
text: qsTr("Map")
tooltip: qsTr("Sets a texture to apply to the material.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.diffuseMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Emissive")
width: parent.width
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Factor")
tooltip: qsTr("Sets the color of self-illumination.\nThe default value (0, 0, 0) means no self-illumination.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.emissiveFactor_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: qsTr("R")
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.emissiveFactor_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: qsTr("G")
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.emissiveFactor_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: qsTr("B")
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Map")
tooltip: qsTr("Sets a texture to define the intensity of the emissive color.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.emissiveMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
}
Section {
caption: qsTr("Specular")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Tint")
tooltip: qsTr("Sets the color tint for the specular reflections.\nUse white for no color effect.")
}
ColorEditor {
backendValue: backendValues.specularTint
supportGradient: false
}
PropertyLabel {
text: qsTr("Amount")
tooltip: qsTr("Sets the strength of specularity (highlights and reflections).\nThe default value (0) disables specularity.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.specularAmount
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Map")
tooltip: qsTr("Sets a texture to define the amount and the color of specularity.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.specularMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Model")
tooltip: qsTr("Sets the functions to calculate specular highlights for lights in the scene.\nDefault is faster while KGGX is more physically accurate.")
}
SecondColumnLayout {
ComboBox {
scope: "DefaultMaterial"
model: ["Default", "KGGX"]
backendValue: backendValues.specularModel
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Reflection Map")
tooltip: qsTr("Sets a texture to define specular highlights.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.specularReflectionMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Index of Refraction")
tooltip: qsTr("Sets the angles of reflections affected by the fresnel power.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 1
maximumValue: 3
decimals: 2
stepSize: 0.1
backendValue: backendValues.indexOfRefraction
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fresnel Power")
tooltip: qsTr("Sets the strength of the fresnel power. The default value (0) means no fresnel power while a higher value\ndecreases head-on reflections (looking directly at the surface) while maintaining reflections seen at grazing angles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.fresnelPower
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Specular Roughness")
tooltip: qsTr("Sets the size of the specular highlight generated from lights and the clarity of reflections in general.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.001
maximumValue: 1
decimals: 3
stepSize: 0.1
backendValue: backendValues.specularRoughness
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Roughness Map")
tooltip: qsTr("Sets a texture to define the specular roughness.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.roughnessMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Roughness Channel")
tooltip: qsTr("Sets the texture channel to read the roughness value from roughnessMap.")
}
SecondColumnLayout {
ComboBox {
scope: "Material"
model: ["R", "G", "B", "A"]
backendValue: backendValues.roughnessChannel
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Opacity")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Amount")
tooltip: qsTr("Sets the opacity of just this material, separate from the model.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.opacity
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Map")
tooltip: qsTr("Sets a texture to control the opacity differently for different parts.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.opacityMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Channel")
tooltip: qsTr("Sets the texture channel to read the opacity value from the opacity map.")
}
SecondColumnLayout {
ComboBox {
scope: "Material"
model: ["R", "G", "B", "A"]
backendValue: backendValues.opacityChannel
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Bump/Normal")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Bump Amount")
tooltip: qsTr("Sets the amount of simulated displacement for the bump map or normal map.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.bumpAmount
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Bump Map")
tooltip: qsTr("Sets a grayscale texture to simulate fine geometry displacement across the surface.")
}
SecondColumnLayout {
ItemFilterComboBox {
id: bumpMapComboBox
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.bumpMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
Connections {
target: normalMapComboBox.backendValue
function onExpressionChanged() {
if (normalMapComboBox.backendValue.expression !== "")
bumpMapComboBox.backendValue.resetValue()
}
}
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Normal Map")
tooltip: qsTr("Sets a image to simulate fine geometry displacement across the surface.")
}
SecondColumnLayout {
ItemFilterComboBox {
id: normalMapComboBox
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.normalMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
Connections {
target: bumpMapComboBox.backendValue
function onExpressionChanged() {
if (bumpMapComboBox.backendValue.expression !== "")
normalMapComboBox.backendValue.resetValue()
}
}
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Translucency")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Falloff")
tooltip: qsTr("Sets the amount of falloff for the translucency based on the angle of the normals of the object to the light source.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.translucentFalloff
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Diffuse Light Wrap")
tooltip: qsTr("Sets the amount of light wrap for the translucency map.\nA value of 0 will not wrap the light at all, while a value of 1 will wrap the light all around the object.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.diffuseLightWrap
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Map")
tooltip: qsTr("Sets a grayscale texture to control how much light can pass through the material from behind.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.translucencyMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Channel")
tooltip: qsTr("Sets the texture channel to read the translucency value from translucencyMap.")
}
SecondColumnLayout {
ComboBox {
scope: "Material"
model: ["R", "G", "B", "A"]
backendValue: backendValues.translucencyChannel
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
DefaultMaterialSection {
width: parent.width
}
MaterialSection {
width: parent.width
}
}

View File

@@ -0,0 +1,10 @@
// 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
Column {
width: parent.width
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
AbstractLightSection {
width: parent.width
}
CascadesSection {
width: parent.width
}
}

View File

@@ -0,0 +1,36 @@
// 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("Effect")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Passes")
tooltip: qsTr("Sets the render passes of the effect.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.passes
model: backendValues.passes.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Pass"
onAdd: function(value) { backendValues.passes.idListAdd(value) }
onRemove: function(idx) { backendValues.passes.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.passes.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
EffectSection {
width: parent.width
}
}

View File

@@ -0,0 +1,27 @@
// 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
Section {
caption: qsTr("File Instancing")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Source")
tooltip: qsTr("Sets the location of an XML or binary file containing the instance data.")
}
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.source
filter: "*.xml *.bin"
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
FileInstancingSection {
width: parent.width
}
InstancingSection {
width: parent.width
}
}

View File

@@ -0,0 +1,260 @@
// 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
Column {
width: parent.width
Section {
caption: qsTr("Fog")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("Controls whether fog is applied to the scene")
}
SecondColumnLayout {
CheckBox {
text: backendValues.enabled.valueToString
backendValue: backendValues.enabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: baseSectionLayout.isColorMode
text: qsTr("Color")
tooltip: qsTr("The color of the fog")
}
ColorEditor {
backendValue: backendValues.color
supportGradient: false
}
PropertyLabel {
text: qsTr("Density")
tooltip: qsTr("Controls the density of the fog")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
sliderIndicatorVisible: true
backendValue: backendValues.density
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Depth")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("Controls if the fog appears in the distance")
}
SecondColumnLayout {
CheckBox {
text: backendValues.depthEnabled.valueToString
backendValue: backendValues.depthEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Start Distance")
tooltip: qsTr("Starting distance from the camera")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.depthNear
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("End Distance")
tooltip: qsTr("Ending distance from the camera")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.depthFar
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Intensity Curve")
tooltip: qsTr("Controls the intensity curve of depth fog")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.depthCurve
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Height")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("Controls if height fog is enabled")
}
SecondColumnLayout {
CheckBox {
text: backendValues.heightEnabled.valueToString
backendValue: backendValues.heightEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Least Intense Height")
tooltip: qsTr("Specifies the height where the fog is the least intense.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.leastIntenseY
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Most Intense Height")
tooltip: qsTr("Specifies the height where the fog is the most intense.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.mostIntenseY
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Intensity Curve")
tooltip: qsTr("Controls the intensity curve of height fog")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.heightCurve
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Transmission")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("Controls if the fog has a light transmission effect enabled")
}
SecondColumnLayout {
CheckBox {
text: backendValues.transmitEnabled.valueToString
backendValue: backendValues.transmitEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Intensity Curve")
tooltip: qsTr("Controls the intensity curve of the light transmission effect")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.transmitCurve
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
}

View File

@@ -0,0 +1,13 @@
// 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
Column {
width: parent.width
FogSection {
width: parent.width
}
}

View File

@@ -0,0 +1,85 @@
// 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("Frustum Camera")
SectionLayout {
PropertyLabel {
text: qsTr("Top")
tooltip: qsTr("Sets the top plane of the camera view frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.top
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Bottom")
tooltip: qsTr("Sets the bottom plane of the camera view frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.bottom
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Right")
tooltip: qsTr("Sets the right plane of the camera view frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.right
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Left")
tooltip: qsTr("Sets the left plane of the camera view frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.left
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,26 @@
// 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
Column {
width: parent.width
FrustumCameraSection {
width: parent.width
}
PerspectiveCameraSection {
width: parent.width
}
CameraSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,245 @@
// 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
Column {
width: parent.width
Section {
width: parent.width
caption: qsTr("Instance List Entry")
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Color")
tooltip: qsTr("Sets the color for the instance.")
}
ColorEditor {
backendValue: backendValues.color
supportGradient: false
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Position")
tooltip: qsTr("Sets the position for the instance.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.position_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.position_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.position_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Scale")
tooltip: qsTr("Sets the scale for the instance.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Rotation")
tooltip: qsTr("Sets the rotation for the instance.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
InstanceListEntrySection {
width: parent.width
}
}

View File

@@ -0,0 +1,35 @@
// 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
Section {
caption: qsTr("Instance List")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Instances")
tooltip: qsTr("Sets the list of instance definitions. Modifying this list, or any of its elements, will cause the instance table to be updated.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.instances
model: backendValues.instances.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.InstanceListEntry"
onAdd: function(value) { backendValues.instances.idListAdd(value) }
onRemove: function(idx) { backendValues.instances.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.instances.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
InstanceListSection {
width: parent.width
}
InstancingSection {
width: parent.width
}
}

View File

@@ -0,0 +1,66 @@
// 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("Instancing")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Depth Sorting")
tooltip: qsTr("Enable depth sorting for instanced objects.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.depthSortingEnabled.valueToString
backendValue: backendValues.depthSortingEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Has Transparency")
tooltip: qsTr("Set this to true if the instancing table contains alpha values that should be used when rendering the model.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.hasTransparency.valueToString
backendValue: backendValues.hasTransparency
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Instance Count")
tooltip: qsTr("Sets a limit on the number of instances that can be rendered regardless of the number of instances in the instancing table.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -1
maximumValue: 9999999
decimals: 0
stepSize: 1
backendValue: backendValues.instanceCountOverride
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,48 @@
// 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("Joint")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Index")
tooltip: qsTr("Sets the index of this joint.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.index
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Skeleton Root")
tooltip: qsTr("Sets the skeleton that contains this joint.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Skeleton"
backendValue: backendValues.skeletonRoot
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
JointSection {
width: parent.width
}
}

View File

@@ -0,0 +1,174 @@
// 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 {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
LightmapperSection {
width: parent.width
}
}

View File

@@ -0,0 +1,76 @@
// 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("Loader3D")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Active")
tooltip: qsTr("Sets if the Loader3D is currently active.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.active.valueToString
backendValue: backendValues.active
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Source")
tooltip: qsTr("Sets the URL of the QML component to instantiate.")
}
SecondColumnLayout {
UrlChooser {
filter: "*.qml"
backendValue: backendValues.source
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Source Component")
tooltip: qsTr("Sets the component to instantiate.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "Component"
backendValue: backendValues.sourceComponent
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Asynchronous")
tooltip: qsTr("Sets whether the component will be instantiated asynchronously.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.asynchronous.valueToString
backendValue: backendValues.asynchronous
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
Loader3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,71 @@
// 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("Material")
SectionLayout {
// Baked Lighting properties (may be internal eventually)
// ### lightmapIndirect
// ### lightmapRadiosity
// ### lightmapShadow
// ### iblProbe override
PropertyLabel {
text: qsTr("Light Probe")
tooltip: qsTr("Sets a texture to use as image based lighting.\nThis overrides the scene's light probe.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.lightProbe
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Culling Mode")
tooltip: qsTr("Sets which primitives to discard, if any.")
}
SecondColumnLayout {
ComboBox {
scope: "Material"
model: ["BackFaceCulling", "FrontFaceCulling", "NoCulling"]
backendValue: backendValues.cullMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Depth Draw Mode")
tooltip: qsTr("Sets if and when depth rendering takes place.")
}
SecondColumnLayout {
ComboBox {
scope: "Material"
model: ["OpaqueOnlyDepthDraw", "AlwaysDepthDraw", "NeverDepthDraw", "OpaquePrePassDepthDraw"]
backendValue: backendValues.depthDrawMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,363 @@
// 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
Column {
width: parent.width
Section {
caption: qsTr("Model")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Source")
tooltip: qsTr("Sets the location of the mesh file containing the geometry of this model.")
}
SecondColumnLayout {
UrlChooser {
id: sourceUrlChooser
backendValue: backendValues.source
filter: "*.mesh"
defaultItems: ["#Rectangle" ,"#Sphere" ,"#Cube" ,"#Cone" ,"#Cylinder"]
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Geometry")
tooltip: qsTr("Sets a custom geometry for the model")
}
SecondColumnLayout {
ItemFilterComboBox {
id: geometryComboBox
typeFilter: "QtQuick3D.Geometry"
backendValue: backendValues.geometry
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
Connections {
target: geometryComboBox.backendValue
function onExpressionChanged() {
if (geometryComboBox.backendValue.expression !== "" &&
sourceUrlChooser.backendValue.expression !== "")
sourceUrlChooser.backendValue.resetValue()
}
}
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Materials")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.materials
model: backendValues.materials.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Material"
textRole: "idAndName"
onAdd: function(value) { backendValues.materials.idListAdd(value) }
onRemove: function(idx) { backendValues.materials.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.materials.idListReplace(idx, value) }
extraButtonIcon: StudioTheme.Constants.material_medium
extraButtonToolTip: qsTr("Edit material")
onExtraButtonClicked: (idx) => { backendValues.materials.openMaterialEditor(idx) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Casts Shadows")
tooltip: qsTr("Enables the geometry of this model to be rendered to the shadow maps.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.castsShadows.valueToString
backendValue: backendValues.castsShadows
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Receives Shadows")
tooltip: qsTr("Enables the geometry of this model to receive shadows.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.receivesShadows.valueToString
backendValue: backendValues.receivesShadows
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Casts Reflections")
tooltip: qsTr("Enables reflection probes to reflect this model.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.castsReflections.valueToString
backendValue: backendValues.castsReflections
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Receives Reflections")
tooltip: qsTr("Enables the geometry of this model to receive reflections from the nearest reflection probe. The model must be inside at least one reflection probe to start receiving reflections.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.receivesReflections.valueToString
backendValue: backendValues.receivesReflections
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Is Pickable")
tooltip: qsTr("Enables ray cast based picking for this model.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.pickable.valueToString
backendValue: backendValues.pickable
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Used in Baked Lighting")
tooltip: qsTr("This model is static and suitable to contribute to baked lighting.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.usedInBakedLighting.valueToString
backendValue: backendValues.usedInBakedLighting
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Depth Bias")
tooltip: qsTr("Sets the depth bias of the model.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.depthBias
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("LOD Bias")
tooltip: qsTr("Sets the size a model needs to be when rendered before the automatic level of detail meshes are used")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.levelOfDetailBias
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Instancing")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Data Source")
tooltip: qsTr("If this property is set, the model will not be rendered normally. Instead, a number of instances of the model will be rendered, as defined by the instance table.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Instancing"
backendValue: backendValues.instancing
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Origin Node")
tooltip: qsTr("Sets the origin of the instances coordinate system.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.instanceRoot
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Animation")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Skeleton")
tooltip: qsTr("Sets the skeleton for the model.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Skeleton"
backendValue: backendValues.skeleton
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Morph Targets")
tooltip: qsTr("Sets a list of MorphTargets used to render the provided geometry.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.morphTargets
model: backendValues.morphTargets.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.MorphTarget"
onAdd: function(value) { backendValues.morphTargets.idListAdd(value) }
onRemove: function(idx) { backendValues.morphTargets.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.morphTargets.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Skin")
tooltip: qsTr("Sets the skin for the model.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Skin"
backendValue: backendValues.skin
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
caption: qsTr("Lightmapping")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Resolution")
tooltip: qsTr("Sets the target resolution of the baked lightmap texture for the model.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 128
maximumValue: 4096
decimals: 0
stepSize: 128
sliderIndicatorVisible: true
backendValue: backendValues.lightmapBaseResolution
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Lightmap")
tooltip: qsTr("Sets the baked lightmap data for the model.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.BakedLightmap"
backendValue: backendValues.bakedLightmap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
ModelSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,49 @@
// 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("Morph Target")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Weight")
tooltip: qsTr("Sets the weight of the current morph target.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.weight
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Attributes")
tooltip: qsTr("Sets the set of attributes of the current morph target.")
}
SecondColumnLayout {
ComboBox {
scope: "MorphTarget"
model: ["Position", "Normal", "Tangent", "Binormal"]
backendValue: backendValues.attributes
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
MorphTargetSection {
width: parent.width
}
}

View File

@@ -0,0 +1,350 @@
// 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
Column {
width: parent.width
Section {
width: parent.width
caption: qsTr("Visibility")
SectionLayout {
PropertyLabel {
text: qsTr("Visibility")
tooltip: qsTr("Sets the local visibility of the node.")
}
SecondColumnLayout {
// ### should be a slider
CheckBox {
text: qsTr("Visible")
backendValue: backendValues.visible
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Opacity")
tooltip: qsTr("Sets the local opacity value of the node.")
}
SecondColumnLayout {
// ### should be a slider
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.opacity
sliderIndicatorVisible: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
id: transformSection
width: parent.width
caption: qsTr("Transform")
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Translation")
tooltip: qsTr("Sets the translation of the node.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Rotation")
tooltip: qsTr("Sets the rotation of the node in degrees.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Scale")
tooltip: qsTr("Sets the scale of the node.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Pivot")
tooltip: qsTr("Sets the pivot of the node.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivot_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivot_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivot_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,10 @@
// 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
Section {
caption: qsTr("Object")
}

View File

@@ -0,0 +1,87 @@
// 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 {
width: parent.width
caption: qsTr("Orthographic Camera")
SectionLayout {
PropertyLabel {
text: qsTr("Clip Near")
tooltip: qsTr("Sets the near value of the camera view frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.clipNear
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Clip Far")
tooltip: qsTr("Sets the far value of the camera view frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
stepSize: 100
backendValue: backendValues.clipFar
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Horizontal Magnification")
tooltip: qsTr("Sets the horizontal magnification of the OrthographicCamera's frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.horizontalMagnification
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Vertical Magnification")
tooltip: qsTr("Sets the vertical magnification of the OrthographicCamera's frustum.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.verticalMagnification
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,22 @@
// 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
Column {
width: parent.width
OrthographicCameraSection {
width: parent.width
}
CameraSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,74 @@
// 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("Pass")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Commands")
tooltip: qsTr("Sets the render commands of the pass.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.commands
model: backendValues.commands.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Command"
onAdd: function(value) { backendValues.commands.idListAdd(value) }
onRemove: function(idx) { backendValues.commands.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.commands.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Buffer")
tooltip: qsTr("Sets the output buffer for the pass.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Buffer"
backendValue: backendValues.output
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Shaders")
tooltip: qsTr("Sets the shaders for the pass.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.shaders
model: backendValues.shaders.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Shader"
onAdd: function(value) { backendValues.shaders.idListAdd(value) }
onRemove: function(idx) { backendValues.shaders.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.shaders.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
PassSection {
width: parent.width
}
}

View File

@@ -0,0 +1,85 @@
// 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("Perspective Camera")
SectionLayout {
PropertyLabel {
text: qsTr("Clip Near")
tooltip: qsTr("Sets the near value of the view frustum of the camera.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
backendValue: backendValues.clipNear
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Clip Far")
tooltip: qsTr("Sets the far value of the view frustum of the camera.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 0
stepSize: 100
backendValue: backendValues.clipFar
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Field of View")
tooltip: qsTr("Sets the field of view of the camera in degrees.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 1
maximumValue: 180
decimals: 2
backendValue: backendValues.fieldOfView
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("FOV Orientation")
tooltip: qsTr("Sets if the field of view property reflects the vertical or the horizontal field of view.")
}
SecondColumnLayout {
ComboBox {
scope: "PerspectiveCamera"
model: ["Vertical", "Horizontal"]
backendValue: backendValues.fieldOfViewOrientation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,22 @@
// 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
Column {
width: parent.width
PerspectiveCameraSection {
width: parent.width
}
CameraSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,71 @@
// 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("Point Light")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Constant Fade")
tooltip: qsTr("Sets the constant attenuation of the light.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 10
decimals: 2
stepSize: 0.1
backendValue: backendValues.constantFade
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Linear Fade")
tooltip: qsTr("Sets the linear attenuation of the light.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 10
decimals: 2
stepSize: 0.1
backendValue: backendValues.linearFade
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Quadratic Fade")
tooltip: qsTr("Sets the quadratic attenuation of the light.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 10
decimals: 2
stepSize: 0.1
backendValue: backendValues.quadraticFade
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
PointLightSection {
width: parent.width
}
AbstractLightSection {
width: parent.width
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
PrincipledMaterialSection {
width: parent.width
}
MaterialSection {
width: parent.width
}
}

View File

@@ -0,0 +1,260 @@
// 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("Reflection Probe")
SectionLayout {
PropertyLabel {
text: qsTr("Box Size")
tooltip: qsTr("Sets the reflection probe box size.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.boxSize_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "box size x"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.boxSize_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "box size y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.boxSize_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "box size z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Box Offset")
tooltip: qsTr("Sets the reflection probe box position relative to the probe position.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.boxOffset_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "box offset x"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.boxOffset_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "box offset y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.boxOffset_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "box offset z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Parallax Correction")
tooltip: qsTr("Reflection maps are considered to be at infinite distance by default. This is unsuitable for indoor area as it produces parallax issues.\nSetting this property to true corrects the cubemap by taking the camera position and the box's dimension into account.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.parallaxCorrection.valueToString
backendValue: backendValues.parallaxCorrection
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Debug View")
tooltip: qsTr("Enables rendering a wireframe to visualize the reflection probe box.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.debugView.valueToString
backendValue: backendValues.debugView
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Clear Color")
tooltip: qsTr("Sets the color that will be used to clear the reflection map.")
}
ColorEditor {
backendValue: backendValues.clearColor
supportGradient: false
}
PropertyLabel {
text: qsTr("Reflection Map Quality")
tooltip: qsTr("Sets the quality of the reflection map.")
}
SecondColumnLayout {
ComboBox {
scope: "ReflectionProbe"
model: ["VeryLow", "Low", "Medium", "High", "VeryHigh"]
backendValue: backendValues.quality
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Refresh Mode")
tooltip: qsTr("Sets how often the reflection map will be updated.")
}
SecondColumnLayout {
ComboBox {
scope: "ReflectionProbe"
model: ["FirstFrame", "EveryFrame"]
backendValue: backendValues.refreshMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Time Slicing")
tooltip: qsTr("Sets how often the faces of the reflection cube map are updated.")
}
SecondColumnLayout {
ComboBox {
scope: "ReflectionProbe"
model: ["None", "AllFacesAtOnce", "IndividualFaces"]
backendValue: backendValues.timeSlicing
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Override Texture")
tooltip: qsTr("Sets an override texture to use for the reflection map instead of rendering the scene.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.CubeMapTexture"
backendValue: backendValues.texture
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
ReflectionProbeSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,48 @@
// 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("Repeater")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Model")
tooltip: qsTr("The model providing data for the repeater. This can simply specify the number of delegate instances to create or it can be bound to an actual model.")
}
SecondColumnLayout {
LineEdit {
backendValue: backendValues.model
showTranslateCheckBox: false
writeAsExpression: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Delegate")
tooltip: qsTr("The delegate provides a template defining each object instantiated by the repeater.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "Component"
backendValue: backendValues.delegate
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
Repeater3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,90 @@
// 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("Resource Loader")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Geometries")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
tooltip: qsTr("A list of custom geometries to be loaded and cached.")
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.geometries
model: backendValues.geometries.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Geometry"
onAdd: function(value) { backendValues.geometries.idListAdd(value) }
onRemove: function(idx) { backendValues.geometries.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.geometries.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Mesh Sources")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
tooltip: qsTr("A list of mesh assets to be loaded and cached.")
}
SecondColumnLayout {
ActionIndicator {
icon.color: extFuncLogic.color
icon.text: extFuncLogic.glyph
onClicked: extFuncLogic.show()
forceVisible: extFuncLogic.menuVisible
ExtendedFunctionLogic {
id: extFuncLogic
backendValue: backendValues.meshSources
}
}
// Placeholder until we can do list of value types: QDS-9090
Label {
text: qsTr("Currently only editable in QML.")
Layout.fillWidth: true
Layout.preferredWidth: StudioTheme.Values.singleControlColumnWidth
Layout.minimumWidth: StudioTheme.Values.singleControlColumnWidth
Layout.maximumWidth: StudioTheme.Values.singleControlColumnWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Textures")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
tooltip: qsTr("A list of textures to be loaded and cached.")
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.textures
model: backendValues.textures.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Texture"
onAdd: function(value) { backendValues.textures.idListAdd(value) }
onRemove: function(idx) { backendValues.textures.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.textures.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
ResourceLoaderSection {
width: parent.width
}
}

View File

@@ -0,0 +1,688 @@
// 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
Column {
width: parent.width
Section {
width: parent.width
caption: qsTr("Scene Environment")
SectionLayout {
id: baseSectionLayout
property bool isColorMode: backgroundModeComboBox.currentIndex === 2
property bool isSkyBoxMode: backgroundModeComboBox.currentIndex === 3
property bool isSkyBoxCubeMapMode: backgroundModeComboBox.currentIndex === 4
PropertyLabel {
text: qsTr("Background Mode")
tooltip: qsTr("Sets if and how the background of the scene should be cleared.")
}
SecondColumnLayout {
ComboBox {
id: backgroundModeComboBox
scope: "SceneEnvironment"
model: ["Transparent", "Unspecified", "Color", "SkyBox", "SkyBoxCubeMap"]
backendValue: backendValues.backgroundMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: baseSectionLayout.isColorMode
text: qsTr("Clear Color")
tooltip: qsTr("Sets which color will be used to clear the viewport when using SceneEnvironment.Color for the backgroundMode property.")
}
ColorEditor {
visible: baseSectionLayout.isColorMode
backendValue: backendValues.clearColor
supportGradient: false
}
PropertyLabel {
visible: baseSectionLayout.isSkyBoxCubeMapMode
text: qsTr("Skybox Cube Map")
tooltip: qsTr("Sets a cubemap to be used as a skybox when the background mode is SkyBoxCubeMap.")
}
SecondColumnLayout {
visible: baseSectionLayout.isSkyBoxCubeMapMode
ItemFilterComboBox {
typeFilter: "QtQuick3D.CubeMapTexture"
backendValue: backendValues.skyBoxCubeMap
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: baseSectionLayout.isSkyBoxMode || baseSectionLayout.isSkyBoxCubeMapMode
text: qsTr("Skybox Blur")
tooltip: qsTr("Sets how much to blur the skybox when using SceneEnvironment.SkyBox for the backgroundMode property.")
}
SecondColumnLayout {
visible: baseSectionLayout.isSkyBoxMode || baseSectionLayout.isSkyBoxCubeMapMode
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
sliderIndicatorVisible: true
backendValue: backendValues.skyboxBlurAmount
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Effects")
tooltip: qsTr("Post Processing effects applied to this scene.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.effects
model: backendValues.effects.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Effect"
onAdd: function(value) { backendValues.effects.idListAdd(value) }
onRemove: function(idx) { backendValues.effects.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.effects.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Tonemap Mode")
tooltip: qsTr("Sets how colors are tonemapped before rendering.")
}
SecondColumnLayout {
ComboBox {
scope: "SceneEnvironment"
model: ["TonemapModeNone", "TonemapModeLinear", "TonemapModeAces", "TonemapModeHejlDawson", "TonemapModeFilmic"]
backendValue: backendValues.tonemapMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fog")
tooltip: qsTr("Settings for Fog applied to the scene.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Fog"
backendValue: backendValues.fog
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
id: antialiasingSection
width: parent.width
caption: qsTr("Antialiasing")
property bool isAntialiasingEnabled: antialiasingModeComboBox.currentIndex !== 0
SectionLayout {
PropertyLabel {
text: qsTr("Antialiasing Mode")
tooltip: qsTr("Sets the antialiasing mode applied to the scene.")
}
SecondColumnLayout {
ComboBox {
id: antialiasingModeComboBox
scope: "SceneEnvironment"
model: ["NoAA", "SSAA", "MSAA", "ProgressiveAA"]
backendValue: backendValues.antialiasingMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: antialiasingSection.isAntialiasingEnabled
text: qsTr("Antialiasing Quality")
tooltip: qsTr("Sets the level of antialiasing applied to the scene.")
}
SecondColumnLayout {
visible: antialiasingSection.isAntialiasingEnabled
ComboBox {
scope: "SceneEnvironment"
model: ["Medium", "High", "VeryHigh"]
backendValue: backendValues.antialiasingQuality
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Specular AA")
tooltip: qsTr("Enables specular antialiasing.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.specularAAEnabled.valueToString
backendValue: backendValues.specularAAEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Temporal AA")
tooltip: qsTr("Enables temporal antialiasing using camera jittering and frame blending.")
}
SecondColumnLayout {
CheckBox {
id: temporalAAEnabledCheckBox
text: backendValues.temporalAAEnabled.valueToString
backendValue: backendValues.temporalAAEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: temporalAAEnabledCheckBox.checked
text: qsTr("Temporal AA Strength")
tooltip: qsTr("Sets the amount of temporal antialiasing applied.")
}
SecondColumnLayout {
visible: temporalAAEnabledCheckBox.checked
SpinBox {
minimumValue: 0.01
maximumValue: 2.0
decimals: 2
stepSize: 0.1
backendValue: backendValues.temporalAAStrength
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
width: parent.width
caption: qsTr("Ambient Occlusion")
SectionLayout {
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("Enables ambient occlusion.")
}
SecondColumnLayout {
CheckBox {
id: ambientOcclusionEnabledCheckBox
text: backendValues.aoEnabled.valueToString
backendValue: backendValues.aoEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: ambientOcclusionEnabledCheckBox.checked
text: qsTr("Strength")
tooltip: qsTr("Sets the amount of ambient occulusion applied.")
}
SecondColumnLayout {
visible: ambientOcclusionEnabledCheckBox.checked
SpinBox {
minimumValue: 0
maximumValue: 100
sliderIndicatorVisible: true
decimals: 0
backendValue: backendValues.aoStrength
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: ambientOcclusionEnabledCheckBox.checked
text: qsTr("Distance")
tooltip: qsTr("Sets roughly how far ambient occlusion shadows spread away from objects.")
}
SecondColumnLayout {
visible: ambientOcclusionEnabledCheckBox.checked
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.aoDistance
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: ambientOcclusionEnabledCheckBox.checked
text: qsTr("Softness")
tooltip: qsTr("Sets how smooth the edges of the ambient occlusion shading are.")
}
SecondColumnLayout {
visible: ambientOcclusionEnabledCheckBox.checked
SpinBox {
minimumValue: 0
maximumValue: 50
sliderIndicatorVisible: true
decimals: 2
backendValue: backendValues.aoSoftness
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: ambientOcclusionEnabledCheckBox.checked
text: qsTr("Sample Rate")
tooltip: qsTr("Sets ambient occlusion quality (more shades of gray) at the expense of performance.")
}
SecondColumnLayout {
visible: ambientOcclusionEnabledCheckBox.checked
SpinBox {
minimumValue: 2
maximumValue: 4
decimals: 0
stepSize: 1
sliderIndicatorVisible: true
backendValue: backendValues.aoSampleRate
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: ambientOcclusionEnabledCheckBox.checked
text: qsTr("Bias")
tooltip: qsTr("Sets a cutoff distance preventing objects from exhibiting ambient occlusion at close distances.")
}
SecondColumnLayout {
visible: ambientOcclusionEnabledCheckBox.checked
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.aoBias
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
visible: ambientOcclusionEnabledCheckBox.checked
text: qsTr("Dither")
tooltip: qsTr("Enables scattering the edges of the ambient occlusion shadow bands to improve smoothness.")
}
SecondColumnLayout {
visible: ambientOcclusionEnabledCheckBox.checked
CheckBox {
id: aoDitherCheckBox
text: backendValues.aoDither.valueToString
backendValue: backendValues.aoDither
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
width: parent.width
caption: qsTr("Image Based Lighting")
SectionLayout {
PropertyLabel {
text: qsTr("HDR Image")
tooltip: qsTr("Sets an image to use to light the scene, either instead of, or in addition to standard lights.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.lightProbe
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Exposure")
tooltip: qsTr("Sets the amount of light emitted by the light probe.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 9999999
decimals: 2
backendValue: backendValues.probeExposure
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Horizon")
tooltip: qsTr("Sets the light probe horizon. When set, adds darkness (black) to the bottom of the environment, forcing the lighting to come predominantly from the top of the image.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.probeHorizon
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Orientation")
tooltip: qsTr("Sets the orientation of the light probe.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.probeOrientation_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.probeOrientation_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.probeOrientation_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}
Section {
width: parent.width
caption: qsTr("Advanced")
SectionLayout {
PropertyLabel {
text: qsTr("Enable Depth Test")
tooltip: qsTr("Enables depth testing. Disable to optimize render speed for layers with mostly transparent objects.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.depthTestEnabled.valueToString
backendValue: backendValues.depthTestEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Enable Depth Prepass")
tooltip: qsTr("Enables draw depth buffer as a separate pass. Disable to optimize render speed for layers with low depth complexity.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.depthPrePassEnabled.valueToString
backendValue: backendValues.depthPrePassEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Debug Settings")
tooltip: qsTr("Additional render settings for debugging scenes.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.DebugSettings"
backendValue: backendValues.debugSettings
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Light Mapper")
tooltip: qsTr("Sets the light mapper object for the scene.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Lightmapper"
backendValue: backendValues.lightmapper
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// ### This is not yet implemented in the DS backend since rect does not have
// a way to access x, y, width, or height via the _ notation.
// PropertyLabel {
// text: qsTr("Scissor Rect")
// tooltip: qsTr("Defines a scissor rectangle in view coordinates.")
// }
// SecondColumnLayout {
// SpinBox {
// maximumValue: 999999
// minimumValue: -999999
// decimals: 0
// stepSize: 1
// backendValue: backendValues.scissorRect_x
// implicitWidth: StudioTheme.Values.twoControlColumnWidth
// + StudioTheme.Values.actionIndicatorWidth
// }
// Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
// ControlLabel {
// text: "X"
// tooltip: qsTr("Sets the scissor clip X offset from left to right.")
// }
// Spacer { implicitWidth: StudioTheme.Values.controlGap }
// SpinBox {
// maximumValue: 999999
// minimumValue: -999999
// decimals: 0
// stepSize: 1
// backendValue: backendValues.scissorRect_y
// implicitWidth: StudioTheme.Values.twoControlColumnWidth
// + StudioTheme.Values.actionIndicatorWidth
// }
// Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
// ControlLabel {
// text: "Y"
// tooltip: qsTr("Sets the scissor clip Y offset from bottom to top.")
// }
// ExpandingSpacer {}
// }
// PropertyLabel {} // spacer
// SecondColumnLayout {
// SpinBox {
// maximumValue: 999999
// minimumValue: -999999
// decimals: 0
// stepSize: 1
// backendValue: backendValues.scissorRect_width
// implicitWidth: StudioTheme.Values.twoControlColumnWidth
// + StudioTheme.Values.actionIndicatorWidth
// }
// Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
// ControlLabel {
// text: "W"
// tooltip: qsTr("Sets the scissor clip width")
// }
// Spacer { implicitWidth: StudioTheme.Values.controlGap }
// SpinBox {
// maximumValue: 999999
// minimumValue: -999999
// decimals: 0
// stepSize: 1
// backendValue: backendValues.scissorRect_height
// implicitWidth: StudioTheme.Values.twoControlColumnWidth
// + StudioTheme.Values.actionIndicatorWidth
// }
// Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
// ControlLabel {
// text: "H"
// tooltip: qsTr("Sets the scissor clip height")
// }
// ExpandingSpacer {}
// }
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
SceneEnvironmentSection {
width: parent.width
}
}

View File

@@ -0,0 +1,49 @@
// 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("Set Uniform Value")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Target")
tooltip: qsTr("Sets the name of the uniform to change value for a pass.")
}
SecondColumnLayout {
LineEdit {
backendValue: backendValues.target
showTranslateCheckBox: false
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Value")
tooltip: qsTr("Sets the value of the uniform.")
}
SecondColumnLayout {
LineEdit {
backendValue: backendValues.value
showTranslateCheckBox: false
writeAsExpression: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
SetUniformValueSection {
width: parent.width
}
}

View File

@@ -0,0 +1,45 @@
// 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("Shader")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Source")
tooltip: qsTr("Sets the shader source code.")
}
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.shader
filter: "*.vert *.frag *.glslv *.glslf *.glsl *.vsh *.fsh"
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Stage")
tooltip: qsTr("Sets the shader stage.")
}
SecondColumnLayout {
ComboBox {
scope: "Shader"
model: ["Vertex", "Fragment"]
backendValue: backendValues.stage
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
ShaderSection {
width: parent.width
}
}

View File

@@ -0,0 +1,179 @@
// 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 {}
}
}
}

View File

@@ -0,0 +1,15 @@
// 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("Skin")
width: parent.width
SectionLayout {
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
SkinSection {
width: parent.width
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2022 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
Column {
width: parent.width
SpecularGlossyMaterialSection {
width: parent.width
}
MaterialSection {
width: parent.width
}
}

View File

@@ -0,0 +1,107 @@
// 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("Spot Light")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Constant Fade")
tooltip: qsTr("Sets the constant attenuation of the light.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 10
decimals: 2
stepSize: 0.1
backendValue: backendValues.constantFade
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Linear Fade")
tooltip: qsTr("Sets the linear attenuation of the light.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 10
decimals: 2
stepSize: 0.1
backendValue: backendValues.linearFade
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Quadratic Fade")
tooltip: qsTr("Sets the quadratic attenuation of the light.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 10
decimals: 2
stepSize: 0.1
backendValue: backendValues.quadraticFade
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Cone Angle")
tooltip: qsTr("Sets the angle of the light cone.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 180
decimals: 2
backendValue: backendValues.coneAngle
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Inner Cone Angle")
tooltip: qsTr("Sets the angle of the inner light cone.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 180
decimals: 2
backendValue: backendValues.innerConeAngle
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// 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
Column {
width: parent.width
SpotLightSection {
width: parent.width
}
AbstractLightSection {
width: parent.width
}
}

View File

@@ -0,0 +1,46 @@
// 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("Texture Input")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Texture")
tooltip: qsTr("Sets the input texture.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.texture
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("Sets the texture enabled state.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.enabled.valueToString
backendValue: backendValues.enabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
TextureInputSection {
width: parent.width
}
}

View File

@@ -0,0 +1,392 @@
// 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("Texture")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Source")
tooltip: qsTr("Sets the location of an image file containing the data used by the texture.")
}
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.source
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Source Item")
tooltip: qsTr("Sets an item to be used as the source of the texture.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick.Item"
backendValue: backendValues.sourceItem
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Texture Data")
tooltip: qsTr("Sets a reference to a TextureData component which defines the contents and properties of raw texture data.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.TextureData"
backendValue: backendValues.textureData
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Scale")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.scaleU
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "U"
tooltip: qsTr("Sets how to scale the U texture coordinate when mapping to UV coordinates of a mesh.")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.scaleV
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "V"
tooltip: qsTr("Sets how to scale the V texture coordinate when mapping to UV coordinates of a mesh.")
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Flip V")
tooltip: qsTr("Sets the use of the vertically flipped coordinates.")
}
SecondColumnLayout {
CheckBox {
id: flipVcheckBox
text: backendValues.flipV.valueToString
backendValue: backendValues.flipV
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Flip U")
tooltip: qsTr("Sets the use of the horizontally flipped texture coordinates.")
}
SecondColumnLayout {
CheckBox {
id: flipUCheckBox
text: backendValues.flipU.valueToString
backendValue: backendValues.flipU
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Auto Orientation")
tooltip: qsTr("Sets if a texture transformation, such as flipping the V texture coordinate, is applied automatically for textures where this is typically relevant.")
}
SecondColumnLayout {
CheckBox {
id: autoOrientationCheckBox
text: backendValues.autoOrientation.valueToString
backendValue: backendValues.autoOrientation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Texture Mapping")
tooltip: qsTr("Sets which method of mapping to use when sampling this texture.")
}
SecondColumnLayout {
ComboBox {
scope: "Texture"
model: ["UV", "Environment", "LightProbe"]
backendValue: backendValues.mappingMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("U Tiling")
tooltip: qsTr("Sets how the texture is mapped when the U scaling value is greater than 1.")
}
SecondColumnLayout {
ComboBox {
scope: "Texture"
model: ["ClampToEdge", "MirroredRepeat", "Repeat"]
backendValue: backendValues.tilingModeHorizontal
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("V Tiling")
tooltip: qsTr("Sets how the texture is mapped when the V scaling value is greater than 1.")
}
SecondColumnLayout {
ComboBox {
scope: "Texture"
model: ["ClampToEdge", "MirroredRepeat", "Repeat"]
backendValue: backendValues.tilingModeVertical
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("UV Index")
tooltip: qsTr("Sets the UV coordinate index used by this texture.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.indexUV
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("UV Rotation")
tooltip: qsTr("Sets the rotation of the texture around the pivot point.")
}
SecondColumnLayout {
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 0
backendValue: backendValues.rotationUV
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Position")
}
SecondColumnLayout {
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 2
stepSize: 0.1
backendValue: backendValues.positionU
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "U"
tooltip: qsTr("Sets the U coordinate mapping offset from left to right.")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 2
stepSize: 0.1
backendValue: backendValues.positionV
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "V"
tooltip: qsTr("Sets the V coordinate mapping offset from bottom to top.")
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Pivot")
}
SecondColumnLayout {
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 2
stepSize: 0.1
backendValue: backendValues.pivotU
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "U"
tooltip: qsTr("Sets the pivot U position.")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 2
stepSize: 0.1
backendValue: backendValues.pivotV
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "V"
tooltip: qsTr("Sets the pivot V position.")
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Generate Mipmaps")
tooltip: qsTr("Sets if mipmaps are generated for textures that do not provide mipmap levels themselves.")
}
SecondColumnLayout {
CheckBox {
id: generateMipmapscheckBox
text: backendValues.generateMipmaps.valueToString
backendValue: backendValues.generateMipmaps
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Mag Filter")
tooltip: qsTr("Sets how the texture is sampled when a texel covers more than one pixel.")
}
SecondColumnLayout {
ComboBox {
scope: "Texture"
model: ["None", "Nearest", "Linear"]
backendValue: backendValues.magFilter
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Min Filter")
tooltip: qsTr("Sets how the texture is sampled when a texel covers more than one pixel.")
}
SecondColumnLayout {
ComboBox {
scope: "Texture"
model: ["None", "Nearest", "Linear"]
backendValue: backendValues.minFilter
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Mip Filter")
tooltip: qsTr("Sets how the texture mipmaps are sampled when a texel covers less than one pixel.")
}
SecondColumnLayout {
ComboBox {
scope: "Texture"
model: ["None", "Nearest", "Linear"]
backendValue: backendValues.mipFilter
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
TextureSection {
width: parent.width
}
}

View File

@@ -0,0 +1,79 @@
// 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("View3D")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Camera")
tooltip: qsTr("Sets which camera is used to render the scene.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Camera"
backendValue: backendValues.camera
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Environment")
tooltip: qsTr("Sets the scene environment used to render the scene.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.SceneEnvironment"
backendValue: backendValues.environment
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Import Scene")
tooltip: qsTr("Sets the reference node of the scene to render to the viewport.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.importScene
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Render Format")
tooltip: qsTr("Sets the format of the backing texture.")
}
SecondColumnLayout {
ComboBox {
scope: "ShaderEffectSource"
model: ["RGBA8", "RGBA16F", "RGBA32F"]
backendValue: backendValues.renderFormat
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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
Column {
width: parent.width
View3DSection {
width: parent.width
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More