[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11639] branches/soc-2007-maike/source/ blender/src/glsl_uniforms.c: Uniform sending bugfix

Miguel Torres Lima torreslima at gmail.com
Fri Aug 17 16:51:04 CEST 2007


Revision: 11639
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11639
Author:   maike
Date:     2007-08-17 16:51:04 +0200 (Fri, 17 Aug 2007)

Log Message:
-----------
Uniform sending bugfix

Modified Paths:
--------------
    branches/soc-2007-maike/source/blender/src/glsl_uniforms.c

Modified: branches/soc-2007-maike/source/blender/src/glsl_uniforms.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_uniforms.c	2007-08-17 14:48:42 UTC (rev 11638)
+++ branches/soc-2007-maike/source/blender/src/glsl_uniforms.c	2007-08-17 14:51:04 UTC (rev 11639)
@@ -524,22 +524,22 @@
 
 void glsl_update_texture_uniforms(GLuint program, MTex *mtex, int texindex, int matindex)
 {
-  char *ofs      = glsl_string(5, 0, "uniform vec3 mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_ofs;\n");
-  char *size     = glsl_string(5, 0, "uniform vec3 mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_size;\n");
-  char *colfac   = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_colfac;\n");
-  char *norfac   = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_norfac;\n");
-  char *varfac   = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_varfac;\n");
-  char *warpfac  = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_warpfac;\n");
-  char *neg      = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_neg;\n");
-  char *norgb    = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_norgb;\n");
-  char *norgbcol = glsl_string(5, 0, "uniform vec3 mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_norgbcol;\n");
-  char *dvarfac  = glsl_string(5, 0, "uniform float mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_dvarfac;\n");
+  char *ofs      = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_ofs");
+  char *size     = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_size");
+  char *colfac   = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_colfac");
+  char *norfac   = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_norfac");
+  char *varfac   = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_varfac");
+  char *warpfac  = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_warpfac");
+  char *neg      = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_neg");
+  char *norgb    = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_norgb");
+  char *norgbcol = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_norgbcol");
+  char *dvarfac  = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_dvarfac");
 
   Tex *tex = mtex->tex;
 
   glUseProgram(program);
 
-  glUniform3f(glsl_uniform_location(program, ofs), mtex->ofs[0], mtex->ofs[1], mtex->ofs[2]);
+  glUniform3fv(glsl_uniform_location(program, ofs), 1, mtex->ofs);
   glUniform3f(glsl_uniform_location(program, size), mtex->size[0], mtex->size[1], mtex->size[2]);
   glUniform1f(glsl_uniform_location(program, colfac), mtex->colfac);
   glUniform1f(glsl_uniform_location(program, norfac), mtex->norfac);
@@ -550,7 +550,18 @@
   glUniform3f(glsl_uniform_location(program, norgbcol), mtex->r, mtex->g, mtex->b);
   glUniform1f(glsl_uniform_location(program, dvarfac), mtex->def_var);
 
-  
+  MEM_freeN(ofs);
+  MEM_freeN(size);
+  MEM_freeN(colfac);
+  MEM_freeN(norfac);
+  MEM_freeN(varfac);
+  MEM_freeN(warpfac);
+  MEM_freeN(neg);
+  MEM_freeN(norgb);
+  MEM_freeN(norgbcol);
+  MEM_freeN(dvarfac);
+
+
   switch(tex->type)
     {
     case TEX_CLOUDS:
@@ -594,18 +605,6 @@
       break;
     }
 
-
-  MEM_freeN(ofs);
-  MEM_freeN(size);
-  MEM_freeN(colfac);
-  MEM_freeN(norfac);
-  MEM_freeN(varfac);
-  MEM_freeN(warpfac);
-  MEM_freeN(neg);
-  MEM_freeN(norgb);
-  MEM_freeN(norgbcol);
-  MEM_freeN(dvarfac);
-
   glUseProgram(0);
 }
 
@@ -630,19 +629,20 @@
 
 void glsl_update_texture_magic_uniforms(GLuint program, Tex *tex, int texindex, int matindex)
 {
-  char *color      = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_color");
+  char *texcolor   = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_color");
   char *depth      = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_depth");
   char *turbulence = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_turbulence");
   char *contrast   = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_contrast");
   char *brightness = glsl_string(5, 0, "mat_", GINT, matindex, 0, "_tex_", GINT, texindex, 0, "_brightness");
 
-  glUniform3f(glsl_uniform_location(program, color), tex->rfac, tex->gfac, tex->bfac);
+  glUniform3f(glsl_uniform_location(program, texcolor), tex->rfac, tex->gfac, tex->bfac);
   glUniform1f(glsl_uniform_location(program, depth), tex->noisedepth);
   glUniform1f(glsl_uniform_location(program, turbulence), tex->turbul);
   glUniform1f(glsl_uniform_location(program, contrast), tex->contrast);
   glUniform1f(glsl_uniform_location(program, brightness), tex->bright);
+
   
-  MEM_freeN(color);
+  MEM_freeN(texcolor);
   MEM_freeN(depth);
   MEM_freeN(turbulence);
   MEM_freeN(contrast);





More information about the Bf-blender-cvs mailing list