diff options
Diffstat (limited to 'include/llmr/renderer')
-rw-r--r-- | include/llmr/renderer/bucket.hpp | 3 | ||||
-rw-r--r-- | include/llmr/renderer/fill_bucket.hpp | 2 | ||||
-rw-r--r-- | include/llmr/renderer/line_bucket.hpp | 2 | ||||
-rw-r--r-- | include/llmr/renderer/painter.hpp | 6 | ||||
-rw-r--r-- | include/llmr/renderer/shader-pattern.hpp | 25 |
5 files changed, 33 insertions, 5 deletions
diff --git a/include/llmr/renderer/bucket.hpp b/include/llmr/renderer/bucket.hpp index 95db9e017d..7ae0d2d008 100644 --- a/include/llmr/renderer/bucket.hpp +++ b/include/llmr/renderer/bucket.hpp @@ -2,6 +2,7 @@ #define LLMR_RENDERER_BUCKET #include <string> +#include <llmr/map/tile.hpp> namespace llmr { @@ -10,7 +11,7 @@ class Painter; class Bucket { public: Bucket() = default; - virtual void render(Painter& painter, const std::string& layer_name) = 0; + virtual void render(Painter& painter, const std::string& layer_name, const Tile::ID& id) = 0; private: // Make noncopyable diff --git a/include/llmr/renderer/fill_bucket.hpp b/include/llmr/renderer/fill_bucket.hpp index 32d8bc3218..bf1dd47cb4 100644 --- a/include/llmr/renderer/fill_bucket.hpp +++ b/include/llmr/renderer/fill_bucket.hpp @@ -18,7 +18,7 @@ class FillBucket : public Bucket { public: FillBucket(const std::shared_ptr<FillBuffer>& buffer, const BucketDescription& bucket_desc); - virtual void render(Painter& painter, const std::string& layer_name); + virtual void render(Painter& painter, const std::string& layer_name, const Tile::ID& id); void addGeometry(pbf& data); void addGeometry(const std::vector<Coordinate>& line); diff --git a/include/llmr/renderer/line_bucket.hpp b/include/llmr/renderer/line_bucket.hpp index 8350dc4b22..4c75fd38f6 100644 --- a/include/llmr/renderer/line_bucket.hpp +++ b/include/llmr/renderer/line_bucket.hpp @@ -17,7 +17,7 @@ class LineBucket : public Bucket { public: LineBucket(const std::shared_ptr<LineBuffer>& buffer, const BucketDescription& bucket_desc); - virtual void render(Painter& painter, const std::string& layer_name); + virtual void render(Painter& painter, const std::string& layer_name, const Tile::ID& id); void addGeometry(pbf& data); void addGeometry(const std::vector<Coordinate>& line); diff --git a/include/llmr/renderer/painter.hpp b/include/llmr/renderer/painter.hpp index 86d53c1637..dafa61c11d 100644 --- a/include/llmr/renderer/painter.hpp +++ b/include/llmr/renderer/painter.hpp @@ -5,6 +5,7 @@ #include "shader-plain.hpp" #include "shader-outline.hpp" #include "shader-line.hpp" +#include "shader-pattern.hpp" #include "../map/tile.hpp" #include "../geometry/vertex_buffer.hpp" @@ -42,8 +43,8 @@ public: void renderMatte(); void renderBackground(); - void renderFill(FillBucket& bucket, const std::string& layer_name); - void renderLine(LineBucket& bucket, const std::string& layer_name); + void renderFill(FillBucket& bucket, const std::string& layer_name, const Tile::ID& id); + void renderLine(LineBucket& bucket, const std::string& layer_name, const Tile::ID& id); void drawClippingMask(); @@ -68,6 +69,7 @@ private: std::shared_ptr<PlainShader> plainShader; std::shared_ptr<OutlineShader> outlineShader; std::shared_ptr<LineShader> lineShader; + std::shared_ptr<PatternShader> patternShader; // Set up the stencil quad we're using to generate the stencil mask. VertexBuffer tileStencilBuffer = { diff --git a/include/llmr/renderer/shader-pattern.hpp b/include/llmr/renderer/shader-pattern.hpp new file mode 100644 index 0000000000..5b295cfffb --- /dev/null +++ b/include/llmr/renderer/shader-pattern.hpp @@ -0,0 +1,25 @@ +#ifndef LLMR_RENDERER_SHADER_PATTERN +#define LLMR_RENDERER_SHADER_PATTERN + +#include "shader.hpp" + +namespace llmr { + +class PatternShader : public Shader { +public: + PatternShader(); + + int32_t a_pos; + int32_t u_matrix; + int32_t u_color; + int32_t u_offset; + int32_t u_pattern_size; + int32_t u_pattern_tl; + int32_t u_pattern_br; + int32_t u_mix; + +}; + +} + +#endif |