We're going to remove the fill-extrude-height and fill-extrude-base properties and instead create a separate fill-extrusion type.
Unfortunately this is a breaking change, but it's the right way to maintain flexibility for future 3D types in the spec and to keep certain logical patterns in our renderers.
As it stands, fill layers and extruded fill layers have the following differences:
fill layers render with per-feature opacity; extruded fill layers render with per-layer opacity
extruded fill layers do not support fill-outline-color
extruded fill layers utilize a different bucket type, and switching between those causes problems (https://github.com/mapbox/mapbox-gl-js/issues/3386); maintaining a 1:1 spec type - bucket type - render type is much cleaner
flat fill layers are rendered at a specified color, whereas the tops of extruded fill layers, even if they are flat features, are colored depending on light settings, and don't match fill-color exactly
Moreover, creating separate layer types will leave room for flexibility in deciding how to handle extruded texture compositing.
This will be a reversion to the way we originally designed extrusions in https://github.com/mapbox/mapbox-gl-style-spec/issues/456. (In happy news, this actually will make it easier to implement extrusions in gl-native once it supports property functions, since I more or less did it this way this summer…)
This change will go into effect ASAP so as to minimize the damage. fill-extrude-height and fill-extrude-base were introduced in Mapbox GL JS v0.26.0; they will be removed in favor of a fill-extrusion type in Mapbox GL JS v0.27.0, to be released next week. Layers created with these properties will render the same but will just require a bit of layer property renaming <- rendering will change due to https://github.com/mapbox/mapbox-gl-js/issues/3385 (extrusion heights will now be specified in meters instead of magicnumbers).
cc @mapbox/gl @mapbox/labs @mapbox/cartography-cats @mapbox/support
* There are some Mapbox demos floating around (embedded in blog posts, etc) that use fill-extrude-height/fill-extrude-base and link to either a prior dev build or v0.26.0; I think it's fine if those stay as they are.
We're going to remove the
fill-extrude-height
andfill-extrude-base
properties and instead create a separatefill-extrusion
type.Unfortunately this is a breaking change, but it's the right way to maintain flexibility for future 3D types in the spec and to keep certain logical patterns in our renderers.
As it stands, fill layers and extruded fill layers have the following differences:
fill-outline-color
fill-color
exactlyMoreover, creating separate layer types will leave room for flexibility in deciding how to handle extruded texture compositing.
This will be a reversion to the way we originally designed extrusions in https://github.com/mapbox/mapbox-gl-style-spec/issues/456. (In happy news, this actually will make it easier to implement extrusions in gl-native once it supports property functions, since I more or less did it this way this summer…)
This change will go into effect ASAP so as to minimize the damage.
fill-extrude-height
andfill-extrude-base
were introduced in Mapbox GL JS v0.26.0; they will be removed in favor of afill-extrusion
type in Mapbox GL JS v0.27.0, to be released next week.Layers created with these properties will render the same but will just require a bit of layer property renaming<- rendering will change due to https://github.com/mapbox/mapbox-gl-js/issues/3385 (extrusion heights will now be specified in meters instead of magicnumbers).cc @mapbox/gl @mapbox/labs @mapbox/cartography-cats @mapbox/support
🙏
To do:
* There are some Mapbox demos floating around (embedded in blog posts, etc) that use
fill-extrude-height
/fill-extrude-base
and link to either a prior dev build or v0.26.0; I think it's fine if those stay as they are.