[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11190] branches/soc-2007-maike/release/ glsl: Glsl colorband blending functions

Miguel Torres Lima torreslima at gmail.com
Sat Jul 7 18:15:02 CEST 2007


Revision: 11190
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11190
Author:   maike
Date:     2007-07-07 18:15:01 +0200 (Sat, 07 Jul 2007)

Log Message:
-----------
Glsl colorband blending functions

Added Paths:
-----------
    branches/soc-2007-maike/release/glsl/colorband_blend_add.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_burn.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_dark.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_dif.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_div.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_dodge.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_hue.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_mix.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_mult.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_overlay.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_screen.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_sub.gsl
    branches/soc-2007-maike/release/glsl/colorband_blend_val.gsl
    branches/soc-2007-maike/release/glsl/colorband_hsv_rgb.gsl
    branches/soc-2007-maike/release/glsl/colorband_rgb_hsv.gsl

Added: branches/soc-2007-maike/release/glsl/colorband_blend_add.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_add.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_add.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,6 @@
+vec3 colorband_blend_add(vec3 shader, vec3 colband, float fac)
+{
+  vec3 color = colband + fac * shader;
+  
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_burn.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_burn.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_burn.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,37 @@
+vec3 colorband_blend_burn(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color = colband;
+  
+  float tmp = facm + fac * shader.r;
+
+  if(tmp <= 0.0)
+    color.r = 0.0;
+  else if((tmp = (1.0 - (1.0 - colband.r) / tmp)) < 0.0)
+    color.r = 0.0;
+  else if(tmp > 1.0)
+    color.r = 1.0;
+  else color.r = tmp;
+
+  tmp = facm + fac * shader.g;
+
+  if(tmp <= 0.0)
+    color.g = 0.0;
+  else if((tmp = (1.0 - (1.0 - colband.g) / tmp)) < 0.0)
+    color.g = 0.0;
+  else if(tmp > 1.0)
+    color.g = 1.0;
+  else color.g = tmp;
+
+  tmp = facm + fac * shader.b;
+
+  if(tmp <= 0.0)
+    color.b = 0.0;
+  else if((tmp = (1.0 - (1.0 - colband.b) / tmp)) < 0.0)
+    color.b = 0.0;
+  else if(tmp > 1.0)
+    color.b = 1.0;
+  else color.b = tmp;
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,17 @@
+vec3 colorband_blend_color(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color = colband;
+  
+  vec3 tmp = colorband_rbg_hsv(shader);
+
+  if(tmp.g != 0.0){
+    vec3 tmp2 = colorband_rgb_hsv(colband);
+    vec3 tmp3 = colorband_hsv_rgb(tmp.r, tmp.g, tmp2.b);
+    color.r = facm * colband.r + fac * tmp3.r;
+    color.g = facm * colband.g + fac * tmp3.g;
+    color.b = facm * colband.b + fac * tmp3.b;
+  }
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_dark.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_dark.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_dark.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,18 @@
+vec3 colorband_blend_dark(vec3 shader, vec3 colband, float fac)
+{
+  vec3 color = colband;
+  float tmp = fac * shader.r;
+  
+  if(tmp < colband.r)
+    color.r = tmp;
+
+  tmp = fac * shader.g;
+  if(tmp < colband.g)
+    color.g = tmp;
+
+  tmp = fac * shader.b;
+  if(tmp < colband.b)
+    color.b = tmp;
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_dif.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_dif.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_dif.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,11 @@
+vec3 colorband_blend_dif(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color;
+
+  color.r = facm * colband.r + fac * fabs(colband.r - shader.r);
+  color.g = facm * colband.g + fac * fabs(colband.g - shader.g);
+  color.b = facm * colband.b + fac * fabs(colband.b - shader.b);
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_div.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_div.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_div.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,16 @@
+vec3 colorband_blend_div(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color = vec3(0.0, 0.0, 0.0);
+  
+  if(shader.r != 0.0)
+    color.r = facm * colband.r + fac * colband.r / shader.r;
+  
+  if(shader.g != 0.0)
+    color.g = facm * colband.g + fac * colband.g / shader.g;
+
+  if(shader.b != 0.0)
+    color.b = facm * colband.b + fac * colband.b / shader.b;
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_dodge.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_dodge.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_dodge.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,37 @@
+vec3 colorband_blend_dodge(vec3 shader, vec3 colband, float fac)
+{
+  vec3 color = colband;
+  float tmp;
+
+  if(colband.r != 0.0){
+    tmp = 1.0 - fac * shader.r;
+    if(tmp <= 0.0)
+      color.r = 1.0;
+    else if((tmp = colband.r / tmp) > 1.0)
+      color.r = 1.0;
+    else
+      color.r = tmp;
+  }
+
+  if(colband.g != 0.0){
+    tmp = 1.0 - fac * shader.g;
+    if(tmp <= 0.0)
+      color.g = 1.0;
+    else if((tmp = colband.g / tmp) > 1.0)
+      color.g = 1.0;
+    else
+      color.g = tmp;
+  }
+
+  if(colband.b != 0.0){
+    tmp = 1.0 - fac * shader.b;
+    if(tmp <= 0.0)
+      color.b = 1.0;
+    else if((tmp = colband.b / tmp) > 1.0)
+      color.b = 1.0;
+    else
+      color.b = tmp;
+  }
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_hue.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_hue.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_hue.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,16 @@
+vec3 colorband_blend_hue(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color = colband;
+  vec3 tmp = colorband_rgb_hsv(shader);
+ 
+  if(tmp.g != 0.0){
+    vec3 tmp2 = colorband_rgb_hsv(colband);
+    vec3 tmp3 = colorband_hsv_rgb(vec3(tmp.r, tmp2.g, tmp2.b));
+    color.r = facm * colband.r + fac * tmp3.r;
+    color.g = facm * colband.g + fac * tmp3.g;
+    color.b = facm * colband.b + fac * tmp3.b;
+  }
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,18 @@
+vec3 colorband_blend_light(vec3 shader, vec3 colband, float fac)
+{
+  vec3 color = colband;
+  float tmp =  fac * colband.r;
+
+  if(tmp > colband.r)
+    color.r = tmp;
+
+  tmp = fac * colband.g;
+  if(tmp > colband.g)
+    color.g = tmp;
+
+  tmp = fac * colband.b;
+  if(tmp > colband.b)
+    color.b = tmp;
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_mix.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_mix.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_mix.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,7 @@
+vec3 colorband_blend_mix(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color = facm * colband + fac * shader;
+  
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_mult.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_mult.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_mult.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,7 @@
+vec3 colorband_blend_mult(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - 'fac;
+  vec3 color = vec3(colband.r * (facm + fac * shader.r), colband.g * (facm + fac * shader.g), colband.b * (facm + fac * shader.b));
+  
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_overlay.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_overlay.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_overlay.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,22 @@
+vec3 colorband_blend_overlay(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color;
+
+  if(colband.r < 0.5)
+    color.r = colband.r * (facm + 2.0  * fac * shader.r);
+  else
+    color.r = 1.0 - (facm + 2.0 * fac * (1.0 - shader.r)) * (1.0 - colband.r);
+  
+  if(colband.g < 0.5)
+    color.g = colband.g * (facm + 2.0 * fac * shader.g);
+  else
+    color.g = 1.0 - (facm + 2.0 * fac * (1.0 - shader.g)) * (1.0 - colband.g);
+
+  if(colband.b < 0.5)
+    color.b = colband.b * (facm + 2.0 * fac * shader.b);
+  else
+    color.b = 1.0 - (facm + 2.0 * fac * (1.0 - shader.b)) * (1.0 - colband.b);
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,13 @@
+vec3 colorband_blend_sat(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color = colband;
+  
+  vec3 tmp = colorband_rgb_hsv(colband);
+  if(tmp.g != 0.0){
+    vec3 tmp2 = colorband_rgb_hsv(shader);
+    color = colorband_hsv_rgb(tmp.r, facm * tmp.g + fac * tmp2.g, tmp.b);
+  }
+
+  return color;
+}

Added: branches/soc-2007-maike/release/glsl/colorband_blend_screen.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_screen.gsl	                        (rev 0)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_screen.gsl	2007-07-07 16:15:01 UTC (rev 11190)
@@ -0,0 +1,11 @@
+vec3 colorband_blend_screen(vec3 shader, vec3 colband, float fac)
+{
+  float facm = 1.0 - fac;
+  vec3 color;
+

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list