summaryrefslogtreecommitdiff
path: root/src/mbgl/shader/fill_pattern_shader.hpp
blob: 36be5380007b3af8ed0a7a71f03d07d939f2218e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#pragma once

#include <mbgl/gl/shader.hpp>
#include <mbgl/gl/attribute.hpp>
#include <mbgl/gl/uniform.hpp>

namespace mbgl {

class FillVertex;

class FillPatternShader : public gl::Shader {
public:
    FillPatternShader(gl::Context&, Defines defines = None);

    using VertexType = FillVertex;

    gl::Attribute<int16_t, 2> a_pos = {"a_pos", *this};

    gl::UniformMatrix<4>              u_matrix               = {"u_matrix",               *this};
    gl::Uniform<std::array<float, 2>> u_pattern_tl_a         = {"u_pattern_tl_a",         *this};
    gl::Uniform<std::array<float, 2>> u_pattern_br_a         = {"u_pattern_br_a",         *this};
    gl::Uniform<std::array<float, 2>> u_pattern_tl_b         = {"u_pattern_tl_b",         *this};
    gl::Uniform<std::array<float, 2>> u_pattern_br_b         = {"u_pattern_br_b",         *this};
    gl::Uniform<float>                u_opacity              = {"u_opacity",              *this};
    gl::Uniform<float>                u_mix                  = {"u_mix",                  *this};
    gl::Uniform<float>                u_scale_a              = {"u_scale_a",              *this};
    gl::Uniform<float>                u_scale_b              = {"u_scale_b",              *this};
    gl::Uniform<float>                u_tile_units_to_pixels = {"u_tile_units_to_pixels", *this};
    gl::Uniform<int32_t>              u_image                = {"u_image",                *this};
    gl::Uniform<std::array<float, 2>> u_pattern_size_a       = {"u_pattern_size_a",       *this};
    gl::Uniform<std::array<float, 2>> u_pattern_size_b       = {"u_pattern_size_b",       *this};
    gl::Uniform<std::array<float, 2>> u_pixel_coord_upper    = {"u_pixel_coord_upper",    *this};
    gl::Uniform<std::array<float, 2>> u_pixel_coord_lower    = {"u_pixel_coord_lower",    *this};
};

} // namespace mbgl