Revision: 48349
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48349
Author:   alexk
Date:     2012-06-27 21:57:24 +0000 (Wed, 27 Jun 2012)
Log Message:
-----------
Adding Axis Rotation function.
Clean up warnings.

Modified Paths:
--------------
    branches/soc-2012-swiss_cheese/source/blender/gpu/GPU_matrix.h
    branches/soc-2012-swiss_cheese/source/blender/gpu/intern/gpu_matrix.c

Modified: branches/soc-2012-swiss_cheese/source/blender/gpu/GPU_matrix.h
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/gpu/GPU_matrix.h      
2012-06-27 21:41:17 UTC (rev 48348)
+++ branches/soc-2012-swiss_cheese/source/blender/gpu/GPU_matrix.h      
2012-06-27 21:57:24 UTC (rev 48349)
@@ -1,4 +1,4 @@
-
+#include "GPU_material.h"
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -10,6 +10,8 @@
 #define GPU_PROJECTION 1<<1
 #define GPU_TEXTURE            1<<2
 
+void GPU_matrix_forced_update(void);
+
 void GPU_ms_init(void);
 void GPU_ms_exit(void);
 
@@ -29,9 +31,11 @@
 void gpuLoadIdentity(void);
 
 void gpuMultMatrix(const float *m);
+void gpuMultMatrixd(const double *m);
 
 void gpuTranslate(float x, float y, float z);
 void gpuScale(float x, float y, float z);
+void gpuRotateAxis(float angle, char axis);
 
 void gpuOrtho(float left, float right, float bottom, float top, float nearVal, 
float farVal);
 void gpuFrustum(float left, float right, float bottom, float top, float 
nearVal, float farVal);
@@ -41,7 +45,6 @@
 
 void gpuLookAt(float eyeX, float eyeY, float eyeZ, float centerX, float 
centerY, float centerZ, float upX, float upY, float upZ);
 
-
 #ifndef GPU_MAT_CAST_ANY
 #define GPU_MAT_CAST_ANY
 
@@ -49,6 +52,7 @@
 #define gpuLoadMatrix(m) gpuLoadMatrix((const float *) m);
 #define gpuGetMatrix(m) gpuGetMatrix((float *) m);
 #define gpuMultMatrix(m) gpuMultMatrix((const float *) m);
+#define gpuMultMatrixd(m) gpuMultMatrixd((const double *) m);
 
 #endif
 

Modified: branches/soc-2012-swiss_cheese/source/blender/gpu/intern/gpu_matrix.c
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/gpu/intern/gpu_matrix.c       
2012-06-27 21:41:17 UTC (rev 48348)
+++ branches/soc-2012-swiss_cheese/source/blender/gpu/intern/gpu_matrix.c       
2012-06-27 21:57:24 UTC (rev 48349)
@@ -9,13 +9,16 @@
 #define GPU_MAT_CAST_ANY
 #include "GPU_matrix.h"
 
+
 #ifdef GLES
 #include <GLES2/gl2.h>
+#include "gpu_object_gles.h"
 #else 
 #include <GL/glew.h>
 #endif
 
 #define GLU_STACK_DEBUG
+int glslneedupdate = 1;
 
 typedef float GPU_matrix[4][4];
 
@@ -35,7 +38,14 @@
 
 GPU_matrix_stack * ms_current;
 
+void GPU_matrix_forced_update(void)
+{
 
+       glslneedupdate = 1;
+               gpuMatrixCommit();
+       glslneedupdate = 1;     
+       
+}
 
 #define CURMATRIX (ms_current->dynstack[ms_current->pos])
 
@@ -52,7 +62,7 @@
 
 }
 
-#define CHECKMAT checkmat(CURMATRIX);
+#define CHECKMAT checkmat((float*)CURMATRIX);
 #else
 #define CHECKMAT
 #endif
@@ -116,17 +126,17 @@
        glGetIntegerv(GL_TEXTURE_STACK_DEPTH, glstackpos+2);
        glGetIntegerv(GL_MATRIX_MODE, &glstackmode);
 
-       glGetFloatv(GL_MODELVIEW_MATRIX, tm);
+       glGetFloatv(GL_MODELVIEW_MATRIX, (float*)tm);
        gpuMatrixMode(GPU_MODELVIEW);
-       gpuLoadMatrix(tm);
+       gpuLoadMatrix((float*)tm);
 
-       glGetFloatv(GL_PROJECTION_MATRIX, tm);
+       glGetFloatv(GL_PROJECTION_MATRIX, (float*)tm);
        gpuMatrixMode(GPU_PROJECTION);
-       gpuLoadMatrix(tm);
+       gpuLoadMatrix((float*)tm);
 
-       glGetFloatv(GL_TEXTURE_MATRIX, tm);
+       glGetFloatv(GL_TEXTURE_MATRIX, (float*)tm);
        gpuMatrixMode(GPU_TEXTURE);
-       gpuLoadMatrix(tm);
+       gpuLoadMatrix((float*)tm);
 
 
 
@@ -197,21 +207,48 @@
        {
                ms_modelview.changed = 0;
                glMatrixMode(GL_MODELVIEW);
-               glLoadMatrixf(ms_modelview.dynstack[ms_modelview.pos]);
+               glLoadMatrixf((float*)ms_modelview.dynstack[ms_modelview.pos]);
        }
        if(ms_projection.changed)
        {
                ms_projection.changed = 0;
                glMatrixMode(GL_PROJECTION);
-               glLoadMatrixf(ms_projection.dynstack[ms_projection.pos]);
+               
glLoadMatrixf((float*)ms_projection.dynstack[ms_projection.pos]);
        }
        if(ms_texture.changed)
        {
                ms_texture.changed = 0;
                glMatrixMode(GL_TEXTURE);
-               glLoadMatrixf(ms_texture.dynstack[ms_texture.pos]);
+               glLoadMatrixf((float*)ms_texture.dynstack[ms_texture.pos]);
        }
 
+#else
+if(curglslesi)
+{
+#include REAL_GL_MODE
+       if(ms_modelview.changed || glslneedupdate)
+       {
+       
+               float t[3][3] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0};
+               copy_m3_m4(t, ms_modelview.dynstack[ms_modelview.pos]); 
+               if(curglslesi->viewmatloc!=-1)
+                       glUniformMatrix4fv(curglslesi->viewmatloc, 1, 0, 
ms_modelview.dynstack[ms_modelview.pos]);
+               if(curglslesi->normalmatloc!=-1)
+                       glUniformMatrix3fv(curglslesi->normalmatloc, 1, 0, t);
+               
+               
+       }
+       if(ms_projection.changed|| glslneedupdate)
+       {
+               if(curglslesi->projectionmatloc!=-1)
+               glUniformMatrix4fv(curglslesi->projectionmatloc, 1, 0, 
ms_projection.dynstack[ms_projection.pos]);
+       }
+       
+       
+#include FAKE_GL_MODE
+}
+
+
 #endif
 CHECKMAT
 }
@@ -233,7 +270,7 @@
        
        }
 
-       gpuLoadMatrix(ms_current->dynstack[ms_current->pos-1]);
+       gpuLoadMatrix((float*)ms_current->dynstack[ms_current->pos-1]);
        CHECKMAT
 
 }
@@ -284,7 +321,7 @@
 
 void gpuLoadMatrix(const float * m)
 {
-       copy_m4_m4(CURMATRIX, m);
+       copy_m4_m4((float (*)[4])CURMATRIX, (float (*)[4])m);
        ms_current->changed = 1;
        CHECKMAT
 }
@@ -294,7 +331,7 @@
        if(m)
                copy_m4_m4((float (*)[4])m,CURMATRIX);
        else
-               return CURMATRIX;
+               return (float*)(CURMATRIX);
        ms_current->changed = 1;
        return 0;
 }
@@ -332,14 +369,33 @@
 {
        GPU_matrix cm;
 
-       copy_m4_m4(cm, CURMATRIX);
+       copy_m4_m4((float (*)[4])cm, (float (*)[4])CURMATRIX);
 
-       mult_m4_m4m4_q(CURMATRIX, cm, m);
+       mult_m4_m4m4_q(CURMATRIX, cm, (float (*)[4])m);
        ms_current->changed = 1;
        CHECKMAT
 
 }
 
+
+void gpuMultMatrixd(const double *m)
+{
+       float mf[16];
+       int i;
+       for(i=0; i<16; i++)
+               mf[i] = m[i];
+       gpuMultMatrix(mf);
+
+}
+
+
+void gpuRotateAxis(float angle, char axis)
+{
+
+       rotate_m4((float (*)[4])CURMATRIX, axis, angle*M_PI/180.0f);
+       ms_current->changed = 1;
+}
+
 void gpuLoadOrtho(float left, float right, float bottom, float top, float 
nearVal, float farVal)
 {
        mat4_ortho_set(CURMATRIX, left, right, bottom, top, nearVal, farVal);
@@ -354,7 +410,7 @@
 
        mat4_ortho_set(om, left, right, bottom, top, nearVal, farVal);
 
-       gpuMultMatrix(om);
+       gpuMultMatrix((float*)om);
        CHECKMAT
 }
 
@@ -363,7 +419,7 @@
 {
        GPU_matrix fm;
        mat4_frustum_set(fm, left, right, bottom, top, nearVal, farVal);
-       gpuMultMatrix(fm);
+       gpuMultMatrix((float*) fm);
        CHECKMAT
 }
 
@@ -388,9 +444,9 @@
 
        mat4_look_from_origin(cm, lookdir, camup);
 
-       gpuMultMatrix(cm);
+       gpuMultMatrix((float*) cm);
 
        gpuTranslate(-eyeX, -eyeY, -eyeZ);
-CHECKMAT
+       CHECKMAT
 
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to