summaryrefslogtreecommitdiffstats
path: root/src/render/materialsystem
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/materialsystem')
-rw-r--r--src/render/materialsystem/qshaderprogram.cpp242
-rw-r--r--src/render/materialsystem/shaderbuilder.cpp8
2 files changed, 250 insertions, 0 deletions
diff --git a/src/render/materialsystem/qshaderprogram.cpp b/src/render/materialsystem/qshaderprogram.cpp
index e6f9631d0..0ca8a9947 100644
--- a/src/render/materialsystem/qshaderprogram.cpp
+++ b/src/render/materialsystem/qshaderprogram.cpp
@@ -54,6 +54,127 @@
\since 5.5
A shader program consists of several different shaders, such as vertex and fragment shaders.
+
+ Qt3D will automatically populate a set of default uniforms if they are
+ encountered during the shader instrospection phase.
+
+ \table
+ \header
+ \li {1, 1} Default Uniform
+ \li {2, 1} Associated Qt3D Parameter name
+ \li {3, 1} GLSL declaration
+
+ \row
+ \li {1, 1} ModelMatrix
+ \li {2, 1} modelMatrix
+ \li {3, 1} uniform mat4 modelMatrix;
+
+ \row
+ \li {1, 1} ViewMatrix
+ \li {2, 1} viewMatrix
+ \li {3, 1} uniform mat4 viewMatrix;
+
+ \row
+ \li {1, 1} ProjectionMatrix
+ \li {2, 1} projectionMatrix
+ \li {3, 1} uniform mat4 projectionMatrix;
+
+ \row
+ \li {1, 1} ModelViewMatrix
+ \li {2, 1} modelView
+ \li {3, 1} uniform mat4 modelView;
+
+ \row
+ \li {1, 1} ViewProjectionMatrix
+ \li {2, 1} viewProjectionMatrix
+ \li {3, 1} uniform mat4 viewProjectionMatrix;
+
+ \row
+ \li {1, 1} ModelViewProjectionMatrix
+ \li {2, 1} modelViewProjection \br mvp
+ \li {3, 1} uniform mat4 modelViewProjection; \br uniform mat4 mvp;
+
+ \row
+ \li {1, 1} InverseModelMatrix
+ \li {2, 1} inverseModelMatrix
+ \li {3, 1} uniform mat4 inverseModelMatrix;
+
+ \row
+ \li {1, 1} InverseViewMatrix
+ \li {2, 1} inverseViewMatrix
+ \li {3, 1} uniform mat4 inverseViewMatrix;
+
+ \row
+ \li {1, 1} InverseProjectionMatrix
+ \li {2, 1} inverseProjectionMatrix
+ \li {3, 1} uniform mat4 inverseProjectionMatrix;
+
+ \row
+ \li {1, 1} InverseModelViewMatrix
+ \li {2, 1} inverseModelView
+ \li {3, 1} uniform mat4 inverseModelView;
+
+ \row
+ \li {1, 1} InverseViewProjectionMatrix
+ \li {2, 1} inverseViewProjectionMatrix
+ \li {3, 1} uniform mat4 inverseViewProjectionMatrix;
+
+ \row
+ \li {1, 1} InverseModelViewProjectionMatrix
+ \li {2, 1} inverseModelViewProjection
+ \li {3, 1} uniform mat4 inverseModelViewProjection;
+
+ \row
+ \li {1, 1} ModelNormalMatrix
+ \li {2, 1} modelNormalMatrix
+ \li {3, 1} uniform mat3 modelNormalMatrix;
+
+ \row
+ \li {1, 1} ModelViewNormalMatrix
+ \li {2, 1} modelViewNormal
+ \li {3, 1} uniform mat3 modelViewNormal;
+
+ \row
+ \li {1, 1} ViewportMatrix
+ \li {2, 1} viewportMatrix
+ \li {3, 1} uniform mat4 viewportMatrix;
+
+ \row
+ \li {1, 1} InverseViewportMatrix
+ \li {2, 1} inverseViewportMatrix
+ \li {3, 1} uniform mat4 inverseViewportMatrix;
+
+ \row
+ \li {1, 1} AspectRatio \br (surface width / surface height)
+ \li {2, 1} aspectRatio
+ \li {3, 1} uniform float aspectRatio;
+
+ \row
+ \li {1, 1} Exposure
+ \li {2, 1} exposure
+ \li {3, 1} uniform float exposure;
+
+ \row
+ \li {1, 1} Gamma
+ \li {2, 1} gamma
+ \li {3, 1} uniform float gamma;
+
+ \row
+ \li {1, 1} Time \br (in nano seconds)
+ \li {2, 1} time
+ \li {3, 1} uniform float time;
+
+ \row
+ \li {1, 1} EyePosition
+ \li {2, 1} eyePosition
+ \li {3, 1} uniform vec3 eyePosition;
+
+ \row
+ \li {1, 1} SkinningPalette
+ \li {2, 1} skinningPalette[0]
+ \li {3, 1} const int maxJoints = 100; \br uniform mat4 skinningPalette[maxJoints];
+
+ \endtable
*/
/*!
@@ -65,6 +186,127 @@
ShaderProgram class encapsulates a shader program. A shader program consists of several
different shaders, such as vertex and fragment shaders.
+
+ Qt3D will automatically populate a set of default uniforms if they are
+ encountered during the shader instrospection phase.
+
+ \table
+ \header
+ \li {1, 1} Default Uniform
+ \li {2, 1} Associated Qt3D Parameter name
+ \li {3, 1} GLSL declaration
+
+ \row
+ \li {1, 1} ModelMatrix
+ \li {2, 1} modelMatrix
+ \li {3, 1} uniform mat4 modelMatrix;
+
+ \row
+ \li {1, 1} ViewMatrix
+ \li {2, 1} viewMatrix
+ \li {3, 1} uniform mat4 viewMatrix;
+
+ \row
+ \li {1, 1} ProjectionMatrix
+ \li {2, 1} projectionMatrix
+ \li {3, 1} uniform mat4 projectionMatrix;
+
+ \row
+ \li {1, 1} ModelViewMatrix
+ \li {2, 1} modelView
+ \li {3, 1} uniform mat4 modelView;
+
+ \row
+ \li {1, 1} ViewProjectionMatrix
+ \li {2, 1} viewProjectionMatrix
+ \li {3, 1} uniform mat4 viewProjectionMatrix;
+
+ \row
+ \li {1, 1} ModelViewProjectionMatrix
+ \li {2, 1} modelViewProjection \br mvp
+ \li {3, 1} uniform mat4 modelViewProjection; \br uniform mat4 mvp;
+
+ \row
+ \li {1, 1} InverseModelMatrix
+ \li {2, 1} inverseModelMatrix
+ \li {3, 1} uniform mat4 inverseModelMatrix;
+
+ \row
+ \li {1, 1} InverseViewMatrix
+ \li {2, 1} inverseViewMatrix
+ \li {3, 1} uniform mat4 inverseViewMatrix;
+
+ \row
+ \li {1, 1} InverseProjectionMatrix
+ \li {2, 1} inverseProjectionMatrix
+ \li {3, 1} uniform mat4 inverseProjectionMatrix;
+
+ \row
+ \li {1, 1} InverseModelViewMatrix
+ \li {2, 1} inverseModelView
+ \li {3, 1} uniform mat4 inverseModelView;
+
+ \row
+ \li {1, 1} InverseViewProjectionMatrix
+ \li {2, 1} inverseViewProjectionMatrix
+ \li {3, 1} uniform mat4 inverseViewProjectionMatrix;
+
+ \row
+ \li {1, 1} InverseModelViewProjectionMatrix
+ \li {2, 1} inverseModelViewProjection
+ \li {3, 1} uniform mat4 inverseModelViewProjection;
+
+ \row
+ \li {1, 1} ModelNormalMatrix
+ \li {2, 1} modelNormalMatrix
+ \li {3, 1} uniform mat3 modelNormalMatrix;
+
+ \row
+ \li {1, 1} ModelViewNormalMatrix
+ \li {2, 1} modelViewNormal
+ \li {3, 1} uniform mat3 modelViewNormal;
+
+ \row
+ \li {1, 1} ViewportMatrix
+ \li {2, 1} viewportMatrix
+ \li {3, 1} uniform mat4 viewportMatrix;
+
+ \row
+ \li {1, 1} InverseViewportMatrix
+ \li {2, 1} inverseViewportMatrix
+ \li {3, 1} uniform mat4 inverseViewportMatrix;
+
+ \row
+ \li {1, 1} AspectRatio \br (surface width / surface height)
+ \li {2, 1} aspectRatio
+ \li {3, 1} uniform float aspectRatio;
+
+ \row
+ \li {1, 1} Exposure
+ \li {2, 1} exposure
+ \li {3, 1} uniform float exposure;
+
+ \row
+ \li {1, 1} Gamma
+ \li {2, 1} gamma
+ \li {3, 1} uniform float gamma;
+
+ \row
+ \li {1, 1} Time \br (in nano seconds)
+ \li {2, 1} time
+ \li {3, 1} uniform float time;
+
+ \row
+ \li {1, 1} EyePosition
+ \li {2, 1} eyePosition
+ \li {3, 1} uniform vec3 eyePosition;
+
+ \row
+ \li {1, 1} SkinningPalette
+ \li {2, 1} skinningPalette[0]
+ \li {3, 1} const int maxJoints = 100; \br uniform mat4 skinningPalette[maxJoints];
+
+ \endtable
*/
/*!
diff --git a/src/render/materialsystem/shaderbuilder.cpp b/src/render/materialsystem/shaderbuilder.cpp
index c2b32ce86..da1e6a713 100644
--- a/src/render/materialsystem/shaderbuilder.cpp
+++ b/src/render/materialsystem/shaderbuilder.cpp
@@ -51,6 +51,13 @@
#include <QFileInfo>
#include <QUrl>
+static void initResources()
+{
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(materialsystem);
+#endif
+}
+
QT_BEGIN_NAMESPACE
class GlobalShaderPrototypes
@@ -58,6 +65,7 @@ class GlobalShaderPrototypes
public:
GlobalShaderPrototypes()
{
+ initResources();
setPrototypesFile(QStringLiteral(":/prototypes/default.json"));
}