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/hillshade_prepare.hpp>
7 #include <mbgl/util/geometry.hpp>
8 
9 namespace mbgl {
10 
11 namespace uniforms {
12 MBGL_DEFINE_UNIFORM_VECTOR(uint16_t, 2, u_dimension);
13 MBGL_DEFINE_UNIFORM_SCALAR(float, u_maxzoom);
14 } // namespace uniforms
15 
16 class HillshadePrepareProgram : public Program<
17     shaders::hillshade_prepare,
18     gl::Triangle,
19     gl::Attributes<
20         attributes::a_pos,
21         attributes::a_texture_pos>,
22     gl::Uniforms<
23         uniforms::u_matrix,
24         uniforms::u_dimension,
25         uniforms::u_zoom,
26         uniforms::u_maxzoom,
27         uniforms::u_image>,
28     style::Properties<>> {
29 public:
30     using Program::Program;
31 
layoutVertex(Point<int16_t> p,Point<uint16_t> t)32     static LayoutVertex layoutVertex(Point<int16_t> p, Point<uint16_t> t) {
33         return LayoutVertex {
34             {{
35                 p.x,
36                 p.y
37             }},
38             {{
39                 t.x,
40                 t.y
41             }}
42         };
43     }
44 };
45 
46 using HillshadePrepareLayoutVertex = HillshadePrepareProgram::LayoutVertex;
47 using HillshadePrepareAttributes = HillshadePrepareProgram::Attributes;
48 
49 } // namespace mbgl
50