@deck.gl/extensions 9.3.7 → 9.4.0-alpha.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.
@@ -21,7 +21,7 @@ declare const _default: {
21
21
  readonly name: "geometry";
22
22
  readonly source: "const SMOOTH_EDGE_RADIUS: f32 = 0.5;\n\nstruct VertexGeometry {\n position: vec4<f32>,\n worldPosition: vec3<f32>,\n worldPositionAlt: vec3<f32>,\n normal: vec3<f32>,\n uv: vec2<f32>,\n pickingColor: vec3<f32>,\n};\n\nvar<private> geometry_: VertexGeometry = VertexGeometry(\n vec4<f32>(0.0, 0.0, 1.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0),\n vec2<f32>(0.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0)\n);\n\nstruct FragmentGeometry {\n uv: vec2<f32>,\n};\n\nvar<private> fragmentGeometry: FragmentGeometry;\n\nfn smoothedge(edge: f32, x: f32) -> f32 {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
23
23
  readonly vs: "#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n";
24
- readonly fs: "#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
24
+ readonly fs: "#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n};\nFragmentGeometry geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
25
25
  }];
26
26
  readonly source: string;
27
27
  readonly vs: string;
@@ -1 +1 @@
1
- {"version":3,"file":"height-map-builder.d.ts","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAiD,MAAM,EAAC,qCAAkC;AAGjG,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAInD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAAuC;IAC3D,mDAAmD;IACnD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAyB;IAE7C,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;gBAI/B,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,yEAAyE;IACzE,YAAY,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE;QAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAC,GAAG,OAAO;IAiEhF,MAAM;CAMP"}
1
+ {"version":3,"file":"height-map-builder.d.ts","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAML,MAAM,EACP,qCAAkC;AAInC,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAInD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAAuC;IAC3D,mDAAmD;IACnD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAyB;IAE7C,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;gBAI/B,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,yEAAyE;IACzE,YAAY,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE;QAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAC,GAAG,OAAO;IAwEhF,MAAM;CAMP"}
@@ -1,8 +1,9 @@
1
1
  // deck.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { joinLayerBounds, getRenderBounds, makeViewport } from "../utils/projection-utils.js";
4
+ import { joinLayerBounds, getRenderBounds, makeViewport, getMercatorReferenceViewport, lngLatToMercatorCommon } from "../utils/projection-utils.js";
5
5
  import { createRenderTarget } from "./utils.js";
6
+ import { _GlobeViewport as GlobeViewport } from '@deck.gl/core';
6
7
  const MAP_MAX_SIZE = 2048;
7
8
  /**
8
9
  * Manages the lifecycle of the height map (a framebuffer that encodes elevation).
@@ -55,17 +56,20 @@ export class HeightMapBuilder {
55
56
  // Layer's geometry bounds have changed
56
57
  layer.getBounds() !== this.layersBounds[i]);
57
58
  if (layersChanged) {
58
- // Recalculate cached bounds
59
+ // Recalculate cached bounds in absolute Mercator common space
59
60
  this.layers = layers;
60
61
  this.layersBounds = layers.map(layer => layer.getBounds());
61
- this.layersBoundsCommon = joinLayerBounds(layers, viewport);
62
+ this.layersBoundsCommon = joinLayerBounds(layers, getMercatorReferenceViewport(viewport));
62
63
  }
63
64
  const viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);
64
65
  if (!this.layersBoundsCommon) {
65
66
  this.renderViewport = null;
66
67
  }
67
68
  else if (layersChanged || viewportChanged) {
68
- const bounds = getRenderBounds(this.layersBoundsCommon, viewport);
69
+ // On GlobeView, viewport bounds are sphere cartesian — skip intersection
70
+ const bounds = viewport instanceof GlobeViewport
71
+ ? this.layersBoundsCommon
72
+ : getRenderBounds(this.layersBoundsCommon, viewport);
69
73
  if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
70
74
  this.renderViewport = null;
71
75
  return false;
@@ -75,6 +79,13 @@ export class HeightMapBuilder {
75
79
  const scale = viewport.scale;
76
80
  const pixelWidth = (bounds[2] - bounds[0]) * scale;
77
81
  const pixelHeight = (bounds[3] - bounds[1]) * scale;
82
+ // Use Mercator center — viewport.center on GlobeView is sphere cartesian
83
+ const centerMerc = viewport.isGeospatial
84
+ ? lngLatToMercatorCommon([
85
+ viewport.longitude ?? 0,
86
+ viewport.latitude ?? 0
87
+ ])
88
+ : [viewport.center[0], viewport.center[1]];
78
89
  this.renderViewport =
79
90
  pixelWidth > 0 || pixelHeight > 0
80
91
  ? makeViewport({
@@ -82,12 +93,7 @@ export class HeightMapBuilder {
82
93
  // vertices will not use the standard project_to_clipspace in the DRAW_TO_HEIGHT_MAP shader
83
94
  // However the viewport must have the same center and zoom as the screen viewport
84
95
  // So that projection uniforms used for calculating z are the same
85
- bounds: [
86
- viewport.center[0] - 1,
87
- viewport.center[1] - 1,
88
- viewport.center[0] + 1,
89
- viewport.center[1] + 1
90
- ],
96
+ bounds: [centerMerc[0] - 1, centerMerc[1] - 1, centerMerc[0] + 1, centerMerc[1] + 1],
91
97
  zoom: viewport.zoom,
92
98
  width: Math.min(pixelWidth, MAP_MAX_SIZE),
93
99
  height: Math.min(pixelHeight, MAP_MAX_SIZE),
@@ -1 +1 @@
1
- {"version":3,"file":"height-map-builder.js","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"height-map-builder.js","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export declare const terrainModule: {
39
39
  readonly name: "geometry";
40
40
  readonly source: "const SMOOTH_EDGE_RADIUS: f32 = 0.5;\n\nstruct VertexGeometry {\n position: vec4<f32>,\n worldPosition: vec3<f32>,\n worldPositionAlt: vec3<f32>,\n normal: vec3<f32>,\n uv: vec2<f32>,\n pickingColor: vec3<f32>,\n};\n\nvar<private> geometry_: VertexGeometry = VertexGeometry(\n vec4<f32>(0.0, 0.0, 1.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0),\n vec2<f32>(0.0, 0.0),\n vec3<f32>(0.0, 0.0, 0.0)\n);\n\nstruct FragmentGeometry {\n uv: vec2<f32>,\n};\n\nvar<private> fragmentGeometry: FragmentGeometry;\n\nfn smoothedge(edge: f32, x: f32) -> f32 {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
41
41
  readonly vs: "#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n";
42
- readonly fs: "#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
42
+ readonly fs: "#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n};\nFragmentGeometry geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
43
43
  }];
44
44
  readonly source: string;
45
45
  readonly vs: string;
@@ -64,13 +64,13 @@ export declare const terrainModule: {
64
64
  readonly pseudoMeters: "f32";
65
65
  };
66
66
  }];
67
- readonly vs: string;
68
- readonly fs: string;
67
+ readonly vs: `${string}\nout vec3 commonPos;\n// In globe mode, absolute Mercator position for terrain FBO UV lookups\nout vec2 terrainMercPos;\nout float terrainHeight;\n\nvec2 terrain_globe_to_mercator(vec3 globePosition) {\n float D = length(globePosition);\n float sinLat = clamp(globePosition.z / D, -0.999998, 0.999998);\n float x = atan(globePosition.x, -globePosition.y);\n float y = atanh(sinLat);\n return (vec2(x, y) + PI) * WORLD_SCALE;\n}\n`;
68
+ readonly fs: `${string}in vec2 terrainMercPos;\nin float terrainHeight;`;
69
69
  readonly inject: {
70
70
  readonly 'vs:#main-start': "\nif (terrain.mode == TERRAIN_MODE_SKIP) {\n gl_Position = vec4(0.0);\n return;\n}\n";
71
- readonly 'vs:DECKGL_FILTER_GL_POSITION': "\ncommonPos = geometry.position.xyz;\nif (terrain.mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {\n vec2 texCoords = (commonPos.xy - terrain.bounds.xy) / terrain.bounds.zw;\n position = vec4(texCoords * 2.0 - 1.0, 0.0, 1.0);\n commonPos.z += project.commonOrigin.z;\n}\nif (terrain.mode == TERRAIN_MODE_USE_HEIGHT_MAP) {\n vec3 anchor = geometry.worldPosition;\n anchor.z = 0.0;\n vec3 anchorCommon = project_position(anchor);\n vec2 texCoords = (anchorCommon.xy - terrain.bounds.xy) / terrain.bounds.zw;\n if (texCoords.x >= 0.0 && texCoords.y >= 0.0 && texCoords.x <= 1.0 && texCoords.y <= 1.0) {\n float terrainZ = texture(terrain_map, texCoords).r;\n geometry.position.z += terrainZ;\n position = project_common_position_to_clipspace(geometry.position);\n }\n}\n ";
72
- readonly 'fs:#main-start': "\nif (terrain.mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {\n fragColor = vec4(commonPos.z, 0.0, 0.0, 1.0);\n return;\n}\n ";
73
- readonly 'fs:DECKGL_FILTER_COLOR': "\nif ((terrain.mode == TERRAIN_MODE_USE_COVER) || (terrain.mode == TERRAIN_MODE_USE_COVER_ONLY)) {\n vec2 texCoords = (commonPos.xy - terrain.bounds.xy) / terrain.bounds.zw;\n vec4 pixel = texture(terrain_map, texCoords);\n if (terrain.mode == TERRAIN_MODE_USE_COVER_ONLY) {\n color = pixel;\n } else {\n // pixel is premultiplied\n color = pixel + color * (1.0 - pixel.a);\n }\n return;\n}\n ";
71
+ readonly 'vs:DECKGL_FILTER_GL_POSITION': "\ncommonPos = geometry.position.xyz;\nterrainHeight = commonPos.z + project.commonOrigin.z;\nif (project.projectionMode == PROJECTION_MODE_GLOBE) {\n terrainMercPos = terrain_globe_to_mercator(commonPos);\n terrainHeight = length(commonPos) - GLOBE_RADIUS;\n} else {\n terrainMercPos = commonPos.xy;\n}\nif (terrain.mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {\n vec2 texCoords = (terrainMercPos - terrain.bounds.xy) / terrain.bounds.zw;\n position = vec4(texCoords * 2.0 - 1.0, 0.0, 1.0);\n}\nif (terrain.mode == TERRAIN_MODE_USE_HEIGHT_MAP) {\n vec3 anchor = geometry.worldPosition;\n anchor.z = 0.0;\n vec3 anchorCommon = project_position(anchor);\n vec2 anchorMercPos = project.projectionMode == PROJECTION_MODE_GLOBE\n ? terrain_globe_to_mercator(anchorCommon)\n : anchorCommon.xy;\n vec2 texCoords = (anchorMercPos - terrain.bounds.xy) / terrain.bounds.zw;\n if (texCoords.x >= 0.0 && texCoords.y >= 0.0 && texCoords.x <= 1.0 && texCoords.y <= 1.0) {\n float terrainZ = texture(terrain_map, texCoords).r;\n if (project.projectionMode == PROJECTION_MODE_GLOBE) {\n // Height map is written in Mercator common space (units = TILE_SIZE / EARTH_CIRCUMFERENCE / cos(lat))\n // Convert to globe radial units (units = GLOBE_RADIUS / EARTH_RADIUS)\n terrainZ *= cos(radians(geometry.worldPosition.y)) * PI;\n geometry.position.xyz += normalize(geometry.position.xyz) * terrainZ;\n } else {\n geometry.position.z += terrainZ;\n }\n position = project_common_position_to_clipspace(geometry.position);\n }\n}\n ";
72
+ readonly 'fs:#main-start': "\nif (terrain.mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {\n fragColor = vec4(terrainHeight, 0.0, 0.0, 1.0);\n return;\n}\n ";
73
+ readonly 'fs:DECKGL_FILTER_COLOR': "\nif ((terrain.mode == TERRAIN_MODE_USE_COVER) || (terrain.mode == TERRAIN_MODE_USE_COVER_ONLY)) {\n vec2 texCoords = (terrainMercPos - terrain.bounds.xy) / terrain.bounds.zw;\n vec4 pixel = texture(terrain_map, texCoords);\n if (terrain.mode == TERRAIN_MODE_USE_COVER_ONLY) {\n color = pixel;\n } else {\n // pixel is premultiplied\n color = pixel + color * (1.0 - pixel.a);\n }\n return;\n}\n ";
74
74
  };
75
75
  readonly getUniforms: (opts?: Partial<TerrainModuleProps>) => {
76
76
  mode?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/terrain/shader-module.ts"],"names":[],"mappings":"AAOA,OAAO,EAAU,YAAY,EAAkB,MAAM,eAAe,CAAC;AAErE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAC,MAAM,EAAC,qCAAkC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,2BAAwB;AAElD,8DAA8D;AAC9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAWF,kDAAkD;AAClD,eAAO,MAAM,YAAY;;IAEvB,6EAA6E;;IAE7E,2EAA2E;;IAE3E,6FAA6F;;IAE7F,0EAA0E;;IAE1E,mEAAmE;;CAEpE,CAAC;AAkBF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAsDJ,OAAO,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;CA+EkD,CAAC"}
1
+ {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/terrain/shader-module.ts"],"names":[],"mappings":"AAOA,OAAO,EAAU,YAAY,EAAkB,MAAM,eAAe,CAAC;AAErE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAC,MAAM,EAAC,qCAAkC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,2BAAwB;AAElD,8DAA8D;AAC9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAWF,kDAAkD;AAClD,eAAO,MAAM,YAAY;;IAEvB,6EAA6E;;IAE7E,2EAA2E;;IAE3E,6FAA6F;;IAE7F,0EAA0E;;IAE1E,mEAAmE;;CAEpE,CAAC;AAkBF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAiFJ,OAAO,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;CA+EkD,CAAC"}
@@ -33,10 +33,21 @@ uniform sampler2D terrain_map;
33
33
  export const terrainModule = {
34
34
  name: 'terrain',
35
35
  dependencies: [project],
36
- // eslint-disable-next-line prefer-template
37
- vs: uniformBlock + /* glsl */ 'out vec3 commonPos;',
38
- // eslint-disable-next-line prefer-template
39
- fs: uniformBlock + /* glsl */ 'in vec3 commonPos;',
36
+ vs: `${uniformBlock}
37
+ out vec3 commonPos;
38
+ // In globe mode, absolute Mercator position for terrain FBO UV lookups
39
+ out vec2 terrainMercPos;
40
+ out float terrainHeight;
41
+
42
+ vec2 terrain_globe_to_mercator(vec3 globePosition) {
43
+ float D = length(globePosition);
44
+ float sinLat = clamp(globePosition.z / D, -0.999998, 0.999998);
45
+ float x = atan(globePosition.x, -globePosition.y);
46
+ float y = atanh(sinLat);
47
+ return (vec2(x, y) + PI) * WORLD_SCALE;
48
+ }
49
+ `,
50
+ fs: `${uniformBlock}in vec2 terrainMercPos;\nin float terrainHeight;`,
40
51
  inject: {
41
52
  'vs:#main-start': /* glsl */ `
42
53
  if (terrain.mode == TERRAIN_MODE_SKIP) {
@@ -46,32 +57,48 @@ if (terrain.mode == TERRAIN_MODE_SKIP) {
46
57
  `,
47
58
  'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `
48
59
  commonPos = geometry.position.xyz;
60
+ terrainHeight = commonPos.z + project.commonOrigin.z;
61
+ if (project.projectionMode == PROJECTION_MODE_GLOBE) {
62
+ terrainMercPos = terrain_globe_to_mercator(commonPos);
63
+ terrainHeight = length(commonPos) - GLOBE_RADIUS;
64
+ } else {
65
+ terrainMercPos = commonPos.xy;
66
+ }
49
67
  if (terrain.mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
50
- vec2 texCoords = (commonPos.xy - terrain.bounds.xy) / terrain.bounds.zw;
68
+ vec2 texCoords = (terrainMercPos - terrain.bounds.xy) / terrain.bounds.zw;
51
69
  position = vec4(texCoords * 2.0 - 1.0, 0.0, 1.0);
52
- commonPos.z += project.commonOrigin.z;
53
70
  }
54
71
  if (terrain.mode == TERRAIN_MODE_USE_HEIGHT_MAP) {
55
72
  vec3 anchor = geometry.worldPosition;
56
73
  anchor.z = 0.0;
57
74
  vec3 anchorCommon = project_position(anchor);
58
- vec2 texCoords = (anchorCommon.xy - terrain.bounds.xy) / terrain.bounds.zw;
75
+ vec2 anchorMercPos = project.projectionMode == PROJECTION_MODE_GLOBE
76
+ ? terrain_globe_to_mercator(anchorCommon)
77
+ : anchorCommon.xy;
78
+ vec2 texCoords = (anchorMercPos - terrain.bounds.xy) / terrain.bounds.zw;
59
79
  if (texCoords.x >= 0.0 && texCoords.y >= 0.0 && texCoords.x <= 1.0 && texCoords.y <= 1.0) {
60
80
  float terrainZ = texture(terrain_map, texCoords).r;
61
- geometry.position.z += terrainZ;
81
+ if (project.projectionMode == PROJECTION_MODE_GLOBE) {
82
+ // Height map is written in Mercator common space (units = TILE_SIZE / EARTH_CIRCUMFERENCE / cos(lat))
83
+ // Convert to globe radial units (units = GLOBE_RADIUS / EARTH_RADIUS)
84
+ terrainZ *= cos(radians(geometry.worldPosition.y)) * PI;
85
+ geometry.position.xyz += normalize(geometry.position.xyz) * terrainZ;
86
+ } else {
87
+ geometry.position.z += terrainZ;
88
+ }
62
89
  position = project_common_position_to_clipspace(geometry.position);
63
90
  }
64
91
  }
65
92
  `,
66
93
  'fs:#main-start': /* glsl */ `
67
94
  if (terrain.mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
68
- fragColor = vec4(commonPos.z, 0.0, 0.0, 1.0);
95
+ fragColor = vec4(terrainHeight, 0.0, 0.0, 1.0);
69
96
  return;
70
97
  }
71
98
  `,
72
99
  'fs:DECKGL_FILTER_COLOR': /* glsl */ `
73
100
  if ((terrain.mode == TERRAIN_MODE_USE_COVER) || (terrain.mode == TERRAIN_MODE_USE_COVER_ONLY)) {
74
- vec2 texCoords = (commonPos.xy - terrain.bounds.xy) / terrain.bounds.zw;
101
+ vec2 texCoords = (terrainMercPos - terrain.bounds.xy) / terrain.bounds.zw;
75
102
  vec4 pixel = texture(terrain_map, texCoords);
76
103
  if (terrain.mode == TERRAIN_MODE_USE_COVER_ONLY) {
77
104
  color = pixel;
@@ -131,7 +158,7 @@ if ((terrain.mode == TERRAIN_MODE_USE_COVER) || (terrain.mode == TERRAIN_MODE_US
131
158
  return {
132
159
  mode,
133
160
  terrain_map: sampler,
134
- // Convert bounds to the common space, as [minX, minY, width, height]
161
+ // Convert bounds to common space, as [minX, minY, width, height]
135
162
  bounds: bounds
136
163
  ? [
137
164
  bounds[0] - commonOrigin[0],
@@ -1 +1 @@
1
- {"version":3,"file":"shader-module.js","sourceRoot":"","sources":["../../src/terrain/shader-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shader-module.js","sourceRoot":"","sources":["../../src/terrain/shader-module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"terrain-cover.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain-cover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAiD,MAAM,EAAC,qCAAkC;AAMjG;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,EAAE,OAAO,CAAQ;IACxB,sDAAsD;IACtD,WAAW,EAAE,KAAK,CAAC;IACnB,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,OAAO,CAAC,GAAG,CAAC,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAoB;IAChC,gDAAgD;IAChD,OAAO,CAAC,YAAY,CAAqC;IACzD,sCAAsC;IACtC,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,WAAW,EAAE,KAAK;IAK9B,IAAI,EAAE,WAEL;IAED,4EAA4E;IAC5E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,YAAY,CAAC,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,gBAAgB,EACjB,EAAE;QACD,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GAAG,OAAO;IAqBX,wEAAwE;IACxE,OAAO,CAAC,aAAa;IAuBrB,4FAA4F;IAE5F,OAAO,CAAC,eAAe;IAsDvB,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,qBAAqB,IAAI,WAAW,GAAG,IAAI;IAa3C,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;IAI5B,MAAM;CAWP"}
1
+ {"version":3,"file":"terrain-cover.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain-cover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAG1C,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGnD,OAAO,EAML,MAAM,EACP,qCAAkC;AAMnC;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,EAAE,OAAO,CAAQ;IACxB,sDAAsD;IACtD,WAAW,EAAE,KAAK,CAAC;IACnB,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,OAAO,CAAC,GAAG,CAAC,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAoB;IAChC,gDAAgD;IAChD,OAAO,CAAC,YAAY,CAAqC;IACzD,sCAAsC;IACtC,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,WAAW,EAAE,KAAK;IAK9B,IAAI,EAAE,WAEL;IAED,4EAA4E;IAC5E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,YAAY,CAAC,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,gBAAgB,EACjB,EAAE;QACD,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GAAG,OAAO;IAqBX,wEAAwE;IACxE,OAAO,CAAC,aAAa;IAuBrB,4FAA4F;IAE5F,OAAO,CAAC,eAAe;IA8DvB,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,qBAAqB,IAAI,WAAW,GAAG,IAAI;IAa3C,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;IAI5B,MAAM;CAWP"}
@@ -1,8 +1,9 @@
1
1
  // deck.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { _GlobeViewport as GlobeViewport } from '@deck.gl/core';
4
5
  import { createRenderTarget } from "./utils.js";
5
- import { joinLayerBounds, makeViewport, getRenderBounds } from "../utils/projection-utils.js";
6
+ import { getMercatorReferenceViewport, joinLayerBounds, lngLatToMercatorCommon, makeViewport, getRenderBounds } from "../utils/projection-utils.js";
6
7
  /**
7
8
  * Manages the lifecycle of the terrain cover (draped textures over a terrain mesh).
8
9
  * One terrain cover is created for each unique terrain layer (primitive layer with operation:terrain).
@@ -77,12 +78,13 @@ export class TerrainCover {
77
78
  _updateViewport(viewport) {
78
79
  const targetLayer = this.targetLayer;
79
80
  let shouldRedraw = false;
81
+ // Bounds in absolute Mercator common space (matches terrain cover FBO viewport)
80
82
  if (this.tile && 'boundingBox' in this.tile) {
81
83
  if (!this.targetBounds) {
82
84
  shouldRedraw = true;
83
85
  this.targetBounds = this.tile.boundingBox;
84
- const bottomLeftCommon = viewport.projectPosition(this.targetBounds[0]);
85
- const topRightCommon = viewport.projectPosition(this.targetBounds[1]);
86
+ const bottomLeftCommon = lngLatToMercatorCommon(this.targetBounds[0]);
87
+ const topRightCommon = lngLatToMercatorCommon(this.targetBounds[1]);
86
88
  this.targetBoundsCommon = [
87
89
  bottomLeftCommon[0],
88
90
  bottomLeftCommon[1],
@@ -95,7 +97,7 @@ export class TerrainCover {
95
97
  // console.log('bounds changed', this.bounds, '>>', newBounds);
96
98
  shouldRedraw = true;
97
99
  this.targetBounds = targetLayer.getBounds();
98
- this.targetBoundsCommon = joinLayerBounds([targetLayer], viewport);
100
+ this.targetBoundsCommon = joinLayerBounds([targetLayer], getMercatorReferenceViewport(viewport));
99
101
  }
100
102
  if (!this.targetBoundsCommon) {
101
103
  return false;
@@ -109,7 +111,10 @@ export class TerrainCover {
109
111
  else {
110
112
  const oldZoom = this.renderViewport?.zoom;
111
113
  shouldRedraw = shouldRedraw || newZoom !== oldZoom;
112
- const newBounds = getRenderBounds(this.targetBoundsCommon, viewport);
114
+ // On GlobeView, viewport bounds are sphere cartesian — skip intersection
115
+ const newBounds = viewport instanceof GlobeViewport
116
+ ? this.targetBoundsCommon
117
+ : getRenderBounds(this.targetBoundsCommon, viewport);
113
118
  const oldBounds = this.bounds;
114
119
  shouldRedraw = shouldRedraw || !oldBounds || newBounds.some((x, i) => x !== oldBounds[i]);
115
120
  this.bounds = newBounds;
@@ -1 +1 @@
1
- {"version":3,"file":"terrain-cover.js","sourceRoot":"","sources":["../../src/terrain/terrain-cover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terrain-cover.js","sourceRoot":"","sources":["../../src/terrain/terrain-cover.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import type { Layer, Viewport } from '@deck.gl/core';
2
2
  /** Bounds in CARTESIAN coordinates */
3
3
  export type Bounds = [minX: number, minY: number, maxX: number, maxY: number];
4
+ /** Project lng/lat to absolute Mercator common space. */
5
+ export declare function lngLatToMercatorCommon(lngLat: number[]): [number, number];
6
+ /** Returns a Mercator viewport for bounds computation, bypassing GlobeView. */
7
+ export declare function getMercatorReferenceViewport(viewport: Viewport): Viewport;
4
8
  export declare function joinLayerBounds(
5
9
  /** The layers to combine */
6
10
  layers: Layer[],
@@ -1 +1 @@
1
- {"version":3,"file":"projection-utils.d.ts","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEnD,sCAAsC;AACtC,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAM9E,wBAAgB,eAAe;AAC7B,4BAA4B;AAC5B,MAAM,EAAE,KAAK,EAAE;AACf,yEAAyE;AACzE,QAAQ,EAAE,QAAQ,GACjB,MAAM,GAAG,IAAI,CAoBf;AAID,mHAAmH;AACnH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,QAAQ,GAAG,IAAI,CA2DlB;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA0BvF;AAMD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACxB,MAAM,CA+BR"}
1
+ {"version":3,"file":"projection-utils.d.ts","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEnD,sCAAsC;AACtC,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAW9E,yDAAyD;AACzD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGzE;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAEzE;AAMD,wBAAgB,eAAe;AAC7B,4BAA4B;AAC5B,MAAM,EAAE,KAAK,EAAE;AACf,yEAAyE;AACzE,QAAQ,EAAE,QAAQ,GACjB,MAAM,GAAG,IAAI,CAoBf;AAID,mHAAmH;AACnH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,QAAQ,GAAG,IAAI,CA8DlB;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA0BvF;AAMD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACxB,MAAM,CA+BR"}
@@ -2,6 +2,23 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { WebMercatorViewport, OrthographicViewport } from '@deck.gl/core';
5
+ /** Fixed Mercator viewport for projection-independent coordinate conversion */
6
+ const MERCATOR_REFERENCE_VIEWPORT = new WebMercatorViewport({
7
+ width: 1,
8
+ height: 1,
9
+ longitude: 0,
10
+ latitude: 0,
11
+ zoom: 0
12
+ });
13
+ /** Project lng/lat to absolute Mercator common space. */
14
+ export function lngLatToMercatorCommon(lngLat) {
15
+ const [x, y] = MERCATOR_REFERENCE_VIEWPORT.projectPosition(lngLat);
16
+ return [x, y];
17
+ }
18
+ /** Returns a Mercator viewport for bounds computation, bypassing GlobeView. */
19
+ export function getMercatorReferenceViewport(viewport) {
20
+ return viewport.isGeospatial ? MERCATOR_REFERENCE_VIEWPORT : viewport;
21
+ }
5
22
  /*
6
23
  * Compute the union of bounds from multiple layers
7
24
  * Returns bounds in CARTESIAN coordinates
@@ -37,11 +54,14 @@ export function makeViewport(opts) {
37
54
  if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
38
55
  return null;
39
56
  }
40
- const centerWorld = viewport.unprojectPosition([
41
- (bounds[0] + bounds[2]) / 2,
42
- (bounds[1] + bounds[3]) / 2,
43
- 0
44
- ]);
57
+ // Unproject through Mercator reference (GlobeView would give sphere coords)
58
+ const centerWorld = isGeospatial
59
+ ? MERCATOR_REFERENCE_VIEWPORT.unprojectPosition([
60
+ (bounds[0] + bounds[2]) / 2,
61
+ (bounds[1] + bounds[3]) / 2,
62
+ 0
63
+ ])
64
+ : viewport.unprojectPosition([(bounds[0] + bounds[2]) / 2, (bounds[1] + bounds[3]) / 2, 0]);
45
65
  let { width, height, zoom } = opts;
46
66
  if (zoom === undefined) {
47
67
  // Use width and height to determine zoom
@@ -1 +1 @@
1
- {"version":3,"file":"projection-utils.js","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-utils.js","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"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"}