diff options
Diffstat (limited to 'src/render/materialsystem')
-rw-r--r-- | src/render/materialsystem/qshaderprogram.cpp | 242 | ||||
-rw-r--r-- | src/render/materialsystem/shaderbuilder.cpp | 8 |
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")); } |