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