diff --git a/share/qtcreator/qmldesigner/nodegrapheditor/Main.qml b/share/qtcreator/qmldesigner/nodegrapheditor/Main.qml index a070b2ab2c1..65e8eb9d795 100644 --- a/share/qtcreator/qmldesigner/nodegrapheditor/Main.qml +++ b/share/qtcreator/qmldesigner/nodegrapheditor/Main.qml @@ -73,6 +73,9 @@ Item { case "Metalness": n = graphView.graph.insertNode(Nodes.Components.metalness); break; + case "Occlusion": + n = graphView.graph.insertNode(Nodes.Components.occlusion); + break; case "BaseColor": n = graphView.graph.insertNode(Nodes.Components.baseColor); break; diff --git a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Editor/ContextMenu.qml b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Editor/ContextMenu.qml index bc38c7c7a98..85da01e0c49 100644 --- a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Editor/ContextMenu.qml +++ b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Editor/ContextMenu.qml @@ -43,6 +43,14 @@ StudioControls.Menu { } } + StudioControls.MenuItem { + text: qsTr("Occlusion") + + onTriggered: () => { + internal.createNode(Nodes.Components.occlusion); + } + } + StudioControls.MenuItem { text: qsTr("Roughness") diff --git a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Components.qml b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Components.qml index 2472b3de914..2d5cfbe56c9 100644 --- a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Components.qml +++ b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Components.qml @@ -37,6 +37,10 @@ QtObject { Roughness { } } + readonly property Component occlusion: Component { + Occlusion { + } + } readonly property Component texture: Component { Texture { } diff --git a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Material.qml b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Material.qml index 774d26858b2..50d55ee56b9 100644 --- a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Material.qml +++ b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Material.qml @@ -77,6 +77,23 @@ Base { }); } }, + { + id: "principledmaterial_in_occlusion", + alias: "", + name: "Occlusion", + type: "nge::Occlusion", + binding: values => { + root.value.occlussion = Qt.binding(() => { + return values.occlusion; + }); + root.value.occlusionChannel = Qt.binding(() => { + return values.channel; + }); + root.value.occlusionMap = Qt.binding(() => { + return values.map; + }); + } + }, ] property var pout: [] } diff --git a/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Occlusion.qml b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Occlusion.qml new file mode 100644 index 00000000000..fcbc3c9bbd0 --- /dev/null +++ b/share/qtcreator/qmldesigner/nodegrapheditor/imports/Nodes/Occlusion.qml @@ -0,0 +1,61 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick +import QtQuick.Layouts + +import QtQuick3D as QtQuick3D + +Base { + id: root + + readonly property QtObject reset: QtObject { + property int channel + property QtQuick3D.Texture map + property real occlusion + } + readonly property QtObject value: QtObject { + property int channel + property QtQuick3D.Texture map + property real occlusion + } + + Layout.preferredHeight: 150 + Layout.preferredWidth: 150 + type: "Occlusion" + + portsMetaData: QtObject { + property var pin: [ + { + id: "occlusion", + alias: "occlusion", + name: "Occlusion", + type: "real" + }, + { + id: "occlusion_in_occlusionChannel", + alias: "channel", + name: "Channel", + type: "QQuick3DMaterial::TextureChannelMapping" + }, + { + id: "occlusion_in_occlusionMap ", + alias: "map", + name: "Map", + type: "Texture" + }, + ] + property var pout: [ + { + id: "occlusion_out", + alias: "", + name: "OUT", + type: "nge::Occlusion" + }, + ] + } + + Component.onCompleted: { + node.label = "Occlusion"; + } +}