blob: 11d53f951379305288249ba0b2f809dee2243148 (
plain)
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
|
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\example simplecustommaterial
\title Qt 3D: Simple Custom Material QML Example
\examplecategory {Data Visualization & 3D}
\ingroup qt3d-examples-qml
\brief Demonstrates creating a custom material in Qt 3D.
\image simple-custom-material.jpg
\e This example demonstrates creating a simple custom material.
\include examples-run.qdocinc
\section1 Specifying the Scene
The example uses \l Scene3D to render a scene which will use the custom material.
The scene contains a plane model, which uses the custom material.
\quotefromfile simplecustommaterial/PlaneModel.qml
\skipto Entity
\printto
\section1 Specifying the Material
The material is specified in \c {simplecustommaterial/SimpleMaterial.qml}
using \l Material type. First the material specifies parameters,
which are mapped to the corresponding uniforms in the shaders so that they can be
changed from the qml.
\snippet simplecustommaterial/SimpleMaterial.qml 0
Next we specify which shaders are loaded. Separate versions of the shaders are provided
for OpenGL ES 2 and OpenGL renderers.
\snippet simplecustommaterial/SimpleMaterial.qml 1
In the vertex shader we simply transform the position by the transformation matrices.
\quotefromfile simplecustommaterial/shaders/gl3/simpleColor.vert
\skipto void main()
\printto
In the fragment shader we simply set the fragment color to be the maincolor specified
in the material.
\quotefromfile simplecustommaterial/shaders/gl3/simpleColor.frag
\skipto uniform vec3 maincolor;
\printuntil ;
\skipto void main()
\printto
Next, we create \l {ShaderProgram}{ShaderPrograms} from the shaders.
\snippet simplecustommaterial/SimpleMaterial.qml 2
Finally the shader programs are used in the Techniques corresponding to a specific
Api profile.
\snippet simplecustommaterial/SimpleMaterial.qml 3
*/
|