Model almost working with Transform

This commit is contained in:
Sam Gateau 2015-02-19 09:52:58 -08:00
parent b78106400e
commit 7e04f8a491
2 changed files with 13 additions and 10 deletions

View file

@ -12,7 +12,7 @@
struct TransformObject { struct TransformObject {
mat4 _model; mat4 _model;
mat4 _modelInverseTranspose; mat4 _modelInverse;
mat4 _modelView; mat4 _modelView;
mat4 _modelViewInverseTranspose; mat4 _modelViewInverseTranspose;
}; };
@ -24,10 +24,13 @@ struct TransformCamera {
}; };
vec4 transform(TransformCamera camera, TransformObject object, vec4 pos) { vec4 transform(TransformCamera camera, TransformObject object, vec4 pos) {
return camera._projection * (object._modelView * 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@> <@if GLPROFILE == PC_GL@>
uniform transformObjectBuffer { uniform transformObjectBuffer {

View file

@ -36,8 +36,6 @@ void main(void) {
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 // pass along the diffuse color
gl_FrontColor = gl_Color; gl_FrontColor = gl_Color;
@ -49,10 +47,12 @@ void main(void) {
//gl_Position = ftransform(); //gl_Position = ftransform();
//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; //gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
//gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; //gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
//TransformCamera cam = getTransformCamera(); TransformCamera cam = getTransformCamera();
/* TransformObject obj = getTransformObject(); TransformObject obj = getTransformObject();
// gl_Position = transform(cam, obj, gl_Vertex);
*/ gl_Position = transform(cam, obj, gl_Vertex);
vec4 vPos = gl_ModelViewMatrix * gl_Vertex;
gl_Position = camera._projection * vPos; // transform and store the normal for interpolation
normal = vec4(normalize(transformDir(cam, obj, gl_Normal)), 0.0);
} }