From 1494bd2b0ba5f2c9f8b5e8c808398d9b661090b7 Mon Sep 17 00:00:00 2001 From: Felix Palmer Date: Fri, 13 Dec 2024 14:33:31 +0100 Subject: [PATCH 01/12] First pass whats-new --- docs/whats-new.md | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index e0e5629e5cc..fcdd9e48ecb 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -4,12 +4,35 @@ This page contains highlights of each deck.gl release. Also check our [vis.gl bl ## deck.gl v9.1 -Release date: TBD (targeting September 2024) +Release date: TBD (targeting December 2024) + + + + + + + + + + +
+ +

WebGPU readiness

+
+ +

Aggregation Layers

+
+ +

Maplibre Globe View

+
+ +

React Widgets

+
+ ### WebGPU readiness -- luma.gl v9.1 -- All layers migrated to UBO +All layers have been migrated to UBO, which is a necessary step in order to support WebGL & WebGPU. luma.gl has been updated to v9.1. For most users this change should be transparent, but custom layers that add `uniforms` will [need to be migrated](./upgrade-guide.md). ### Aggregation layers upgrade @@ -26,6 +49,17 @@ Highlights: See [upgrade guide](./upgrade-guide.md) for more details. + +### Maplibre Globe View + +MapLibre v5 recently launched a [globe view](https://github.com/maplibre/maplibre-gl-js/issues/307), and in collaboration with the MapLibre team, we have add support for seamlessly integrating deck.gl layers with the globe using the existing [GlobeView](./api-reference/core/globe-view). The integration works for all three [Intergration Modes](./developer-guide/base-maps/using-with-maplibre#integration-modes). + + +### React Widgets + +deck.gl v9.0 added support for widgets, with v9.1 they can now be defined in React. A major benefit is the ablility to define custom widgets with UI built in React. + + ## deck.gl v9.0 Release date: March 21, 2024 From 6f9905d24135ef905d7c3f01bf65f38be655533a Mon Sep 17 00:00:00 2001 From: Felix Palmer Date: Fri, 13 Dec 2024 14:53:50 +0100 Subject: [PATCH 02/12] UBOs upgrade guide --- docs/upgrade-guide.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/upgrade-guide.md b/docs/upgrade-guide.md index 3ef720e4aa8..982996a899d 100644 --- a/docs/upgrade-guide.md +++ b/docs/upgrade-guide.md @@ -2,6 +2,28 @@ ## Upgrading to v9.1 +### Uniform buffer objects + +All shaders that use global uniform defitions need to be migrated to Uniform Buffer Objects and the shader references updated, for example: + +```glsl +// Global uniform +uniform float opacity; + +// UBO +uniform layerUniforms { + uniform float opacity; +} layer; +``` + +The [ShaderModule](https://luma.gl/docs/api-reference/shadertools/shader-module) class is used to encapsulate and inject the uniforms, as well as providing using useful type checks. It maps (typed) props to uniforms defined in the UBO block. See [layerUniforms](https://github.com/visgl/deck.gl/blob/master/modules/core/src/shaderlib/misc/layer-uniforms.ts) for an example. + +Layers need to be modified: +- `getShaders()` needs to additionaly return the `ShaderModule` that defines the UBO +- Instead of calling `model.setUniforms` (or `model.setBindings`) use `model.shaderInputs.setProps` to update the UBO with props + +For more information see [presentation](https://docs.google.com/presentation/d/1OcjA_hdu6vEvL_nxm7ywnXZQbMr5eR4R_L-wcz6K0HI/) ([https://www.youtube.com/watch?v=ei6scnRpNhU](recording)) + ### User input handling - The main gesture recognition library, [mjolnir.js](https://visgl.github.io/mjolnir.js), is upgraded to v3.0. Hammer.js is no longer an (indirect) dependency, due to its lack of maintenance and various issues with SSR and test environments. From 56f04309e11c50fcc98a06cb710f3772ed8e4e67 Mon Sep 17 00:00:00 2001 From: Felix Palmer Date: Fri, 13 Dec 2024 15:08:10 +0100 Subject: [PATCH 03/12] Image updates --- docs/upgrade-guide.md | 2 +- docs/whats-new.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/upgrade-guide.md b/docs/upgrade-guide.md index 982996a899d..0fb222e9cbc 100644 --- a/docs/upgrade-guide.md +++ b/docs/upgrade-guide.md @@ -22,7 +22,7 @@ Layers need to be modified: - `getShaders()` needs to additionaly return the `ShaderModule` that defines the UBO - Instead of calling `model.setUniforms` (or `model.setBindings`) use `model.shaderInputs.setProps` to update the UBO with props -For more information see [presentation](https://docs.google.com/presentation/d/1OcjA_hdu6vEvL_nxm7ywnXZQbMr5eR4R_L-wcz6K0HI/) ([https://www.youtube.com/watch?v=ei6scnRpNhU](recording)) +For more information see [presentation](https://docs.google.com/presentation/d/1OcjA_hdu6vEvL_nxm7ywnXZQbMr5eR4R_L-wcz6K0HI/) ([recording](https://www.youtube.com/watch?v=ei6scnRpNhU)) ### User input handling diff --git a/docs/whats-new.md b/docs/whats-new.md index fcdd9e48ecb..f239c257f1a 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -14,11 +14,11 @@ Release date: TBD (targeting December 2024)

WebGPU readiness

- +

Aggregation Layers

- +

Maplibre Globe View

From 39a36ae0deb19f95cbdfbfe4af8cd92a8509f84a Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Mon, 16 Dec 2024 10:55:56 +0100 Subject: [PATCH 04/12] Update docs/upgrade-guide.md Co-authored-by: Ib Green <7025232+ibgreen@users.noreply.github.com> --- docs/upgrade-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/upgrade-guide.md b/docs/upgrade-guide.md index 0fb222e9cbc..5c466ae8893 100644 --- a/docs/upgrade-guide.md +++ b/docs/upgrade-guide.md @@ -2,9 +2,9 @@ ## Upgrading to v9.1 -### Uniform buffer objects +### Uniform buffers -All shaders that use global uniform defitions need to be migrated to Uniform Buffer Objects and the shader references updated, for example: +GLSL shaders that take inputs via WebGL1-style uniforms need to be migrated to use uniform buffers instead. For example: ```glsl // Global uniform From e635ac960aa820e16cb00daab0edee2061c3ddfe Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Mon, 16 Dec 2024 10:57:51 +0100 Subject: [PATCH 05/12] Update docs/whats-new.md Co-authored-by: Ib Green <7025232+ibgreen@users.noreply.github.com> --- docs/whats-new.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index f239c257f1a..e85b491caf2 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -32,7 +32,11 @@ Release date: TBD (targeting December 2024) ### WebGPU readiness -All layers have been migrated to UBO, which is a necessary step in order to support WebGL & WebGPU. luma.gl has been updated to v9.1. For most users this change should be transparent, but custom layers that add `uniforms` will [need to be migrated](./upgrade-guide.md). +- luma.gl has been updated to v9.1 which focuses on building out WebGPU support. For details see [release notes](https://luma.gl/docs/whats-new#version-91-in-development) and [upgrade-guide](https://luma.gl/docs/upgrade-guide#upgrading-to-v91). +- As part of WebGPU readiness, all shader code in deck.gl v9.1 (layers and extensions) have been migrated to use uniform buffers instead of WebGL1 style uniforms. +- For most users this change should be transparent, but custom layers that add `uniforms` should [start migrating asap](./upgrade-guide.md) as WebGL1 style uniform support is being actively phased out. + + ### Aggregation layers upgrade From 70b4633f3352ad4ad5ec5dd43f68848cb4f8fb50 Mon Sep 17 00:00:00 2001 From: Felix Palmer Date: Mon, 16 Dec 2024 11:04:21 +0100 Subject: [PATCH 06/12] Move UBO section --- docs/upgrade-guide.md | 46 ++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/docs/upgrade-guide.md b/docs/upgrade-guide.md index 5c466ae8893..35416debbeb 100644 --- a/docs/upgrade-guide.md +++ b/docs/upgrade-guide.md @@ -2,28 +2,6 @@ ## Upgrading to v9.1 -### Uniform buffers - -GLSL shaders that take inputs via WebGL1-style uniforms need to be migrated to use uniform buffers instead. For example: - -```glsl -// Global uniform -uniform float opacity; - -// UBO -uniform layerUniforms { - uniform float opacity; -} layer; -``` - -The [ShaderModule](https://luma.gl/docs/api-reference/shadertools/shader-module) class is used to encapsulate and inject the uniforms, as well as providing using useful type checks. It maps (typed) props to uniforms defined in the UBO block. See [layerUniforms](https://github.com/visgl/deck.gl/blob/master/modules/core/src/shaderlib/misc/layer-uniforms.ts) for an example. - -Layers need to be modified: -- `getShaders()` needs to additionaly return the `ShaderModule` that defines the UBO -- Instead of calling `model.setUniforms` (or `model.setBindings`) use `model.shaderInputs.setProps` to update the UBO with props - -For more information see [presentation](https://docs.google.com/presentation/d/1OcjA_hdu6vEvL_nxm7ywnXZQbMr5eR4R_L-wcz6K0HI/) ([recording](https://www.youtube.com/watch?v=ei6scnRpNhU)) - ### User input handling - The main gesture recognition library, [mjolnir.js](https://visgl.github.io/mjolnir.js), is upgraded to v3.0. Hammer.js is no longer an (indirect) dependency, due to its lack of maintenance and various issues with SSR and test environments. @@ -54,6 +32,30 @@ Breaking changes: - `PointLight.attenuation` was previously ignored. To retain old behavior, use the default (`[1, 0, 0]`). +### Uniform buffers + +GLSL shaders that take inputs via WebGL1-style uniforms need to be migrated to use uniform buffers instead. For example: + +```glsl +// Global uniform +uniform float opacity; + +// UBO +uniform layerUniforms { + uniform float opacity; +} layer; +``` + +The [ShaderModule](https://luma.gl/docs/api-reference/shadertools/shader-module) class is used to encapsulate and inject the uniforms, as well as providing using useful type checks. It maps (typed) props to bindings and uniforms defined in the UBO block, which [ShaderInputs](https://luma.gl/docs/api-reference/engine/shader-inputs) uses to update bindings and uniform buffers on the GPU. + +See [layerUniforms](https://github.com/visgl/deck.gl/blob/master/modules/core/src/shaderlib/misc/layer-uniforms.ts) for an example. + +Layers need to be modified: +- `getShaders()` needs to additionaly return the `ShaderModule` that defines the UBO +- Instead of calling `model.setUniforms` (or `model.setBindings`) use `model.shaderInputs.setProps` to update the UBO with props + +For more information see [presentation](https://docs.google.com/presentation/d/1OcjA_hdu6vEvL_nxm7ywnXZQbMr5eR4R_L-wcz6K0HI/) ([recording](https://www.youtube.com/watch?v=ei6scnRpNhU)) + ## Upgrading to v9.0 **Before you upgrade: known issues** From 609d7109335930802276794de02d7a793e1a31cb Mon Sep 17 00:00:00 2001 From: Felix Palmer Date: Mon, 16 Dec 2024 11:06:43 +0100 Subject: [PATCH 07/12] Rearrange whatsnew --- docs/whats-new.md | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index e85b491caf2..cf23f0b8d43 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -9,14 +9,6 @@ Release date: TBD (targeting December 2024) - - + +
- -

WebGPU readiness

-
- -

Aggregation Layers

-

Maplibre Globe View

@@ -25,18 +17,26 @@ Release date: TBD (targeting December 2024)

React Widgets

+ +

Aggregation Layers

+
+ +

WebGPU readiness

+
-### WebGPU readiness +### Maplibre Globe View -- luma.gl has been updated to v9.1 which focuses on building out WebGPU support. For details see [release notes](https://luma.gl/docs/whats-new#version-91-in-development) and [upgrade-guide](https://luma.gl/docs/upgrade-guide#upgrading-to-v91). -- As part of WebGPU readiness, all shader code in deck.gl v9.1 (layers and extensions) have been migrated to use uniform buffers instead of WebGL1 style uniforms. -- For most users this change should be transparent, but custom layers that add `uniforms` should [start migrating asap](./upgrade-guide.md) as WebGL1 style uniform support is being actively phased out. +MapLibre v5 recently launched a [globe view](https://github.com/maplibre/maplibre-gl-js/issues/307), and in collaboration with the MapLibre team, we have add support for seamlessly integrating deck.gl layers with the globe using the existing [GlobeView](./api-reference/core/globe-view). The integration works for all three [Intergration Modes](./developer-guide/base-maps/using-with-maplibre#integration-modes). +### React Widgets +deck.gl v9.0 added support for widgets, with v9.1 they can now be defined in React. A major benefit is the ablility to define custom widgets with UI built in React. ### Aggregation layers upgrade @@ -53,16 +53,11 @@ Highlights: See [upgrade guide](./upgrade-guide.md) for more details. +### WebGPU readiness -### Maplibre Globe View - -MapLibre v5 recently launched a [globe view](https://github.com/maplibre/maplibre-gl-js/issues/307), and in collaboration with the MapLibre team, we have add support for seamlessly integrating deck.gl layers with the globe using the existing [GlobeView](./api-reference/core/globe-view). The integration works for all three [Intergration Modes](./developer-guide/base-maps/using-with-maplibre#integration-modes). - - -### React Widgets - -deck.gl v9.0 added support for widgets, with v9.1 they can now be defined in React. A major benefit is the ablility to define custom widgets with UI built in React. - +- luma.gl has been updated to v9.1 which focuses on building out WebGPU support. For details see [release notes](https://luma.gl/docs/whats-new#version-91-in-development) and [upgrade-guide](https://luma.gl/docs/upgrade-guide#upgrading-to-v91). +- As part of WebGPU readiness, all shader code in deck.gl v9.1 (layers and extensions) have been migrated to use uniform buffers instead of WebGL1 style uniforms. +- For most users this change should be transparent, but custom layers that add `uniforms` should [start migrating asap](./upgrade-guide.md) as WebGL1 style uniform support is being actively phased out. ## deck.gl v9.0 From 516ef4b7bc032a00c9ce9fc805931795a6e8c878 Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Fri, 20 Dec 2024 10:58:22 +0200 Subject: [PATCH 08/12] Update docs/whats-new.md Co-authored-by: Chris Gervang --- docs/whats-new.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index cf23f0b8d43..ae7f55eb06a 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -36,7 +36,11 @@ MapLibre v5 recently launched a [globe view](https://github.com/maplibre/maplibr ### React Widgets -deck.gl v9.0 added support for widgets, with v9.1 they can now be defined in React. A major benefit is the ablility to define custom widgets with UI built in React. +deck.gl v9.0 added support for widgets, with v9.1 they can now be defined in React. All of our built-in widgets are now react-compatible and available from the `@deck.gl/react` package. To try it out, check out our new [getting started example](https://github.com/visgl/deck.gl/tree/master/examples/get-started/react/widgets) for widgets in React. + +### Widgets Developer Guide + +A major benefit of React support is the ability to define custom widgets with UI built in React in your own applications. Learn how to write your own deck.gl widgets with our new [Custom Widgets Developer Guide](./docs/developer-guide/custom-widgets). ### Aggregation layers upgrade From c3e3fd90ff8e327dbab73f8b9cafdaed39ef1c58 Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Wed, 8 Jan 2025 12:27:57 +0100 Subject: [PATCH 09/12] Update docs/whats-new.md Co-authored-by: Ib Green <7025232+ibgreen@users.noreply.github.com> --- docs/whats-new.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index ae7f55eb06a..69b161f3e8c 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -32,7 +32,9 @@ Release date: TBD (targeting December 2024) ### Maplibre Globe View -MapLibre v5 recently launched a [globe view](https://github.com/maplibre/maplibre-gl-js/issues/307), and in collaboration with the MapLibre team, we have add support for seamlessly integrating deck.gl layers with the globe using the existing [GlobeView](./api-reference/core/globe-view). The integration works for all three [Intergration Modes](./developer-guide/base-maps/using-with-maplibre#integration-modes). +- The deck.gl [`GlobeView`](./api-reference/core/globe-view) now integrates seamlessly with the MapLibre v5 [globe view](https://maplibre.org/roadmap/globe-view/). +- The Maplibre globe view integration was done in close collaboration with the MapLibre team, and works for all three [Basemap Intergration Modes](./developer-guide/base-maps/using-with-maplibre#integration-modes). +- The deck.gl `GlobeView` is no longer considered experimental, and can now be imported without a leading underscore. ### React Widgets From 69866e92a7f72e45cc7104bac3208dcb559ca28a Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Wed, 8 Jan 2025 12:28:22 +0100 Subject: [PATCH 10/12] Update docs/whats-new.md Co-authored-by: Ib Green <7025232+ibgreen@users.noreply.github.com> --- docs/whats-new.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index 69b161f3e8c..75c763e8290 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -38,7 +38,10 @@ Release date: TBD (targeting December 2024) ### React Widgets -deck.gl v9.0 added support for widgets, with v9.1 they can now be defined in React. All of our built-in widgets are now react-compatible and available from the `@deck.gl/react` package. To try it out, check out our new [getting started example](https://github.com/visgl/deck.gl/tree/master/examples/get-started/react/widgets) for widgets in React. +deck.gl v9.0 added support for widgets, with v9.1 users can now create React components with the same level of deep deck.gl integration. +- All the official deck.gl widgets can now be easily wrapped into React components with the new `useWidget` hook. +- Pre-wrapped React components for existing widget are available from the `@deck.gl/react` package. +- To try it out, check out our new [getting started example](https://github.com/visgl/deck.gl/tree/master/examples/get-started/react/widgets) for using widgets in React. ### Widgets Developer Guide From 50b020d736e566aeb8de33bc14643b763db91a40 Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Wed, 8 Jan 2025 12:28:58 +0100 Subject: [PATCH 11/12] Update docs/whats-new.md Co-authored-by: Ib Green <7025232+ibgreen@users.noreply.github.com> --- docs/whats-new.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index 75c763e8290..63e8097c348 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -45,7 +45,7 @@ deck.gl v9.0 added support for widgets, with v9.1 users can now create React com ### Widgets Developer Guide -A major benefit of React support is the ability to define custom widgets with UI built in React in your own applications. Learn how to write your own deck.gl widgets with our new [Custom Widgets Developer Guide](./docs/developer-guide/custom-widgets). +deck.gl v9.1 provides the ability to for applications to write React component that integrate with deck.gl using the widget interface. Learn how to write such React components with our new [Custom Widgets Developer Guide](./docs/developer-guide/custom-widgets). ### Aggregation layers upgrade From 6d3705da6d265791bed735b083aeaacbb4255743 Mon Sep 17 00:00:00 2001 From: felixpalmer Date: Wed, 8 Jan 2025 12:29:11 +0100 Subject: [PATCH 12/12] Update docs/whats-new.md Co-authored-by: Ib Green <7025232+ibgreen@users.noreply.github.com> --- docs/whats-new.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/whats-new.md b/docs/whats-new.md index 63e8097c348..89b84498b47 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -64,7 +64,7 @@ See [upgrade guide](./upgrade-guide.md) for more details. ### WebGPU readiness -- luma.gl has been updated to v9.1 which focuses on building out WebGPU support. For details see [release notes](https://luma.gl/docs/whats-new#version-91-in-development) and [upgrade-guide](https://luma.gl/docs/upgrade-guide#upgrading-to-v91). +- luma.gl has been updated to v9.1 which focuses on improved WebGPU support. For details see [release notes](https://luma.gl/docs/whats-new#version-91-in-development) and [upgrade-guide](https://luma.gl/docs/upgrade-guide#upgrading-to-v91). - As part of WebGPU readiness, all shader code in deck.gl v9.1 (layers and extensions) have been migrated to use uniform buffers instead of WebGL1 style uniforms. - For most users this change should be transparent, but custom layers that add `uniforms` should [start migrating asap](./upgrade-guide.md) as WebGL1 style uniform support is being actively phased out.