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/heatmap_texture.hpp> 7 #include <mbgl/style/properties.hpp> 8 #include <mbgl/util/geometry.hpp> 9 10 namespace mbgl { 11 12 namespace uniforms { 13 MBGL_DEFINE_UNIFORM_SCALAR(gl::TextureUnit, u_color_ramp); 14 } // namespace uniforms 15 16 class HeatmapTextureProgram : public Program< 17 shaders::heatmap_texture, 18 gl::Triangle, 19 gl::Attributes<attributes::a_pos>, 20 gl::Uniforms< 21 uniforms::u_matrix, 22 uniforms::u_world, 23 uniforms::u_image, 24 uniforms::u_color_ramp, 25 uniforms::u_opacity>, 26 style::Properties<>> { 27 public: 28 using Program::Program; 29 layoutVertex(Point<int16_t> p)30 static LayoutVertex layoutVertex(Point<int16_t> p) { 31 return LayoutVertex{ 32 {{ 33 p.x, 34 p.y 35 }} 36 }; 37 } 38 }; 39 40 using HeatmapTextureLayoutVertex = HeatmapTextureProgram::LayoutVertex; 41 using HeatmapTextureAttributes = HeatmapTextureProgram::Attributes; 42 43 } // namespace mbgl 44