summaryrefslogtreecommitdiff
path: root/src/mbgl/shader
diff options
context:
space:
mode:
authorAnsis Brammanis <brammanis@gmail.com>2015-02-02 17:08:26 -0800
committerAnsis Brammanis <brammanis@gmail.com>2015-02-02 17:57:12 -0800
commit322f46a5db6d44633ffc7a45140e163f03365371 (patch)
tree16ea2bcfd5f61c37b14d0b8d1b919d6ecb990f8c /src/mbgl/shader
parentb3ca6fcca6e3a1c383a0235aea3110bc940c0656 (diff)
downloadqtlocation-mapboxgl-322f46a5db6d44633ffc7a45140e163f03365371.tar.gz
implement functions for line-image
Diffstat (limited to 'src/mbgl/shader')
-rw-r--r--src/mbgl/shader/linepattern.fragment.glsl22
-rw-r--r--src/mbgl/shader/linepattern_shader.hpp9
2 files changed, 19 insertions, 12 deletions
diff --git a/src/mbgl/shader/linepattern.fragment.glsl b/src/mbgl/shader/linepattern.fragment.glsl
index 45be7c8c2f..08feff4396 100644
--- a/src/mbgl/shader/linepattern.fragment.glsl
+++ b/src/mbgl/shader/linepattern.fragment.glsl
@@ -2,9 +2,12 @@ uniform vec2 u_linewidth;
uniform float u_point;
uniform float u_blur;
-uniform vec2 u_pattern_size;
-uniform vec2 u_pattern_tl;
-uniform vec2 u_pattern_br;
+uniform vec2 u_pattern_size_a;
+uniform vec2 u_pattern_tl_a;
+uniform vec2 u_pattern_br_a;
+uniform vec2 u_pattern_size_b;
+uniform vec2 u_pattern_tl_b;
+uniform vec2 u_pattern_br_b;
uniform float u_fade;
uniform float u_opacity;
@@ -24,13 +27,14 @@ void main() {
// (v_linewidth.s)
float alpha = clamp(min(dist - (u_linewidth.t - u_blur), u_linewidth.s - dist) / u_blur, 0.0, 1.0);
- float x = mod(v_linesofar / u_pattern_size.x, 1.0);
- float y = 0.5 + (v_normal.y * u_linewidth.s / u_pattern_size.y);
- vec2 pos = mix(u_pattern_tl, u_pattern_br, vec2(x, y));
- float x2 = mod(x * 2.0, 1.0);
- vec2 pos2 = mix(u_pattern_tl, u_pattern_br, vec2(x2, y));
+ float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);
+ float y_a = 0.5 + (v_normal.y * u_linewidth.s / u_pattern_size_a.y);
+ vec2 pos_a = mix(u_pattern_tl_a, u_pattern_br_a, vec2(x_a, y_a));
+ float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);
+ float y_b = 0.5 + (v_normal.y * u_linewidth.s / u_pattern_size_b.y);
+ vec2 pos_b = mix(u_pattern_tl_b, u_pattern_br_b, vec2(x_b, y_b));
- vec4 color = texture2D(u_image, pos) * (1.0 - u_fade) + u_fade * texture2D(u_image, pos2);
+ vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);
alpha *= u_opacity;
diff --git a/src/mbgl/shader/linepattern_shader.hpp b/src/mbgl/shader/linepattern_shader.hpp
index 388cff17d2..16d9ff8be7 100644
--- a/src/mbgl/shader/linepattern_shader.hpp
+++ b/src/mbgl/shader/linepattern_shader.hpp
@@ -15,9 +15,12 @@ public:
UniformMatrix<4> u_matrix = {"u_matrix", *this};
UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this};
Uniform<std::array<float, 2>> u_linewidth = {"u_linewidth", *this};
- Uniform<std::array<float, 2>> u_pattern_size = {"u_pattern_size", *this};
- Uniform<std::array<float, 2>> u_pattern_tl = {"u_pattern_tl", *this};
- Uniform<std::array<float, 2>> u_pattern_br = {"u_pattern_br", *this};
+ Uniform<std::array<float, 2>> u_pattern_size_a = {"u_pattern_size_a", *this};
+ Uniform<std::array<float, 2>> u_pattern_tl_a = {"u_pattern_tl_a", *this};
+ Uniform<std::array<float, 2>> u_pattern_br_a = {"u_pattern_br_a", *this};
+ Uniform<std::array<float, 2>> u_pattern_size_b = {"u_pattern_size_b", *this};
+ Uniform<std::array<float, 2>> u_pattern_tl_b = {"u_pattern_tl_b", *this};
+ Uniform<std::array<float, 2>> u_pattern_br_b = {"u_pattern_br_b", *this};
Uniform<float> u_ratio = {"u_ratio", *this};
Uniform<float> u_point = {"u_point", *this};
Uniform<float> u_blur = {"u_blur", *this};