393 lines
13 KiB
QML
393 lines
13 KiB
QML
// 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 {}
|
|
}
|
|
}
|
|
}
|