diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/llmr/renderer/painter.hpp | 40 | ||||
-rw-r--r-- | include/llmr/renderer/shader.hpp | 3 |
2 files changed, 16 insertions, 27 deletions
diff --git a/include/llmr/renderer/painter.hpp b/include/llmr/renderer/painter.hpp index 7688763acf..b638fcca18 100644 --- a/include/llmr/renderer/painter.hpp +++ b/include/llmr/renderer/painter.hpp @@ -6,20 +6,19 @@ #include <llmr/geometry/vertex_buffer.hpp> #include <llmr/util/mat4.hpp> +#include <llmr/renderer/shader-plain.hpp> +#include <llmr/renderer/shader-fill.hpp> +#include <llmr/renderer/shader-outline.hpp> +#include <llmr/renderer/shader-pattern.hpp> +#include <llmr/renderer/shader-line.hpp> + + namespace llmr { class Transform; class Settings; class Style; class Tile; -// class LayerDescription; - -class Shader; -class PlainShader; -class OutlineShader; -class FillShader; -class LineShader; -class PatternShader; class FillBucket; class LineBucket; @@ -34,29 +33,21 @@ public: Painter& operator=(const Painter&) = delete; Painter& operator=(const Painter && ) = delete; - void setup(); - void clear(); void changeMatrix(const Tile::ID& id); void render(const std::shared_ptr<Tile>& tile); - void renderLayers(const std::shared_ptr<Tile>& tile, const std::vector<LayerDescription>& layers); - void renderDebug(const std::shared_ptr<Tile>& tile); - void renderMatte(); void renderBackground(); 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(); - bool switchShader(std::shared_ptr<Shader> shader); - private: void setupShaders(); - -public: + void drawClippingMask(); + void renderLayers(const std::shared_ptr<Tile>& tile, const std::vector<LayerDescription>& layers); + void renderDebug(const std::shared_ptr<Tile>& tile); private: Transform& transform; @@ -67,12 +58,11 @@ private: mat4 matrix; mat4 exMatrix; - std::shared_ptr<Shader> currentShader; - std::shared_ptr<FillShader> fillShader; - std::shared_ptr<PlainShader> plainShader; - std::shared_ptr<OutlineShader> outlineShader; - std::shared_ptr<LineShader> lineShader; - std::shared_ptr<PatternShader> patternShader; + std::unique_ptr<FillShader> fillShader; + std::unique_ptr<PlainShader> plainShader; + std::unique_ptr<OutlineShader> outlineShader; + std::unique_ptr<LineShader> lineShader; + std::unique_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.hpp b/include/llmr/renderer/shader.hpp index a32d0b647c..26674d2d62 100644 --- a/include/llmr/renderer/shader.hpp +++ b/include/llmr/renderer/shader.hpp @@ -1,7 +1,7 @@ #ifndef LLMR_RENDERER_SHADER #define LLMR_RENDERER_SHADER -#include <forward_list> +#include <cstdint> namespace llmr { @@ -18,7 +18,6 @@ public: bool valid; uint32_t program; - std::forward_list<uint32_t> attributes; private: bool compileShader(uint32_t *shader, uint32_t type, const char *source); |