summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLauren Budorick <lbudorick@gmail.com>2014-08-12 10:55:22 -0700
committerLauren Budorick <lbudorick@gmail.com>2014-08-12 10:55:22 -0700
commit3941908cee9d91ac505908e3443b4490644b2cf7 (patch)
treedf14f963c5b2d42c027c371b64aa0b9383c096b9 /include
parent46e754f806e24af7b88ef19dcf786e7ee006ba40 (diff)
parent28d8c13c2c1852062857070c17bc211d26902ba0 (diff)
downloadqtlocation-mapboxgl-3941908cee9d91ac505908e3443b4490644b2cf7.tar.gz
Merge pull request #400 from mapbox/rasterize
raster prerendering (parity)
Diffstat (limited to 'include')
-rw-r--r--include/mbgl/geometry/geometry.hpp2
-rw-r--r--include/mbgl/map/map.hpp6
-rw-r--r--include/mbgl/map/raster_tile_data.hpp3
-rw-r--r--include/mbgl/map/source.hpp1
-rw-r--r--include/mbgl/map/tile_data.hpp2
-rw-r--r--include/mbgl/map/tile_parser.hpp4
-rw-r--r--include/mbgl/map/vector_tile_data.hpp2
-rw-r--r--include/mbgl/renderer/bucket.hpp4
-rw-r--r--include/mbgl/renderer/debug_bucket.hpp2
-rw-r--r--include/mbgl/renderer/fill_bucket.hpp2
-rw-r--r--include/mbgl/renderer/line_bucket.hpp2
-rw-r--r--include/mbgl/renderer/painter.hpp33
-rw-r--r--include/mbgl/renderer/prerendered_texture.hpp7
-rw-r--r--include/mbgl/renderer/raster_bucket.hpp16
-rw-r--r--include/mbgl/renderer/symbol_bucket.hpp2
-rw-r--r--include/mbgl/style/property_key.hpp2
-rw-r--r--include/mbgl/style/rasterize_properties.hpp38
-rw-r--r--include/mbgl/style/style_bucket.hpp4
-rw-r--r--include/mbgl/style/style_layer.hpp9
-rw-r--r--include/mbgl/style/style_parser.hpp2
-rw-r--r--include/mbgl/style/style_properties.hpp2
-rw-r--r--include/mbgl/util/raster.hpp4
22 files changed, 64 insertions, 85 deletions
diff --git a/include/mbgl/geometry/geometry.hpp b/include/mbgl/geometry/geometry.hpp
index 47981ce83b..961569204d 100644
--- a/include/mbgl/geometry/geometry.hpp
+++ b/include/mbgl/geometry/geometry.hpp
@@ -12,7 +12,7 @@ class Geometry : private util::noncopyable {
public:
inline explicit Geometry(pbf& data);
-
+
enum command : uint8_t {
end = 0,
move_to = 1,
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 554962c713..fba38879ed 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -45,6 +45,8 @@ public:
// Triggers a lazy rerender: only performs a render when the map is not clean.
void rerender();
+ void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, const Tile::ID* id = nullptr, const mat4* matrix = nullptr);
+
// Forces a map update: always triggers a rerender.
void update();
@@ -123,6 +125,7 @@ public:
inline std::shared_ptr<uv::loop> getLoop() { return loop; }
inline timestamp getAnimationTime() const { return animationTime; }
inline timestamp getTime() const { return animationTime; }
+ void updateTiles();
private:
// uv async callbacks
@@ -137,7 +140,6 @@ private:
void updateSources();
void updateSources(const std::shared_ptr<StyleLayerGroup> &group);
- void updateTiles();
void updateRenderState();
size_t countLayers(const std::vector<LayerDescription>& layers);
@@ -146,12 +148,10 @@ private:
// the stylesheet.
void prepare();
- enum RenderPass { Opaque, Translucent };
// Unconditionally performs a render with the current map state.
void render();
void renderLayers(std::shared_ptr<StyleLayerGroup> group);
- void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass);
private:
bool async = false;
diff --git a/include/mbgl/map/raster_tile_data.hpp b/include/mbgl/map/raster_tile_data.hpp
index bf8691454f..98aa3baaf5 100644
--- a/include/mbgl/map/raster_tile_data.hpp
+++ b/include/mbgl/map/raster_tile_data.hpp
@@ -22,10 +22,11 @@ public:
~RasterTileData();
virtual void parse();
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc);
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix);
virtual bool hasData(std::shared_ptr<StyleLayer> layer_desc) const;
protected:
+ StyleBucketRaster properties;
RasterBucket bucket;
};
diff --git a/include/mbgl/map/source.hpp b/include/mbgl/map/source.hpp
index c3f2d4fe8b..4ffd097193 100644
--- a/include/mbgl/map/source.hpp
+++ b/include/mbgl/map/source.hpp
@@ -32,6 +32,7 @@ public:
void drawClippingMasks(Painter &painter);
size_t getTileCount() const;
void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc);
+ void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix);
void finishRender(Painter &painter);
std::forward_list<Tile::ID> getIDs() const;
diff --git a/include/mbgl/map/tile_data.hpp b/include/mbgl/map/tile_data.hpp
index c349ea2bae..5991613a2d 100644
--- a/include/mbgl/map/tile_data.hpp
+++ b/include/mbgl/map/tile_data.hpp
@@ -53,7 +53,7 @@ public:
virtual void beforeParse();
virtual void parse() = 0;
virtual void afterParse();
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc) = 0;
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix) = 0;
virtual bool hasData(std::shared_ptr<StyleLayer> layer_desc) const = 0;
diff --git a/include/mbgl/map/tile_parser.hpp b/include/mbgl/map/tile_parser.hpp
index 9aa0f4dc66..f011d47a38 100644
--- a/include/mbgl/map/tile_parser.hpp
+++ b/include/mbgl/map/tile_parser.hpp
@@ -14,6 +14,7 @@
namespace mbgl {
class Bucket;
+class Texturepool;
class FontStack;
class GlyphAtlas;
class GlyphStore;
@@ -22,6 +23,7 @@ class Sprite;
class Style;
class StyleBucket;
class StyleBucketFill;
+class StyleBucketRaster;
class StyleBucketLine;
class StyleBucketSymbol;
class StyleLayerGroup;
@@ -45,6 +47,7 @@ private:
std::unique_ptr<Bucket> createBucket(std::shared_ptr<StyleBucket> bucket_desc);
std::unique_ptr<Bucket> createFillBucket(const VectorTileLayer& layer, const FilterExpression &filter, const StyleBucketFill &fill);
+ std::unique_ptr<Bucket> createRasterBucket(const std::shared_ptr<Texturepool> &texturepool, const StyleBucketRaster &raster);
std::unique_ptr<Bucket> createLineBucket(const VectorTileLayer& layer, const FilterExpression &filter, const StyleBucketLine &line);
std::unique_ptr<Bucket> createSymbolBucket(const VectorTileLayer& layer, const FilterExpression &filter, const StyleBucketSymbol &symbol);
@@ -60,6 +63,7 @@ private:
std::shared_ptr<GlyphStore> glyphStore;
std::shared_ptr<SpriteAtlas> spriteAtlas;
std::shared_ptr<Sprite> sprite;
+ std::shared_ptr<Texturepool> texturePool;
Collision collision;
};
diff --git a/include/mbgl/map/vector_tile_data.hpp b/include/mbgl/map/vector_tile_data.hpp
index edad228999..deb628e485 100644
--- a/include/mbgl/map/vector_tile_data.hpp
+++ b/include/mbgl/map/vector_tile_data.hpp
@@ -32,7 +32,7 @@ public:
virtual void beforeParse();
virtual void parse();
virtual void afterParse();
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc);
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix);
virtual bool hasData(std::shared_ptr<StyleLayer> layer_desc) const;
protected:
diff --git a/include/mbgl/renderer/bucket.hpp b/include/mbgl/renderer/bucket.hpp
index 18f58ee464..1391f6e3e3 100644
--- a/include/mbgl/renderer/bucket.hpp
+++ b/include/mbgl/renderer/bucket.hpp
@@ -5,7 +5,6 @@
#include <memory>
#include <mbgl/map/tile.hpp>
#include <mbgl/util/noncopyable.hpp>
-#include <mbgl/renderer/prerendered_texture.hpp>
namespace mbgl {
@@ -14,11 +13,10 @@ class StyleLayer;
class Bucket : private util::noncopyable {
public:
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) = 0;
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) = 0;
virtual bool hasData() const = 0;
virtual ~Bucket() {}
- std::unique_ptr<PrerenderedTexture> prerendered;
};
}
diff --git a/include/mbgl/renderer/debug_bucket.hpp b/include/mbgl/renderer/debug_bucket.hpp
index ac4f18cc2c..660b7fcba8 100644
--- a/include/mbgl/renderer/debug_bucket.hpp
+++ b/include/mbgl/renderer/debug_bucket.hpp
@@ -20,7 +20,7 @@ class DebugBucket : public Bucket {
public:
DebugBucket(DebugFontBuffer& fontBuffer);
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
void drawLines(PlainShader& shader);
diff --git a/include/mbgl/renderer/fill_bucket.hpp b/include/mbgl/renderer/fill_bucket.hpp
index 9193b09149..e9340cce68 100644
--- a/include/mbgl/renderer/fill_bucket.hpp
+++ b/include/mbgl/renderer/fill_bucket.hpp
@@ -44,7 +44,7 @@ public:
const StyleBucketFill& properties);
~FillBucket();
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
void addGeometry(pbf& data);
diff --git a/include/mbgl/renderer/line_bucket.hpp b/include/mbgl/renderer/line_bucket.hpp
index d42b10bfb7..f65ca35605 100644
--- a/include/mbgl/renderer/line_bucket.hpp
+++ b/include/mbgl/renderer/line_bucket.hpp
@@ -28,7 +28,7 @@ public:
PointElementsBuffer& pointElementsBuffer,
const StyleBucketLine& properties);
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
void addGeometry(pbf& data);
diff --git a/include/mbgl/renderer/painter.hpp b/include/mbgl/renderer/painter.hpp
index b4023de167..db85d8703d 100644
--- a/include/mbgl/renderer/painter.hpp
+++ b/include/mbgl/renderer/painter.hpp
@@ -29,6 +29,8 @@
namespace mbgl {
+enum class RenderPass : bool { Opaque, Translucent };
+
class Transform;
class Style;
class Tile;
@@ -40,8 +42,10 @@ class FillBucket;
class LineBucket;
class SymbolBucket;
class RasterBucket;
+class PrerenderedTexture;
struct FillProperties;
+struct RasterProperties;
struct CompositeProperties;
class LayerDescription;
@@ -69,27 +73,27 @@ public:
void changeMatrix();
// Renders a particular layer from a tile.
- void renderTileLayer(const Tile& tile, std::shared_ptr<StyleLayer> layer_desc);
+ void renderTileLayer(const Tile& tile, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix);
// Renders debug information for a tile.
void renderTileDebug(const Tile& tile);
// Renders the red debug frame around a tile, visualizing its perimeter.
- void renderDebugFrame();
+ void renderDebugFrame(const mat4 &matrix);
- void renderDebugText(DebugBucket& bucket);
+ void renderDebugText(DebugBucket& bucket, const mat4 &matrix);
void renderDebugText(const std::vector<std::string> &strings);
- void renderFill(FillBucket& bucket, const FillProperties& properties, const Tile::ID& id, const mat4 &mat);
- void renderFill(FillBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
- void renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
- void renderSymbol(SymbolBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
- void renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ void renderFill(FillBucket& bucket, const FillProperties& properties, const Tile::ID& id, const mat4 &matrix);
+ void renderFill(FillBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+ void renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+ void renderSymbol(SymbolBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+ void renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+
+ void preparePrerender(RasterBucket &bucket);
- void preparePrerender(PrerenderedTexture &texture);
- void finishPrerender(PrerenderedTexture &texture);
+ void renderPrerenderedTexture(RasterBucket &bucket, const mat4 &matrix, const RasterProperties& properties);
- template <typename Properties>
- void renderPrerenderedTexture(PrerenderedTexture &texture, const Properties &properties);
+ void createPrerendered(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
void resize();
@@ -117,7 +121,7 @@ public:
bool needsAnimation() const;
private:
void setupShaders();
- const mat4 &translatedMatrix(const std::array<float, 2> &translation, const Tile::ID &id, TranslateAnchorType anchor = TranslateAnchorType::Map);
+ const mat4 &translatedMatrix(const mat4& matrix, const std::array<float, 2> &translation, const Tile::ID &id, TranslateAnchorType anchor = TranslateAnchorType::Map);
void prepareTile(const Tile& tile);
@@ -127,7 +131,6 @@ public:
void depthMask(bool value);
public:
- mat4 matrix;
mat4 vtxMatrix;
mat4 projMatrix;
mat4 nativeMatrix;
@@ -153,7 +156,7 @@ private:
bool gl_depthMask = true;
std::array<uint16_t, 2> gl_viewport = {{ 0, 0 }};
float strata = 0;
- enum { Opaque, Translucent } pass = Opaque;
+ RenderPass pass = RenderPass::Opaque;
const float strata_epsilon = 1.0f / (1 << 16);
public:
diff --git a/include/mbgl/renderer/prerendered_texture.hpp b/include/mbgl/renderer/prerendered_texture.hpp
index 9c72e14b88..e4dc610418 100644
--- a/include/mbgl/renderer/prerendered_texture.hpp
+++ b/include/mbgl/renderer/prerendered_texture.hpp
@@ -3,15 +3,15 @@
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/platform/gl.hpp>
-#include <mbgl/style/rasterize_properties.hpp>
namespace mbgl {
+class StyleBucketRaster;
class Painter;
class PrerenderedTexture : private util::noncopyable {
public:
- PrerenderedTexture(const RasterizedProperties &properties);
+ PrerenderedTexture(const StyleBucketRaster &properties);
~PrerenderedTexture();
void bindTexture();
@@ -23,12 +23,13 @@ public:
void blur(Painter& painter, uint16_t passes);
public:
- const RasterizedProperties properties;
+ const StyleBucketRaster &properties;
private:
GLint previous_fbo = 0;
GLuint fbo = 0;
GLuint texture = 0;
+ GLuint fbo_depth_stencil = 0;
};
}
diff --git a/include/mbgl/renderer/raster_bucket.hpp b/include/mbgl/renderer/raster_bucket.hpp
index c111193126..a68475565b 100644
--- a/include/mbgl/renderer/raster_bucket.hpp
+++ b/include/mbgl/renderer/raster_bucket.hpp
@@ -3,6 +3,10 @@
#include <mbgl/renderer/bucket.hpp>
#include <mbgl/util/raster.hpp>
+#include <mbgl/renderer/prerendered_texture.hpp>
+#include <mbgl/style/style_bucket.hpp>
+
+
namespace mbgl {
@@ -12,17 +16,23 @@ class VertexArrayObject;
class RasterBucket : public Bucket {
public:
- RasterBucket(const std::shared_ptr<Texturepool> &texturepool);
+ RasterBucket(const std::shared_ptr<Texturepool> &texturepool, const StyleBucketRaster& properties);
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
bool setImage(const std::string &data);
+ const StyleBucketRaster &properties;
+ PrerenderedTexture texture;
+
void drawRaster(RasterShader& shader, VertexBuffer &vertices, VertexArrayObject &array);
-private:
+ void drawRaster(RasterShader& shader, VertexBuffer &vertices, VertexArrayObject &array, GLuint texture);
+
Raster raster;
+
+private:
};
}
diff --git a/include/mbgl/renderer/symbol_bucket.hpp b/include/mbgl/renderer/symbol_bucket.hpp
index c003230cae..e890274238 100644
--- a/include/mbgl/renderer/symbol_bucket.hpp
+++ b/include/mbgl/renderer/symbol_bucket.hpp
@@ -53,7 +53,7 @@ class SymbolBucket : public Bucket {
public:
SymbolBucket(const StyleBucketSymbol &properties, Collision &collision);
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id);
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix);
virtual bool hasData() const;
virtual bool hasTextData() const;
virtual bool hasIconData() const;
diff --git a/include/mbgl/style/property_key.hpp b/include/mbgl/style/property_key.hpp
index 68dc709597..7d24981765 100644
--- a/include/mbgl/style/property_key.hpp
+++ b/include/mbgl/style/property_key.hpp
@@ -54,7 +54,7 @@ enum class PropertyKey {
CompositeOpacity,
RasterOpacity,
- RasterSpin,
+ RasterHueRotate,
RasterBrightnessLow,
RasterBrightnessHigh,
RasterSaturation,
diff --git a/include/mbgl/style/rasterize_properties.hpp b/include/mbgl/style/rasterize_properties.hpp
deleted file mode 100644
index aea90dfbdd..0000000000
--- a/include/mbgl/style/rasterize_properties.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef MBGL_STYLE_RASTERIZE_PROPERTIES
-#define MBGL_STYLE_RASTERIZE_PROPERTIES
-
-#include <mbgl/style/function_properties.hpp>
-
-namespace mbgl {
-
-// The calculated properties for a layer in a tile.
-class RasterizedProperties {
-public:
- float buffer = 1.0f / 32.0f;
- uint16_t size = 256;
- uint8_t blur = 0;
-};
-
-class RasterizeProperties {
-public:
- Function<bool> enabled = ConstantFunction<bool>(false);
- Function<float> buffer = ConstantFunction<float>(1.0f / 32.0f);
- Function<float> size = ConstantFunction<float>(256);
- Function<float> blur = ConstantFunction<float>(0);
-
- inline bool isEnabled(const int8_t z) const {
- return util::apply_visitor(FunctionEvaluator<bool>(z), enabled);
- }
-
- inline RasterizedProperties get(const int8_t z) const {
- RasterizedProperties properties;
- properties.buffer = util::apply_visitor(FunctionEvaluator<float>(z), buffer);
- properties.size = util::apply_visitor(FunctionEvaluator<float>(z), size);
- properties.blur = util::apply_visitor(FunctionEvaluator<float>(z), blur);
- return properties;
- }
-};
-
-}
-
-#endif
diff --git a/include/mbgl/style/style_bucket.hpp b/include/mbgl/style/style_bucket.hpp
index 530e0c1259..11b87d849d 100644
--- a/include/mbgl/style/style_bucket.hpp
+++ b/include/mbgl/style/style_bucket.hpp
@@ -82,6 +82,10 @@ public:
class StyleBucketRaster {
public:
+ bool prerendered = false;
+ uint16_t size = 256;
+ float blur = 0.0f;
+ float buffer = 0.03125f;
};
typedef util::variant<StyleBucketFill, StyleBucketLine, StyleBucketSymbol,
diff --git a/include/mbgl/style/style_layer.hpp b/include/mbgl/style/style_layer.hpp
index 14d60ed9b6..f8cfff7f63 100644
--- a/include/mbgl/style/style_layer.hpp
+++ b/include/mbgl/style/style_layer.hpp
@@ -4,7 +4,6 @@
#include <mbgl/style/class_dictionary.hpp>
#include <mbgl/style/class_properties.hpp>
#include <mbgl/style/style_properties.hpp>
-#include <mbgl/style/rasterize_properties.hpp>
#include <mbgl/style/applied_class_properties.hpp>
#include <vector>
@@ -20,8 +19,7 @@ class StyleLayerGroup;
class StyleLayer {
public:
- StyleLayer(const std::string &id, std::map<ClassID, ClassProperties> &&styles,
- std::unique_ptr<const RasterizeProperties> &&rasterize);
+ StyleLayer(const std::string &id, std::map<ClassID, ClassProperties> &&styles);
template <typename T> const T &getProperties() {
if (properties.is<T>()) {
@@ -80,11 +78,6 @@ public:
// layer's type.
StyleProperties properties;
- // Rasterization properties are used for prerendering the tile to a bitmap,
- // which is then used as a raster image instead of rendering this layer
- // directly in every frame.
- const std::unique_ptr<const RasterizeProperties> rasterize;
-
// Child layer array (if this layer has child layers).
std::shared_ptr<StyleLayerGroup> layers;
};
diff --git a/include/mbgl/style/style_parser.hpp b/include/mbgl/style/style_parser.hpp
index 8b8dc74f21..e4e1b7f632 100644
--- a/include/mbgl/style/style_parser.hpp
+++ b/include/mbgl/style/style_parser.hpp
@@ -6,7 +6,6 @@
#include <mbgl/style/style_source.hpp>
#include <mbgl/style/filter_expression.hpp>
#include <mbgl/style/class_properties.hpp>
-#include <mbgl/style/rasterize_properties.hpp>
#include <mbgl/style/style_bucket.hpp>
#include <unordered_map>
@@ -52,7 +51,6 @@ private:
void parseLayer(std::pair<JSVal, std::shared_ptr<StyleLayer>> &pair);
void parseStyles(JSVal value, std::map<ClassID, ClassProperties> &styles);
void parseStyle(JSVal, ClassProperties &properties);
- std::unique_ptr<RasterizeProperties> parseRasterize(JSVal value);
void parseReference(JSVal value, std::shared_ptr<StyleLayer> &layer);
void parseBucket(JSVal value, std::shared_ptr<StyleLayer> &layer);
void parseRender(JSVal value, std::shared_ptr<StyleLayer> &layer);
diff --git a/include/mbgl/style/style_properties.hpp b/include/mbgl/style/style_properties.hpp
index 35ea97781b..f12ab430e3 100644
--- a/include/mbgl/style/style_properties.hpp
+++ b/include/mbgl/style/style_properties.hpp
@@ -89,7 +89,7 @@ struct CompositeProperties {
struct RasterProperties {
inline RasterProperties() {}
float opacity = 1.0f;
- float spin = 0.0f;
+ float hue_rotate = 0.0f;
std::array<float, 2> brightness = {{ 0, 1 }};
float saturation = 0.0f;
float contrast = 0.0f;
diff --git a/include/mbgl/util/raster.hpp b/include/mbgl/util/raster.hpp
index 04c85169e2..e526ffa5ac 100644
--- a/include/mbgl/util/raster.hpp
+++ b/include/mbgl/util/raster.hpp
@@ -4,6 +4,7 @@
#include <mbgl/util/transition.hpp>
#include <mbgl/util/texturepool.hpp>
#include <mbgl/util/image.hpp>
+#include <mbgl/renderer/prerendered_texture.hpp>
#include <string>
#include <mutex>
@@ -25,6 +26,9 @@ public:
// bind current texture
void bind(bool linear = false);
+ // bind prerendered texture
+ void bind(const GLuint texture);
+
// loaded status
bool isLoaded() const;