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