1 | uniform mat4 u_matrix;
|
2 | uniform vec2 u_pixel_coord_upper;
|
3 | uniform vec2 u_pixel_coord_lower;
|
4 | uniform vec3 u_scale;
|
5 |
|
6 | attribute vec2 a_pos;
|
7 |
|
8 | varying vec2 v_pos_a;
|
9 | varying vec2 v_pos_b;
|
10 |
|
11 | #pragma mapbox: define lowp float opacity
|
12 | #pragma mapbox: define lowp vec4 pattern_from
|
13 | #pragma mapbox: define lowp vec4 pattern_to
|
14 | #pragma mapbox: define lowp float pixel_ratio_from
|
15 | #pragma mapbox: define lowp float pixel_ratio_to
|
16 |
|
17 | void main() {
|
18 | #pragma mapbox: initialize lowp float opacity
|
19 | #pragma mapbox: initialize mediump vec4 pattern_from
|
20 | #pragma mapbox: initialize mediump vec4 pattern_to
|
21 | #pragma mapbox: initialize lowp float pixel_ratio_from
|
22 | #pragma mapbox: initialize lowp float pixel_ratio_to
|
23 |
|
24 | vec2 pattern_tl_a = pattern_from.xy;
|
25 | vec2 pattern_br_a = pattern_from.zw;
|
26 | vec2 pattern_tl_b = pattern_to.xy;
|
27 | vec2 pattern_br_b = pattern_to.zw;
|
28 |
|
29 | float tileZoomRatio = u_scale.x;
|
30 | float fromScale = u_scale.y;
|
31 | float toScale = u_scale.z;
|
32 |
|
33 | vec2 display_size_a = (pattern_br_a - pattern_tl_a) / pixel_ratio_from;
|
34 | vec2 display_size_b = (pattern_br_b - pattern_tl_b) / pixel_ratio_to;
|
35 | gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
36 |
|
37 | v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, fromScale * display_size_a, tileZoomRatio, a_pos);
|
38 | v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, toScale * display_size_b, tileZoomRatio, a_pos);
|
39 | }
|