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/raster.hpp> 7 #include <mbgl/util/geometry.hpp> 8 #include <mbgl/style/layers/raster_layer_properties.hpp> 9 10 namespace mbgl { 11 12 namespace uniforms { 13 MBGL_DEFINE_UNIFORM_SCALAR(gl::TextureUnit, u_image0); 14 MBGL_DEFINE_UNIFORM_SCALAR(gl::TextureUnit, u_image1); 15 MBGL_DEFINE_UNIFORM_SCALAR(float, u_fade_t); 16 MBGL_DEFINE_UNIFORM_SCALAR(float, u_buffer_scale); 17 MBGL_DEFINE_UNIFORM_SCALAR(float, u_brightness_low); 18 MBGL_DEFINE_UNIFORM_SCALAR(float, u_brightness_high); 19 MBGL_DEFINE_UNIFORM_SCALAR(float, u_saturation_factor); 20 MBGL_DEFINE_UNIFORM_SCALAR(float, u_contrast_factor); 21 MBGL_DEFINE_UNIFORM_SCALAR(float, u_scale_parent); 22 MBGL_DEFINE_UNIFORM_VECTOR(float, 3, u_spin_weights); 23 MBGL_DEFINE_UNIFORM_VECTOR(float, 2, u_tl_parent); 24 } // namespace uniforms 25 26 class RasterProgram : public Program< 27 shaders::raster, 28 gl::Triangle, 29 gl::Attributes< 30 attributes::a_pos, 31 attributes::a_texture_pos>, 32 gl::Uniforms< 33 uniforms::u_matrix, 34 uniforms::u_image0, 35 uniforms::u_image1, 36 uniforms::u_opacity, 37 uniforms::u_fade_t, 38 uniforms::u_brightness_low, 39 uniforms::u_brightness_high, 40 uniforms::u_saturation_factor, 41 uniforms::u_contrast_factor, 42 uniforms::u_spin_weights, 43 uniforms::u_buffer_scale, 44 uniforms::u_scale_parent, 45 uniforms::u_tl_parent>, 46 style::RasterPaintProperties> 47 { 48 public: 49 using Program::Program; 50 layoutVertex(Point<int16_t> p,Point<uint16_t> t)51 static LayoutVertex layoutVertex(Point<int16_t> p, Point<uint16_t> t) { 52 return LayoutVertex { 53 {{ 54 p.x, 55 p.y 56 }}, 57 {{ 58 t.x, 59 t.y 60 }} 61 }; 62 } 63 }; 64 65 using RasterLayoutVertex = RasterProgram::LayoutVertex; 66 using RasterAttributes = RasterProgram::Attributes; 67 68 } // namespace mbgl 69