diff options
Diffstat (limited to 'src/mbgl/shaders/symbol_sdf.cpp')
-rw-r--r-- | src/mbgl/shaders/symbol_sdf.cpp | 100 |
1 files changed, 95 insertions, 5 deletions
diff --git a/src/mbgl/shaders/symbol_sdf.cpp b/src/mbgl/shaders/symbol_sdf.cpp index 0c39c5f4ac..cce6b769a6 100644 --- a/src/mbgl/shaders/symbol_sdf.cpp +++ b/src/mbgl/shaders/symbol_sdf.cpp @@ -27,21 +27,46 @@ uniform mediump float u_size_t; // used to interpolate between zoom stops when s uniform mediump float u_size; // used when size is both zoom and feature constant uniform mediump float u_layout_size; // used when size is feature constant + +#ifndef HAS_UNIFORM_u_fill_color uniform lowp float a_fill_color_t; attribute highp vec4 a_fill_color; varying highp vec4 fill_color; +#else +uniform highp vec4 u_fill_color; +#endif + +#ifndef HAS_UNIFORM_u_halo_color uniform lowp float a_halo_color_t; attribute highp vec4 a_halo_color; varying highp vec4 halo_color; +#else +uniform highp vec4 u_halo_color; +#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_halo_width uniform lowp float a_halo_width_t; attribute lowp vec2 a_halo_width; varying lowp float halo_width; +#else +uniform lowp float u_halo_width; +#endif + +#ifndef HAS_UNIFORM_u_halo_blur uniform lowp float a_halo_blur_t; attribute lowp vec2 a_halo_blur; varying lowp float halo_blur; +#else +uniform lowp float u_halo_blur; +#endif // matrix is for the vertex position. uniform mat4 u_matrix; @@ -61,11 +86,36 @@ varying vec4 v_data0; varying vec2 v_data1; void main() { + +#ifndef HAS_UNIFORM_u_fill_color fill_color = unpack_mix_vec4(a_fill_color, a_fill_color_t); +#else + highp vec4 fill_color = u_fill_color; +#endif + +#ifndef HAS_UNIFORM_u_halo_color halo_color = unpack_mix_vec4(a_halo_color, a_halo_color_t); +#else + highp vec4 halo_color = u_halo_color; +#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_halo_width halo_width = unpack_mix_vec2(a_halo_width, a_halo_width_t); +#else + lowp float halo_width = u_halo_width; +#endif + +#ifndef HAS_UNIFORM_u_halo_blur halo_blur = unpack_mix_vec2(a_halo_blur, a_halo_blur_t); +#else + lowp float halo_blur = u_halo_blur; +#endif vec2 a_pos = a_pos_offset.xy; vec2 a_offset = a_pos_offset.zw; @@ -170,11 +220,36 @@ const char* symbol_sdf::fragmentSource = R"MBGL_SHADER( #define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO uniform bool u_is_halo; + +#ifndef HAS_UNIFORM_u_fill_color varying highp vec4 fill_color; +#else +uniform highp vec4 u_fill_color; +#endif + +#ifndef HAS_UNIFORM_u_halo_color varying highp vec4 halo_color; +#else +uniform highp vec4 u_halo_color; +#endif + +#ifndef HAS_UNIFORM_u_opacity varying lowp float opacity; +#else +uniform lowp float u_opacity; +#endif + +#ifndef HAS_UNIFORM_u_halo_width varying lowp float halo_width; +#else +uniform lowp float u_halo_width; +#endif + +#ifndef HAS_UNIFORM_u_halo_blur varying lowp float halo_blur; +#else +uniform lowp float u_halo_blur; +#endif uniform sampler2D u_texture; uniform sampler2D u_fadetexture; @@ -185,11 +260,26 @@ varying vec4 v_data0; varying vec2 v_data1; void main() { - - - - - + +#ifdef HAS_UNIFORM_u_fill_color + highp vec4 fill_color = u_fill_color; +#endif + +#ifdef HAS_UNIFORM_u_halo_color + highp vec4 halo_color = u_halo_color; +#endif + +#ifdef HAS_UNIFORM_u_opacity + lowp float opacity = u_opacity; +#endif + +#ifdef HAS_UNIFORM_u_halo_width + lowp float halo_width = u_halo_width; +#endif + +#ifdef HAS_UNIFORM_u_halo_blur + lowp float halo_blur = u_halo_blur; +#endif vec2 tex = v_data0.xy; vec2 fade_tex = v_data0.zw; |