From 7e04f8a491f487cf33fd431c41fb3cf9c05bb225 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 19 Feb 2015 09:52:58 -0800 Subject: [PATCH] Model almost working with Transform --- libraries/gpu/src/gpu/Transform.slh | 7 +++++-- libraries/render-utils/src/model.slv | 16 ++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/libraries/gpu/src/gpu/Transform.slh b/libraries/gpu/src/gpu/Transform.slh index 9666a4f258..3b0feb5ba1 100644 --- a/libraries/gpu/src/gpu/Transform.slh +++ b/libraries/gpu/src/gpu/Transform.slh @@ -12,7 +12,7 @@ struct TransformObject { mat4 _model; - mat4 _modelInverseTranspose; + mat4 _modelInverse; mat4 _modelView; mat4 _modelViewInverseTranspose; }; @@ -24,10 +24,13 @@ struct TransformCamera { }; vec4 transform(TransformCamera camera, TransformObject object, vec4 pos) { + return camera._projection * (object._modelView * pos); } - +vec3 transformDir(TransformCamera camera, TransformObject object, vec3 dir) { + return (object._modelViewInverseTranspose * vec4(dir, 0.0)).xyz; +} <@if GLPROFILE == PC_GL@> uniform transformObjectBuffer { diff --git a/libraries/render-utils/src/model.slv b/libraries/render-utils/src/model.slv index 7f97e429d9..42fec40e55 100755 --- a/libraries/render-utils/src/model.slv +++ b/libraries/render-utils/src/model.slv @@ -36,8 +36,6 @@ void main(void) { void main(void) { - // transform and store the normal for interpolation - normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0)); // pass along the diffuse color gl_FrontColor = gl_Color; @@ -49,10 +47,12 @@ void main(void) { //gl_Position = ftransform(); //gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; //gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; - //TransformCamera cam = getTransformCamera(); - /* TransformObject obj = getTransformObject(); - // gl_Position = transform(cam, obj, gl_Vertex); - */ - vec4 vPos = gl_ModelViewMatrix * gl_Vertex; - gl_Position = camera._projection * vPos; + TransformCamera cam = getTransformCamera(); + TransformObject obj = getTransformObject(); + + gl_Position = transform(cam, obj, gl_Vertex); + + // transform and store the normal for interpolation + normal = vec4(normalize(transformDir(cam, obj, gl_Normal)), 0.0); + }