diff options
author | Lauren Budorick <lauren@mapbox.com> | 2018-01-09 15:02:49 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-09 15:02:49 -0800 |
commit | 43a9bd3fbab666f21583ff264d6b6ba1d7069374 (patch) | |
tree | a5e1d09f6113ac9b5b1d7d313a96563e1f1d7374 /src/mbgl/programs/background_program.hpp | |
parent | 966606a1075bc1717db145f2fa677b0de8093ce9 (diff) | |
download | qtlocation-mapboxgl-43a9bd3fbab666f21583ff264d6b6ba1d7069374.tar.gz |
[core] Use separate shaders for background and clipping
Diffstat (limited to 'src/mbgl/programs/background_program.hpp')
-rw-r--r-- | src/mbgl/programs/background_program.hpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/mbgl/programs/background_program.hpp b/src/mbgl/programs/background_program.hpp new file mode 100644 index 0000000000..b76318938c --- /dev/null +++ b/src/mbgl/programs/background_program.hpp @@ -0,0 +1,83 @@ +#pragma once + +#include <mbgl/programs/program.hpp> +#include <mbgl/programs/attributes.hpp> +#include <mbgl/programs/uniforms.hpp> +#include <mbgl/shaders/background.hpp> +#include <mbgl/shaders/background_pattern.hpp> +#include <mbgl/util/geometry.hpp> +#include <mbgl/util/mat4.hpp> +#include <mbgl/util/size.hpp> +#include <mbgl/style/layers/background_layer_properties.hpp> + +#include <string> + +namespace mbgl { + +class ImagePosition; +class UnwrappedTileID; +class TransformState; +template <class> class Faded; + +using BackgroundLayoutAttributes = PositionOnlyLayoutAttributes; + +struct BackgroundUniforms : gl::Uniforms< + uniforms::u_matrix, + uniforms::u_color, + uniforms::u_opacity> +{}; + +struct BackgroundPatternUniforms : gl::Uniforms< + uniforms::u_matrix, + uniforms::u_opacity, + uniforms::u_texsize, + uniforms::u_pattern_tl_a, + uniforms::u_pattern_br_a, + uniforms::u_pattern_tl_b, + uniforms::u_pattern_br_b, + uniforms::u_pattern_size_a, + uniforms::u_pattern_size_b, + uniforms::u_scale_a, + uniforms::u_scale_b, + uniforms::u_mix, + uniforms::u_image, + uniforms::u_pixel_coord_upper, + uniforms::u_pixel_coord_lower, + uniforms::u_tile_units_to_pixels> +{ + static Values values(mat4 matrix, + float opacity, + Size atlasSize, + const ImagePosition&, + const ImagePosition&, + const Faded<std::string>&, + const UnwrappedTileID&, + const TransformState&); +}; + +class BackgroundProgram : public Program< + shaders::background, + gl::Triangle, + BackgroundLayoutAttributes, + BackgroundUniforms, + style::Properties<>> +{ +public: + using Program::Program; +}; + +class BackgroundPatternProgram : public Program< + shaders::background_pattern, + gl::Triangle, + BackgroundLayoutAttributes, + BackgroundPatternUniforms, + style::Properties<>> +{ +public: + using Program::Program; +}; + +using BackgroundLayoutVertex = BackgroundProgram::LayoutVertex; +using BackgroundAttributes = BackgroundProgram::Attributes; + +} // namespace mbgl |