summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-07-07 13:08:17 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-07-07 14:18:03 +0200
commit188f4d75cdf330f47fa71ade81525b6afde63a58 (patch)
treee20135e4ad04877a436a141ff97bd1c5194846bc /examples
parentf5c6560547f9d4a1dc08b1f4f0eec5d9653010fc (diff)
Automatic uniform binding
If the shader contains a uniform with a standard uniform name, it will automatically be set. If a custom name is used within a shader for a standard uniform variable, the user can add a ParameterMapper with parameterName set to the Qt3D standardUniform name and shaderVariableName to the custom name. For user specified uniform parameters, if the parameter name is the same as the shader uniform name, the binding is done automatically. Otherwise, a ParameterMapper can be used. At the moment automatic binding for Attributes still has to be sorted out as default attribute names are dependent on a given MeshData. Change-Id: If244b26e5c2b01c8b319ba78c57fb1e131736dcb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/simple-qml/main.qml20
1 files changed, 6 insertions, 14 deletions
diff --git a/examples/simple-qml/main.qml b/examples/simple-qml/main.qml
index ec3223672..c478131ea 100644
--- a/examples/simple-qml/main.qml
+++ b/examples/simple-qml/main.qml
@@ -239,7 +239,6 @@ Entity {
techniques : [
Technique {
criteria : [TechniqueCriterion { criterionType : TechniqueCriterion.RenderingStyle; criterionValue : "forward"}]
- parameters : [Parameter { name : "mVP"; value : Parameter.ModelViewProjection}]
renderPasses : [
RenderPass {
criteria : []
@@ -247,24 +246,24 @@ Entity {
ParameterMapper {parameterName: "position"; shaderVariableName: "vertexPosition"; bindingType: ParameterMapper.Attribute},
ParameterMapper {parameterName: "texcoord"; shaderVariableName: "texCoord0"; bindingType: ParameterMapper.Attribute},
ParameterMapper {parameterName: "tex"; shaderVariableName: "texture"; bindingType: ParameterMapper.Uniform},
- ParameterMapper {parameterName: "mVP"; shaderVariableName: "mvp"; bindingType: ParameterMapper.StandardUniform}
+ ParameterMapper {parameterName: "modelViewProjection"; shaderVariableName: "customMvp"; bindingType: ParameterMapper.StandardUniform}
]
shaderProgram : ShaderProgram {
id : textureShader
vertexShader: "
#version 140
- in vec3 vertexPosition;
+ in vec4 vertexPosition;
in vec3 vertexNormal;
in vec2 texCoord0;
out vec2 texCoord;
- uniform mat4 mvp;
+ uniform mat4 customMvp;
void main()
{
texCoord = texCoord0;
- gl_Position = mvp * vec4(vertexPosition, 1.0);
+ gl_Position = customMvp * vertexPosition;
}"
fragmentShader: "
@@ -321,11 +320,7 @@ Entity {
Technique {
criteria : [TechniqueCriterion { criterionType : TechniqueCriterion.RenderingStyle; criterionValue : "forward"}]
- parameters : [
- Parameter { name : "lightPos"; value : Qt.vector4d(10.0, 10.0, 0.0, 1.0);},
- Parameter { name : "mVM"; value : Parameter.ModelView},
- Parameter { name : "mNM"; value : Parameter.ModelViewNormal},
- Parameter { name : "mVP"; value : Parameter.ModelViewProjection}]
+ parameters : [Parameter { name : "lightPos"; value : Qt.vector4d(10.0, 10.0, 0.0, 1.0);}]
renderPasses : [
RenderPass {
@@ -336,10 +331,7 @@ Entity {
ParameterMapper {parameterName: "ambient"; shaderVariableName: "ka"; bindingType: ParameterMapper.Uniform},
ParameterMapper {parameterName: "diffuse"; shaderVariableName: "kd"; bindingType: ParameterMapper.Uniform},
ParameterMapper {parameterName: "lightPos"; shaderVariableName: "lightPosition"; bindingType: ParameterMapper.Uniform},
- ParameterMapper {parameterName: "lightIntensity"; shaderVariableName: "lightIntensity"; bindingType: ParameterMapper.Uniform},
- ParameterMapper {parameterName: "mVM"; shaderVariableName: "modelViewMatrix"; bindingType: ParameterMapper.StandardUniform},
- ParameterMapper {parameterName: "mNM"; shaderVariableName: "normalMatrix"; bindingType: ParameterMapper.StandardUniform},
- ParameterMapper {parameterName: "mVP"; shaderVariableName: "mvp"; bindingType: ParameterMapper.StandardUniform}
+ ParameterMapper {parameterName: "lightIntensity"; shaderVariableName: "lightIntensity"; bindingType: ParameterMapper.Uniform}
]
shaderProgram : ShaderProgram {
id : diffuseShader