diff options
author | Ansis Brammanis <brammanis@gmail.com> | 2015-02-02 17:08:26 -0800 |
---|---|---|
committer | Ansis Brammanis <brammanis@gmail.com> | 2015-02-02 17:57:12 -0800 |
commit | 322f46a5db6d44633ffc7a45140e163f03365371 (patch) | |
tree | 16ea2bcfd5f61c37b14d0b8d1b919d6ecb990f8c /src/mbgl/shader | |
parent | b3ca6fcca6e3a1c383a0235aea3110bc940c0656 (diff) | |
download | qtlocation-mapboxgl-322f46a5db6d44633ffc7a45140e163f03365371.tar.gz |
implement functions for line-image
Diffstat (limited to 'src/mbgl/shader')
-rw-r--r-- | src/mbgl/shader/linepattern.fragment.glsl | 22 | ||||
-rw-r--r-- | src/mbgl/shader/linepattern_shader.hpp | 9 |
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}; |