diff --git a/shaders/glamor/1.shader_test b/shaders/glamor/1.shader_test new file mode 100644 index 0000000000000000000000000000000000000000..92f69d1e298866f70134929e8285c27acf5c5786 --- /dev/null +++ b/shaders/glamor/1.shader_test @@ -0,0 +1,157 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +#ifdef GL_ES +precision mediump float; +#endif +attribute vec4 v_position; +attribute vec4 v_texcoord; +varying vec2 source_texture; + +void main() +{ + gl_Position = v_position; + source_texture = v_texcoord.xy; +} + +[fragment shader] +#ifdef GL_ES +precision mediump float; +#endif +uniform mat3 transform_mat; +uniform int repeat_type; +uniform int hor_ver; +uniform float pt_slope; +uniform float cos_val; +uniform float p1_distance; +uniform float pt_distance; +varying vec2 source_texture; + +vec4 get_color(float stop_len); + +float get_stop_len() +{ + vec3 tmp = vec3(source_texture.x, source_texture.y, 1.0); + float distance; + float _p1_distance; + float _pt_distance; + float y_dist; + vec3 source_texture_trans = transform_mat * tmp; + + if(hor_ver == 0) { + y_dist = source_texture_trans.y - source_texture_trans.x*pt_slope; + distance = y_dist * cos_val; + _p1_distance = p1_distance * source_texture_trans.z; + _pt_distance = pt_distance * source_texture_trans.z; + + } else if (hor_ver == 1) { + distance = source_texture_trans.x; + _p1_distance = p1_distance * source_texture_trans.z; + _pt_distance = pt_distance * source_texture_trans.z; + } + + distance = (distance - _p1_distance) / _pt_distance; + + if(repeat_type == 1){ + distance = fract(distance); + } + + if(repeat_type == 3) { + distance = abs(fract(distance * 0.5 + 0.5) * 2.0 - 1.0); + } + + return distance; +} + +void main() +{ + float stop_len = get_stop_len(); + gl_FragColor = get_color(stop_len); +} + +#ifdef GL_ES +precision mediump float; +#endif +uniform int n_stop; +uniform float stop0; +uniform float stop1; +uniform float stop2; +uniform float stop3; +uniform float stop4; +uniform float stop5; +uniform float stop6; +uniform float stop7; +uniform vec4 stop_color0; +uniform vec4 stop_color1; +uniform vec4 stop_color2; +uniform vec4 stop_color3; +uniform vec4 stop_color4; +uniform vec4 stop_color5; +uniform vec4 stop_color6; +uniform vec4 stop_color7; + +vec4 get_color(float stop_len) +{ + vec4 stop_color_before; + vec4 stop_color_after; + vec4 gradient_color; + float stop_before; + float stop_delta; + float percentage; + + if((stop_len < stop0) && (n_stop >= 1)) { + stop_color_before = vec4(0.0, 0.0, 0.0, 0.0); + stop_delta = 0.0; + } else if((stop_len < stop1) && (n_stop >= 2)) { + stop_color_before = stop_color0; + stop_color_after = stop_color1; + stop_before = stop0; + stop_delta = stop1 - stop0; + } else if((stop_len < stop2) && (n_stop >= 3)) { + stop_color_before = stop_color1; + stop_color_after = stop_color2; + stop_before = stop1; + stop_delta = stop2 - stop1; + } else if((stop_len < stop3) && (n_stop >= 4)){ + stop_color_before = stop_color2; + stop_color_after = stop_color3; + stop_before = stop2; + stop_delta = stop3 - stop2; + } else if((stop_len < stop4) && (n_stop >= 5)){ + stop_color_before = stop_color3; + stop_color_after = stop_color4; + stop_before = stop3; + stop_delta = stop4 - stop3; + } else if((stop_len < stop5) && (n_stop >= 6)){ + stop_color_before = stop_color4; + stop_color_after = stop_color5; + stop_before = stop4; + stop_delta = stop5 - stop4; + } else if((stop_len < stop6) && (n_stop >= 7)){ + stop_color_before = stop_color5; + stop_color_after = stop_color6; + stop_before = stop5; + stop_delta = stop6 - stop5; + } else if((stop_len < stop7) && (n_stop >= 8)){ + stop_color_before = stop_color6; + stop_color_after = stop_color7; + stop_before = stop6; + stop_delta = stop7 - stop6; + } else { + stop_color_before = vec4(0.0, 0.0, 0.0, 0.0); + stop_delta = 0.0; + } + if(stop_delta > 2.0) + percentage = 0.0; + else if(stop_delta < 0.000001) + percentage = 0.0; + else + percentage = (stop_len - stop_before)/stop_delta; + + gradient_color = stop_color_before; + if(percentage != 0.0) + gradient_color += (stop_color_after - gradient_color)*percentage; + return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a); +} + diff --git a/shaders/glamor/10.shader_test b/shaders/glamor/10.shader_test new file mode 100644 index 0000000000000000000000000000000000000000..b60cc1d8ff86f02271d327248dba1598e897491a --- /dev/null +++ b/shaders/glamor/10.shader_test @@ -0,0 +1,141 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +#ifdef GL_ES +precision mediump float; +#endif +attribute vec4 v_position; +attribute vec4 v_texcoord; +varying vec2 source_texture; + +void main() +{ + gl_Position = v_position; + source_texture = v_texcoord.xy; +} + +[fragment shader] +#ifdef GL_ES +precision mediump float; +#endif +uniform mat3 transform_mat; +uniform int repeat_type; +uniform float A_value; +uniform vec2 c1; +uniform float r1; +uniform vec2 c2; +uniform float r2; +varying vec2 source_texture; + +vec4 get_color(float stop_len); + +int t_invalid; + +float get_stop_len() +{ + float t = 0.0; + float sqrt_value; + t_invalid = 0; + + vec3 tmp = vec3(source_texture.x, source_texture.y, 1.0); + vec3 source_texture_trans = transform_mat * tmp; + source_texture_trans.xy = source_texture_trans.xy/source_texture_trans.z; + float B_value = (source_texture_trans.x - c1.x) * (c2.x - c1.x) + + (source_texture_trans.y - c1.y) * (c2.y - c1.y) + + r1 * (r2 - r1); + float C_value = (source_texture_trans.x - c1.x) * (source_texture_trans.x - c1.x) + + (source_texture_trans.y - c1.y) * (source_texture_trans.y - c1.y) + - r1*r1; + if(abs(A_value) < 0.00001) { + if(B_value == 0.0) { + t_invalid = 1; + return t; + } + t = 0.5 * C_value / B_value; } else { + sqrt_value = B_value * B_value - A_value * C_value; + if(sqrt_value < 0.0) { + t_invalid = 1; + return t; + } + sqrt_value = sqrt(sqrt_value); + t = (B_value + sqrt_value) / A_value; + } + if(repeat_type == 0) { + if((t <= 0.0) || (t > 1.0)) + t = (B_value - sqrt_value) / A_value; + + if((t <= 0.0) || (t > 1.0)) { + t_invalid = 1; + return t; + } + } else { + if(t * (r2 - r1) <= -1.0 * r1) + t = (B_value - sqrt_value) / A_value; + + if(t * (r2 -r1) <= -1.0 * r1) { + t_invalid = 1; + return t; + } + } + + if(repeat_type == 1){ + t = fract(t); + } + + if(repeat_type == 3) { + t = abs(fract(t * 0.5 + 0.5) * 2.0 - 1.0); + } + + return t; +} + +void main() +{ + float stop_len = get_stop_len(); + if(t_invalid == 1) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_FragColor = get_color(stop_len); + } +} + +#ifdef GL_ES +precision mediump float; +#endif +uniform int n_stop; +uniform float stops[18]; +uniform vec4 stop_colors[18]; +vec4 get_color(float stop_len) +{ + int i = 0; + vec4 stop_color_before; + vec4 gradient_color; + float stop_delta; + float percentage; + + if(stop_len < stops[0]) + return vec4(0.0, 0.0, 0.0, 0.0); + for(i = 1; i < n_stop; i++) { + if(stop_len < stops[i]) + break; + } + if(i == n_stop) + return vec4(0.0, 0.0, 0.0, 0.0); + + stop_color_before = stop_colors[i-1]; + stop_delta = stops[i] - stops[i-1]; + if(stop_delta > 2.0) + percentage = 0.0; + else if(stop_delta < 0.000001) + percentage = 0.0; + else + percentage = (stop_len - stops[i-1])/stop_delta; + + gradient_color = stop_color_before; + if(percentage != 0.0) + gradient_color += (stop_colors[i] - gradient_color)*percentage; + return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a); +} + + diff --git a/shaders/glamor/2.shader_test b/shaders/glamor/2.shader_test new file mode 100644 index 0000000000000000000000000000000000000000..7ece87398109fa49f0c12f63b15c634a820b707c --- /dev/null +++ b/shaders/glamor/2.shader_test @@ -0,0 +1,188 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +#ifdef GL_ES +precision mediump float; +#endif +attribute vec4 v_position; +attribute vec4 v_texcoord; +varying vec2 source_texture; + +void main() +{ + gl_Position = v_position; + source_texture = v_texcoord.xy; +} + +[fragment shader] +#ifdef GL_ES +precision mediump float; +#endif +uniform mat3 transform_mat; +uniform int repeat_type; +uniform float A_value; +uniform vec2 c1; +uniform float r1; +uniform vec2 c2; +uniform float r2; +varying vec2 source_texture; + +vec4 get_color(float stop_len); + +int t_invalid; + +float get_stop_len() +{ + float t = 0.0; + float sqrt_value; + t_invalid = 0; + + vec3 tmp = vec3(source_texture.x, source_texture.y, 1.0); + vec3 source_texture_trans = transform_mat * tmp; + source_texture_trans.xy = source_texture_trans.xy/source_texture_trans.z; + float B_value = (source_texture_trans.x - c1.x) * (c2.x - c1.x) + + (source_texture_trans.y - c1.y) * (c2.y - c1.y) + + r1 * (r2 - r1); + float C_value = (source_texture_trans.x - c1.x) * (source_texture_trans.x - c1.x) + + (source_texture_trans.y - c1.y) * (source_texture_trans.y - c1.y) + - r1*r1; + if(abs(A_value) < 0.00001) { + if(B_value == 0.0) { + t_invalid = 1; + return t; + } + t = 0.5 * C_value / B_value; } else { + sqrt_value = B_value * B_value - A_value * C_value; + if(sqrt_value < 0.0) { + t_invalid = 1; + return t; + } + sqrt_value = sqrt(sqrt_value); + t = (B_value + sqrt_value) / A_value; + } + if(repeat_type == 0) { + if((t <= 0.0) || (t > 1.0)) + t = (B_value - sqrt_value) / A_value; + + if((t <= 0.0) || (t > 1.0)) { + t_invalid = 1; + return t; + } + } else { + if(t * (r2 - r1) <= -1.0 * r1) + t = (B_value - sqrt_value) / A_value; + + if(t * (r2 -r1) <= -1.0 * r1) { + t_invalid = 1; + return t; + } + } + + if(repeat_type == 1){ + t = fract(t); + } + + if(repeat_type == 3) { + t = abs(fract(t * 0.5 + 0.5) * 2.0 - 1.0); + } + + return t; +} + +void main() +{ + float stop_len = get_stop_len(); + if(t_invalid == 1) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_FragColor = get_color(stop_len); + } +} + +#ifdef GL_ES +precision mediump float; +#endif +uniform int n_stop; +uniform float stop0; +uniform float stop1; +uniform float stop2; +uniform float stop3; +uniform float stop4; +uniform float stop5; +uniform float stop6; +uniform float stop7; +uniform vec4 stop_color0; +uniform vec4 stop_color1; +uniform vec4 stop_color2; +uniform vec4 stop_color3; +uniform vec4 stop_color4; +uniform vec4 stop_color5; +uniform vec4 stop_color6; +uniform vec4 stop_color7; + +vec4 get_color(float stop_len) +{ + vec4 stop_color_before; + vec4 stop_color_after; + vec4 gradient_color; + float stop_before; + float stop_delta; + float percentage; + + if((stop_len < stop0) && (n_stop >= 1)) { + stop_color_before = vec4(0.0, 0.0, 0.0, 0.0); + stop_delta = 0.0; + } else if((stop_len < stop1) && (n_stop >= 2)) { + stop_color_before = stop_color0; + stop_color_after = stop_color1; + stop_before = stop0; + stop_delta = stop1 - stop0; + } else if((stop_len < stop2) && (n_stop >= 3)) { + stop_color_before = stop_color1; + stop_color_after = stop_color2; + stop_before = stop1; + stop_delta = stop2 - stop1; + } else if((stop_len < stop3) && (n_stop >= 4)){ + stop_color_before = stop_color2; + stop_color_after = stop_color3; + stop_before = stop2; + stop_delta = stop3 - stop2; + } else if((stop_len < stop4) && (n_stop >= 5)){ + stop_color_before = stop_color3; + stop_color_after = stop_color4; + stop_before = stop3; + stop_delta = stop4 - stop3; + } else if((stop_len < stop5) && (n_stop >= 6)){ + stop_color_before = stop_color4; + stop_color_after = stop_color5; + stop_before = stop4; + stop_delta = stop5 - stop4; + } else if((stop_len < stop6) && (n_stop >= 7)){ + stop_color_before = stop_color5; + stop_color_after = stop_color6; + stop_before = stop5; + stop_delta = stop6 - stop5; + } else if((stop_len < stop7) && (n_stop >= 8)){ + stop_color_before = stop_color6; + stop_color_after = stop_color7; + stop_before = stop6; + stop_delta = stop7 - stop6; + } else { + stop_color_before = vec4(0.0, 0.0, 0.0, 0.0); + stop_delta = 0.0; + } + if(stop_delta > 2.0) + percentage = 0.0; + else if(stop_delta < 0.000001) + percentage = 0.0; + else + percentage = (stop_len - stop_before)/stop_delta; + + gradient_color = stop_color_before; + if(percentage != 0.0) + gradient_color += (stop_color_after - gradient_color)*percentage; + return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a); +} + + diff --git a/shaders/glamor/4.shader_test b/shaders/glamor/4.shader_test new file mode 100644 index 0000000000000000000000000000000000000000..a48253ce635bdef02d7a9e3f241b1be84d160b50 --- /dev/null +++ b/shaders/glamor/4.shader_test @@ -0,0 +1,110 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +#ifdef GL_ES +precision mediump float; +#endif +attribute vec4 v_position; +attribute vec4 v_texcoord; +varying vec2 source_texture; + +void main() +{ + gl_Position = v_position; + source_texture = v_texcoord.xy; +} + +[fragment shader] +#ifdef GL_ES +precision mediump float; +#endif +uniform mat3 transform_mat; +uniform int repeat_type; +uniform int hor_ver; +uniform float pt_slope; +uniform float cos_val; +uniform float p1_distance; +uniform float pt_distance; +varying vec2 source_texture; + +vec4 get_color(float stop_len); + +float get_stop_len() +{ + vec3 tmp = vec3(source_texture.x, source_texture.y, 1.0); + float distance; + float _p1_distance; + float _pt_distance; + float y_dist; + vec3 source_texture_trans = transform_mat * tmp; + + if(hor_ver == 0) { + y_dist = source_texture_trans.y - source_texture_trans.x*pt_slope; + distance = y_dist * cos_val; + _p1_distance = p1_distance * source_texture_trans.z; + _pt_distance = pt_distance * source_texture_trans.z; + + } else if (hor_ver == 1) { + distance = source_texture_trans.x; + _p1_distance = p1_distance * source_texture_trans.z; + _pt_distance = pt_distance * source_texture_trans.z; + } + + distance = (distance - _p1_distance) / _pt_distance; + + if(repeat_type == 1){ + distance = fract(distance); + } + + if(repeat_type == 3) { + distance = abs(fract(distance * 0.5 + 0.5) * 2.0 - 1.0); + } + + return distance; +} + +void main() +{ + float stop_len = get_stop_len(); + gl_FragColor = get_color(stop_len); +} + +#ifdef GL_ES +precision mediump float; +#endif +uniform int n_stop; +uniform float stops[18]; +uniform vec4 stop_colors[18]; +vec4 get_color(float stop_len) +{ + int i = 0; + vec4 stop_color_before; + vec4 gradient_color; + float stop_delta; + float percentage; + + if(stop_len < stops[0]) + return vec4(0.0, 0.0, 0.0, 0.0); + for(i = 1; i < n_stop; i++) { + if(stop_len < stops[i]) + break; + } + if(i == n_stop) + return vec4(0.0, 0.0, 0.0, 0.0); + + stop_color_before = stop_colors[i-1]; + stop_delta = stops[i] - stops[i-1]; + if(stop_delta > 2.0) + percentage = 0.0; + else if(stop_delta < 0.000001) + percentage = 0.0; + else + percentage = (stop_len - stops[i-1])/stop_delta; + + gradient_color = stop_color_before; + if(percentage != 0.0) + gradient_color += (stop_colors[i] - gradient_color)*percentage; + return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a); +} +