1 #pragma once 2 3 #include <mbgl/programs/program.hpp> 4 #include <mbgl/programs/attributes.hpp> 5 #include <mbgl/programs/uniforms.hpp> 6 #include <mbgl/shaders/background.hpp> 7 #include <mbgl/shaders/background_pattern.hpp> 8 #include <mbgl/util/geometry.hpp> 9 #include <mbgl/util/mat4.hpp> 10 #include <mbgl/util/size.hpp> 11 #include <mbgl/style/layers/background_layer_properties.hpp> 12 13 #include <string> 14 15 namespace mbgl { 16 17 class ImagePosition; 18 class UnwrappedTileID; 19 class TransformState; 20 template <class> class Faded; 21 22 using BackgroundLayoutAttributes = PositionOnlyLayoutAttributes; 23 24 struct BackgroundUniforms : gl::Uniforms< 25 uniforms::u_matrix, 26 uniforms::u_color, 27 uniforms::u_opacity> 28 {}; 29 30 struct BackgroundPatternUniforms : gl::Uniforms< 31 uniforms::u_matrix, 32 uniforms::u_opacity, 33 uniforms::u_texsize, 34 uniforms::u_pattern_tl_a, 35 uniforms::u_pattern_br_a, 36 uniforms::u_pattern_tl_b, 37 uniforms::u_pattern_br_b, 38 uniforms::u_pattern_size_a, 39 uniforms::u_pattern_size_b, 40 uniforms::u_scale_a, 41 uniforms::u_scale_b, 42 uniforms::u_mix, 43 uniforms::u_image, 44 uniforms::u_pixel_coord_upper, 45 uniforms::u_pixel_coord_lower, 46 uniforms::u_tile_units_to_pixels> 47 { 48 static Values values(mat4 matrix, 49 float opacity, 50 Size atlasSize, 51 const ImagePosition&, 52 const ImagePosition&, 53 const Faded<std::string>&, 54 const UnwrappedTileID&, 55 const TransformState&); 56 }; 57 58 class BackgroundProgram : public Program< 59 shaders::background, 60 gl::Triangle, 61 BackgroundLayoutAttributes, 62 BackgroundUniforms, 63 style::Properties<>> 64 { 65 public: 66 using Program::Program; 67 }; 68 69 class BackgroundPatternProgram : public Program< 70 shaders::background_pattern, 71 gl::Triangle, 72 BackgroundLayoutAttributes, 73 BackgroundPatternUniforms, 74 style::Properties<>> 75 { 76 public: 77 using Program::Program; 78 }; 79 80 using BackgroundLayoutVertex = BackgroundProgram::LayoutVertex; 81 using BackgroundAttributes = BackgroundProgram::Attributes; 82 83 } // namespace mbgl 84