1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
// 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
}
camera: camera
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"
}
]
}
PerspectiveCamera {
id: camera
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"
}
]
}
}
}
}
|