[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