All notable changes to deck.gl will be documented in this file.
[TBD]
- NEW:
pickingRadius
prop on theDeckGL
component, enables more tolerant click and hover interaction.
Versions 4.1.0 alpha 1, 2 and 3 have been unpublished due to a wrong tagging.
- PERFORMANCE: Optimize encodePickingColor by replacing the naive math with bit-wise operations (#631)
- FEAT: Add
pickingRadius
prop (#641) - FEAT: Seer integration and performace improvements
- PERFORMANCE: Compiled are now cached for reuse so that same shaders are not recompiled for the same type of layers (#613)
- PERFORMANCE: getViewportUniforms optimization (#586)
- BREAKING: Only composite layers have
renderLayer
methods (#585) - BREAKING: Only primitive layers'
draw
methods are called during render (#585) GridLayer
addcoverage
,lowerPercentile
,upperPercentile
andgetColorValue
to layer prop (#614)IconLayer
addgetAngle
for rotating each icon with a specific angles (in degrees) (#625)HexagonLayer
add intervalgetHexagons
,getSortedCounts
getUpdateTriggers
methods, make it easier to create layer subclassHexagonLayer
addgetColorValue
(optional) prop, returns a value to base bin color on.HexagonLayer
change defaulthexagonAggregator
output to{hexagons: [], hexagonVertices: []}
HexagonLayer
addgetValue
toBiinSorter
to support color / elevation by value- TEST: Implement code coverage with nyc and coverall report (#596)
- HOTFIX: fix
HexagonLayer
hex color calculation, usebin.value
instead ofbin.points.count
to calculate color - HOTFIX: Fix the bug that layer is finalized at every cycle due to an incorrect if check(#552)
- HOTFIX: Fix the bug that Model got regenerated every time data is changed for SolidPolygonLayer (#554)
- HOTFIX: Fix the bug that lighting is not working properly for 64-bit PolygonLayer on Intel Iris Pro GPU (#563)
- DEMO: Fix brushing layer demo (#603)
- DEMO: Fix the scrolling on iPhone (#546)
- DEMO: Reorganized the examples (#547)
- DEMO: Misc fixed form demo site (#548, #549)
- KNOWN ISSUES: the IconLayer example doesn't work if use with luma.gl v4.0.0-alpha.1
For details see What's New
- HOTFIX: Fixed project_fp64 issue under linux + nvidia (#315)
- HOTFIX: Fixed some 64-bit math issue on some Nvidia GPUs (#286)
- HOTFIX: Fixed an issue in scatterplot64 that NaN got passed to GPU (#287)
- Disable blending when rendering to picking framebuffer (#288)
- FIX: ExtrudedChoroplethLayer64 - Now updates uniforms when props change
- HOTFIX ScatterplotLayer: Fix instancePositions regression in 3.1.0
- HOTFIX DeckGL: Fix PropType warning regression in 3.1.0 (layers/effects props)
- LineLayer: Support elevations (z coords on positions)
- LineLayer64: Support elevations (z coords on positions)
- Scatterplot: Enable updateTriggers on instanceRadius, separate from positions.
- EXPERIMENTAL FEATURE: ReflectionEffect
- INTERNAL: Target build env moved to Node 6. Travis tests now run on 6 & 7.
- Bumped viewport-mercator-project version for the unproject fix.
- Updated dependency versions (#229)
- Added test code for attribute-manager (#213)
- Added minMax radius for the scatterplot-layer (#230)
- Performance optimization: remove unnecessary gl.getParameter() calls (#227)
- Fixed precision issue for vec2_mix_fp64 function (#223)
- Added mouse event object to hover and click event parameter (#255)
- Bug fix for picking not returning x, y coordinates (#220)
- Performance optimization: prevent redundant data calculation (#222)
- Bug fixes for ScatterplotLayer not being updated with new data prop (#215)
- Performance optimization: prevent fbo from reallocating every time (#217)
- Performance optimization for examples in gh-pages
- Enable blending by default
- Fix syntax highlighting in gh-pages
For details see What's New
- Added line width support to the choropleth layer.
- Layer.calculateInstancePickingColors now gets correct numInstances argument.
- Bumps luma.gl to include Linux fix.
- Move glslify to "dependencies" in package.json
- Fix bool uniform that webgl in certain environment handles it differently
- Fix issue of mercatorEnabled not working on Linux
- Fix issue where 0 opacity is interpreted as default opacity
- Fix issue with printing of layerName in debug messages crashes
- Fixed picking for the choropleth layer
- Added deckgl-overlay canvas ID and customize style support
- Fix document / add customize style support to the canvas (@contra)
- Added per point radius support for the scatterplot-layer
- Fixed primitive distortion bug for the scatterplot and hexagon-layer
- Added non-LatLng coordinate support for
- arc-layer
- choropleth-layer
- line-layer
- scatterplot-layer
- Added line-layer support
- Added per point color support for the scatterplot-layer
- Performance improvement
- Added perspective mode, 3D camera support
- Added unit tests
- Tons of refactoring and performance improvement
- Added precompile support
- Added data deep comparison support
- Added better uniform error message support
- Changed to use the new Luma.gl API
- Moved babel-related libraries from devDependence to dependency
- Changed default blending function (ZERO -> ONE_MINUS_SRC_ALPHA)
- Bug in getNumberInstances
- Retina display support
- Performance refactoring
- Switched the underlying rendering framework to luma.gl
- Fixed picking on retina/regular display
- Initial commit of the open-source version of deck.gl
- Fix: remove postinstall script
getPickingInfo()
methods receive an additional argumentsourceLayer
(#468)HexagonLayer
addlowerPercentile
andhigherPercentile
(#470)- FIX: Fix the async loading issue #347 by not setting state of stale layers to null (#483)
- FIX: Fix the lightSettings prop transfer issue in composite layers (#484)
- FIX: Fix the attribute logger (#499)
- Demo site: Add IconLayer demo (#467, #487)
- Demo site: Refactor to make all demos available as standalone examples (#471, 477)
- Demo site: Add Hexagon layer demo (3d heatmap) (#478)
- Demo site: New data set for the GeoJsonLayer demo (#492)
- Demo site: Link directly to source code from examples (#497)
- Examples: Remove layers that are not in v4 release plan from LayerBrowser example (#475, #490)
- Examples: Add JSX wrapper example (#482)
GridCellLayer
latOffset
andlonOffset
=>cellSize
- Picking improvement: consistently handle picking in composite layers and also simplied picking (#448, #450)
- FIX: Fix the projectionMode checks for point cloud layer (#454)
- FIX: Make extruded and non-extruded polygon layers using the same Uint8ClampedArray to process colors
- FIX: Make radiusPixels works for PointCloudLayer (#450)
- FIX: Fix the bug that several composite layer not transferring proper props to their underlying layers (#455, #464)
- FIX: Fix a bug causes active layers got invalidated in the middle of the picking info processing (#458)
- FIX: Fix the vertice generation for extruded polygons with holes (#447)
- FIX: Now deck.gl picking works properly for non-fullscreen apps (#455)
- FIX:
onHover
andonClick
props now work onGridLayer
andHexagonLayer
- Picking info from
GeoJsonLayer
andPolygonLayer
now havelayer
property point to the composite layer instead of a sublayer - FIX:
PointCloudLayer
useradiusPixels
instead ofradius
- Examples: Fix the hello-world examples (#461)
- Demo site: Add interactive demo for each core layers (#452)
- Demo site: Upgrade old demos to v4 (#453)
- Demo site: Various other bug fixes (#463)
- Disable implicit props forwarding between the composite layer and its underlying layers.
GeoJsonLayer
getColor
=>getLineColor
GeoJsonLayer
getWidth
=>getLineWidth
GeoJsonLayer
addlineWidthScale
GeoJsonLayer
addlineWidthMinPixels
GeoJsonLayer
addlineWidthMaxPixels
GeoJsonLayer
addlineJointRounded
GeoJsonLayer
addlineMiterLimit
PolygonLayer
getColor
=>getLineColor
PolygonLayer
getWidth
=>getLineWidth
PolygonLayer
addlineWidthScale
PolygonLayer
addlineWidthMinPixels
PolygonLayer
addlineWidthMaxPixels
PolygonLayer
addlineJointRounded
PolygonLayer
addlineMiterLimit
- FIX:
ScatterplotLayer
calls Layer.updateState() to invalidate all attributes when data changed - FIX: Fix the
ExtrudedChoroplethLayer64
in deprecated layer examples - Replace all readFileSync() calls with Javascript imports for all GLSL shaders
-
FIX: Composite layers now have a stub invalidateAttribute()
-
FIX: GeoJsonLayer and PolygonLayer now transfer correct updateTriggers to its sublayers
-
FIX: Fix the picking for PolygonLayer with and without extrusions
-
FIX: update the data file and default values for GeoJsonLayer example so that it correctly shows all geometry features
-
FIX:
GeoJsonLayer
now wireframe prop only affects extruded layer and stroked only affects non-extruded layer -
FIX: super.updateState() now get called appropriately so that data change can correctly popylate to GPUs
-
Re-factored GeoJsonLayer and PolygonLayer to separate polygon wireframe and polygon outline
-
Removed loader for glsl and use exported Javascript string to store all GLSL shaders
-
PointDensityGridLayer
=>GridLayer
-
PointDensityHexagonLayer
=>HexagonLayer
-
GridLayer
=>GridCellLayer
-
HexagonLayer
=>HexagonCellLayer
-
PolygonLayer
=>SolidPolygonLayer
-
PolygonLayer
is now a new composite layer that could render solid polygons as well as polygon outlines -
GridLayer
andHexagonLayer
to use new quantizedScale utility function -
GeoJsonLayer
removedrawPoints
,drawLines
,drawPolygon
,fillPolygon
-
GeoJsonLayer
addstroked
,filled
,extruded
,wireframe
-
GeoJsonLayer
getPointSize
=>getRadius
-
GeoJsonLayer
getStrokeWidth
=>getWidth
-
GeoJsonLayer
getStrokerColor
=>getColor
-
GeoJsonLayer
removegetPointColor
, usegetFillColor
instead -
PathLayer
strokeWidthScale
=>widthScale
-
PathLayer
strokeWidthMinPixels
=>widthMinPixels
-
PathLayer
strokeWidthMaxPixels
=>widthMaxPixels
-
PathLayer
getStrokeWidth
=>getWidth
-
ScatterplotLayer
change the defaultradiusScale
to 1 -
ScreenGridLayer
changeunitWidth
andunitHeight
tocellSizePixels
-
Update tests to reflect the new layer names and props
- NEW: add
viewportSize
,devicePixelRatio
andmodelViewMatrix
to default uniforms
- FIX: Make luma.gl peer dependency more flexible
- Dependencies: Bump to react-map-gl@2, remove viewport-mercator-project & lodash.flatten
- 64 bit layers additions and fixes
- IconLayer aspect ratio
- New sample layers
- Add PointCloudLayer
- FIX:
onHover
andonClick
are no longer called on layers that are not affected - BREAKING:
layer.pick()
is renamed tolayer.getPickingInfo()
, must return info object
- Bumps luma.gl with some hotfixes
- Remove unfinished example
- Doc improvements (upgrade guide)
- NEW: PointDensityGridLayer
API AUDIT CHANGES:
-
GeoJsonLayer
getHeight
=>getElevation
-
GeoJsonLayer
Docs: Clarified that elevation is always inmeters
for cartographic projection modes -
PolygonLayer
getHeight
=>getElevation
-
PolygonLayer
Docs: Clarified that elevation is always inmeters
for cartographic projection modes -
PolygonLayer
Docs: documented missing props -
PolygonLayer
Docs: MarkedlightSettings
as experimental -
PathLayer
getWidth
=>getStrokeWidth
-
PathLayer
strokeWidth
=>strokeWidthScale
-
PathLayer
strokeMinPixels
=>strokeWidthMinPixels
-
PathLayer
strokeMaxPixels
=>strokeWidthMaxPixels
-
HexagonLayer
Docs: MarkedlightSettings
as experimental -
HexagonLayer
Docs: MarkedselectedPickingColor
as experimental -
GridLayer
Docs: MarkedlightSettings
as experimental -
Cleanup: More layers now only imports the
get
utility function instead of the fullContainer
object from utils - this provides most of the benefits with smaller impact on the code.
DOCS
- Moved docs into 4.0 subfolder to support publishing multiple doc versions from a single tree.
- NEW: Main example now provides UI to modify layer props
- NEW: Main example now has GeoJson test file with all GeoJson geometry types.
- NEW: GridLayer
- FIX: GeoJson points now render correctly
- FIX: Mutation issue in defaultProps
- Demo now installs and builds stand-alone
- Picking improvements - order of function calls changed to enable layer overrides
- PathLayer: new props
- PathLayer: geometry generation performance.
- Webpack config improvements to enable tree-shaking
CHANGE: Revert to babel compilation to expose the dist file tree rather than a bundle
FIX: GeoJson path layer FIX: defaultProps handling
NEW: GeoJsonLayer cleanup NEW: HexagonLayer
FIX: Broken dist export
NEW: GeoJsonLayer, PathLayer NEW: PolygonLayer with flat, extrusion and wireframe (5x faster than Choropleth) NEW: Support immutable geojson data in choropleth layers NEW: Add benchmarks for node and browser.js (#299) NEW: Lighting supported on polygon layer. New lighting shader module. FIX: FP64 math function improvement, bug fixes and speed FIX: Set Viewport project/unproject default to screen coordinates
- Main example refactored
- Shader tests as webpack
- 64bit layers as subclasses of 32 bit layers
- Choropleth Layers now in deprecated folder
- Remove lodash.flattendeep and geojson-normalize module dependencies
FIX: Loosen luma.gl peer dependency
FIX: Additional model matrix cleanup and streamlining
FIX: Model matrix cleanup
- FIX: Re-export of beta6 with fixed config.
- FIX: Fix to model matrix in meter offsets mode (now handles rotations in addition to translations)
- BREAKING:
react
andexperimental
entry points no longer supported (after webpack transition). - CHANGE: Now packaged using Webpack 2 - exposed as a single bundle rather than a directory of files.
- UPDATE: Simplification and cleanup of main example.
- FIX: Disable viewport comparison (temporarily) as it broke
METERS
mode. - CHANGE: Remove react-autobind dependency (deck.gl/react now includes a minimal
autobind
implementation). - NEW: Additional examples included, including (WIP) google maps.
- FIX: Restore
COORDINATE_SYSTEM
export
- CHANGE: Move shaderlib into src, remove unneeded scripts
- FIX: modelMatrix now applied correctly in both drawing and picking
- NEW: Main example now has slider to separate layers
- NEW: Support for per-layer model matrices (layer.modelMatrix props)
- NEW: Support for non-mercator Viewports
The
DeckGL
React component now takes a genericViewport
prop that can be created with arbitraryview
andprojection
matrices. If not supplied, it attempts to create a viewport from supplied mercator parameters, which corresponds to behavior before the change. - NEW:
LayerManager.setViewport
replacesLayerManager.setContext
Internal changes: WebGLViewport
now a wrapper around a suppliedViewport
rather than a subclass.
- Support layerIndex uniform to solve z-fighting
- gl_FragDepth extension to fix Voronoi Layer (#186)
- Remove Scatterplot64(Meters) Layer for now (#188)
- FIX: Made Viewport.getUniforms() overridable and more debuggable
- FIX: METERS mode high precision z coordinate restored
- FIX: METERS mode high precision restored
- REMOVED unfinished GeoJson layer
- FIX: gl.viewport only called when view size changes
- FIX: Uniforms arg on Layer.draw()
- FIX to ChoroplethLayer64 colors
- FIX: METERS MODE
- Viewport now imported from viewport-mercator-project
- Dependency cleanup - several no longer needed dependencies removed
- Doc now serves locally from relative directories
- BREAKING: Removed pickInfo life cycle method - can be handled by pick
- FEATURE: Add
onLayerClick
andonLayerHover
methods to deck.gl wrapper. - FIX: Restore multilayer picking. Fixes #136.
- PERF: Enable Uint8Array color attributes
- Layer.instancePickingColors and Scatterplot.instanceColors now Uint8Arrays
- FIX: Scatterplot lineWidth warning
- FIX: context.viewport = null in draw
- FIX: opacity prop.
- FEATURE: Enables prop diff tracing (deck.log.priority = 1)
- PERF: Defeat spurious redraws
- FIX: compareProps and updateTriggers fixes
- PERF: reduce unnecessary updates
- Doc updates
- FIX: ArcLayer flickering last segments
- FIX: Scatterplot Layer exception
- FIX: Layer lifecycle - initialization/update of sublayers
- Doc update of Layers
- BREAKING CHANGE: Picking API final version. Fixes #115. Fixes #116.
- FIX: Ignore null layers
- FIX: Warns once instead of throws on deprecated props.
- FIX: Pinned babel-plugin-glslify version to avoid broken release
- Remove broken layers (HexagonLayer and PointCloudLayer).
- npm publish failed, no dist
- FEATURE: line width now takes device pixel ratio into account
- FEATURE: New life cycle methods, old methods deprecated
- FIX: Fix for context.viewport initialization order
- FIX:
DeckGL
component now cancels animation loop on unmount. - BREAKING: Removed
blending
prop from react components - FIX: ScreenGridLayer
- FEATURE: ScreenGridLayer now have accessors (getPosition, getWeight) and custom color ramps (minColor, maxColor)
- FEATURE: Adds drawOutline option to ScatterplotLayer.
- FIX: update context.viewport issue #128
- BREAKING: deepCompare prop changed to dataComparator. lodash.isequal dependency removed.
- FIX: Picking in most layers
- FIX: Initialization of sublayers
- Exports more symbols from lib
- 64 bit ExtrudedChoroplethLayer
- 64 bit layers in place
- GLSL library alignement 64 bit projections
- FEATURE:
Layer.pick
lifecycle method - Let's layers take control of picking - FEATURE: Support for Composite Layers
- FEATURE: new GeoJsonLayer - Initial composite layer, only Polygons for now.
- BREAKING: Introducing
context
that is shared between layers. gl and viewport moved from state to context. This implies that apps no longer need to pass {lng,lat,zoom,pitch,bearing} to each layer, only to theDeckGL
react component. - BREAKING: GridLayer renamed to ScreenGridLayer
- BREAKING: All layers now use
assembleShaders
- BREAKING: GLSL
project
package - shader functions renamed to haveproject
prefix, in line with conventions for new shader package system. - MISC: Documentation updates.
- MISC: WebGLRenderer/DeckGl react component cleanup, removed unusued methods.
- FIX: Perspective projection matrix "far plane" now covers negative Z coords
- FEATURE: Improved precision trigonometry library for Intel GPUs
- FEATURE: ChoroplethLayer64
- FEATURE: Experimental "Cone Based" VoronoiLayer
- CHANGE: shaderAssembler system reorganization
- FIX: Now takes layer props into account when generating projection uniforms
- DOCUMENTATION: Article updates
- FIX: Fix broken shader export in beta19
- BREAKING - New GLSL projection methods and assembleShader function. All layers updated.
- FIX - ArcLayer64 flickering fixed by high precision workaround.
- BREAKING: No longer use Camera/Scene to render. Enabler for issue #5.
- BREAKING: Sample layers now available through `import 'deck.gl/samples';
- FEATURE: FP64 layers now exported by default import 'deck.gl'
- BREAKING: DeckGLOverlay renamed to DeckGL:
import DeckGL from 'deck.gl';
- FIX: GridLayer
- FEATURE: ChoroplethLayer now renders MultiPolygons and Polygons with holes
- FEATURE: New GLSL library: 64bit emulated floating point
- FEATURE: New layer: ScatterplotLayer64: Sample 64-bit, high precision layer
- FEATUREY: ArcLayer can now specify separate start end end color for each arc.
- FIX: Add high precision version of
tan
as Intel GPU workaround. - INTERNAL: eslint now uses stronger rules. Fix new eslint warnings.
- Breaking change - rename
disableMercatorProject
prop tomercatorEnabled
- Add experimental layers folder
- Add separate import files for experimental layers and viewport import {PointCloudLayer, ...} from 'deck.gl/experimental' import Viewport from 'deck.gl/viewport'
- Add test cases for top-level exports
- Code reorganization
- Revert to 2-series luma.gl (no longer need beta release)
- Viewport improvements
- Breaking Change: Standardize parameters in layers to always expect arrays.
- Remove separate attribute updater definitions to simplify layer subclass creation