@developmentseed/deck.gl-raster 0.7.0 → 0.8.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/fp64.d.ts +18 -0
  2. package/dist/fp64.d.ts.map +1 -0
  3. package/dist/fp64.js +28 -0
  4. package/dist/fp64.js.map +1 -0
  5. package/dist/globe-grid-mesh.d.ts +30 -0
  6. package/dist/globe-grid-mesh.d.ts.map +1 -0
  7. package/dist/globe-grid-mesh.js +67 -0
  8. package/dist/globe-grid-mesh.js.map +1 -0
  9. package/dist/gpu-modules/cutline-bbox.d.ts +26 -40
  10. package/dist/gpu-modules/cutline-bbox.d.ts.map +1 -1
  11. package/dist/gpu-modules/cutline-bbox.js +24 -53
  12. package/dist/gpu-modules/cutline-bbox.js.map +1 -1
  13. package/dist/gpu-modules/index.d.ts +1 -1
  14. package/dist/gpu-modules/index.d.ts.map +1 -1
  15. package/dist/gpu-modules/index.js +1 -1
  16. package/dist/gpu-modules/index.js.map +1 -1
  17. package/dist/mesh-layer/mesh-layer-fragment.glsl.d.ts +1 -1
  18. package/dist/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
  19. package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts +3 -0
  20. package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -0
  21. package/dist/mesh-layer/mesh-layer-vertex.glsl.js +90 -0
  22. package/dist/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -0
  23. package/dist/mesh-layer/mesh-layer.d.ts +27 -4
  24. package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
  25. package/dist/mesh-layer/mesh-layer.js +39 -3
  26. package/dist/mesh-layer/mesh-layer.js.map +1 -1
  27. package/dist/raster-layer.d.ts +18 -1
  28. package/dist/raster-layer.d.ts.map +1 -1
  29. package/dist/raster-layer.js +46 -19
  30. package/dist/raster-layer.js.map +1 -1
  31. package/dist/raster-tile-layer/raster-tile-layer.d.ts.map +1 -1
  32. package/dist/raster-tile-layer/raster-tile-layer.js +29 -21
  33. package/dist/raster-tile-layer/raster-tile-layer.js.map +1 -1
  34. package/dist/raster-tileset/bounding-volume-cache.d.ts +11 -4
  35. package/dist/raster-tileset/bounding-volume-cache.d.ts.map +1 -1
  36. package/dist/raster-tileset/bounding-volume-cache.js +13 -4
  37. package/dist/raster-tileset/bounding-volume-cache.js.map +1 -1
  38. package/dist/raster-tileset/raster-tile-traversal.d.ts +58 -3
  39. package/dist/raster-tileset/raster-tile-traversal.d.ts.map +1 -1
  40. package/dist/raster-tileset/raster-tile-traversal.js +235 -30
  41. package/dist/raster-tileset/raster-tile-traversal.js.map +1 -1
  42. package/dist/raster-tileset/raster-tileset-2d.d.ts +33 -0
  43. package/dist/raster-tileset/raster-tileset-2d.d.ts.map +1 -1
  44. package/dist/raster-tileset/raster-tileset-2d.js +46 -1
  45. package/dist/raster-tileset/raster-tileset-2d.js.map +1 -1
  46. package/dist/raster-tileset/web-mercator-clamp.d.ts +31 -0
  47. package/dist/raster-tileset/web-mercator-clamp.d.ts.map +1 -0
  48. package/dist/raster-tileset/web-mercator-clamp.js +69 -0
  49. package/dist/raster-tileset/web-mercator-clamp.js.map +1 -0
  50. package/package.json +7 -7
  51. package/dist/raster-tile-layer/constants.d.ts +0 -11
  52. package/dist/raster-tile-layer/constants.d.ts.map +0 -1
  53. package/dist/raster-tile-layer/constants.js +0 -11
  54. package/dist/raster-tile-layer/constants.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-layer.d.ts","sourceRoot":"","sources":["../../src/mesh-layer/mesh-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,KAAK,sBAAsB,GACvB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GACtD,sBAAsB,CAAC;AAEzB,QAAA,MAAM,YAAY,EAAE,YAAY,CAC9B,oBAAoB,GAAG;IACrB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,YAAY,EAAE,CAAC;CAChC,CAcF,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,eAAe,CACnD,IAAI,EACJ,qBAAqB,CACtB;IACC,OAAgB,SAAS,SAAwB;IACjD,OAAgB,YAAY,EAAE,OAAO,YAAY,CAAgB;IAEjE,sBAAsB,IAAI,YAAY,EAAE;IAQ/B,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAY1D,qFAAqF;IACrF,OAAO,CAAC,wBAAwB;IAqBvB,UAAU;IAiBV,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;CAa/B"}
1
+ {"version":3,"file":"mesh-layer.d.ts","sourceRoot":"","sources":["../../src/mesh-layer/mesh-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D;;;;;;;;GAQG;AACH,KAAK,uBAAuB,GACxB,YAAY,GACZ,aAAa,GACb,gBAAgB,GAChB,UAAU,GACV,gBAAgB,GAChB,oBAAoB,GACpB,WAAW,CAAC;AAEhB,KAAK,sBAAsB,GACvB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,uBAAuB,CACxB,GACC,sBAAsB,CAAC;AAEzB,QAAA,MAAM,YAAY,EAAE,YAAY,CAC9B,oBAAoB,GAAG;IACrB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,YAAY,EAAE,CAAC;CAChC,CAiBF,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAiB,SAAQ,eAAe,CACnD,IAAI,EACJ,qBAAqB,CACtB;IACC,OAAgB,SAAS,SAAwB;IACjD,OAAgB,YAAY,EAAE,OAAO,YAAY,CAAgB;IAExD,eAAe,IAAI,IAAI;IAkBhC,sBAAsB,IAAI,YAAY,EAAE;IAQ/B,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAY1D,qFAAqF;IACrF,OAAO,CAAC,wBAAwB;IAqBvB,UAAU;IAoBV,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;CAa/B"}
@@ -1,12 +1,16 @@
1
1
  import { SimpleMeshLayer } from "@deck.gl/mesh-layers";
2
2
  import { CreateTexture } from "../gpu-modules/create-texture.js";
3
3
  import fs from "./mesh-layer-fragment.glsl.js";
4
+ import vs from "./mesh-layer-vertex.glsl.js";
4
5
  const defaultProps = {
5
6
  ...SimpleMeshLayer.defaultProps,
6
7
  // Note: putting `image` in defaultProps causes Maplibre to fail to render
7
8
  // labels in interleaved mode 🤷‍♂️
8
9
  // image: { type: "image", value: null, async: true },
9
10
  renderPipeline: { type: "array", value: [], compare: true },
11
+ // Render exactly one non-instanced mesh anchored at the coordinate origin.
12
+ _instanced: false,
13
+ getPosition: { type: "accessor", value: [0, 0, 0] },
10
14
  // Disable lighting by default (avoids darkening raster)
11
15
  material: {
12
16
  ambient: 1.0,
@@ -16,14 +20,43 @@ const defaultProps = {
16
20
  },
17
21
  };
18
22
  /**
19
- * A small subclass of the SimpleMeshLayer to allow dynamic shader injections.
23
+ * A specialized raster-rendering layer, spiritually based on deck.gl's
24
+ * `SimpleMeshLayer` but with a narrower purpose: it draws **one** texture-mapped
25
+ * mesh anchored at the coordinate origin, not instanced 3D models.
20
26
  *
21
- * In the future this may expand to diverge more from the SimpleMeshLayer, such
22
- * as allowing the texture to be a 2D _array_.
27
+ * Differences from `SimpleMeshLayer`:
28
+ * - Allows dynamic shader injection (a render pipeline of `RasterModule`s) and
29
+ * overrides the vertex/fragment shaders.
30
+ * - Provides fp64 mesh-vertex precision via a `positions64Low` attribute paired
31
+ * with the geometry's `positions` (supplied by the caller through
32
+ * `data.attributes.positions64Low`).
33
+ * - The per-instance placement props (`_instanced`, `getPosition`,
34
+ * `getOrientation`, `getScale`, `getTranslation`, `getTransformMatrix`,
35
+ * `sizeScale`) are intentionally unsupported and fixed at identity — see
36
+ * {@link ExcludedSimpleMeshProps}. This is what keeps the fp64 correction
37
+ * valid (the low part is the residual of `positions`, not of a transformed
38
+ * vertex).
23
39
  */
24
40
  export class MeshTextureLayer extends SimpleMeshLayer {
25
41
  static layerName = "mesh-texture-layer";
26
42
  static defaultProps = defaultProps;
43
+ initializeState() {
44
+ super.initializeState();
45
+ const attributeManager = this.getAttributeManager();
46
+ if (attributeManager) {
47
+ // Register the per-vertex low part of the fp64 position split, supplied
48
+ // via `data.attributes.positions64Low`
49
+ attributeManager.add({
50
+ positions64Low: {
51
+ size: 3,
52
+ type: "float32",
53
+ // Tell the AttributeManager not to allocate a buffer for this
54
+ // attribute; we'll supply it externally
55
+ noAlloc: true,
56
+ },
57
+ });
58
+ }
59
+ }
27
60
  _resolveRenderPipeline() {
28
61
  const { image, renderPipeline } = this.props;
29
62
  const imageModule = image
@@ -67,6 +100,9 @@ export class MeshTextureLayer extends SimpleMeshLayer {
67
100
  }
68
101
  return {
69
102
  ...upstreamShaders,
103
+ // Override upstream's vertex shader with our copy that uses fp64
104
+ // emulation
105
+ vs,
70
106
  // Override upstream's fragment shader with our copy with modified
71
107
  // injection points
72
108
  fs,
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-layer.js","sourceRoot":"","sources":["../../src/mesh-layer/mesh-layer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAS/C,MAAM,YAAY,GAKd;IACF,GAAG,eAAe,CAAC,YAAY;IAC/B,0EAA0E;IAC1E,mCAAmC;IACnC,sDAAsD;IACtD,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3D,wDAAwD;IACxD,QAAQ,EAAE;QACR,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACzB;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,eAGrC;IACC,MAAM,CAAU,SAAS,GAAG,oBAAoB,CAAC;IACjD,MAAM,CAAU,YAAY,GAAwB,YAAY,CAAC;IAEjE,sBAAsB;QACpB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,MAAM,WAAW,GAAmB,KAAK;YACvC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAgB,EAAE,EAAE,CAAC;YACvE,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAEQ,WAAW,CAAC,MAA8B;QACjD,4EAA4E;QAC5E,WAAW;QACX,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,kEAAkE;YAClE,0JAA0J;YAC1J,MAAM,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,qFAAqF;IAC7E,wBAAwB,CAAC,MAA8B;QAC7D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,UAAU;QACjB,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAE3C,MAAM,OAAO,GAAmB,eAAe,CAAC,OAAO,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,OAAO;YACL,GAAG,eAAe;YAClB,kEAAkE;YAClE,mBAAmB;YACnB,EAAE;YACF,OAAO;SACR,CAAC;IACJ,CAAC;IAEQ,IAAI,CAAC,IAAS;QACrB,MAAM,WAAW,GAAsD,EAAE,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC9C,uCAAuC;YACvC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YAClC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC"}
1
+ {"version":3,"file":"mesh-layer.js","sourceRoot":"","sources":["../../src/mesh-layer/mesh-layer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { CompositeLayerProps, DefaultProps, Layer, TextureSource, UpdateParameters } from "@deck.gl/core";
2
2
  import { CompositeLayer } from "@deck.gl/core";
3
- import type { ReprojectionFns } from "@developmentseed/raster-reproject";
3
+ import type { InitialTriangulation, ReprojectionFns } from "@developmentseed/raster-reproject";
4
4
  import { RasterReprojector } from "@developmentseed/raster-reproject";
5
5
  import type { RasterModule } from "./gpu-modules/types.js";
6
6
  /**
@@ -33,6 +33,13 @@ export interface RasterLayerProps extends CompositeLayerProps {
33
33
  * Reprojection functions for converting between pixel, input CRS, and output CRS coordinates
34
34
  */
35
35
  reprojectionFns: ReprojectionFns;
36
+ /**
37
+ * Optional seed triangulation for the reprojector — e.g. to clamp the mesh to
38
+ * a UV sub-region (such as the valid Web Mercator latitude band). Defaults to
39
+ * the full image. Must be reference-stable across renders to avoid
40
+ * regenerating the mesh every frame.
41
+ */
42
+ initialTriangulation?: InitialTriangulation;
36
43
  /**
37
44
  * The image to display. Accepts any luma.gl `TextureSource` (e.g. a URL,
38
45
  * `HTMLImageElement`, `ImageData`, etc.). deck.gl manages the texture
@@ -99,6 +106,16 @@ export declare class RasterLayer extends CompositeLayer<RasterLayerProps> {
99
106
  };
100
107
  };
101
108
  };
109
+ /**
110
+ * Low-part of positions for fp64 emulation in the shaders.
111
+ * `mesh.attributes.POSITION` carries the high part.
112
+ *
113
+ * This needs to be passed separately from `mesh` because SimpleMeshLayer's
114
+ * `normalizeGeometryAttributes` whitelists only positions/colors/normals/
115
+ * texCoords on the mesh attributes object — anything else is silently
116
+ * dropped.
117
+ */
118
+ positions64Low?: Float32Array;
102
119
  };
103
120
  initializeState(): void;
104
121
  updateState(params: UpdateParameters<this>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAmC3D;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oFAAoF;IACpF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAWD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IAC/D,OAAgB,SAAS,SAAiB;IAC1C,OAAgB,YAAY,iCAAgB;IAEpC,KAAK,EAAE;QACb,WAAW,CAAC,EAAE,iBAAiB,CAAC;QAChC;;;;;;WAMG;QACH,IAAI,CAAC,EAAE;YACL,OAAO,EAAE;gBAAE,KAAK,EAAE,WAAW,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC;YAC9C,UAAU,EAAE;gBACV,QAAQ,EAAE;oBAAE,KAAK,EAAE,YAAY,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAChD,UAAU,EAAE;oBAAE,KAAK,EAAE,YAAY,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;aACnD,CAAC;SACH,CAAC;KACH,CAAC;IAEO,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IA8BnD,SAAS,CAAC,aAAa,IAAI,IAAI;IAmC/B,gBAAgB,IAAI,KAAK,GAAG,IAAI;IA6DhC,YAAY;CAsCb"}
1
+ {"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAmC3D;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oFAAoF;IACpF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAWD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IAC/D,OAAgB,SAAS,SAAiB;IAC1C,OAAgB,YAAY,iCAAgB;IAEpC,KAAK,EAAE;QACb,WAAW,CAAC,EAAE,iBAAiB,CAAC;QAChC;;;;;;WAMG;QACH,IAAI,CAAC,EAAE;YACL,OAAO,EAAE;gBAAE,KAAK,EAAE,WAAW,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC;YAC9C,UAAU,EAAE;gBACV,QAAQ,EAAE;oBAAE,KAAK,EAAE,YAAY,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAChD,UAAU,EAAE;oBAAE,KAAK,EAAE,YAAY,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;aACnD,CAAC;SACH,CAAC;QACF;;;;;;;;WAQG;QACH,cAAc,CAAC,EAAE,YAAY,CAAC;KAC/B,CAAC;IAEO,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IA+BnD,SAAS,CAAC,aAAa,IAAI,IAAI;IAgE/B,gBAAgB,IAAI,KAAK,GAAG,IAAI;IA6DhC,YAAY;CAoCb"}
@@ -1,6 +1,8 @@
1
1
  import { CompositeLayer } from "@deck.gl/core";
2
2
  import { PolygonLayer } from "@deck.gl/layers";
3
3
  import { RasterReprojector } from "@developmentseed/raster-reproject";
4
+ import { splitFloat64Array } from "./fp64.js";
5
+ import { buildUniformGridMesh } from "./globe-grid-mesh.js";
4
6
  import { MeshTextureLayer } from "./mesh-layer/mesh-layer.js";
5
7
  const DEFAULT_MAX_ERROR = 0.125;
6
8
  const DEBUG_COLORS = [
@@ -68,13 +70,37 @@ export class RasterLayer extends CompositeLayer {
68
70
  props.width !== oldProps.width ||
69
71
  props.height !== oldProps.height ||
70
72
  reprojectionFnsChanged ||
71
- props.maxError !== oldProps.maxError;
73
+ props.maxError !== oldProps.maxError ||
74
+ props.initialTriangulation !== oldProps.initialTriangulation;
72
75
  if (needsMeshUpdate) {
73
76
  this._generateMesh();
74
77
  }
75
78
  }
76
79
  _generateMesh() {
77
- const { width, height, reprojectionFns, maxError = DEFAULT_MAX_ERROR, } = this.props;
80
+ const { width, height, reprojectionFns, initialTriangulation, maxError = DEFAULT_MAX_ERROR, } = this.props;
81
+ // TEMPORARY GLOBE VIEW HACK:
82
+ //
83
+ // GlobeView (lnglat) uses viewport.resolution, the same detection as
84
+ // RasterTileLayer. THROWAWAY: globe renders a uniform grid instead of the
85
+ // adaptive mesh, because Delatin's reprojection-error metric is blind to
86
+ // sphere curvature and facets at low zoom. See globe-grid-mesh.ts and
87
+ // dev-docs/specs/2026-05-21-globe-view-design.md.
88
+ const isGlobe = this.context?.viewport?.resolution !== undefined;
89
+ if (isGlobe) {
90
+ const { indices, positions64High, positions64Low, texCoords } = buildUniformGridMesh(reprojectionFns, width + 1, height + 1);
91
+ this.setState({
92
+ reprojector: undefined,
93
+ mesh: {
94
+ indices: { value: indices, size: 1 },
95
+ attributes: {
96
+ POSITION: { value: positions64High, size: 3 },
97
+ TEXCOORD_0: { value: texCoords, size: 2 },
98
+ },
99
+ },
100
+ positions64Low,
101
+ });
102
+ return;
103
+ }
78
104
  // The mesh is lined up with the upper and left edges of the raster. So if
79
105
  // we give the raster the same width and height as the number of pixels in
80
106
  // the image, it'll be omitting the last row and column of pixels.
@@ -82,18 +108,19 @@ export class RasterLayer extends CompositeLayer {
82
108
  // To account for this, we add 1 to both width and height when generating
83
109
  // the mesh. This also solves obvious gaps in between neighboring tiles in
84
110
  // the COGLayer.
85
- const reprojector = new RasterReprojector(reprojectionFns, width + 1, height + 1);
111
+ const reprojector = new RasterReprojector(reprojectionFns, width + 1, height + 1, { initialTriangulation });
86
112
  reprojector.run(maxError);
87
- const { indices, positions, texCoords } = reprojectorToMesh(reprojector);
113
+ const { indices, positions64High, positions64Low, texCoords } = reprojectorToMesh(reprojector);
88
114
  this.setState({
89
115
  reprojector,
90
116
  mesh: {
91
117
  indices: { value: indices, size: 1 },
92
118
  attributes: {
93
- POSITION: { value: positions, size: 3 },
119
+ POSITION: { value: positions64High, size: 3 },
94
120
  TEXCOORD_0: { value: texCoords, size: 2 },
95
121
  },
96
122
  },
123
+ positions64Low,
97
124
  });
98
125
  }
99
126
  renderDebugLayer() {
@@ -138,26 +165,22 @@ export class RasterLayer extends CompositeLayer {
138
165
  }));
139
166
  }
140
167
  renderLayers() {
141
- const { mesh } = this.state;
168
+ const { mesh, positions64Low } = this.state;
142
169
  const { debug, image, renderPipeline } = this.props;
143
- if (!mesh || (!image && (renderPipeline?.length ?? 0) === 0)) {
170
+ // mesh and positions64Low are always set together by _generateMesh.
171
+ if (!mesh ||
172
+ !positions64Low ||
173
+ (!image && (renderPipeline?.length ?? 0) === 0)) {
144
174
  return null;
145
175
  }
146
176
  const meshLayer = new MeshTextureLayer(this.getSubLayerProps({
147
177
  id: "raster",
148
178
  image,
149
179
  renderPipeline,
150
- // Dummy data because we're only rendering _one_ instance of this mesh
151
- // https://github.com/visgl/deck.gl/blob/93111b667b919148da06ff1918410cf66381904f/modules/geo-layers/src/terrain-layer/terrain-layer.ts#L241
152
- data: [1],
180
+ // Single mesh rendered as one non-instanced draw.
181
+ data: { length: 1, attributes: { positions64Low } },
153
182
  mesh,
154
- // We're only rendering a single mesh, without instancing
155
- // https://github.com/visgl/deck.gl/blob/93111b667b919148da06ff1918410cf66381904f/modules/geo-layers/src/terrain-layer/terrain-layer.ts#L244
156
- _instanced: false,
157
- // Dummy accessors for the dummy data
158
- // We place our mesh at the coordinate origin
159
- getPosition: [0, 0, 0],
160
- // We give a white color to turn off color mixing with the texture
183
+ // We give a white color to turn off color mixing with the texture.
161
184
  getColor: [255, 255, 255],
162
185
  }));
163
186
  const layers = [meshLayer];
@@ -172,19 +195,23 @@ export class RasterLayer extends CompositeLayer {
172
195
  }
173
196
  function reprojectorToMesh(reprojector) {
174
197
  const numVertices = reprojector.uvs.length / 2;
175
- const positions = new Float32Array(numVertices * 3);
176
198
  const texCoords = new Float32Array(reprojector.uvs);
199
+ const positions = new Float64Array(numVertices * 3);
177
200
  for (let i = 0; i < numVertices; i++) {
178
201
  positions[i * 3] = reprojector.exactOutputPositions[i * 2];
179
202
  positions[i * 3 + 1] = reprojector.exactOutputPositions[i * 2 + 1];
180
203
  // z (flat on the ground)
181
204
  positions[i * 3 + 2] = 0;
182
205
  }
206
+ // Split the float64 positions into high and low parts for fp64 emulation in
207
+ // the shader.
208
+ const [positions64Low, positions64High] = splitFloat64Array(positions);
183
209
  // TODO: Consider using 16-bit indices if the mesh is small enough
184
210
  const indices = new Uint32Array(reprojector.triangles);
185
211
  return {
186
212
  indices,
187
- positions,
213
+ positions64High,
214
+ positions64Low,
188
215
  texCoords,
189
216
  };
190
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"raster-layer.js","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-layer.js","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { TileLayer } from "@deck.gl/geo-layers";
3
3
  import { renderDebugTileOutline } from "../layer-utils.js";
4
4
  import { RasterLayer } from "../raster-layer.js";
5
5
  import { RasterTileset2D } from "../raster-tileset/index.js";
6
- import { TILE_SIZE, WEB_MERCATOR_TO_WORLD_SCALE } from "./constants.js";
7
6
  const defaultProps = {
8
7
  ...TileLayer.defaultProps,
9
8
  maxError: 0.125,
@@ -177,32 +176,36 @@ export class RasterTileLayer extends CompositeLayer {
177
176
  const { image, renderPipeline } = tileResult;
178
177
  const { width, height } = props.data;
179
178
  const isGlobe = this.context.viewport.resolution !== undefined;
180
- const reprojectionFns = isGlobe
181
- ? {
179
+ let reprojectionFns;
180
+ let coordinateSystem;
181
+ if (isGlobe) {
182
+ // Globe view
183
+ reprojectionFns = {
182
184
  forwardTransform,
183
185
  inverseTransform,
184
186
  forwardReproject: descriptor.projectTo4326,
185
187
  inverseReproject: descriptor.projectFrom4326,
186
- }
187
- : {
188
+ };
189
+ coordinateSystem = "lnglat";
190
+ }
191
+ else {
192
+ // Web Mercator: render the mesh directly in deck.gl common space.
193
+ //
194
+ // The tile's `_projectPosition` maps source CRS → common space, support
195
+ // high precision with fp64 emulation.
196
+ //
197
+ // `_projectPosition`/`_unprojectPosition` must be reference-stable across
198
+ // renders to avoid regenerating the mesh and recompiling the shader every
199
+ // frame.
200
+ const { _projectPosition, _unprojectPosition } = tile;
201
+ reprojectionFns = {
188
202
  forwardTransform,
189
203
  inverseTransform,
190
- forwardReproject: descriptor.projectTo3857,
191
- inverseReproject: descriptor.projectFrom3857,
192
- };
193
- const deckProjectionProps = isGlobe
194
- ? {}
195
- : {
196
- coordinateSystem: "cartesian",
197
- coordinateOrigin: [TILE_SIZE / 2, TILE_SIZE / 2, 0],
198
- // biome-ignore format: array
199
- modelMatrix: [
200
- WEB_MERCATOR_TO_WORLD_SCALE, 0, 0, 0,
201
- 0, WEB_MERCATOR_TO_WORLD_SCALE, 0, 0,
202
- 0, 0, 1, 0,
203
- 0, 0, 0, 1,
204
- ],
204
+ forwardReproject: _projectPosition,
205
+ inverseReproject: _unprojectPosition,
205
206
  };
207
+ coordinateSystem = "cartesian";
208
+ }
206
209
  const rasterLayer = new RasterLayer(this.getSubLayerProps({
207
210
  id: `${props.id}-raster`,
208
211
  width,
@@ -213,9 +216,14 @@ export class RasterTileLayer extends CompositeLayer {
213
216
  renderPipeline,
214
217
  maxError,
215
218
  reprojectionFns,
219
+ // Web Mercator: clamp the mesh to the valid latitude band for tiles
220
+ // past ±85.051°. Globe renders the full mesh (it shows the poles).
221
+ initialTriangulation: isGlobe
222
+ ? undefined
223
+ : tile._webMercatorInitialTriangulation,
216
224
  debug,
217
225
  debugOpacity,
218
- ...deckProjectionProps,
226
+ coordinateSystem,
219
227
  }));
220
228
  return [rasterLayer, ...debugLayers];
221
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-layer.js","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tile-layer.js","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
@@ -34,10 +34,11 @@ export interface BoundingVolumeCacheOptions {
34
34
  * `(z, x, y, zRange)` for a given tileset descriptor, so it is safe to memoize
35
35
  * across `getTileIndices` calls (i.e. across animation frames).
36
36
  *
37
- * NOTE: this assumes a non-Globe traversal (`project === null`) the only kind
38
- * `RasterTileNode.getBoundingVolume` currently supports. If Globe-view bounding
39
- * volumes are ever implemented, the cache key will need a viewport/resolution
40
- * component.
37
+ * The key is valid only within a single projection mode. A tile's bounding
38
+ * volume is computed in a different common space under a GlobeView than under
39
+ * Web Mercator, so the cache must be {@link BoundingVolumeCache.clear cleared}
40
+ * when the viewport's projection mode changes. `RasterTileset2D` owns the cache
41
+ * and does this in `getTileIndices` when it detects a globe↔mercator switch.
41
42
  */
42
43
  export declare class BoundingVolumeCache {
43
44
  private entries;
@@ -52,6 +53,12 @@ export declare class BoundingVolumeCache {
52
53
  get(z: number, x: number, y: number): BoundingVolumeCacheEntry | undefined;
53
54
  /** Store the bounding volume for tile `(z, x, y)` as most-recently-used. */
54
55
  set(z: number, x: number, y: number, entry: BoundingVolumeCacheEntry): void;
56
+ /**
57
+ * Drop all cached entries. Called by the owner when the viewport's projection
58
+ * mode changes (globe↔mercator), since volumes computed under one projection
59
+ * are not valid under the other.
60
+ */
61
+ clear(): void;
55
62
  /**
56
63
  * If the cache is over its soft cap, drop least-recently-used entries down to
57
64
  * roughly half of `maxEntries`. No-op when at or under the cap. Call once at
@@ -1 +1 @@
1
- {"version":3,"file":"bounding-volume-cache.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/bounding-volume-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,mBAAmB,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,UAAU,CAAS;gBAEf,EACV,UAAgC,GACjC,GAAE,0BAA+B;IAIlC,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAY1E,4EAA4E;IAC5E,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAM3E;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAiBd"}
1
+ {"version":3,"file":"bounding-volume-cache.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/bounding-volume-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,mBAAmB,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,UAAU,CAAS;gBAEf,EACV,UAAgC,GACjC,GAAE,0BAA+B;IAIlC,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAY1E,4EAA4E;IAC5E,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAM3E;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAiBd"}
@@ -8,10 +8,11 @@ const DEFAULT_MAX_ENTRIES = 65_536;
8
8
  * `(z, x, y, zRange)` for a given tileset descriptor, so it is safe to memoize
9
9
  * across `getTileIndices` calls (i.e. across animation frames).
10
10
  *
11
- * NOTE: this assumes a non-Globe traversal (`project === null`) the only kind
12
- * `RasterTileNode.getBoundingVolume` currently supports. If Globe-view bounding
13
- * volumes are ever implemented, the cache key will need a viewport/resolution
14
- * component.
11
+ * The key is valid only within a single projection mode. A tile's bounding
12
+ * volume is computed in a different common space under a GlobeView than under
13
+ * Web Mercator, so the cache must be {@link BoundingVolumeCache.clear cleared}
14
+ * when the viewport's projection mode changes. `RasterTileset2D` owns the cache
15
+ * and does this in `getTileIndices` when it detects a globe↔mercator switch.
15
16
  */
16
17
  export class BoundingVolumeCache {
17
18
  entries = new Map();
@@ -44,6 +45,14 @@ export class BoundingVolumeCache {
44
45
  this.entries.delete(key);
45
46
  this.entries.set(key, entry);
46
47
  }
48
+ /**
49
+ * Drop all cached entries. Called by the owner when the viewport's projection
50
+ * mode changes (globe↔mercator), since volumes computed under one projection
51
+ * are not valid under the other.
52
+ */
53
+ clear() {
54
+ this.entries.clear();
55
+ }
47
56
  /**
48
57
  * If the cache is over its soft cap, drop least-recently-used entries down to
49
58
  * roughly half of `maxEntries`. No-op when at or under the cap. Call once at
@@ -1 +1 @@
1
- {"version":3,"file":"bounding-volume-cache.js","sourceRoot":"","sources":["../../src/raster-tileset/bounding-volume-cache.ts"],"names":[],"mappings":"AA+BA,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IACtD,UAAU,CAAS;IAE3B,YAAY,EACV,UAAU,GAAG,mBAAmB,MACF,EAAE;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAA+B;QAClE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;QAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,YAAY,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAClC,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"bounding-volume-cache.js","sourceRoot":"","sources":["../../src/raster-tileset/bounding-volume-cache.ts"],"names":[],"mappings":"AA+BA,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IACtD,UAAU,CAAS;IAE3B,YAAY,EACV,UAAU,GAAG,mBAAmB,MACF,EAAE;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAA+B;QAClE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;QAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,YAAY,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAClC,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
@@ -17,8 +17,7 @@
17
17
  * both OGC TileMatrixSet grids and Zarr multiscale pyramids.
18
18
  */
19
19
  import type { Viewport } from "@deck.gl/core";
20
- import type { OrientedBoundingBox } from "@math.gl/culling";
21
- import { CullingVolume } from "@math.gl/culling";
20
+ import { CullingVolume, OrientedBoundingBox } from "@math.gl/culling";
22
21
  import { BoundingVolumeCache } from "./bounding-volume-cache.js";
23
22
  import type { RasterTilesetDescriptor, RasterTilesetLevel } from "./tileset-interface.js";
24
23
  import type { Bounds, TileIndex, ZRange } from "./types.js";
@@ -106,6 +105,14 @@ export declare class RasterTileNode {
106
105
  * comparison would. See `dev-docs/lod-and-pixel-matching.md` § (A).
107
106
  */
108
107
  pixelRatio: number;
108
+ /**
109
+ * Number of world copies to shift this tile's bounding volume by along
110
+ * common-space X for frustum testing. Default `0` (primary world).
111
+ * Non-zero passes are additive — they may set `selected = true` but
112
+ * never override a previous `true` to `false`. See
113
+ * `dev-docs/world-copies.md`.
114
+ */
115
+ worldOffset?: number;
109
116
  /**
110
117
  * Bounding-volume cache shared by every node in this traversal. Populated
111
118
  * lazily as tiles are visited; reused across `getTileIndices` calls (so
@@ -138,8 +145,23 @@ export declare class RasterTileNode {
138
145
  * volume depends only on `(z, x, y, zRange)` for a given descriptor, so on a
139
146
  * cache hit it is returned without rerunning {@link computeBoundingVolume}'s
140
147
  * proj4 reprojections + oriented-bounding-box fit.
148
+ *
149
+ * For non-zero `worldOffset`, returns a translated copy (center shifted by
150
+ * `worldOffset * TILE_SIZE` along common-space X) without polluting the
151
+ * cache — the cache always stores the offset-0 volume. See
152
+ * `dev-docs/world-copies.md`.
153
+ *
154
+ * @param zRange Elevation `[min, max]` in common-space units.
155
+ * @param project Projection function for Globe view, or `null`
156
+ * for Web Mercator common space.
157
+ * @param boundingVolumeCache Cache keyed by `z/x/y`. Stores the offset-0
158
+ * volume only.
159
+ * @param worldOffset Number of world copies to translate the result
160
+ * by along common-space X. `0` returns the
161
+ * cached offset-0 volume directly. Non-zero
162
+ * values return a fresh translated copy.
141
163
  */
142
- getBoundingVolume(zRange: ZRange, project: ((xyz: number[]) => number[]) | null, boundingVolumeCache: BoundingVolumeCache): {
164
+ getBoundingVolume(zRange: ZRange, project: ((xyz: number[]) => number[]) | null, boundingVolumeCache: BoundingVolumeCache, worldOffset?: number): {
143
165
  boundingVolume: OrientedBoundingBox;
144
166
  commonSpaceBounds: Bounds;
145
167
  };
@@ -157,7 +179,40 @@ export declare class RasterTileNode {
157
179
  *
158
180
  */
159
181
  private _getGenericBoundingVolume;
182
+ /**
183
+ * Globe-view bounding volume: reproject the tile's reference points to WGS84,
184
+ * project them onto the globe sphere (`project` = `viewport.projectPosition`)
185
+ * to build the oriented bounding box used for frustum culling, and separately
186
+ * compute a Web-Mercator-world AABB for the `bounds` pre-filter in
187
+ * {@link update} (which compares against `wgs84Bounds` in mercator world).
188
+ *
189
+ * NOTE: elevation is not modeled on globe yet — reference points are sampled
190
+ * at the surface (z = 0). Flat rasters only. See
191
+ * `dev-docs/specs/2026-05-21-globe-view-design.md`.
192
+ */
193
+ private _getGlobeBoundingVolume;
160
194
  }
195
+ /**
196
+ * Rescale positions from EPSG:3857 into deck.gl's common space
197
+ *
198
+ * Similar to the upstream code here:
199
+ * https://github.com/visgl/deck.gl/blob/b0134f025148b52b91320d16768ab5d14a745328/modules/geo-layers/src/tileset-2d/tile-2d-traversal.ts#L172-L177
200
+ */
201
+ export declare function rescaleEPSG3857ToCommonSpace([x, y]: [number, number]): [
202
+ number,
203
+ number
204
+ ];
205
+ /**
206
+ * Inverse of {@link rescaleEPSG3857ToCommonSpace}: rescale a deck.gl
207
+ * common-space position back into EPSG:3857 meters.
208
+ *
209
+ * Common-space inputs are in-range by construction, so (unlike the forward
210
+ * direction) no latitude clamp is applied.
211
+ */
212
+ export declare function rescaleCommonSpaceToEPSG3857([x, y]: [number, number]): [
213
+ number,
214
+ number
215
+ ];
161
216
  /**
162
217
  * Build the list of root (z=0) `RasterTileNode`s for the traversal.
163
218
  *
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-traversal.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tile-traversal.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}