diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-02-06 12:24:39 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-02-07 11:27:36 -0600 |
commit | 74eb8b360904be0c1d1818d0bf94a03fb0e8a687 (patch) | |
tree | 5a3403b84b3d2db483c85c62599ff36803f3adbb /src/mbgl/shaders/symbol_icon.hpp | |
parent | 9f2f7ddd12a4aaab0faddbe60cfb7c1e526fa7ff (diff) | |
download | qtlocation-mapboxgl-74eb8b360904be0c1d1818d0bf94a03fb0e8a687.tar.gz |
[core] Use cpp files for shader source
Diffstat (limited to 'src/mbgl/shaders/symbol_icon.hpp')
-rw-r--r-- | src/mbgl/shaders/symbol_icon.hpp | 137 |
1 files changed, 5 insertions, 132 deletions
diff --git a/src/mbgl/shaders/symbol_icon.hpp b/src/mbgl/shaders/symbol_icon.hpp index 17f4b36009..445c40f913 100644 --- a/src/mbgl/shaders/symbol_icon.hpp +++ b/src/mbgl/shaders/symbol_icon.hpp @@ -1,7 +1,7 @@ -#pragma once - // NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED. +#pragma once + #include <mbgl/gl/gl.hpp> namespace mbgl { @@ -9,136 +9,9 @@ namespace shaders { class symbol_icon { public: - static constexpr const char* name = "symbol_icon"; - static constexpr const char* vertexSource = R"MBGL_SHADER( -#ifdef GL_ES -precision highp float; -#else - -#if !defined(lowp) -#define lowp -#endif - -#if !defined(mediump) -#define mediump -#endif - -#if !defined(highp) -#define highp -#endif - -#endif - -float evaluate_zoom_function_1(const vec4 values, const float t) { - if (t < 1.0) { - return mix(values[0], values[1], t); - } else if (t < 2.0) { - return mix(values[1], values[2], t - 1.0); - } else { - return mix(values[2], values[3], t - 2.0); - } -} -vec4 evaluate_zoom_function_4(const vec4 value0, const vec4 value1, const vec4 value2, const vec4 value3, const float t) { - if (t < 1.0) { - return mix(value0, value1, t); - } else if (t < 2.0) { - return mix(value1, value2, t - 1.0); - } else { - return mix(value2, value3, t - 2.0); - } -} - -// The offset depends on how many pixels are between the world origin and the edge of the tile: -// vec2 offset = mod(pixel_coord, size) -// -// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile. -// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that. -// -// The pixel_coord is passed in as two 16 bit values: -// pixel_coord_upper = floor(pixel_coord / 2^16) -// pixel_coord_lower = mod(pixel_coord, 2^16) -// -// The offset is calculated in a series of steps that should preserve this precision: -vec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower, - const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) { - - vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size); - return (tile_units_to_pixels * pos + offset) / pattern_size; -} -attribute vec2 a_pos; -attribute vec2 a_offset; -attribute vec2 a_texture_pos; -attribute vec4 a_data; - - -// matrix is for the vertex position. -uniform mat4 u_matrix; - -uniform mediump float u_zoom; -uniform bool u_rotate_with_map; -uniform vec2 u_extrude_scale; - -uniform vec2 u_texsize; - -varying vec2 v_tex; -varying vec2 v_fade_tex; - -void main() { - vec2 a_tex = a_texture_pos.xy; - mediump float a_labelminzoom = a_data[0]; - mediump vec2 a_zoom = a_data.pq; - mediump float a_minzoom = a_zoom[0]; - mediump float a_maxzoom = a_zoom[1]; - - // 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_rotate_with_map) { - gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1); - gl_Position.z += z * gl_Position.w; - } else { - gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0); - } - - v_tex = a_tex / u_texsize; - v_fade_tex = vec2(a_labelminzoom / 255.0, 0.0); -} -)MBGL_SHADER"; - static constexpr const char* fragmentSource = R"MBGL_SHADER( -#ifdef GL_ES -precision mediump float; -#else - -#if !defined(lowp) -#define lowp -#endif - -#if !defined(mediump) -#define mediump -#endif - -#if !defined(highp) -#define highp -#endif - -#endif -uniform sampler2D u_texture; -uniform sampler2D u_fadetexture; -uniform lowp float u_opacity; - -varying vec2 v_tex; -varying vec2 v_fade_tex; - -void main() { - lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * u_opacity; - gl_FragColor = texture2D(u_texture, v_tex) * alpha; - -#ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); -#endif -} -)MBGL_SHADER"; + static const char* name; + static const char* vertexSource; + static const char* fragmentSource; }; } // namespace shaders |