[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11550] branches/soc-2007-maike: Fixed the glsl preview activation when scene had no lights
Miguel Torres Lima
torreslima at gmail.com
Sat Aug 11 18:06:05 CEST 2007
Revision: 11550
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11550
Author: maike
Date: 2007-08-11 18:06:05 +0200 (Sat, 11 Aug 2007)
Log Message:
-----------
Fixed the glsl preview activation when scene had no lights
Illegal memory free for colorbands and shader generation fix
Modified Paths:
--------------
branches/soc-2007-maike/release/glsl/material_return.gsl
branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c
branches/soc-2007-maike/source/blender/src/glsl_materialtree.c
branches/soc-2007-maike/source/blender/src/glsl_node_util.c
Modified: branches/soc-2007-maike/release/glsl/material_return.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/material_return.gsl 2007-08-11 12:58:35 UTC (rev 11549)
+++ branches/soc-2007-maike/release/glsl/material_return.gsl 2007-08-11 16:06:05 UTC (rev 11550)
@@ -1,6 +1,6 @@
#ifdef DIFF_CB_RESULT
-#ifndef LIGHT_CALCULATIONS
+#if LIGHT_CALCULATIONS == 0
return(vec3(0.0, 0.0, 0.0));
#else
if(diff_cb_res > 0.0){
@@ -36,7 +36,7 @@
#endif
#endif
-#ifdef LIGHT_CALCULATIONS
+#if LIGHT_CALCULATIONS == 1
return(amb_exp * (1.0 - exp((diff_rslt + (diff_color * vec3(emit + vert_color.r, emit + vert_color.g, emit + vert_color.b))) * amb_range)) + spec_rslt + amb_rslt);
#else
return(vec3(0.0, 0.0, 0.0));
Modified: branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c 2007-08-11 12:58:35 UTC (rev 11549)
+++ branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c 2007-08-11 16:06:05 UTC (rev 11550)
@@ -101,15 +101,28 @@
0, "_ramp_",
GINT, ramp_num,
0, "_fac\n");
-
- if(mat->rampin_col == MA_RAMP_IN_RESULT)
+
+ code = glsl_string(3,
+ GFREE, func,
+ GFREE, tex,
+ GFREE, fac);
+
+ if(mat->rampin_col == MA_RAMP_IN_RESULT){
rslt = "#define DIFF_CB_RESULT 1\n";
+ code = glsl_string(2,
+ GFREE, code,
+ 0, rslt);
+ }
- if(mat->rampin_col != MA_RAMP_IN_RESULT)
+ if(mat->rampin_col != MA_RAMP_IN_RESULT){
type = glsl_string(3,
0, "#define DIFF_CB_TYPE ",
GINT, mat->rampin_col,
0, "\n");
+ code = glsl_string(2,
+ GFREE, type,
+ GFREE, code);
+ }
blen_type = pow(2, mat->rampblend_col);
}
@@ -133,24 +146,30 @@
GINT, ramp_num,
0, "_fac\n");
- if(mat->rampin_spec == MA_RAMP_IN_RESULT)
+ code = glsl_string(3,
+ GFREE, func,
+ GFREE, tex,
+ GFREE, fac);
+
+ if(mat->rampin_spec == MA_RAMP_IN_RESULT){
rslt = "#define SPEC_CB_RESULT 1\n";
+ code = glsl_string(2,
+ GFREE, code,
+ 0, rslt);
+ }
- if(mat->rampin_spec != MA_RAMP_IN_RESULT)
+ if(mat->rampin_spec != MA_RAMP_IN_RESULT){
type = glsl_string(3,
0, "#define SPEC_CB_TYPE ",
GINT, mat->rampin_spec,
0, "\n");
+ code = glsl_string(2,
+ GFREE, type,
+ GFREE, code);
+ }
blen_type = pow(2, mat->rampblend_spec);
}
-
- code = glsl_string(5,
- GFREE, type,
- GFREE, func,
- GFREE, tex,
- GFREE, fac,
- 0, rslt);
if(!(*blend & blen_type))
*blend += blen_type;
Modified: branches/soc-2007-maike/source/blender/src/glsl_materialtree.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_materialtree.c 2007-08-11 12:58:35 UTC (rev 11549)
+++ branches/soc-2007-maike/source/blender/src/glsl_materialtree.c 2007-08-11 16:06:05 UTC (rev 11550)
@@ -102,9 +102,7 @@
static int glsl_tree_program(GLSL_MaterialTree tree)
{
- if(glsl_get_num_lights() > 0){
- tree->shaded_program = glsl_init_program(tree);
- }
+ tree->shaded_program = glsl_init_program(tree);
if(tree->shaded_program != NULL){
glsl_update_all_light_uniforms(tree);
Modified: branches/soc-2007-maike/source/blender/src/glsl_node_util.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_node_util.c 2007-08-11 12:58:35 UTC (rev 11549)
+++ branches/soc-2007-maike/source/blender/src/glsl_node_util.c 2007-08-11 16:06:05 UTC (rev 11550)
@@ -98,19 +98,15 @@
char *light_decl = NULL;
char *uniforms = NULL;
- light_struct = glsl_get_func("light_struct.gsl");
- varyings = glsl_get_func("varyings.gsl");
- uniforms = glsl_get_func("uniforms.gsl");
-
- if(!light_struct)
+ if(!(light_struct = glsl_get_func("light_struct.gsl")))
return -1;
- if(!varyings){
+ if(!(varyings = glsl_get_func("varyings.gsl"))){
MEM_freeN(light_struct);
return -1;
}
-
- if(!uniforms){
+
+ if(!(uniforms = glsl_get_func("uniforms.gsl"))){
MEM_freeN(light_struct);
MEM_freeN(varyings);
return -1;
@@ -123,7 +119,7 @@
return -1;
}
- light_decl = glsl_declare_lightstruct(glsl_get_num_lights() + 1);
+ light_decl = glsl_declare_lightstruct(glsl_get_num_lights());
code = glsl_string(7,
GFREE, light_struct,
@@ -137,8 +133,6 @@
printf("\n Code:\n%s\n", code);
shader = glsl_create_GLshader(code, GL_FRAGMENT_SHADER, 1);
-
- MEM_freeN(program_node);
return shader;
}
@@ -147,7 +141,7 @@
char *glsl_declare_lightstruct(int num)
{
char *defines = glsl_string(3,
- 0, "uniform light lights[", GINT, num, 0, "];\n");
+ 0, "uniform light lights[", GINT, num?num:1, 0, "];\n");
return defines;
}
More information about the Bf-blender-cvs
mailing list