[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11408] branches/soc-2007-maike: Added glsl colorband rgb_to_hsv and hsv_to_rgb equivalent functions concatenation and corrected some colorband blend functions
Miguel Torres Lima
torreslima at gmail.com
Sat Jul 28 19:30:54 CEST 2007
Revision: 11408
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11408
Author: maike
Date: 2007-07-28 19:30:54 +0200 (Sat, 28 Jul 2007)
Log Message:
-----------
Added glsl colorband rgb_to_hsv and hsv_to_rgb equivalent functions concatenation and corrected some colorband blend functions
Modified Paths:
--------------
branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl
branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl
branches/soc-2007-maike/release/glsl/colorband_blend_sat.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
branches/soc-2007-maike/release/glsl/light_calc.gsl
branches/soc-2007-maike/source/blender/src/glsl_colorband.c
branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c
Added Paths:
-----------
branches/soc-2007-maike/release/glsl/tex_magic.gsl
Modified: branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_color.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -3,11 +3,11 @@
float facm = 1.0 - fac;
vec3 color = colband;
- vec3 tmp = colorband_rbg_hsv(shader);
+ vec3 tmp = colorband_rgb_hsv(shader);
if(tmp.g != 0.0){
vec3 tmp2 = colorband_rgb_hsv(colband);
- vec3 tmp3 = colorband_hsv_rgb(tmp.r, tmp.g, tmp2.b);
+ vec3 tmp3 = colorband_hsv_rgb(vec3(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;
Modified: branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_light.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -1,18 +1,19 @@
vec3 colorband_blend_light(vec3 shader, vec3 colband, float fac)
{
vec3 color = colband;
- float tmp = fac * colband.r;
+ float tmp = fac * shader.r;
if(tmp > colband.r)
color.r = tmp;
- tmp = fac * colband.g;
+ tmp = fac * shader.g;
if(tmp > colband.g)
color.g = tmp;
-
- tmp = fac * colband.b;
+
+ tmp = fac * shader.b;
if(tmp > colband.b)
color.b = tmp;
return color;
}
+
Modified: branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_sat.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -6,7 +6,7 @@
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);
+ color = colorband_hsv_rgb(vec3(tmp.r, facm * tmp.g + fac * tmp2.g, tmp.b));
}
return color;
Modified: branches/soc-2007-maike/release/glsl/colorband_blend_val.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_blend_val.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/colorband_blend_val.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -5,7 +5,7 @@
vec3 tmp = colorband_rgb_hsv(colband);
vec3 tmp2 = colorband_rgb_hsv(shader);
- color = colorband_hsv_rgb(tmp.r, tmp.g, facm * tmp.b + fac * tmp2.b);
+ color = colorband_hsv_rgb(vec3(tmp.r, tmp.g, facm * tmp.b + fac * tmp2.b));
return color;
}
Modified: branches/soc-2007-maike/release/glsl/colorband_hsv_rgb.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_hsv_rgb.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/colorband_hsv_rgb.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -14,22 +14,23 @@
i = tmp.r;
f = tmp.r - i;
w = tmp.b * (1.0 - tmp.g);
- q = tmp.b * (1.0 - (tmp.g - f));
+ q = tmp.b * (1.0 - (tmp.g * f));
t = tmp.b * (1.0 - (tmp.g * (1.0 - f)));
- if(i <= 0.0)
- color = vec3(v, t, w);
- else if(i <= 1.0)
- color = vec3(q, v, w);
- else if(i <= 2.0)
- color = vec3(w, v, t);
- else if(i <= 3.0)
- color = vec3(w, q, v);
- else if(i <= 4.0)
- color = vec3(t, w, v);
- else if(i <= 5.0)
- color = vec3(v, w, q);
+ if(i >= 0.0)
+ color = vec3(input.b, t, w);
+ if(i >= 1.0)
+ color = vec3(q, input.b, w);
+ if(i >= 2.0)
+ color = vec3(w, input.b, t);
+ if(i >= 3.0)
+ color = vec3(w, q, input.b);
+ if(i >= 4.0)
+ color = vec3(t, w, input.b);
+ if(i >= 5.0)
+ color = vec3(input.b, w, q);
}
return(color);
}
+
Modified: branches/soc-2007-maike/release/glsl/colorband_rgb_hsv.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/colorband_rgb_hsv.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/colorband_rgb_hsv.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -1,13 +1,14 @@
vec3 colorband_rgb_hsv(vec3 input)
{
- vec3 color = vec3(0.0, 0.0, 0.0);
- float max = max(max(input.r, input.g), input.b);
- float min = min(min(input.r, input.g), input.b);
+ vec3 color = input;
+ float maxn = max(max(input.r, input.g), input.b);
+ float minn = min(min(input.r, input.g), input.b);
+ float delta;
- color.b = max;
+ color.b = maxn;
- if(max != 0.0)
- color.g = (max - min) / max;
+ if(maxn != 0.0)
+ color.g = (maxn - minn) / maxn;
else
color.g = 0.0;
@@ -15,15 +16,15 @@
color.b = -1.0;
else{
- float delta = max - min;
- if(input.r == max)
- color.r = (inputg - input.b) / delta;
- else if(input.g == max)
+ delta = maxn - minn;
+ if(input.r == maxn)
+ color.r = (input.g - input.b) / delta;
+ else if(input.g == maxn)
color.r = 2.0 + (input.b - input.r) / delta;
- else if(input.b == max)
+ else if(input.b == maxn)
color.r = 4.0 + (input.r - input.g) / delta;
- color.r = color.r * 60;
+ color.r = color.r * 60.0;
if(color.r < 0.0)
color.r = color.r + 360.0;
Modified: branches/soc-2007-maike/release/glsl/light_calc.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/light_calc.gsl 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/release/glsl/light_calc.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -25,7 +25,7 @@
#ifdef HEMI
diff_rslt+= (DIFF_SHADER_ID(lights[LIGHT_ID], normal) * diff1 * diff_color * vec3(lights[LIGHT_ID].color + vert_color) * lights[LIGHT_ID].layer * lights[LIGHT_ID].energy * vis) + (diff_color * emit);
#else
-diff_rslt+= (DIFF_SHADER_ID(lights[LIGHT_ID], normal, diff2, diff3) * diff1 * diff_color * vec3(lights[LIGHT_ID].color + vert_color) * lights[LIGHT_ID].layer * lights[LIGHT_ID].energy * vis) + (diff_color * emit);
+diff_rslt+= (DIFF_SHADER_ID(lights[LIGHT_ID], normal, diff2, diff3) * diff1 * diff_color * vec3(lights[LIGHT_ID].color + vert_color) * lights[LIGHT_ID].layer * lights[LIGHT_ID].energy * vis) + (diff_color * emit);
#endif
#endif
#endif
Added: branches/soc-2007-maike/release/glsl/tex_magic.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/tex_magic.gsl (rev 0)
+++ branches/soc-2007-maike/release/glsl/tex_magic.gsl 2007-07-28 17:30:54 UTC (rev 11408)
@@ -0,0 +1,70 @@
+vec3 magic(vec3 coords, float depth, float turbulence)
+{
+ float x, y, z;
+
+ x = sin((coords.x + coords.y + coords.z) * 5.0);
+ y = cos((-coords.x + coords.y - coords.z) * 5.0);
+ z = -cos((-coords.x - coords.y + coords.z) * 5.0);
+
+ if(depth > 0){
+ x *= turbulence;
+ y *= turbulence;
+ z *= turbulence;
+
+ y = -cos(x-y+z);
+ y *= turbulence;
+
+ if(depth > 1){
+ x = cos(x-y-z);
+ x *= turbulence;
+
+ if(depth > 2){
+ z = sin(-x-y-z);
+ z *= turbulence;
+
+ if(depth > 3){
+ x = -cos(-x+y-z);
+ x *= turbulence;
+
+ if(depth > 4){
+ y = -sin(-x+y+z);
+ y *= turbulence;
+
+ if(depth > 5){
+ y = -cos(-x+y+z);
+ y *= turbulence;
+
+ if(depth > 6){
+ x = cos(x+y+z);
+ x *= turbulence;
+
+ if(depth > 7){
+ z = sin(x+y-z);
+ z *= turbulence;
+
+ if(depth > 8){
+ x = -cos(-x-y+z);
+ x *= turbulence;
+
+ if(depth > 9){
+ y = -sin(x-y+z);
+ y *= turbulence;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if(turbulence > 0.0){
+ x = x / (turbulence * 2.0);
+ y = y / (turbulence * 2.0);
+ z = z / (turbulence * 2.0);
+ }
+
+ return(0.5 - x, 0.5 - y, 0.5 - z);
+}
Modified: branches/soc-2007-maike/source/blender/src/glsl_colorband.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_colorband.c 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/source/blender/src/glsl_colorband.c 2007-07-28 17:30:54 UTC (rev 11408)
@@ -60,8 +60,8 @@
glGenTextures(1, &colorband->texid);
glActiveTexture(GL_TEXTURE0 + type);
glBindTexture(GL_TEXTURE_1D, colorband->texid);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, COLORBAND_WIDTH, 0, GL_RGBA, GL_FLOAT, colorband->tex);
colorband->tex_set = 1;
glActiveTexture(GL_TEXTURE0);
Modified: branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c 2007-07-28 16:28:40 UTC (rev 11407)
+++ branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c 2007-07-28 17:30:54 UTC (rev 11408)
@@ -198,6 +198,10 @@
code = glsl_string(2, GFREE, code, GFREE, glsl_get_func("colorband_blend_mix.gsl"));
}
+ if(blend >= GLSL_CB_BLEND_HUE){
+ code = glsl_string(2, GFREE, glsl_get_func("colorband_hsv_rgb.gsl"), GFREE, code);
+ code = glsl_string(2, GFREE, glsl_get_func("colorband_rgb_hsv.gsl"), GFREE, code);
+ }
if(!code)
return "";
More information about the Bf-blender-cvs
mailing list