From 556b3ec8ea48c2135d7111ae650dc09bcbd720ef Mon Sep 17 00:00:00 2001 From: Lucas Wojciechowski Date: Thu, 26 May 2016 16:26:01 -0700 Subject: [PATCH 1/2] Use pragmas for fill-color and fill-outline-color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE FOR GL_NATIVE: The outline shaders’ color attribute has been renamed from “color” to “outline_color” --- src/circle.fragment.glsl | 2 +- src/circle.vertex.glsl | 4 ++-- src/fill.fragment.glsl | 6 ++++-- src/fill.vertex.glsl | 3 +++ src/outline.fragment.glsl | 7 +++++-- src/outline.vertex.glsl | 4 ++++ 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/circle.fragment.glsl b/src/circle.fragment.glsl index b4084c9908f..75289a4035a 100644 --- a/src/circle.fragment.glsl +++ b/src/circle.fragment.glsl @@ -23,7 +23,7 @@ void main() { float t = smoothstep(1.0 - u_blur, 1.0, length(v_extrude)); gl_FragColor = u_color * (1.0 - t) * u_opacity; #else - #pragma mapbox: initialize color + #pragma mapbox: initialize color lowp float t = smoothstep(1.0 - max(u_blur, v_antialiasblur), 1.0, length(v_extrude)); gl_FragColor = color * (1.0 - t) * u_opacity; diff --git a/src/circle.vertex.glsl b/src/circle.vertex.glsl index b90dbdb0c31..1cab555b9b9 100644 --- a/src/circle.vertex.glsl +++ b/src/circle.vertex.glsl @@ -33,8 +33,8 @@ varying lowp float v_antialiasblur; void main(void) { #ifdef MAPBOX_GL_JS - #pragma mapbox: initialize color - #pragma mapbox: initialize radius + #pragma mapbox: initialize color lowp + #pragma mapbox: initialize radius mediump #endif // unencode the extrusion vector that we snuck into the a_pos vector diff --git a/src/fill.fragment.glsl b/src/fill.fragment.glsl index 92e7e86c053..bb92dec7bbd 100644 --- a/src/fill.fragment.glsl +++ b/src/fill.fragment.glsl @@ -6,11 +6,13 @@ precision mediump float; #define highp #endif -uniform lowp vec4 u_color; uniform lowp float u_opacity; +#pragma mapbox: define color lowp void main() { - gl_FragColor = u_color * u_opacity; + #pragma mapbox: initialize color lowp + + gl_FragColor = color * u_opacity; #ifdef OVERDRAW_INSPECTOR gl_FragColor = vec4(1.0); diff --git a/src/fill.vertex.glsl b/src/fill.vertex.glsl index b0a6e124535..2cfa5322428 100644 --- a/src/fill.vertex.glsl +++ b/src/fill.vertex.glsl @@ -10,6 +10,9 @@ attribute vec2 a_pos; uniform mat4 u_matrix; +#pragma mapbox: define color lowp + void main() { + #pragma mapbox: initialize color lowp gl_Position = u_matrix * vec4(a_pos, 0, 1); } diff --git a/src/outline.fragment.glsl b/src/outline.fragment.glsl index 3ef265ae9c2..93ffecbc5b5 100644 --- a/src/outline.fragment.glsl +++ b/src/outline.fragment.glsl @@ -6,15 +6,18 @@ precision mediump float; #define highp #endif -uniform lowp vec4 u_color; uniform lowp float u_opacity; varying vec2 v_pos; +#pragma mapbox: define outline_color lowp + void main() { + #pragma mapbox: initialize outline_color lowp + float dist = length(v_pos - gl_FragCoord.xy); float alpha = smoothstep(1.0, 0.0, dist); - gl_FragColor = u_color * (alpha * u_opacity); + gl_FragColor = outline_color * (alpha * u_opacity); #ifdef OVERDRAW_INSPECTOR gl_FragColor = vec4(1.0); diff --git a/src/outline.vertex.glsl b/src/outline.vertex.glsl index df5ae343c00..ec5d8ce2d09 100644 --- a/src/outline.vertex.glsl +++ b/src/outline.vertex.glsl @@ -13,7 +13,11 @@ uniform vec2 u_world; varying vec2 v_pos; +#pragma mapbox: define outline_color lowp + void main() { + #pragma mapbox: initialize outline_color lowp + gl_Position = u_matrix * vec4(a_pos, 0, 1); v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world; } From e4737bb136d718f9c5fe8d943380f05db6249b57 Mon Sep 17 00:00:00 2001 From: Lucas Wojciechowski Date: Fri, 27 May 2016 12:15:56 -0700 Subject: [PATCH 2/2] Use ifdef statements to guard GL-JS-specific code --- src/fill.fragment.glsl | 12 +++++++++++- src/fill.vertex.glsl | 6 ++++++ src/outline.fragment.glsl | 13 +++++++++++-- src/outline.vertex.glsl | 5 +++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/fill.fragment.glsl b/src/fill.fragment.glsl index bb92dec7bbd..d0fc0cc7990 100644 --- a/src/fill.fragment.glsl +++ b/src/fill.fragment.glsl @@ -6,11 +6,21 @@ precision mediump float; #define highp #endif -uniform lowp float u_opacity; +#ifdef MAPBOX_GL_JS #pragma mapbox: define color lowp +#else +uniform lowp vec4 u_color; +#endif + +uniform lowp float u_opacity; void main() { + +#ifdef MAPBOX_GL_JS #pragma mapbox: initialize color lowp +#else + lowp vec4 color = u_color; +#endif gl_FragColor = color * u_opacity; diff --git a/src/fill.vertex.glsl b/src/fill.vertex.glsl index 2cfa5322428..fd4ba7f10bd 100644 --- a/src/fill.vertex.glsl +++ b/src/fill.vertex.glsl @@ -10,9 +10,15 @@ attribute vec2 a_pos; uniform mat4 u_matrix; +#ifdef MAPBOX_GL_JS #pragma mapbox: define color lowp +#endif void main() { + +#ifdef MAPBOX_GL_JS #pragma mapbox: initialize color lowp +#endif + gl_Position = u_matrix * vec4(a_pos, 0, 1); } diff --git a/src/outline.fragment.glsl b/src/outline.fragment.glsl index 93ffecbc5b5..753d642528b 100644 --- a/src/outline.fragment.glsl +++ b/src/outline.fragment.glsl @@ -6,14 +6,23 @@ precision mediump float; #define highp #endif +#ifdef MAPBOX_GL_JS +#pragma mapbox: define outline_color lowp +#else +uniform lowp vec4 u_color; +#endif + uniform lowp float u_opacity; varying vec2 v_pos; -#pragma mapbox: define outline_color lowp - void main() { + +#ifdef MAPBOX_GL_JS #pragma mapbox: initialize outline_color lowp +#else + lowp vec4 outline_color = u_color; +#endif float dist = length(v_pos - gl_FragCoord.xy); float alpha = smoothstep(1.0, 0.0, dist); diff --git a/src/outline.vertex.glsl b/src/outline.vertex.glsl index ec5d8ce2d09..d80431a1b6f 100644 --- a/src/outline.vertex.glsl +++ b/src/outline.vertex.glsl @@ -13,10 +13,15 @@ uniform vec2 u_world; varying vec2 v_pos; +#ifdef MAPBOX_GL_JS #pragma mapbox: define outline_color lowp +#endif + void main() { +#ifdef MAPBOX_GL_JS #pragma mapbox: initialize outline_color lowp +#endif gl_Position = u_matrix * vec4(a_pos, 0, 1); v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;