diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2017-01-31 15:07:05 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-01-31 15:35:36 +0000 |
commit | af4ebcc51fadd90904e8fe6295860dff0d19e680 (patch) | |
tree | 734a3c13a567a302b6b3665a9d87cd539d8d2eda /src/extras/shaders/gl3 | |
parent | 90f1063a1e090a03bb45826d1229fc9179484f9b (diff) | |
parent | 59f8fec8a41606b3185fe3a4e276978e3e1ed5ef (diff) |
Merge branch 'wip/animation' into dev
Conflicts:
src/extras/defaults/defaults.pri
src/extras/extras.qrc
src/quick3d/imports/extras/importsextras.pro
src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
src/quick3d/quick3dextras/items/items.pri
src/quick3d/quick3dextras/quick3dextras.pro
tests/manual/manual.pro
Change-Id: I62232cb21495612f31f48a6749a52b68777c4ae3
Diffstat (limited to 'src/extras/shaders/gl3')
-rw-r--r-- | src/extras/shaders/gl3/morphphong.vert | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/extras/shaders/gl3/morphphong.vert b/src/extras/shaders/gl3/morphphong.vert new file mode 100644 index 000000000..c74fbdcff --- /dev/null +++ b/src/extras/shaders/gl3/morphphong.vert @@ -0,0 +1,34 @@ +#version 150 core + +in vec3 vertexPosition; +in vec3 vertexNormal; +in vec3 vertexPositionTarget; +in vec3 vertexNormalTarget; + +out vec3 worldPosition; +out vec3 worldNormal; + +uniform mat4 modelMatrix; +uniform mat3 modelNormalMatrix; +uniform mat4 modelViewProjection; +uniform float interpolator; + +void main() +{ + vec3 morphPos; + vec3 morphNormal; + if (interpolator > 0.0) { + // normalized + morphPos = mix(vertexPosition, vertexPositionTarget, interpolator); + morphNormal = normalize(mix(vertexNormal, vertexNormalTarget, interpolator)); + } else { + // relative + morphPos = vertexPosition + vertexPositionTarget * abs(interpolator); + morphNormal = normalize(vertexNormal + vertexNormalTarget * abs(interpolator)); + } + + worldNormal = normalize( modelNormalMatrix * morphPos ); + worldPosition = vec3( modelMatrix * vec4( morphPos, 1.0 ) ); + + gl_Position = modelViewProjection * vec4( morphPos, 1.0 ); +} |