Revision control
Copy as Markdown
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick3D
import QtQuick
Rectangle {
width: 400
height: 400
color: Qt.rgba(0, 0, 0, 1)
View3D {
id: v3d
anchors.fill: parent
environment: SceneEnvironment {
clearColor: "#444845"
backgroundMode: SceneEnvironment.Color
}
InstanceList {
id: manualInstancing
instances: [
InstanceListEntry {
position: Qt.vector3d(0, 0, 0)
scale: Qt.vector3d(0.5, 0.5, 0.5)
},
InstanceListEntry {
position: Qt.vector3d(50, 200, 50)
scale: Qt.vector3d(0.5, 0.5, 0.5)
color: "#7f7f7f"
}
]
}
camera: PerspectiveCamera {
position: Qt.vector3d(0, 0, 600)
}
DirectionalLight {
position: Qt.vector3d(-500, 500, -100)
color: Qt.rgba(0.2, 0.2, 0.2, 1.0)
ambientColor: Qt.rgba(0.1, 0.1, 0.1, 1.0)
}
property real time: 10
property real amplitude: 20
// just vertex, just fragment, both
Node {
id: rootNode
Model {
source: "#Sphere"
instancing: manualInstancing
instanceRoot: rootNode
scale: Qt.vector3d(2, 2, 2)
x: -200
materials: [
CustomMaterial {
property alias time: v3d.time
property alias amplitude: v3d.amplitude
vertexShader: "customsimple.vert"
}
]
}
Model {
source: "#Sphere"
instancing: manualInstancing
instanceRoot: rootNode
scale: Qt.vector3d(2, 2, 2)
materials: [
CustomMaterial {
fragmentShader: "customsimple.frag"
}
]
}
Model {
source: "#Sphere"
instancing: manualInstancing
instanceRoot: rootNode
scale: Qt.vector3d(2, 2, 2)
x: 200
materials: [
CustomMaterial {
property alias time: v3d.time
property alias amplitude: v3d.amplitude
vertexShader: "customsimple.vert"
fragmentShader: "customsimple.frag"
}
]
}
// Vertex shaders variant that do not override POSITION value
Model {
source: "#Sphere"
instancing: manualInstancing
instanceRoot: rootNode
scale: Qt.vector3d(2, 2, 2)
x: -200
y: -200
materials: [
CustomMaterial {
property alias time: v3d.time
property alias amplitude: v3d.amplitude
vertexShader: "customsimple_no_position.vert"
}
]
}
Model {
source: "#Sphere"
instancing: manualInstancing
instanceRoot: rootNode
scale: Qt.vector3d(2, 2, 2)
x: 200
y: -200
materials: [
CustomMaterial {
property alias time: v3d.time
property alias amplitude: v3d.amplitude
vertexShader: "customsimple_no_position.vert"
fragmentShader: "customsimple.frag"
}
]
}
}
}
}