diff --git a/circle.vertex.glsl b/circle.vertex.glsl index e05b5c4..5574aa2 100644 --- a/circle.vertex.glsl +++ b/circle.vertex.glsl @@ -1,7 +1,7 @@ precision highp float; uniform mat4 u_matrix; -uniform mat4 u_exmatrix; +uniform vec2 u_extrude_scale; uniform float u_devicepixelratio; attribute vec2 a_pos; @@ -64,14 +64,14 @@ void main(void) { // unencode the extrusion vector that we snuck into the a_pos vector v_extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0); - vec4 extrude = u_exmatrix * vec4(v_extrude * radius, 0, 0); + vec2 extrude = v_extrude * radius * u_extrude_scale; // multiply a_pos by 0.5, since we had it * 2 in order to sneak // in extrusion data gl_Position = u_matrix * vec4(floor(a_pos * 0.5), 0, 1); // gl_Position is divided by gl_Position.w after this shader runs. // Multiply the extrude by it so that it isn't affected by it. - gl_Position += extrude * gl_Position.w; + gl_Position.xy += extrude * gl_Position.w; #ifdef ATTRIBUTE_A_COLOR v_color = a_color / 255.0; diff --git a/icon.vertex.glsl b/icon.vertex.glsl index ffc40f7..d324c6a 100644 --- a/icon.vertex.glsl +++ b/icon.vertex.glsl @@ -9,10 +9,11 @@ attribute vec4 a_data2; // matrix is for the vertex position, exmatrix is for rotating and projecting // the extrusion vector. uniform mat4 u_matrix; -uniform mat4 u_exmatrix; + uniform mediump float u_zoom; uniform bool u_skewed; uniform float u_extra; +uniform vec2 u_extrude_scale; uniform vec2 u_texsize; @@ -26,18 +27,15 @@ void main() { mediump float a_minzoom = a_zoom[0]; mediump float a_maxzoom = a_zoom[1]; - float a_fadedist = 10.0; - // u_zoom is the current zoom level adjusted for the change in font size mediump float z = 2.0 - step(a_minzoom, u_zoom) - (1.0 - step(a_maxzoom, u_zoom)); + vec2 extrude = u_extrude_scale * (a_offset / 64.0); if (u_skewed) { - vec4 extrude = u_exmatrix * vec4(a_offset / 64.0, 0, 0); - gl_Position = u_matrix * vec4(a_pos + extrude.xy, 0, 1); + gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1); gl_Position.z += z * gl_Position.w; } else { - vec4 extrude = u_exmatrix * vec4(a_offset / 64.0, z, 0); - gl_Position = u_matrix * vec4(a_pos, 0, 1) + extrude; + gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0); } v_tex = a_tex / u_texsize; diff --git a/sdf.vertex.glsl b/sdf.vertex.glsl index 4e5ddcd..58f26cc 100644 --- a/sdf.vertex.glsl +++ b/sdf.vertex.glsl @@ -9,11 +9,11 @@ attribute vec4 a_data2; // matrix is for the vertex position, exmatrix is for rotating and projecting // the extrusion vector. uniform mat4 u_matrix; -uniform mat4 u_exmatrix; uniform mediump float u_zoom; uniform bool u_skewed; uniform float u_extra; +uniform vec2 u_extrude_scale; uniform vec2 u_texsize; @@ -31,13 +31,12 @@ void main() { // u_zoom is the current zoom level adjusted for the change in font size mediump float z = 2.0 - step(a_minzoom, u_zoom) - (1.0 - step(a_maxzoom, u_zoom)); + vec2 extrude = u_extrude_scale * (a_offset / 64.0); if (u_skewed) { - vec4 extrude = u_exmatrix * vec4(a_offset / 64.0, 0, 0); - gl_Position = u_matrix * vec4(a_pos + extrude.xy, 0, 1); + gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1); gl_Position.z += z * gl_Position.w; } else { - vec4 extrude = u_exmatrix * vec4(a_offset / 64.0, z, 0); - gl_Position = u_matrix * vec4(a_pos, 0, 1) + extrude; + gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0); } // position of y on the screen