diff options
-rw-r--r-- | bin/style.js | 26 | ||||
-rw-r--r-- | include/llmr/style/properties.hpp | 8 | ||||
m--------- | ios/MVKMapKit | 0 | ||||
-rw-r--r-- | src/renderer/painter_fill.cpp | 4 | ||||
-rw-r--r-- | src/style/style_parser.cpp | 2 |
5 files changed, 24 insertions, 16 deletions
diff --git a/bin/style.js b/bin/style.js index eb2994fdf9..d851c1f16a 100644 --- a/bin/style.js +++ b/bin/style.js @@ -1820,10 +1820,16 @@ module.exports = { {"z": 16, "val": 10}, {"z": 17, "val": 11} ], + "hillshade_prerender": [ + "stops", + {"z": 11, "val": 0}, + {"z": 12, "val": 1} + ], "hillshade_prerender_size": [ "stops", - {"z": 13, "val": 1024 }, - {"z": 14, "val": 512 } + {"z": 11, "val": 1056}, + {"z": 12, "val": 512}, + {"z": 13, "val": 256} ] }, "classes": [ @@ -1977,7 +1983,7 @@ module.exports = { "hillshade_full_shadow": { "color": "#103", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -1992,7 +1998,7 @@ module.exports = { "hillshade_medium_shadow": { "color": "#206", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -2007,7 +2013,7 @@ module.exports = { "hillshade_full_highlight": { "color": "#fffff3", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -2022,7 +2028,7 @@ module.exports = { "hillshade_medium_highlight": { "color": "#ffd", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -2789,7 +2795,7 @@ module.exports = { "hillshade_full_shadow": { "color": "#103", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -2803,7 +2809,7 @@ module.exports = { "hillshade_medium_shadow": { "color": "#206", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -2817,7 +2823,7 @@ module.exports = { "hillshade_full_highlight": { "color": "#fdfdad", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ @@ -2832,7 +2838,7 @@ module.exports = { "hillshade_medium_highlight": { "color": "#ffe1b7", "antialias": false, - "prerender": true, + "prerender": "hillshade_prerender", "prerender-size": "hillshade_prerender_size", "prerender-blur": 1, "opacity": [ diff --git a/include/llmr/style/properties.hpp b/include/llmr/style/properties.hpp index 96e49b7e89..487f2d6c65 100644 --- a/include/llmr/style/properties.hpp +++ b/include/llmr/style/properties.hpp @@ -93,7 +93,7 @@ struct GenericClass { boost::optional<TranslateAnchor> translateAnchor; boost::optional<FunctionProperty> opacity; boost::optional<PropertyTransition> opacity_transition; - float prerender = false; + boost::optional<FunctionProperty> prerender; boost::optional<FunctionProperty> prerenderBuffer; boost::optional<FunctionProperty> prerenderSize; boost::optional<FunctionProperty> prerenderBlur; @@ -110,13 +110,17 @@ struct GenericProperties { std::array<float, 2> translate = {{ 0, 0 }}; TranslateAnchor translateAnchor = TranslateAnchor::Map; float opacity = 1.0; - bool prerender; // These are unresolved properties because the value here is per tile, so it might differ. + boost::optional<FunctionProperty> prerender; boost::optional<FunctionProperty> prerenderBuffer; boost::optional<FunctionProperty> prerenderSize; boost::optional<FunctionProperty> prerenderBlur; + inline bool getPrerender(int8_t z) const { + return prerender && prerender.get().evaluate<bool>(z); + } + // Obtains prerender properties by integer zoom level. inline PrerenderProperties getPrerenderProperties(int8_t z) const { PrerenderProperties props; diff --git a/ios/MVKMapKit b/ios/MVKMapKit new file mode 160000 +Subproject 7c7bb2310216a8d18108db40b09db08732df1f8 diff --git a/src/renderer/painter_fill.cpp b/src/renderer/painter_fill.cpp index 0d3a415115..fd5b1a334f 100644 --- a/src/renderer/painter_fill.cpp +++ b/src/renderer/painter_fill.cpp @@ -152,10 +152,8 @@ void Painter::renderFill(FillBucket& bucket, const std::string& layer_name, cons : defaultFillProperties; if (!properties.enabled) return; - if (properties.prerender) { + if (properties.prerender && properties.getPrerender(id.z)) { if (pass == Translucent) { - - // Buffer value around the 0..4096 extent that will be drawn into the 256x256 pixel // texture. We later scale the texture so that the actual bounds will align with this // tile's bounds. The reason we do this is so that the diff --git a/src/style/style_parser.cpp b/src/style/style_parser.cpp index fb3ab59578..2b6c0e3f22 100644 --- a/src/style/style_parser.cpp +++ b/src/style/style_parser.cpp @@ -557,7 +557,7 @@ void StyleParser::parseGenericClass(GenericClass &klass, JSVal value) { } if (value.HasMember("prerender")) { - klass.prerender = parseBoolean(value["prerender"]); + klass.prerender = parseFunction(value["prerender"]); } if (value.HasMember("prerender-buffer")) { |