diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-02-19 13:09:31 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-03-14 15:26:28 -0700 |
commit | 449c68e329448196c976fade12a8c0d58a0c7af9 (patch) | |
tree | 033fd489c9abe80ec485f876e56e65fcd0837b88 /src | |
parent | 2912a1423d7b1141e6f77b3c29f350065a084598 (diff) | |
download | qtlocation-mapboxgl-449c68e329448196c976fade12a8c0d58a0c7af9.tar.gz |
[core] Update mapbox-gl-js
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/shaders/line_pattern.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mbgl/shaders/line_pattern.cpp b/src/mbgl/shaders/line_pattern.cpp index f8d785ade9..be88255e3c 100644 --- a/src/mbgl/shaders/line_pattern.cpp +++ b/src/mbgl/shaders/line_pattern.cpp @@ -215,8 +215,14 @@ void main() { float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0); float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0); - float y_a = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_a.y); - float y_b = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_b.y); + + // v_normal.y is 0 at the midpoint of the line, -1 at the lower edge, 1 at the upper edge + // we clamp the line width outset to be between 0 and half the pattern height plus padding (2.0) + // to ensure we don't sample outside the designated symbol on the sprite sheet. + // 0.5 is added to shift the component to be bounded between 0 and 1 for interpolation of + // the texture coordinate + float y_a = 0.5 + (v_normal.y * clamp(v_width2.s, 0.0, (u_pattern_size_a.y + 2.0) / 2.0) / u_pattern_size_a.y); + float y_b = 0.5 + (v_normal.y * clamp(v_width2.s, 0.0, (u_pattern_size_b.y + 2.0) / 2.0) / u_pattern_size_b.y); vec2 pos_a = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, vec2(x_a, y_a)); vec2 pos_b = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, vec2(x_b, y_b)); |