summaryrefslogtreecommitdiffstats
path: root/src/quick3d
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@qt.io>2016-06-20 13:59:56 +0300
committerTomi Korpipää <tomi.korpipaa@qt.io>2016-06-21 07:15:40 +0000
commite28a0063aab8af471f04f5d912c21844ac549874 (patch)
tree6e72d1aa83d1efbf621593999a025c9ba1ceb67f /src/quick3d
parent39a4b9ba5818f84e7ab8ba01d43bf8c5abb9fcf9 (diff)
Split effects from materials
Removes a lot of duplicate code. Also fixed alpha blending for PhongAlphaMaterial and NormalDiffuseMapAlphaMaterial Change-Id: Ib33cb874e64b6ac89d2473f1d0e03881b83c8d03 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d')
-rw-r--r--src/quick3d/imports/extras/defaults/defaults.pri2
-rw-r--r--src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml148
-rw-r--r--src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml104
-rw-r--r--src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml61
-rw-r--r--src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml62
-rw-r--r--src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml89
-rw-r--r--src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml64
-rw-r--r--src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml62
-rw-r--r--src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml62
-rw-r--r--src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml70
-rw-r--r--src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml107
-rw-r--r--src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml80
-rw-r--r--src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml91
-rw-r--r--src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp3
14 files changed, 339 insertions, 666 deletions
diff --git a/src/quick3d/imports/extras/defaults/defaults.pri b/src/quick3d/imports/extras/defaults/defaults.pri
index 28a1d1051..46028557d 100644
--- a/src/quick3d/imports/extras/defaults/defaults.pri
+++ b/src/quick3d/imports/extras/defaults/defaults.pri
@@ -6,6 +6,8 @@
# To have the plugin register them as types, add an entries to the
# qmldir array in qt3dquick3dextrasplugin.cpp
QML_FILES = \
+ $$PWD/qml/DefaultEffect.qml \
+ $$PWD/qml/DefaultAlphaEffect.qml \
$$PWD/qml/PhongMaterial.qml \
$$PWD/qml/DiffuseMapMaterial.qml \
$$PWD/qml/DiffuseSpecularMapMaterial.qml \
diff --git a/src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml b/src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml
new file mode 100644
index 000000000..c28fda4d1
--- /dev/null
+++ b/src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.0
+import Qt3D.Render 2.0
+
+Effect {
+ property string vertexES: "qrc:/shaders/es2/phong.vert"
+ property string fragmentES: "qrc:/shaders/es2/phongalpha.frag"
+ property string vertex: "qrc:/shaders/gl3/phong.vert"
+ property string fragment: "qrc:/shaders/gl3/phongalpha.frag"
+ property int sourceRgbArg: BlendEquationArguments.SourceAlpha
+ property int destinationRgbArg: BlendEquationArguments.OneMinusSourceAlpha
+ property int sourceAlphaArg: BlendEquationArguments.One
+ property int destinationAlphaArg: BlendEquationArguments.Zero
+ property int blendFunctionArg: BlendEquation.Add
+
+ FilterKey {
+ id: forward
+ name: "renderingStyle"
+ value: "forward"
+ }
+
+ ShaderProgram {
+ id: gl2Es2Shader
+ vertexShaderCode: loadSource(vertexES)
+ fragmentShaderCode: loadSource(fragmentES)
+ }
+
+ ShaderProgram {
+ id: gl3Shader
+ vertexShaderCode: loadSource(vertex)
+ fragmentShaderCode: loadSource(fragment)
+ }
+
+ techniques: [
+ // OpenGL 3.1
+ Technique {
+ filterKeys: [ forward ]
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGL
+ profile: GraphicsApiFilter.CoreProfile
+ majorVersion: 3
+ minorVersion: 1
+ }
+ renderPasses: RenderPass {
+ shaderProgram: gl3Shader
+ renderStates: [
+ BlendEquationArguments {
+ sourceRgb: sourceRgbArg
+ destinationRgb: destinationRgbArg
+ sourceAlpha: sourceAlphaArg
+ destinationAlpha: destinationAlphaArg
+ },
+ BlendEquation {
+ blendFunction: blendFunctionArg
+ }
+ ]
+ }
+ },
+
+ // OpenGL 2.1
+ Technique {
+ filterKeys: [ forward ]
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGL
+ profile: GraphicsApiFilter.NoProfile
+ majorVersion: 2
+ minorVersion: 0
+ }
+ renderPasses: RenderPass {
+ shaderProgram: gl2Es2Shader
+ renderStates: [
+ BlendEquationArguments {
+ sourceRgb: sourceRgbArg
+ destinationRgb: destinationRgbArg
+ sourceAlpha: sourceAlphaArg
+ destinationAlpha: destinationAlphaArg
+ },
+ BlendEquation {
+ blendFunction: blendFunctionArg
+ }
+ ]
+ }
+ },
+
+ // OpenGL ES 2
+ Technique {
+ filterKeys: [ forward ]
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGLES
+ profile: GraphicsApiFilter.NoProfile
+ majorVersion: 2
+ minorVersion: 0
+ }
+ renderPasses: RenderPass {
+ shaderProgram: gl2Es2Shader
+ renderStates: [
+ BlendEquationArguments {
+ sourceRgb: sourceRgbArg
+ destinationRgb: destinationRgbArg
+ sourceAlpha: sourceAlphaArg
+ destinationAlpha: destinationAlphaArg
+ },
+ BlendEquation {
+ blendFunction: blendFunctionArg
+ }
+ ]
+ }
+ }
+ ]
+}
diff --git a/src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml b/src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml
new file mode 100644
index 000000000..fed87c94d
--- /dev/null
+++ b/src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.0
+import Qt3D.Render 2.0
+
+Effect {
+ property string vertexES: "qrc:/shaders/es2/phong.vert"
+ property string fragmentES: "qrc:/shaders/es2/phong.frag"
+ property string vertex: "qrc:/shaders/gl3/phong.vert"
+ property string fragment: "qrc:/shaders/gl3/phong.frag"
+
+ FilterKey {
+ id: forward
+ name: "renderingStyle"
+ value: "forward"
+ }
+
+ ShaderProgram {
+ id: gl2Es2Shader
+ vertexShaderCode: loadSource(vertexES)
+ fragmentShaderCode: loadSource(fragmentES)
+ }
+
+ ShaderProgram {
+ id: gl3Shader
+ vertexShaderCode: loadSource(vertex)
+ fragmentShaderCode: loadSource(fragment)
+ }
+
+ techniques: [
+ // OpenGL 3.1
+ Technique {
+ filterKeys: [ forward ]
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGL
+ profile: GraphicsApiFilter.CoreProfile
+ majorVersion: 3
+ minorVersion: 1
+ }
+ renderPasses: RenderPass { shaderProgram: gl3Shader }
+ },
+
+ // OpenGL 2.1
+ Technique {
+ filterKeys: [ forward ]
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGL
+ profile: GraphicsApiFilter.NoProfile
+ majorVersion: 2
+ minorVersion: 0
+ }
+ renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
+ },
+
+ // OpenGL ES 2
+ Technique {
+ filterKeys: [ forward ]
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGLES
+ profile: GraphicsApiFilter.NoProfile
+ majorVersion: 2
+ minorVersion: 0
+ }
+ renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
+ }
+ ]
+}
diff --git a/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml
index 6e5a843b0..4b49d76de 100644
--- a/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml
@@ -71,62 +71,11 @@ Material {
Parameter { name: "texCoordScale"; value: textureScale }
]
- effect: Effect {
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- ShaderProgram {
- id: gl2Es2Shader
- vertexShaderCode: loadSource("qrc:/shaders/es2/diffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/diffusemap.frag")
- }
-
- ShaderProgram {
- id: gl3Shader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/diffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/diffusemap.frag")
- }
-
- techniques: [
- // OpenGL 3.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass { shaderProgram: gl3Shader }
- },
-
- // OpenGL 2.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- },
-
- // OpenGL ES 2
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/diffusemap.vert"
+ fragmentES: "qrc:/shaders/es2/diffusemap.frag"
+ vertex: "qrc:/shaders/gl3/diffusemap.vert"
+ fragment: "qrc:/shaders/gl3/diffusemap.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml
index e5ec0562a..629cb6d11 100644
--- a/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml
@@ -84,62 +84,10 @@ Material {
Parameter { name: "texCoordScale"; value: textureScale }
]
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- ShaderProgram {
- id: gl2Es2Shader
- vertexShaderCode: loadSource("qrc:/shaders/es2/diffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/diffusespecularmap.frag")
- }
-
- ShaderProgram {
- id: gl3Shader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/diffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/diffusespecularmap.frag")
- }
-
- techniques: [
- // OpenGL 3.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass { shaderProgram: gl3Shader }
- },
-
- // OpenGL 2.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- },
-
- // OpenGL ES 2
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/diffusemap.vert"
+ fragmentES: "qrc:/shaders/es2/diffusespecularmap.frag"
+ vertex: "qrc:/shaders/gl3/diffusemap.vert"
+ fragment: "qrc:/shaders/gl3/diffusespecularmap.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml b/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml
index 51c656ae0..fffa2284d 100644
--- a/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml
@@ -41,7 +41,8 @@ import Qt3D.Core 2.0
import Qt3D.Render 2.0
Material {
- id:root
+ id: root
+
property color diffuse: Qt.rgba( 0.0, 0.0, 0.0, 1.0 )
property color specular: Qt.rgba( 0.0, 0.0, 0.0, 1.0 )
property color coolColor: Qt.rgba( 0.0, 0.0, 0.4, 1.0 )
@@ -50,79 +51,21 @@ Material {
property real beta: 0.5
property real shininess: 100.0
- ShaderProgram {
- id: gl3GoochShader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/gooch.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/gooch.frag")
- }
-
- ShaderProgram {
- id: gl2es2GoochShader
- vertexShaderCode: loadSource("qrc:/shaders/es2/gooch.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/gooch.frag")
- }
-
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- parameters: [
- Parameter { name: "kd"; value: root.diffuse },
- Parameter { name: "ks"; value: root.specular },
- Parameter { name: "kblue"; value: root.coolColor },
- Parameter { name: "kyellow"; value: root.warmColor },
- Parameter { name: "alpha"; value: root.alpha },
- Parameter { name: "beta"; value: root.beta },
- Parameter { name: "shininess"; value: root.shininess }
- ]
-
- techniques: [
- // GL 3 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 2
- }
- renderPasses: RenderPass {
- shaderProgram: gl3GoochShader
- }
- },
-
- // GL 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2GoochShader
- }
- },
+ parameters: [
+ Parameter { name: "kd"; value: root.diffuse },
+ Parameter { name: "ks"; value: root.specular },
+ Parameter { name: "kblue"; value: root.coolColor },
+ Parameter { name: "kyellow"; value: root.warmColor },
+ Parameter { name: "alpha"; value: root.alpha },
+ Parameter { name: "beta"; value: root.beta },
+ Parameter { name: "shininess"; value: root.shininess }
+ ]
- // ES 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2GoochShader
- }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/gooch.vert"
+ fragmentES: "qrc:/shaders/es2/gooch.frag"
+ vertex: "qrc:/shaders/gl3/gooch.vert"
+ fragment: "qrc:/shaders/gl3/gooch.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml
index 6dfbf98c1..2fa75b842 100644
--- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml
@@ -86,65 +86,11 @@ Material {
Parameter { name: "texCoordScale"; value: textureScale }
]
- effect: Effect {
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- ShaderProgram {
- id: gl2Es2Shader
- vertexShaderCode: loadSource("qrc:/shaders/es2/normaldiffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/normaldiffusemapalpha.frag")
- }
-
- ShaderProgram {
- id: gl3Shader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/normaldiffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/normaldiffusemapalpha.frag")
- }
-
- AlphaCoverage { id: alphaCoverageState }
- DepthTest { id: depthTestState; depthFunction: DepthTest.Less }
-
- techniques: [
- // OpenGL 3.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass { shaderProgram: gl3Shader; renderStates: [alphaCoverageState, depthTestState] }
- },
-
- // OpenGL 2.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader; renderStates: [alphaCoverageState, depthTestState] }
- },
-
- // OpenGL ES 2
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader; renderStates: [alphaCoverageState, depthTestState] }
- }
- ]
+ effect: DefaultAlphaEffect {
+ vertexES: "qrc:/shaders/es2/normaldiffusemap.vert"
+ fragmentES: "qrc:/shaders/es2/normaldiffusemapalpha.frag"
+ vertex: "qrc:/shaders/gl3/normaldiffusemap.vert"
+ fragment: "qrc:/shaders/gl3/normaldiffusemapalpha.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml
index eeb1d33d4..17bd2fb27 100644
--- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml
@@ -86,63 +86,11 @@ Material {
Parameter { name: "texCoordScale"; value: textureScale }
]
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- ShaderProgram {
- id: gl2Es2Shader
- vertexShaderCode: loadSource("qrc:/shaders/es2/normaldiffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/normaldiffusemap.frag")
- }
-
- ShaderProgram {
- id: gl3Shader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/normaldiffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/normaldiffusemap.frag")
- }
-
- techniques: [
- // OpenGL 3.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass { shaderProgram: gl3Shader }
- },
-
- // OpenGL 2.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- },
-
- // OpenGL ES 2
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/normaldiffusemap.vert"
+ fragmentES: "qrc:/shaders/es2/normaldiffusemap.frag"
+ vertex: "qrc:/shaders/gl3/normaldiffusemap.vert"
+ fragment: "qrc:/shaders/gl3/normaldiffusemap.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml
index d2c0efda0..e5dc3b52b 100644
--- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml
@@ -99,63 +99,11 @@ Material {
Parameter { name: "texCoordScale"; value: textureScale }
]
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- ShaderProgram {
- id: gl2Es2Shader
- vertexShaderCode: loadSource("qrc:/shaders/es2/normaldiffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/normaldiffusespecularmap.frag")
- }
-
- ShaderProgram {
- id: gl3Shader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/normaldiffusemap.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/normaldiffusespecularmap.frag")
- }
-
- techniques: [
- // OpenGL 3.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass { shaderProgram: gl3Shader }
- },
-
- // OpenGL 2.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- },
-
- // OpenGL ES 2
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass { shaderProgram: gl2Es2Shader }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/normaldiffusemap.vert"
+ fragmentES: "qrc:/shaders/es2/normaldiffusespecularmap.frag"
+ vertex: "qrc:/shaders/gl3/normaldiffusemap.vert"
+ fragment: "qrc:/shaders/gl3/normaldiffusespecularmap.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml b/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml
index 9e286f459..70c461edd 100644
--- a/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml
@@ -41,71 +41,13 @@ import Qt3D.Core 2.0
import Qt3D.Render 2.0
Material {
- id:root
+ id: root
- ShaderProgram {
- id: gl3PerVertexColorShader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/pervertexcolor.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/pervertexcolor.frag")
- }
-
- ShaderProgram {
- id: gl2es2PerVertexColorShader
- vertexShaderCode: loadSource("qrc:/shaders/es2/pervertexcolor.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/pervertexcolor.frag")
- }
-
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- techniques: [
- // GL 3 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass {
- shaderProgram: gl3PerVertexColorShader
- }
- },
-
- // GL 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2PerVertexColorShader
- }
- },
-
- // ES 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2PerVertexColorShader
- }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/pervertexcolor.vert"
+ fragmentES: "qrc:/shaders/es2/pervertexcolor.frag"
+ vertex: "qrc:/shaders/gl3/pervertexcolor.vert"
+ fragment: "qrc:/shaders/gl3/pervertexcolor.frag"
}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml b/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml
index 295d8abd1..4892306b6 100644
--- a/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml
@@ -41,109 +41,22 @@ import Qt3D.Core 2.0
import Qt3D.Render 2.0
Material {
- id:root
+ id: root
+
property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 )
property color diffuse: Qt.rgba( 0.7, 0.7, 0.7, 1.0 )
property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 )
property real shininess: 150.0
property real alpha: 0.5
+ parameters: [
+ Parameter { name: "alpha"; value: root.alpha },
+ Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) },
+ Parameter { name: "kd"; value: Qt.vector3d(root.diffuse.r, root.diffuse.g, root.diffuse.b) },
+ Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) },
+ Parameter { name: "shininess"; value: root.shininess }
+ ]
- ShaderProgram {
- id: gl3PhongAlphaShader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/phong.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/phongalpha.frag")
- }
-
- ShaderProgram {
- id: gl2es2PhongAlphaShader
- vertexShaderCode: loadSource("qrc:/shaders/es2/phong.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/phongalpha.frag")
- }
-
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- parameters: [
- Parameter { name: "alpha"; value: root.alpha },
- Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) },
- Parameter { name: "kd"; value: Qt.vector3d(root.diffuse.r, root.diffuse.g, root.diffuse.b) },
- Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) },
- Parameter { name: "shininess"; value: root.shininess }
- ]
-
- techniques: [
- // GL 3 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass {
- shaderProgram: gl3PhongAlphaShader
- renderStates: [
- NoDepthMask { },
- BlendEquationArguments {
- sourceRgb: BlendEquationArguments.SourceAlpha
- destinationRgb: BlendEquationArguments.OneMinusSourceAlpha
- },
- BlendEquation {blendFunction: BlendEquation.Add}
- ]
- }
- },
-
- // GL 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2PhongAlphaShader
- renderStates: [
- NoDepthMask { },
- BlendEquationArguments {
- sourceRgb: BlendEquationArguments.SourceAlpha
- destinationRgb: BlendEquationArguments.OneMinusSourceAlpha
- },
- BlendEquation {blendFunction: BlendEquation.Add}
- ]
- }
- },
-
- // ES 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2PhongAlphaShader
- renderStates: [
- NoDepthMask { },
- BlendEquationArguments {
- sourceRgb: BlendEquationArguments.SourceAlpha
- destinationRgb: BlendEquationArguments.OneMinusSourceAlpha
- },
- BlendEquation {blendFunction: BlendEquation.Add}
- ]
- }
- }
- ]
- }
+ effect: DefaultAlphaEffect {}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml b/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml
index e60bcefc8..5b770a56d 100644
--- a/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml
@@ -47,77 +47,13 @@ Material {
property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 )
property real shininess: 150.0
-
- ShaderProgram {
- id: gl3PhongShader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/phong.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/phong.frag")
- }
-
- ShaderProgram {
- id: gl2es2PhongShader
- vertexShaderCode: loadSource("qrc:/shaders/es2/phong.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/phong.frag")
- }
-
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
- }
-
- parameters: [
- Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) },
- Parameter { name: "kd"; value: Qt.vector3d(root.diffuse.r, root.diffuse.g, root.diffuse.b) },
- Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) },
- Parameter { name: "shininess"; value: root.shininess }
- ]
-
- techniques: [
- // GL 3 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass {
- shaderProgram: gl3PhongShader
- }
- },
-
- // GL 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2PhongShader
- }
- },
-
- // ES 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2PhongShader
- }
- }
- ]
- }
+ parameters: [
+ Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) },
+ Parameter { name: "kd"; value: Qt.vector3d(root.diffuse.r, root.diffuse.g, root.diffuse.b) },
+ Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) },
+ Parameter { name: "shininess"; value: root.shininess }
+ ]
+
+ effect: DefaultEffect {}
}
diff --git a/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml b/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml
index 28d3a1713..387d8d4aa 100644
--- a/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml
+++ b/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml
@@ -42,84 +42,27 @@ import Qt3D.Render 2.0
Material {
id: root
+
property Texture2D texture: Texture2D {}
property alias textureOffset: texCoordOffset.offset
- ShaderProgram {
- id: gl3Shader
- vertexShaderCode: loadSource("qrc:/shaders/gl3/unlittexture.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/gl3/unlittexture.frag")
- }
-
- ShaderProgram {
- id: gl2es2Shader
- vertexShaderCode: loadSource("qrc:/shaders/es2/unlittexture.vert")
- fragmentShaderCode: loadSource("qrc:/shaders/es2/unlittexture.frag")
- }
-
- effect: Effect {
-
- FilterKey {
- id: forward
- name: "renderingStyle"
- value: "forward"
+ parameters: [
+ Parameter {
+ name: "diffuseTexture"
+ value: root.texture
+ },
+ Parameter {
+ id: texCoordOffset
+ property vector2d offset: Qt.vector2d(0, 0)
+ name: "texCoordOffset"
+ value: offset
}
+ ]
- parameters: [
- Parameter {
- name: "diffuseTexture"
- value: root.texture
- },
- Parameter {
- id: texCoordOffset
- property vector2d offset: Qt.vector2d(0, 0)
- name: "texCoordOffset"
- value: offset
- }
-
- ]
-
- techniques: [
- // OpenGL 3.1
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- profile: GraphicsApiFilter.CoreProfile
- majorVersion: 3
- minorVersion: 1
- }
- renderPasses: RenderPass {
- shaderProgram: gl3Shader
- }
- },
-
- // GL 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2Shader
- }
- },
-
- // ES 2 Technique
- Technique {
- filterKeys: [ forward ]
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGLES
- profile: GraphicsApiFilter.NoProfile
- majorVersion: 2
- minorVersion: 0
- }
- renderPasses: RenderPass {
- shaderProgram: gl2es2Shader
- }
- }
- ]
+ effect: DefaultEffect {
+ vertexES: "qrc:/shaders/es2/unlittexture.vert"
+ fragmentES: "qrc:/shaders/es2/unlittexture.frag"
+ vertex: "qrc:/shaders/gl3/unlittexture.vert"
+ fragment: "qrc:/shaders/gl3/unlittexture.frag"
}
}
diff --git a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
index c9e3cdfc9..7b5f138ae 100644
--- a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
+++ b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
@@ -69,6 +69,9 @@ static const struct {
{ "PerVertexColorMaterial", 2, 0 },
{ "GoochMaterial", 2, 0 },
{ "TextureMaterial", 2, 0 },
+ // Effects
+ { "DefaultEffect", 2, 0 },
+ { "DefaultAlphaEffect", 2, 0 },
// FrameGraphs
{ "ForwardRenderer", 2, 0 },
// Entities