From 52b015b8b78194785ef821be5680eefb85dbbc1f Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Wed, 21 Mar 2018 13:57:43 -0700 Subject: [PATCH 1/2] Decrease glyph precision to 1/32 pixel to double max renderable width. Partial fix to issue #1531 --- src/data/bucket/symbol_bucket.js | 4 ++-- src/shaders/symbol_icon.vertex.glsl | 2 +- src/shaders/symbol_sdf.vertex.glsl | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data/bucket/symbol_bucket.js b/src/data/bucket/symbol_bucket.js index b123f655879..50735204fa9 100644 --- a/src/data/bucket/symbol_bucket.js +++ b/src/data/bucket/symbol_bucket.js @@ -104,8 +104,8 @@ function addVertex(array, anchorX, anchorY, ox, oy, tx, ty, sizeVertex) { // a_pos_offset anchorX, anchorY, - Math.round(ox * 64), - Math.round(oy * 64), + Math.round(ox * 32), + Math.round(oy * 32), // a_data tx, // x coordinate of symbol on glyph atlas texture diff --git a/src/shaders/symbol_icon.vertex.glsl b/src/shaders/symbol_icon.vertex.glsl index 31edb089676..d804dfd5bbd 100644 --- a/src/shaders/symbol_icon.vertex.glsl +++ b/src/shaders/symbol_icon.vertex.glsl @@ -79,7 +79,7 @@ void main() { mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos); vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0); - gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0); + gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0); v_tex = a_tex / u_texsize; vec2 fade_opacity = unpack_opacity(a_fade_opacity); diff --git a/src/shaders/symbol_sdf.vertex.glsl b/src/shaders/symbol_sdf.vertex.glsl index c562dda1efb..261191b3772 100644 --- a/src/shaders/symbol_sdf.vertex.glsl +++ b/src/shaders/symbol_sdf.vertex.glsl @@ -101,7 +101,7 @@ void main() { mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos); vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0); - gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0); + gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0); float gamma_scale = gl_Position.w; vec2 tex = a_tex / u_texsize; From e48d9354e0abe9c1e8418eff6a8675182d70be07 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Wed, 21 Mar 2018 13:56:53 -0700 Subject: [PATCH 2/2] Render test for long labels with unlimited width. --- .../text-max-width/unlimited/expected.png | Bin 0 -> 11453 bytes .../text-max-width/unlimited/style.json | 55 ++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 test/integration/render-tests/text-max-width/unlimited/expected.png create mode 100644 test/integration/render-tests/text-max-width/unlimited/style.json diff --git a/test/integration/render-tests/text-max-width/unlimited/expected.png b/test/integration/render-tests/text-max-width/unlimited/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..8b525273c51b3b72b4e1e62c3c4d9223cfe3a659 GIT binary patch literal 11453 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 z