diff options
Diffstat (limited to 'src/mbgl/shaders/circle.cpp')
-rw-r--r-- | src/mbgl/shaders/circle.cpp | 140 |
1 files changed, 133 insertions, 7 deletions
diff --git a/src/mbgl/shaders/circle.cpp b/src/mbgl/shaders/circle.cpp index 2ecceeca70..2e0c76122c 100644 --- a/src/mbgl/shaders/circle.cpp +++ b/src/mbgl/shaders/circle.cpp @@ -13,38 +13,108 @@ uniform vec2 u_extrude_scale; attribute vec2 a_pos; + +#ifndef HAS_UNIFORM_u_color uniform lowp float a_color_t; attribute highp vec4 a_color; varying highp vec4 color; +#else +uniform highp vec4 u_color; +#endif + +#ifndef HAS_UNIFORM_u_radius uniform lowp float a_radius_t; attribute mediump vec2 a_radius; varying mediump float radius; +#else +uniform mediump float u_radius; +#endif + +#ifndef HAS_UNIFORM_u_blur uniform lowp float a_blur_t; attribute lowp vec2 a_blur; varying lowp float blur; +#else +uniform lowp float u_blur; +#endif + +#ifndef HAS_UNIFORM_u_opacity uniform lowp float a_opacity_t; attribute lowp vec2 a_opacity; varying lowp float opacity; +#else +uniform lowp float u_opacity; +#endif + +#ifndef HAS_UNIFORM_u_stroke_color uniform lowp float a_stroke_color_t; attribute highp vec4 a_stroke_color; varying highp vec4 stroke_color; +#else +uniform highp vec4 u_stroke_color; +#endif + +#ifndef HAS_UNIFORM_u_stroke_width uniform lowp float a_stroke_width_t; attribute mediump vec2 a_stroke_width; varying mediump float stroke_width; +#else +uniform mediump float u_stroke_width; +#endif + +#ifndef HAS_UNIFORM_u_stroke_opacity uniform lowp float a_stroke_opacity_t; attribute lowp vec2 a_stroke_opacity; varying lowp float stroke_opacity; +#else +uniform lowp float u_stroke_opacity; +#endif varying vec3 v_data; void main(void) { + +#ifndef HAS_UNIFORM_u_color color = unpack_mix_vec4(a_color, a_color_t); +#else + highp vec4 color = u_color; +#endif + +#ifndef HAS_UNIFORM_u_radius radius = unpack_mix_vec2(a_radius, a_radius_t); +#else + mediump float radius = u_radius; +#endif + +#ifndef HAS_UNIFORM_u_blur blur = unpack_mix_vec2(a_blur, a_blur_t); +#else + lowp float blur = u_blur; +#endif + +#ifndef HAS_UNIFORM_u_opacity opacity = unpack_mix_vec2(a_opacity, a_opacity_t); +#else + lowp float opacity = u_opacity; +#endif + +#ifndef HAS_UNIFORM_u_stroke_color stroke_color = unpack_mix_vec4(a_stroke_color, a_stroke_color_t); +#else + highp vec4 stroke_color = u_stroke_color; +#endif + +#ifndef HAS_UNIFORM_u_stroke_width stroke_width = unpack_mix_vec2(a_stroke_width, a_stroke_width_t); +#else + mediump float stroke_width = u_stroke_width; +#endif + +#ifndef HAS_UNIFORM_u_stroke_opacity stroke_opacity = unpack_mix_vec2(a_stroke_opacity, a_stroke_opacity_t); +#else + lowp float stroke_opacity = u_stroke_opacity; +#endif // unencode the extrusion vector that we snuck into the a_pos vector vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0); @@ -69,24 +139,80 @@ void main(void) { )MBGL_SHADER"; const char* circle::fragmentSource = R"MBGL_SHADER( + +#ifndef HAS_UNIFORM_u_color varying highp vec4 color; +#else +uniform highp vec4 u_color; +#endif + +#ifndef HAS_UNIFORM_u_radius varying mediump float radius; +#else +uniform mediump float u_radius; +#endif + +#ifndef HAS_UNIFORM_u_blur varying lowp float blur; +#else +uniform lowp float u_blur; +#endif + +#ifndef HAS_UNIFORM_u_opacity varying lowp float opacity; +#else +uniform lowp float u_opacity; +#endif + +#ifndef HAS_UNIFORM_u_stroke_color varying highp vec4 stroke_color; +#else +uniform highp vec4 u_stroke_color; +#endif + +#ifndef HAS_UNIFORM_u_stroke_width varying mediump float stroke_width; +#else +uniform mediump float u_stroke_width; +#endif + +#ifndef HAS_UNIFORM_u_stroke_opacity varying lowp float stroke_opacity; +#else +uniform lowp float u_stroke_opacity; +#endif varying vec3 v_data; void main() { - - - - - - - + +#ifdef HAS_UNIFORM_u_color + highp vec4 color = u_color; +#endif + +#ifdef HAS_UNIFORM_u_radius + mediump float radius = u_radius; +#endif + +#ifdef HAS_UNIFORM_u_blur + lowp float blur = u_blur; +#endif + +#ifdef HAS_UNIFORM_u_opacity + lowp float opacity = u_opacity; +#endif + +#ifdef HAS_UNIFORM_u_stroke_color + highp vec4 stroke_color = u_stroke_color; +#endif + +#ifdef HAS_UNIFORM_u_stroke_width + mediump float stroke_width = u_stroke_width; +#endif + +#ifdef HAS_UNIFORM_u_stroke_opacity + lowp float stroke_opacity = u_stroke_opacity; +#endif vec2 extrude = v_data.xy; float extrude_length = length(extrude); |