[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11445] branches/soc-2007-maike/release/ glsl: GLSL code fix for colorbands

Miguel Torres Lima torreslima at gmail.com
Tue Jul 31 18:09:16 CEST 2007


Revision: 11445
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11445
Author:   maike
Date:     2007-07-31 18:09:16 +0200 (Tue, 31 Jul 2007)

Log Message:
-----------
GLSL code fix for colorbands

Modified Paths:
--------------
    branches/soc-2007-maike/release/glsl/light_calc.gsl
    branches/soc-2007-maike/release/glsl/material.gsl
    branches/soc-2007-maike/release/glsl/material_return.gsl

Modified: branches/soc-2007-maike/release/glsl/light_calc.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/light_calc.gsl	2007-07-31 13:37:59 UTC (rev 11444)
+++ branches/soc-2007-maike/release/glsl/light_calc.gsl	2007-07-31 16:09:16 UTC (rev 11445)
@@ -61,10 +61,21 @@
 #endif
 #endif
 
+#ifdef DIFF_CB_RESULT
+if(lights[LIGHT_ID].layer > 0.0)
+  diff_cb_res = 1.0;
+#endif
+
+#ifdef SPEC_CB_RESULT
+if(lights[LIGHT_ID].layer > 0.0)
+  spec_cb_res = 1.0;
+#endif
+
+
 #undef VISIBILITY
 #undef LIGHT_ID
 #undef DIFF_SHADER_ID
 #undef SPEC_SHADER_ID
 #undef HEMI
-
-
+#undef CALC_DIFFUSE
+#undef CALC_SPECULAR

Modified: branches/soc-2007-maike/release/glsl/material.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/material.gsl	2007-07-31 13:37:59 UTC (rev 11444)
+++ branches/soc-2007-maike/release/glsl/material.gsl	2007-07-31 16:09:16 UTC (rev 11445)
@@ -4,3 +4,5 @@
   vec3 amb_rslt = amb_color * amb_fac;
   float vis = 0.0, rslt1, rslt2, diff_fac, spec_fac;
   vec4 diff_cb, spec_cb;
+  float diff_cb_res = 0.0;
+  float spec_cb_res = 0.0;

Modified: branches/soc-2007-maike/release/glsl/material_return.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/material_return.gsl	2007-07-31 13:37:59 UTC (rev 11444)
+++ branches/soc-2007-maike/release/glsl/material_return.gsl	2007-07-31 16:09:16 UTC (rev 11445)
@@ -1,31 +1,38 @@
-#ifdef CALC_DIFFUSE
+
 #ifdef DIFF_CB_RESULT
 #ifndef LIGHT_CALCULATIONS
 return(vec3(0.0, 0.0, 0.0));
 #else
-diff_rslt = amb_exp * (1.0 - exp((diff_rslt + (diff_color * emit))* amb_range)) + spec_rslt + amb_rslt;
-if(diff_rslt.r >= 0.005 || diff_rslt.g >= 0.005 || diff_rslt.b >= 0.005){
-float diff_cb_rslt_fac = (0.3 * diff_rslt.r + 0.58 * diff_rslt.g + 0.12 * diff_rslt.b);
-vec4 diff_cb_rslt_tex = texture1D(DIFF_CB_TEX, clamp(diff_cb_rslt_fac, 0.0, 0.999));
-diff_rslt = (DIFF_CB_BLEND_FUNC(diff_cb_rslt_tex.rgb, diff_rslt.rgb, DIFF_CB_FAC * diff_cb_rslt_tex.a));
+if(diff_cb_res > 0.0){
+  diff_rslt = amb_exp * (1.0 - exp((diff_rslt + (diff_color * emit))* amb_range)) + spec_rslt + amb_rslt;
+  if(diff_rslt.r >= 0.005 || diff_rslt.g >= 0.005 || diff_rslt.b >= 0.005){
+    float diff_cb_rslt_fac = (0.3 * diff_rslt.r + 0.58 * diff_rslt.g + 0.12 * diff_rslt.b);
+    vec4 diff_cb_rslt_tex = texture1D(DIFF_CB_TEX, clamp(diff_cb_rslt_fac, 0.0, 0.999));
+    diff_rslt = (DIFF_CB_BLEND_FUNC(diff_cb_rslt_tex.rgb, diff_rslt.rgb, DIFF_CB_FAC * diff_cb_rslt_tex.a));
 #ifdef CALC_SPECULAR
 #ifdef SPEC_CB_RESULT
-float spec_cb_rslt_fac = (0.3 * spec_rslt.r + 0.58 * spec_rslt.g + 0.12 * spec_rslt.b);
-vec4 spec_cb_rslt_tex = texture1D(SPEC_CB_TEX, clamp(spec_cb_rslt_fac, 0.0, 0.999));
-spec_rslt = (SPEC_CB_BLEND_FUNC(spec_cb_rslt_tex.rgb, spec_rslt.rgb, SPEC_CB_FAC * spec_cb_rslt_tex.a));
-diff_rslt += spec_rslt;
+    if(spec_cb_res > 0.0){
+      float spec_cb_rslt_fac = (0.3 * spec_rslt.r + 0.58 * spec_rslt.g + 0.12 * spec_rslt.b);
+      vec4 spec_cb_rslt_tex = texture1D(SPEC_CB_TEX, clamp(spec_cb_rslt_fac, 0.0, 0.999));
+      spec_rslt = (SPEC_CB_BLEND_FUNC(spec_cb_rslt_tex.rgb, spec_rslt.rgb, SPEC_CB_FAC * spec_cb_rslt_tex.a));
+      diff_rslt += spec_rslt;
+    }
 #endif
 #endif
-return(diff_rslt);}
+    return(diff_rslt);
+  }
+ }
 #endif
 #endif
 #endif
 
-#ifdef CALC_SPECULAR
+
 #ifdef SPEC_CB_RESULT
-float spec_cb_rslt_fac = (0.3 * spec_rslt.r + 0.58 * spec_rslt.g + 0.12 * spec_rslt.b);
-vec4 spec_cb_rslt_tex = texture1D(SPEC_CB_TEX, clamp(spec_cb_rslt_fac, 0.0, 0.999));
-spec_rslt = (SPEC_CB_BLEND_FUNC(spec_cb_rslt_tex.rgb, spec_rslt.rgb, SPEC_CB_FAC * spec_cb_rslt_tex.a));
+if(spec_cb_res > 0.0){
+  float spec_cb_rslt_fac = (0.3 * spec_rslt.r + 0.58 * spec_rslt.g + 0.12 * spec_rslt.b);
+  vec4 spec_cb_rslt_tex = texture1D(SPEC_CB_TEX, clamp(spec_cb_rslt_fac, 0.0, 0.999));
+  spec_rslt = (SPEC_CB_BLEND_FUNC(spec_cb_rslt_tex.rgb, spec_rslt.rgb, SPEC_CB_FAC * spec_cb_rslt_tex.a));
+ }
 #endif
 #endif
 
@@ -35,8 +42,7 @@
   return(vec3(0.0, 0.0, 0.0));
 #endif
 
-#undef CALC_DIFFUSE
-#undef CALC_SPECULAR
+
 #undef DIFF_CB_TYPE
 #undef SPEC_CB_TYPE
 #undef DIFF_CB_BLEND_FUNC





More information about the Bf-blender-cvs mailing list