isard 1.16.0 → 2.1.0

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 (122) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +5 -5
  3. package/dist/basemap/vectortiles/placed.js +7 -4
  4. package/dist/basemap/vectortiles/placed.js.map +1 -1
  5. package/dist/basemap/vectortiles/tiles.d.ts +1 -1
  6. package/dist/basemap/vectortiles/tiles.js.map +1 -1
  7. package/dist/basemap/vectortiles/vectors.d.ts +3 -1
  8. package/dist/basemap/vectortiles/vectors.js +2 -0
  9. package/dist/basemap/vectortiles/vectors.js.map +1 -1
  10. package/dist/basemap/vectortiles.d.ts +1 -3
  11. package/dist/basemap/vectortiles.js +1 -3
  12. package/dist/basemap/vectortiles.js.map +1 -1
  13. package/dist/basemap/workerpool.d.ts +1 -1
  14. package/dist/basemap/workerpool.js.map +1 -1
  15. package/dist/bind/layers.js +2 -2
  16. package/dist/bind/layers.js.map +1 -1
  17. package/dist/decoder.worker.js +4 -5
  18. package/dist/decoder.worker.js.map +6 -6
  19. package/dist/decoding/decoders.d.ts +1 -1
  20. package/dist/decoding/decoders.js.map +1 -1
  21. package/dist/decoding/loader.d.ts +6 -3
  22. package/dist/decoding/loader.js +7 -5
  23. package/dist/decoding/loader.js.map +1 -1
  24. package/dist/decoding/protocol.d.ts +3 -2
  25. package/dist/decoding/protocol.js.map +1 -1
  26. package/dist/engine-loader.d.ts +20 -18
  27. package/dist/engine-loader.js +45 -42
  28. package/dist/engine-loader.js.map +1 -1
  29. package/dist/index.d.ts +3 -3
  30. package/dist/index.js.map +1 -1
  31. package/dist/isard_grid_bg.wasm +0 -0
  32. package/dist/isard_tess_bg.wasm +0 -0
  33. package/dist/isard_tiles3d_bg.wasm +0 -0
  34. package/dist/isard_webgl2_bg.wasm +0 -0
  35. package/dist/isard_webgpu_bg.wasm +0 -0
  36. package/dist/layers/custom.d.ts +35 -29
  37. package/dist/layers/custom.js +60 -46
  38. package/dist/layers/custom.js.map +1 -1
  39. package/dist/layers/extrusions.d.ts +6 -1
  40. package/dist/layers/extrusions.js +15 -4
  41. package/dist/layers/extrusions.js.map +1 -1
  42. package/dist/layers/features.js.map +1 -1
  43. package/dist/layers/flow.js.map +1 -1
  44. package/dist/layers/glyphs.d.ts +1 -1
  45. package/dist/layers/glyphs.js.map +1 -1
  46. package/dist/layers/ground.d.ts +21 -14
  47. package/dist/layers/ground.js +30 -9
  48. package/dist/layers/ground.js.map +1 -1
  49. package/dist/layers/icons.d.ts +1 -1
  50. package/dist/layers/icons.js.map +1 -1
  51. package/dist/layers/layers.d.ts +1 -2
  52. package/dist/layers/layers.js +3 -12
  53. package/dist/layers/layers.js.map +1 -1
  54. package/dist/layers/models.d.ts +7 -1
  55. package/dist/layers/models.js +19 -5
  56. package/dist/layers/models.js.map +1 -1
  57. package/dist/layers/network.d.ts +1 -1
  58. package/dist/layers/network.js.map +1 -1
  59. package/dist/layers/panoramas.d.ts +1 -0
  60. package/dist/layers/panoramas.js +3 -2
  61. package/dist/layers/panoramas.js.map +1 -1
  62. package/dist/layers/pointclouds.d.ts +3 -3
  63. package/dist/layers/pointclouds.js +3 -7
  64. package/dist/layers/pointclouds.js.map +1 -1
  65. package/dist/layers/raster.js +5 -0
  66. package/dist/layers/raster.js.map +1 -1
  67. package/dist/layers/symbols.js.map +1 -1
  68. package/dist/layers/tiles3d.d.ts +5 -7
  69. package/dist/layers/tiles3d.js +9 -18
  70. package/dist/layers/tiles3d.js.map +1 -1
  71. package/dist/layers/vectors.d.ts +10 -5
  72. package/dist/layers/vectors.js +25 -16
  73. package/dist/layers/vectors.js.map +1 -1
  74. package/dist/map/engine-settings.d.ts +5 -2
  75. package/dist/map/engine-settings.js +13 -2
  76. package/dist/map/engine-settings.js.map +1 -1
  77. package/dist/map/engines.d.ts +11 -26
  78. package/dist/map/engines.js +10 -48
  79. package/dist/map/engines.js.map +1 -1
  80. package/dist/map/frame-loop.d.ts +1 -3
  81. package/dist/map/frame-loop.js +3 -3
  82. package/dist/map/frame-loop.js.map +1 -1
  83. package/dist/map/hover-pick.d.ts +9 -3
  84. package/dist/map/hover-pick.js +29 -6
  85. package/dist/map/hover-pick.js.map +1 -1
  86. package/dist/map/layer-stack.d.ts +7 -8
  87. package/dist/map/layer-stack.js +6 -9
  88. package/dist/map/layer-stack.js.map +1 -1
  89. package/dist/map/symbol-atlases.d.ts +5 -4
  90. package/dist/map/symbol-atlases.js +8 -13
  91. package/dist/map/symbol-atlases.js.map +1 -1
  92. package/dist/map/viewshed.d.ts +1 -1
  93. package/dist/map/viewshed.js.map +1 -1
  94. package/dist/map.d.ts +45 -26
  95. package/dist/map.js +141 -90
  96. package/dist/map.js.map +1 -1
  97. package/dist/react/IsardMap.d.ts +1 -1
  98. package/dist/react/IsardMap.js.map +1 -1
  99. package/dist/react/VectorGeometry.d.ts +4 -1
  100. package/dist/react/VectorGeometry.js +5 -1
  101. package/dist/react/VectorGeometry.js.map +1 -1
  102. package/dist/react/index.d.ts +1 -1
  103. package/dist/react/index.js.map +1 -1
  104. package/dist/settings.d.ts +2 -0
  105. package/dist/settings.js +1 -1
  106. package/dist/settings.js.map +1 -1
  107. package/dist/types.d.ts +52 -22
  108. package/dist/types.js.map +1 -1
  109. package/dist/ui/interaction.d.ts +1 -1
  110. package/dist/ui/interaction.js.map +1 -1
  111. package/dist/util/animation.d.ts +1 -1
  112. package/dist/util/animation.js.map +1 -1
  113. package/dist/wasm/isard_tiles3d.d.ts +181 -0
  114. package/dist/wasm/isard_tiles3d.js +387 -0
  115. package/dist/wasm/{isard_core.d.ts → isard_webgl2.d.ts} +387 -182
  116. package/dist/wasm/{isard_core.js → isard_webgl2.js} +2087 -324
  117. package/dist/wasm/{isard.d.ts → isard_webgpu.d.ts} +195 -358
  118. package/dist/wasm/{isard.js → isard_webgpu.js} +1320 -1042
  119. package/package.json +4 -3
  120. package/vite.js +5 -4
  121. package/dist/isard_bg.wasm +0 -0
  122. package/dist/isard_core_bg.wasm +0 -0
@@ -1,131 +1,21 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
 
4
- /**
5
- * A primitive of a tile decoded by `decodeTile`: vertices x, y, z, u, v around the anchor; the image still encoded,
6
- * the same array for the primitives sharing it
7
- */
8
- export interface EncodedPrimitive {
9
- vertices: Float32Array<ArrayBuffer>;
10
- indices: Uint32Array<ArrayBuffer>;
11
- image?: Uint8Array<ArrayBuffer>;
12
- mime?: string;
13
- /** Base color factor of its material (RGBA 0-1), when not white */
14
- color?: Float32Array<ArrayBuffer>;
15
- /** The feature of each vertex (`EncodedTile.properties` index them), when the tile has features */
16
- features?: Float32Array<ArrayBuffer>;
17
- }
18
-
19
- /** A tile decoded by `decodeTile` */
20
- export interface EncodedTile {
21
- /** ECEF origin of the vertices (metres) */
22
- anchor: Float64Array<ArrayBuffer>;
23
- primitives: EncodedPrimitive[];
24
- /** Its points (`.pnts`, glTF points), 20 bytes a vertex: x, y, z (f32) around the anchor, RGB, a normal */
25
- points: Uint8Array<ArrayBuffer>[];
26
- /** The properties of its features, one object per feature */
27
- properties?: Record<string, unknown>[];
28
- }
29
-
30
- /** A texture transcoded for the GPU (KTX2 / Basis Universal): a WebGL internal format and its mip levels */
31
- export interface CompressedTexture {
32
- /** WebGL internal format (compressed, or RGBA8 when the GPU supports none of the targets) */
33
- format: number;
34
- levels: { width: number; height: number; data: Uint8Array<ArrayBuffer> }[];
35
- }
36
-
37
- /**
38
- * A primitive ready for the GPU: its image decoded (bitmap) or transcoded (texture); primitives given the same bitmap
39
- * or texture object share one GPU texture
40
- */
41
- export interface DecodedPrimitive {
42
- vertices: Float32Array<ArrayBuffer>;
43
- indices: Uint32Array<ArrayBuffer>;
44
- bitmap: ImageBitmap | null;
45
- texture?: CompressedTexture;
46
- /** Base color factor of its material (RGBA 0-1), when not white */
47
- color?: Float32Array<ArrayBuffer>;
48
- /** The feature of each vertex, when the tile has features */
49
- features?: Float32Array<ArrayBuffer>;
50
- }
51
-
52
- /**
53
- * A Draco-compressed primitive of a tile (`KHR_draco_mesh_compression`), or its points
54
- * (`3DTILES_draco_point_compression`), to decode with the Draco module
55
- */
56
- export interface DracoRequest {
57
- mesh: number;
58
- primitive: number;
59
- data: Uint8Array<ArrayBuffer>;
60
- /** Draco attribute ids */
61
- position: number;
62
- uv?: number;
63
- color?: number;
64
- normal?: number;
65
- /** A point cloud: no triangles */
66
- points?: boolean;
67
- }
68
-
69
- /** The Draco module's output for a request: positions, uv, colors and normals as stored, triangles (not for points) */
70
- export interface DracoGeometry {
71
- mesh: number;
72
- primitive: number;
73
- positions: Float32Array;
74
- uvs?: Float32Array;
75
- indices?: Uint32Array;
76
- colors?: Float32Array;
77
- normals?: Float32Array;
78
- }
79
-
80
- /** Compressed texture formats supported by the GPU */
81
- export interface TextureFormats {
82
- astc: boolean;
83
- bptc: boolean;
84
- etc: boolean;
85
- s3tc: boolean;
86
- }
87
-
88
- /** A tile ready for the GPU, as the decoding workers deliver it */
89
- export interface DecodedTile {
90
- anchor: Float64Array<ArrayBuffer>;
91
- primitives: DecodedPrimitive[];
92
- /** Its points' vertices (`EncodedTile.points`) */
93
- points?: Uint8Array<ArrayBuffer>[];
94
- /** The properties of its features (`EncodedTile.properties`) */
95
- properties?: Record<string, unknown>[];
4
+ /** A feature picked: its layer and its index there (the edge of a network, the feature of a layer) */
5
+ export interface PickHit {
6
+ layer: number;
7
+ index: number;
96
8
  }
97
9
 
98
- /** What the engine expects from a pool of decoding workers (`Engine.setTileLoader`) */
99
- export interface TileLoaderLike {
100
- /**
101
- * `reload`: bypass the HTTP cache (the tile failed before: the cache may hold the error); `priority`: the Fetch
102
- * Priority for the download (the first tiles in view of a frame are urgent)
103
- */
104
- load(
105
- id: number,
106
- url: string,
107
- transform: Float64Array,
108
- yUp: boolean,
109
- reload: boolean,
110
- priority?: 'high' | 'low',
111
- ): Promise<DecodedTile>;
112
- abort(id: number): void;
113
- /**
114
- * The points of a COPC node: its LAZ chunk (`size` bytes at `offset` of the file at `url`, a range request), the
115
- * data of the file's LAZ VLR, its layout (format, record length, scale, offset), the grid positioning its points
116
- * and its point count; resolves with its vertices (20 bytes each, see `EncodedTile.points`)
117
- */
118
- loadPoints?(
119
- id: number,
120
- url: string,
121
- offset: number,
122
- size: number,
123
- laz: Uint8Array,
124
- layout: Float64Array,
125
- grid: Float64Array,
126
- count: number,
127
- priority?: 'high' | 'low',
128
- ): Promise<Uint8Array<ArrayBuffer>>;
10
+ /** The answer to `requestPick`, from `pollPick` */
11
+ export interface PickResult {
12
+ /** The screen point asked about (CSS pixels) */
13
+ x: number;
14
+ y: number;
15
+ /** The feature there, if any */
16
+ hit?: PickHit;
17
+ /** The position there, on the relief; undefined above the horizon */
18
+ lonLat?: [lon: number, lat: number];
129
19
  }
130
20
 
131
21
 
@@ -140,14 +30,6 @@ export interface Camera {
140
30
  bearing: number;
141
31
  }
142
32
 
143
- /** The feature under a screen point */
144
- export interface PickHit {
145
- /** Id of the layer */
146
- layer: number;
147
- /** Index of the feature in the layer (the edge of a network) */
148
- index: number;
149
- }
150
-
151
33
  /** Tile counters of a raster layer */
152
34
  export interface RasterLayerStats {
153
35
  id: number;
@@ -253,47 +135,47 @@ export interface NetworkStats {
253
135
 
254
136
 
255
137
 
256
- /** The answer to `requestPick`, from `pollPick` */
257
- export interface PickResult {
258
- /** The screen point asked about (CSS pixels) */
259
- x: number;
260
- y: number;
261
- /** The feature there, if any */
262
- hit?: PickHit;
263
- /** The position there, on the relief; undefined above the horizon */
264
- lonLat?: [lon: number, lat: number];
138
+ /** What a custom layer draws into before the frame's pass: the engine's device, the layer's color (cleared, at the
139
+ * canvas's size; premultiplied alpha) and in the '3d' mode its depth (the solid scene's, to test against) */
140
+ export interface CustomTarget {
141
+ device: GPUDevice;
142
+ color: GPUTexture;
143
+ format: 'rgba8unorm';
144
+ depth?: GPUTexture;
145
+ depthFormat: 'depth32float';
146
+ width: number;
147
+ height: number;
265
148
  }
266
149
 
267
150
 
268
151
 
269
152
  /**
270
- * A map on one canvas: its WebGL2 context, camera, ground (raster layers over the relief) and the layers over it.
271
- * Draws only when `render` is called (the JavaScript side calls it after `redraw` asks for a frame)
153
+ * A map on one canvas: its device, its camera, what it draws. Draws only when `render` is called (the JavaScript
154
+ * side calls it after `redraw` asks for a frame)
272
155
  */
273
156
  export class Engine {
157
+ private constructor();
274
158
  free(): void;
275
159
  /**
276
160
  * Circle layer of `feature_count` features: points (Mercator [0, 1], interleaved) and the feature of each
277
161
  *
278
162
  * # Errors
279
163
  *
280
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
281
- * info log), or when `feature_count` features need a table texture past the GPU's `MAX_TEXTURE_SIZE`
164
+ * Throws (to JavaScript) when `feature_count` features need a table past the GPU's largest texture
282
165
  */
283
166
  addCircles(points: Float64Array, feature: Uint32Array, feature_count: number): number;
284
167
  /**
285
- * A layer drawn by the page: `render()` is called at its place in every frame (`customMatrix` gives the
286
- * matrices of that frame meanwhile); `depth`: with the depth buffer of the 3D layers (`3d` mode), else over
287
- * what is drawn before it
168
+ * A layer drawn by the page: `render(target)` is called before every frame's pass with its targets (the device,
169
+ * the color, the depth in `'3d'`: `customMatrix` gives the matrices of that frame meanwhile), what it drew laid over
170
+ * the frame at the layer's place; `depth`: with the depth of the solid scene (`'3d'` mode)
288
171
  */
289
- addCustomLayer(render: () => void, depth: boolean): number;
172
+ addCustomLayer(render: (target: CustomTarget) => void, depth: boolean): number;
290
173
  /**
291
174
  * An empty extrusion layer: its blocks come in batches (`setExtrusionBatch`)
292
175
  *
293
176
  * # Errors
294
177
  *
295
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
296
- * info log)
178
+ * Never in practice: the layer starts empty
297
179
  */
298
180
  addExtrusions(): number;
299
181
  /**
@@ -303,8 +185,7 @@ export class Engine {
303
185
  *
304
186
  * # Errors
305
187
  *
306
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
307
- * info log), or when `feature_count` features need a table texture past the GPU's `MAX_TEXTURE_SIZE`
188
+ * Throws (to JavaScript) when `feature_count` features need a table past the GPU's largest texture
308
189
  */
309
190
  addFills(points: Float64Array, ring_start: Uint32Array, polygon_start: Uint32Array, feature: Uint32Array, feature_count: number): number;
310
191
  /**
@@ -313,74 +194,61 @@ export class Engine {
313
194
  *
314
195
  * # Errors
315
196
  *
316
- * Throws (to JavaScript) when a WebGL object cannot be created, a shader fails to compile or the trails need a
317
- * table texture past the GPU's `MAX_TEXTURE_SIZE`
197
+ * Throws (to JavaScript) when the trails need a table past the GPU's largest texture
318
198
  */
319
199
  addFlow(particles: number, trail: number): number;
320
200
  /**
321
- * Ground layer running `code` (GLSL ES 3.0 defining `vec4 ground(vec2 offset)`, see `render::ground`) over the
322
- * ground; `anchor`: Mercator point the offsets are taken from; bounds: Mercator box it shows in. Compilation errors
323
- * come back with the shader's info log (line numbers of `code`)
201
+ * Ground layer running `code` (WGSL defining `fn ground(offset: vec2f) -> vec4f`, see `render::ground`) over the
202
+ * ground; `names` and `types`: its uniforms (`f32`, `vec2f`, `vec4<u32>`, `mat4x4f`…), read as `u.<name>`;
203
+ * `anchor`: Mercator point the offsets are taken from; bounds: Mercator box it shows in. Compilation errors are
204
+ * reported in the console when the layer is first drawn
324
205
  *
325
206
  * # Errors
326
207
  *
327
- * Throws (to JavaScript) when `code` does not compile or link, with the shader's info log
208
+ * Throws (to JavaScript) on a uniform's name or type WGSL does not take
328
209
  */
329
- addGround(code: string, anchor_x: number, anchor_y: number, min_x: number, min_y: number, max_x: number, max_y: number): number;
210
+ addGround(code: string, names: string[], types: string[], anchor_x: number, anchor_y: number, min_x: number, min_y: number, max_x: number, max_y: number): number;
330
211
  /**
331
212
  * Line layer of `feature_count` features: polylines given by their points (Mercator [0, 1], interleaved), the
332
213
  * first point of each (`start`, one more entry than lines) and the feature each one belongs to
333
214
  *
334
215
  * # Errors
335
216
  *
336
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
337
- * info log), or when the features or the lines need a table texture past the GPU's `MAX_TEXTURE_SIZE`
217
+ * Throws (to JavaScript) when the features or the lines need a table past the GPU's largest texture
338
218
  */
339
219
  addLines(points: Float64Array, start: Uint32Array, feature: Uint32Array, feature_count: number, heights?: Float64Array | null, sea?: boolean | null): number;
340
220
  /**
341
221
  * A glTF / GLB model (its URL, a `blob:` one for data of the page) drawn at each instance of `instances`
342
- * (`INSTANCE_NUMBERS` numbers each: longitude, latitude, altitude, heading, pitch, roll in degrees, scale);
343
- * `ground`: altitudes above the relief, else above the ellipsoid
344
- *
345
- * # Errors
346
- *
347
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
348
- * info log). A model that fails to load or decode does not throw: the layer stays empty
222
+ * (`geo::models::INSTANCE_NUMBERS` numbers each: longitude, latitude, altitude, heading, pitch, roll in degrees,
223
+ * scale); `ground`: altitudes above the relief, else above the ellipsoid. A model that fails to load or decode
224
+ * leaves the layer empty
349
225
  */
350
226
  addModels(url: string, instances: Float64Array, ground: boolean): number;
351
227
  /**
352
228
  * Network of `mercator.length / 2` nodes (Mercator [0, 1], y towards the south, interleaved: converted by the
353
229
  * JavaScript side, where `Math.tan` and `Math.log` are much faster than in WebAssembly) and `edges.length / 2`
354
- * edges (node index pairs, interleaved). `line_start` and `line_points`: the line of each edge from A to B, points
355
- * `line_start[e] .. line_start[e + 1]` of `line_points` (Mercator, interleaved; straight if fewer than two). `costs`: per edge, the
356
- * cost of travelling it from A to B then from B to A; without, values are interpolated along the edges.
230
+ * edges (node index pairs, interleaved). `line_start` and `line_points`: the line of each edge from A to B,
231
+ * points `line_start[e] .. line_start[e + 1]` of `line_points` (Mercator, interleaved; straight if fewer than
232
+ * two). `costs`: per edge, the cost of travelling it from A to B then from B to A; without, values are
233
+ * interpolated along the edges.
357
234
  *
358
235
  * # Errors
359
236
  *
360
- * Throws (to JavaScript) when `style` is not 25 numbers, `edges` is not node pairs or names a node past
361
- * those of `mercator`, the nodes or edges need a table texture past the GPU's `MAX_TEXTURE_SIZE`, or when
362
- * a WebGL object cannot be created or a shader fails to compile (the error carries its info log)
237
+ * Throws (to JavaScript) when `style` is not 25 numbers, `edges` is not node pairs or names a node past those of
238
+ * `mercator`, or the nodes or edges need a table past the GPU's largest texture
363
239
  */
364
240
  addNetwork(mercator: Float64Array, edges: Uint32Array, line_start: Uint32Array | null | undefined, line_points: Float64Array | null | undefined, costs: Float32Array | null | undefined, style: Float32Array): number;
365
241
  /**
366
242
  * A COPC point cloud from its URL (HTTP range requests). `resolve(wkt)` gives the CRS of the file from its WKT
367
243
  * (undefined if it has none): its inverse projection, whether its altitudes are above the geoid, the metres of
368
244
  * a unit of z; it may throw (an unknown CRS), the layer then stays empty
369
- *
370
- * # Errors
371
- *
372
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
373
- * info log). The file itself is read later: a bad file, or a `resolve` that throws, leaves the layer empty
245
+ * The file is read later: a bad file, or a `resolve` that throws, leaves the layer empty
374
246
  */
375
247
  addPointCloud(url: string, resolve: (wkt: string | undefined) => PointCloudCrs): number;
376
248
  /**
377
249
  * Raster tiles in Web Mercator; `url` holds {z}, {x} and {y}. `size`: side of the tiles' textures (256 by
378
250
  * default); `loader`: draws each tile instead of fetching `url`, `(z, x, y, signal) => Promise<ImageBitmap |
379
251
  * null>`, an image of `size` × `size` (null: nothing there); `ground: false`: draped on 3D layers only
380
- *
381
- * # Errors
382
- *
383
- * Throws (to JavaScript) when the texture holding the layer's tiles cannot be created
384
252
  */
385
253
  addRaster(url: string, min_z: number, max_z: number, opacity: number, saturation: number, size: number | null | undefined, loader: ((z: number, x: number, y: number, signal: AbortSignal) => Promise<ImageBitmap | null>) | undefined, ground?: boolean | null): number;
386
254
  /**
@@ -388,8 +256,7 @@ export class Engine {
388
256
  *
389
257
  * # Errors
390
258
  *
391
- * Throws (to JavaScript) when a WebGL object cannot be created or a shader fails to compile (the error carries its
392
- * info log)
259
+ * Never in practice: its tables start empty
393
260
  */
394
261
  addSymbols(): number;
395
262
  /**
@@ -397,21 +264,22 @@ export class Engine {
397
264
  * screen-space error (CSS pixels) above which a tile is refined; 16 is the usual value, lower is finer.
398
265
  * `geoid`: its heights are altitudes (NGF-IGN69), each tile raised by the RAF20 geoid onto the relief.
399
266
  *
400
- * # Errors
401
- *
402
- * Throws (to JavaScript) when one of the layer's programs fails to compile or link (the error carries
403
- * its info log). The tileset itself is read later: a bad one leaves the layer empty, it does not throw
267
+ * The tileset is read later: a bad one leaves the layer empty
404
268
  */
405
269
  addTiles3d(url: string, max_error: number, geoid?: boolean | null): number;
406
270
  /**
407
271
  * An empty layer of vector tiles drawn as geometry: its style layers come with `setVectorSublayers`, its tiles
408
- * with `setVectorTile`
272
+ * with `setVectorTile` or `setVectorTileMesh`
409
273
  *
410
274
  * # Errors
411
275
  *
412
- * Throws (to JavaScript) when a shader fails to compile (the error carries its info log)
276
+ * Never in practice: the layer starts empty
413
277
  */
414
278
  addVectorTiles(): number;
279
+ /**
280
+ * The backend drawing: "browserwebgpu" or "gl"
281
+ */
282
+ backend(): string;
415
283
  /**
416
284
  * Longitudes and latitudes the view covers on the ground, `[west, south, east, north]` (degrees): the screen's
417
285
  * border cast on the ground, or on the far plane where it passes the horizon
@@ -438,7 +306,16 @@ export class Engine {
438
306
  */
439
307
  clearViewshed(): void;
440
308
  /**
441
- * Model-view-projection matrix (16 numbers, column-major, for `uniformMatrix4fv`) of the local frame at a
309
+ * The engine of `canvas`, `redraw` called when it needs a new frame; `antialias`: the 3D multisampled (default
310
+ * true). Asynchronous: the device is asked for
311
+ *
312
+ * # Errors
313
+ *
314
+ * Throws (to JavaScript) when the canvas gives no device ("WebGPU is not available" through WebGPU)
315
+ */
316
+ static create(canvas: HTMLCanvasElement, redraw: () => void, antialias?: boolean | null): Promise<Engine>;
317
+ /**
318
+ * Model-view-projection matrix (16 numbers, column-major, WebGPU's clip depth from 0 to 1) of the local frame at a
442
319
  * longitude, latitude (degrees) and altitude (metres): x east, y north, z up, in metres. Undefined outside the
443
320
  * callback of a custom layer. Static: the engine is borrowed while it draws
444
321
  */
@@ -454,23 +331,34 @@ export class Engine {
454
331
  */
455
332
  static geoidHeight(lon: number, lat: number): number;
456
333
  /**
457
- * Position under a screen point (CSS pixels), undefined above the horizon; on the relief itself: from the copy of
458
- * its tiles kept on the CPU, the drawn ground read back from the GPU only where none is there (a read back waits
459
- * for the frame: called during a move, it stalls it)
334
+ * The `GPUDevice` the engine draws with, for the custom layers' objects; undefined on the WebGL2 fallback
335
+ */
336
+ gpuDevice(): GPUDevice | undefined;
337
+ /**
338
+ * Position under a screen point (CSS pixels), undefined above the horizon
460
339
  */
461
340
  ground(x: number, y: number): [lon: number, lat: number] | undefined;
462
341
  /**
463
- * Colors an extrusion layer by the node values of network layer `network` (undefined: by its own values):
464
- * each block takes min(value(A) + cost from A, value(B) + cost from B) from its anchors (`setExtrusionAnchors`),
342
+ * Colors an extrusion layer by the node values of network layer `network` (undefined: by its own values): each
343
+ * block takes min(value(A) + cost from A, value(B) + cost from B) from its anchors (`setExtrusionAnchors`),
465
344
  * through the layer's ramp, up to `max` (above: its own color)
466
345
  */
467
346
  linkExtrusionNetwork(id: number, network: number | null | undefined, max: number): void;
468
347
  /**
469
- * Model-view-projection matrix (16 numbers, column-major) of the local frame at a longitude, latitude (degrees)
470
- * and altitude (metres), x east, y north, z up, in metres, for the last frame drawn (else the camera): the 3D
471
- * overlays of the page (`Panel`) placed with it after each frame
348
+ * Model-view-projection matrix (16 numbers, column-major, WebGL's clip depth) of the local frame at a longitude,
349
+ * latitude (degrees) and altitude (metres), x east, y north, z up, in metres, for the last frame drawn (else the
350
+ * camera): the 3D overlays of the page (`Panel`) placed with it after each frame
472
351
  */
473
352
  localMatrix(lon: number, lat: number, altitude: number): Float32Array;
353
+ /**
354
+ * The largest texture the device takes (pixels a side): the symbol layers' atlases stay within it
355
+ */
356
+ maxTextureSize(): number;
357
+ /**
358
+ * The GPU memory of the layers the budget counts (`setMemoryBudget`): two numbers a layer, its id and its bytes
359
+ * (a raster's pool, the tiles of a 3D Tiles layer or a point cloud), the relief last with id 0
360
+ */
361
+ memory(): Float64Array;
474
362
  /**
475
363
  * Moves a layer to a drawing position (0 = bottom)
476
364
  */
@@ -479,35 +367,18 @@ export class Engine {
479
367
  * Pieces of a network in all and drawn in the last frame (only the squares in view are)
480
368
  */
481
369
  networkStats(id: number): NetworkStats | undefined;
482
- /**
483
- * `redraw` is called when the engine needs a new frame (a tile arrived); `antialias`: multisampled (default true)
484
- *
485
- * # Errors
486
- *
487
- * Throws (to JavaScript) when the canvas gives no WebGL2 context ("WebGL2 is not available"), or when a WebGL
488
- * object of the globe, the sky or the raster pass cannot be created or one of their shaders fails to compile
489
- */
490
- constructor(canvas: HTMLCanvasElement, redraw: () => void, antialias?: boolean | null);
491
370
  /**
492
371
  * Drags the ground from one screen point to another (CSS pixels); in relief, the ground point grabbed stays
493
372
  * under the cursor
494
373
  */
495
374
  pan(x0: number, y0: number, x1: number, y1: number): void;
496
- /**
497
- * Feature under a screen point (CSS pixels), or the nearest one within `radius` CSS pixels: its layer and its
498
- * index there (the edge of a network, the feature of a line, circle or fill layer), undefined if none. The
499
- * pickable layers are drawn with each feature colored by its number; then the fills are tested on the ground.
500
- * `only`: the ids of the layers to look in (all if undefined): the others are not drawn and hide nothing.
501
- * Reads the pixels back at once (the GPU finishes its work first): for clicks; `requestPick` for the hover
502
- */
503
- pick(x: number, y: number, radius?: number | null, only?: Uint32Array | null): PickHit | undefined;
504
375
  /**
505
376
  * What a point cloud says of itself, undefined before its head is read
506
377
  */
507
378
  pointCloudInfo(id: number): PointCloudInfo | undefined;
508
379
  /**
509
- * The point of a point cloud picked by `pick` or `pollPick` (its index there), read back from the GPU; undefined
510
- * once it is no longer drawn
380
+ * The point of a point cloud picked by `pollPick` (its index there): read back with the answer; undefined for
381
+ * another
511
382
  */
512
383
  pointCloudPoint(id: number, index: number): PointCloudPoint | undefined;
513
384
  /**
@@ -515,10 +386,10 @@ export class Engine {
515
386
  */
516
387
  pointCloudStats(id: number): PointCloudStats | undefined;
517
388
  /**
518
- * The answer to the last `requestPick` once the GPU has delivered it (then forgotten), undefined while it is not
519
- * there yet (or nothing was asked, or the context was lost)
389
+ * The answer to request `id` once the GPU has delivered it (then forgotten), undefined while it is not there yet
390
+ * (or for a request given up)
520
391
  */
521
- pollPick(): PickResult | undefined;
392
+ pollPick(id: number): PickResult | undefined;
522
393
  /**
523
394
  * Loads in advance the tiles of a camera flight's destination; `clearPreload` when the flight ends
524
395
  */
@@ -537,7 +408,7 @@ export class Engine {
537
408
  */
538
409
  removeExtrusionBatch(id: number, key: number): void;
539
410
  /**
540
- * Removes a layer and frees its GPU objects; the other layers forget it (a layer that referred to it)
411
+ * Removes a layer and frees its GPU objects (as it drops)
541
412
  */
542
413
  removeLayer(id: number): void;
543
414
  /**
@@ -545,16 +416,17 @@ export class Engine {
545
416
  */
546
417
  removeVectorTile(id: number, key: number): void;
547
418
  /**
548
- * Draws a frame: the backdrop, the ground and the layers over it bottom to top, then the panorama and the
549
- * viewshed; returns true while tiles are still loading (a new frame will be asked through `redraw`)
419
+ * Draws a frame: the backdrop, the ground; returns true while tiles are still loading (a new frame will be asked
420
+ * through `redraw`)
550
421
  */
551
422
  render(): boolean;
552
423
  /**
553
- * Asks what is under a screen point without waiting for the GPU (as `pick`, with the position there): the
554
- * picking pass is drawn now and read back into a buffer; `pollPick` gives the answer on a later frame. A new
555
- * request replaces the one in flight. Returns false if nothing could be asked (no WebGL2 fence)
424
+ * Asks what is under a screen point (CSS pixels), or nearest to it within `radius` CSS pixels, without waiting
425
+ * for the GPU: the picking pass is drawn now, its pixels read back later; `pollPick` gives the answer. `only`: the
426
+ * ids of the layers to look in (all if undefined): the others are not drawn and hide nothing. The request's
427
+ * number, never 0
556
428
  */
557
- requestPick(x: number, y: number, radius?: number | null, only?: Uint32Array | null): boolean;
429
+ requestPick(x: number, y: number, radius?: number | null, only?: Uint32Array | null): number;
558
430
  /**
559
431
  * Viewport in CSS pixels and device pixel ratio
560
432
  */
@@ -576,8 +448,7 @@ export class Engine {
576
448
  * The body the map is drawn on: its equatorial radius (metres) and flattening (0 for a sphere), the halo of its
577
449
  * atmosphere around the globe (RGB 0-1 and its strength, 4 numbers; `undefined` for an airless body), and the
578
450
  * lowest and highest altitudes of its ground (metres: what its relief may raise into view). WGS 84, the Earth's
579
- * blue halo and the range of its relief worldwide (-450 m to 8900 m) by default; set before the layers and the
580
- * relief, whose shaders may take its size (`ISARD_CIRCUMFERENCE` of the ground layers)
451
+ * blue halo and the range of its relief worldwide (-450 m to 8900 m) by default
581
452
  */
582
453
  setBody(radius: number, flattening: number, halo: Float32Array | null | undefined, lowest: number, highest: number): void;
583
454
  /**
@@ -593,13 +464,17 @@ export class Engine {
593
464
  * New points for a circle layer (same features)
594
465
  */
595
466
  setCircles(id: number, points: Float64Array, feature: Uint32Array): void;
467
+ /**
468
+ * A raster layer draped on the roofs, or all the faces, of a 3D Tiles layer, an extrusion layer, a vector tiles
469
+ * layer's buildings or a model layer (`raster` undefined: none)
470
+ */
471
+ setDrape(id: number, raster: number | null | undefined, all_faces: boolean, opacity: number): void;
596
472
  /**
597
473
  * Anchors of batch `key` on the linked network: per feature, node A, node B, cost from A, cost from B
598
474
  *
599
475
  * # Errors
600
476
  *
601
- * Throws (to JavaScript) when the batch's features need an anchor texture past the GPU's
602
- * `MAX_TEXTURE_SIZE`, or when it cannot be created
477
+ * Throws (to JavaScript) when the batch's features need a table past the GPU's largest texture
603
478
  */
604
479
  setExtrusionAnchors(id: number, key: number, anchors: Float32Array): void;
605
480
  /**
@@ -608,8 +483,7 @@ export class Engine {
608
483
  *
609
484
  * # Errors
610
485
  *
611
- * Throws (to JavaScript) when a WebGL buffer or vertex array of the batch cannot be created, or when
612
- * `feature_count` features need a table texture past the GPU's `MAX_TEXTURE_SIZE`
486
+ * Throws (to JavaScript) when `feature_count` features need a table past the GPU's largest texture
613
487
  */
614
488
  setExtrusionBatch(id: number, key: number, points: Float64Array, ring_start: Uint32Array, polygon_start: Uint32Array, feature: Uint32Array, feature_count: number, roofs: Uint8Array, roof_heights: Float32Array, metres: number): void;
615
489
  /**
@@ -691,7 +565,7 @@ export class Engine {
691
565
  *
692
566
  * # Errors
693
567
  *
694
- * Throws (to JavaScript) as `setGlyphPages` does: a size that is not positive, or the texture not created
568
+ * Throws (to JavaScript) as `setGlyphPages` does
695
569
  */
696
570
  setGlyphAtlas(width: number, height: number, data?: Uint8Array | null): void;
697
571
  /**
@@ -701,8 +575,8 @@ export class Engine {
701
575
  *
702
576
  * # Errors
703
577
  *
704
- * Throws (to JavaScript) when `width` or `height` is not positive (or their product overflows), `pages`
705
- * is not 1 to 256, or the atlas texture cannot be created
578
+ * Throws (to JavaScript) when `width` or `height` is not positive or past the GPU's largest texture, or `pages`
579
+ * is not 1 to 256
706
580
  */
707
581
  setGlyphPages(width: number, height: number, pages: number): void;
708
582
  /**
@@ -710,23 +584,22 @@ export class Engine {
710
584
  */
711
585
  setGroundBounds(id: number, min_x: number, min_y: number, max_x: number, max_y: number): void;
712
586
  /**
713
- * Creates the texture of sampler `name` (`format`: r8, r8ui, r16ui, r16i, r32ui, r32f, rg16ui, rg32f, rgba8,
714
- * rgba8ui, rgba16ui, rgba32f; `depth` 0 for 2D, else a 2D array of that many layers; `linear` filtering for the
715
- * non-integer formats); `data`: its texels as bytes, or undefined for an empty texture
587
+ * Creates the texture `name` of a ground layer (`format`: r8, r8ui, r16ui, r16i, r32ui, r32f, rg16ui, rg32f,
588
+ * rgba8, rgba8ui, rgba16ui, rgba32f; `depth` 0 for 2D, else a 2D array of that many layers); `data`: its texels
589
+ * as bytes, or undefined for an empty texture
716
590
  *
717
591
  * # Errors
718
592
  *
719
- * Throws (to JavaScript) on an unknown `format`, a size not positive (or overflowing), `data` shorter
720
- * than the texels, more textures than the layer takes, or a texture WebGL cannot create
593
+ * Throws (to JavaScript) on an unknown `format`, a size of 0, `data` shorter than the texels, a name WGSL does not
594
+ * take, or more textures than the layer takes
721
595
  */
722
- setGroundTexture(id: number, name: string, format: string, width: number, height: number, depth: number, linear: boolean, data?: Uint8Array | null): void;
596
+ setGroundTexture(id: number, name: string, format: string, width: number, height: number, depth: number, data?: Uint8Array | null): void;
723
597
  /**
724
- * A uniform of a ground layer's code, as numbers
598
+ * A uniform of a ground layer's code, as numbers (column major for a matrix)
725
599
  *
726
600
  * # Errors
727
601
  *
728
- * Throws (to JavaScript) when the shader has no uniform `name` (one its code does not use is removed
729
- * by the compiler)
602
+ * Throws (to JavaScript) when no uniform `name` was declared, or for a count of numbers not its type's
730
603
  */
731
604
  setGroundUniform(id: number, name: string, values: Float64Array): void;
732
605
  /**
@@ -739,8 +612,7 @@ export class Engine {
739
612
  *
740
613
  * # Errors
741
614
  *
742
- * Throws (to JavaScript) when `width` or `height` is not positive (or their product overflows), or the
743
- * atlas texture cannot be created
615
+ * Throws (to JavaScript) when `width` or `height` is not positive or past the GPU's largest texture
744
616
  */
745
617
  setIconAtlas(width: number, height: number): void;
746
618
  /**
@@ -757,14 +629,20 @@ export class Engine {
757
629
  *
758
630
  * # Errors
759
631
  *
760
- * Throws (to JavaScript) when the lines need a table texture past the GPU's `MAX_TEXTURE_SIZE`, or
761
- * when it cannot be created; the layer then keeps its lines
632
+ * Throws (to JavaScript) when the lines need a table past the GPU's largest texture; the layer then keeps its
633
+ * lines
762
634
  */
763
635
  setLines(id: number, points: Float64Array, start: Uint32Array, feature: Uint32Array, heights?: Float64Array | null, sea?: boolean | null): void;
764
636
  /**
765
637
  * Highest pitch the camera accepts, degrees (up to 85)
766
638
  */
767
639
  setMaxPitch(max: number): void;
640
+ /**
641
+ * The GPU memory the layers' tiles (3D Tiles, point clouds) and the rasters' pools may hold all together (bytes):
642
+ * past it the tiles drawn least recently are unloaded, whichever their layer. A raster's pool takes its memory
643
+ * when it is made: one made later takes the budget as it is then
644
+ */
645
+ setMemoryBudget(bytes: number): void;
768
646
  /**
769
647
  * Lights at night the part of a model layer's model from `from` metres up (a street lamp's head) in `r, g, b`;
770
648
  * `from` not a number: none
@@ -802,11 +680,8 @@ export class Engine {
802
680
  */
803
681
  setNetworkValues(id: number, values: Float32Array): void;
804
682
  /**
805
- * The image of camera `index` of the panorama (the images sharing the size of the first)
806
- *
807
- * # Errors
808
- *
809
- * Throws (to JavaScript) when WebGL refuses the upload of `image` into the panorama's texture
683
+ * The image of camera `index` of the panorama (the images sharing the size of the first), which the engine takes
684
+ * (closes once copied)
810
685
  */
811
686
  setPanoramaImage(index: number, image: ImageBitmap): void;
812
687
  /**
@@ -818,14 +693,12 @@ export class Engine {
818
693
  *
819
694
  * # Errors
820
695
  *
821
- * Throws (to JavaScript) when `rotation` holds fewer than 9 numbers, or when a WebGL object cannot be created or a
822
- * shader fails to compile (the error carries its info log)
696
+ * Throws (to JavaScript) when `rotation` holds fewer than 9 numbers
823
697
  */
824
698
  setPanorama(lon: number, lat: number, height: number, rotation: Float64Array, cameras: Float64Array, radius: number, opacity: number): void;
825
699
  /**
826
700
  * Sets the point the next turns and tilts go around (`rotate`): what is drawn under a screen point (CSS
827
- * pixels), a roof or a mesh as the relief. Read back from the last frame (a stall): once, where a drag starts.
828
- * Returns whether something was drawn there; over nothing, the turns go around the center
701
+ * pixels). Returns whether something was drawn there; over nothing, the turns go around the center
829
702
  */
830
703
  setPivot(x: number, y: number): boolean;
831
704
  /**
@@ -850,16 +723,11 @@ export class Engine {
850
723
  * The sun casting shadows and the night: its azimuth (degrees clockwise from north) and altitude (degrees above
851
724
  * the horizon), the shadows' opacity (0 to 1; none under the horizon or not a number), how dark the night is (0 to
852
725
  * 1: the frame tinted, the lights of the layers on). Neither shadows nor night: nothing drawn
853
- *
854
- * # Errors
855
- *
856
- * Throws (to JavaScript) when a WebGL object cannot be created or the pass fails to compile
857
726
  */
858
727
  setSun(azimuth: number, altitude: number, opacity: number, night: number): void;
859
728
  /**
860
- * Shows `layers` on one side of a vertical line only, the others beneath on the other side (comparing two states
861
- * of a place): left of `x` (CSS pixels from the left of the canvas), or right of it; `others` on the other side
862
- * only (two meshes of the same place, each on its side, never drawn over each other); a non-finite `x` stops
729
+ * Shows `layers` left of `x` (CSS pixels from the left of the canvas; right of it if `right`), `others` on the
730
+ * other side only; `x` not a number, or no layer: no swipe
863
731
  */
864
732
  setSwipe(x: number, right: boolean, layers: Uint32Array, others: Uint32Array): void;
865
733
  /**
@@ -875,23 +743,18 @@ export class Engine {
875
743
  *
876
744
  * # Errors
877
745
  *
878
- * Throws (to JavaScript) when the labels need a table texture past the GPU's `MAX_TEXTURE_SIZE`, or
879
- * when it cannot be created; the layer then keeps its labels
746
+ * Throws (to JavaScript) when the labels need a table past the GPU's largest texture; the layer then keeps its
747
+ * labels
880
748
  */
881
749
  setSymbols(id: number, anchors: Float64Array, boxes: Float32Array, styles: Float32Array, quads: Float32Array, paths: Float64Array): void;
882
750
  /**
883
751
  * Relief under the raster layers, from raw altitudes (`image/x-bil;bits=32`, 256 × 256, or the same followed by
884
752
  * the validity mask of an `ArcGIS` raw grid): `url` is a template with `{bbox}` (WMS `GetMap` in EPSG:3857, or in
885
753
  * the Mercator metres of another body) or `{z}/{x}/{y}`; `undefined` turns it off. `exaggeration` scales the
886
- * heights (1: true relief); `max_z`: finest level loaded (up to 15, from 6 on the Earth, coarser on bodies of a
887
- * larger relief for their size: `terrain_levels`); `geoid`: altitudes raised by the RAF20 geoid height (heights
888
- * above the ellipsoid, those of 3D Tiles; over France, on the Earth only), else left as served (the default);
889
- * `loader`: gives the
890
- * altitudes of each tile instead of fetching `url` (an encoding decoded by the page: Terrarium, Terrain-RGB)
891
- *
892
- * # Errors
893
- *
894
- * Throws (to JavaScript) when the texture holding the relief's tiles cannot be created
754
+ * heights (1: true relief); `max_z`: finest level loaded; `geoid`: altitudes raised by the RAF20 geoid height
755
+ * (heights above the ellipsoid, those of 3D Tiles; over France, on the Earth only), else left as served (the
756
+ * default); `loader`: gives the altitudes of each tile instead of fetching `url` (an encoding decoded by the
757
+ * page: Terrarium, Terrain-RGB)
895
758
  */
896
759
  setTerrain(url: string | null | undefined, exaggeration: number, max_z: number | null | undefined, geoid: boolean | null | undefined, loader: ((z: number, x: number, y: number, signal: AbortSignal) => Promise<Float32Array | null>) | undefined): void;
897
760
  /**
@@ -899,11 +762,7 @@ export class Engine {
899
762
  * `load(id, url, transform, yUp, reload, priority) → Promise<{ anchor, primitives }>` and `abort(id)`. Without
900
763
  * it, tiles are decoded on the main thread. Set it before adding 3D Tiles layers.
901
764
  */
902
- setTileLoader(loader: TileLoaderLike | null): void;
903
- /**
904
- * A raster layer draped on a 3D Tiles layer's roofs, or all its faces (`raster` undefined: none)
905
- */
906
- setTiles3dDrape(id: number, raster: number | null | undefined, all_faces: boolean, opacity: number): void;
765
+ setTileLoader(loader: import('./isard_tiles3d.js').TileLoaderLike | null): void;
907
766
  /**
908
767
  * Whether the walls of a 3D Tiles layer's untextured meshes show their windows: glass by day, some lit at night
909
768
  */
@@ -919,30 +778,29 @@ export class Engine {
919
778
  setTiles3dStyle(id: number, max_error: number, opacity: number, point_size: number | null | undefined, color: Float32Array): void;
920
779
  /**
921
780
  * The style layers of a vector tile layer, in drawing order: per layer, its kind (0 fill, 1 line, 2 extrusion, 3
922
- * circle), its zoom range
923
- * (two numbers: shown from the first, included, to the second, excluded), whether it shows (0 or 1), its dashes
924
- * (four numbers: dash, gap, dash, gap, in line widths; 0: solid), its opacity as zoom stops (four zooms then four
925
- * values; missing: opaque), the caps of its lines' ends (0 butt, 1 round, 2 square; missing: round), whether its
926
- * lines glow at night (streets; 0 or 1), the joins of its lines (two numbers: 0 round, 1 miter, 2 bevel, then the
927
- * miter limit in line widths; missing: round), the translation of its fills or lines (three numbers: x and y in CSS
928
- * pixels, x right and y down, then 0 if it turns with the map, 1 if it stays on the screen; missing: none), whether its
929
- * fills have patterns (0 or 1)
781
+ * circle), its zoom range (two numbers: shown from the first, included, to the second, excluded), whether it shows
782
+ * (0 or 1), its dashes (four numbers: dash, gap, dash, gap, in line widths; 0: solid), its opacity as zoom stops
783
+ * (four zooms then four values; missing: opaque), the caps of its lines' ends (0 butt, 1 round, 2 square; missing:
784
+ * round), whether its lines glow at night (streets; 0 or 1), the joins of its lines (two numbers: 0 round, 1
785
+ * miter, 2 bevel, then the miter limit in line widths; missing: round), the translation of its fills or lines
786
+ * (three numbers: x and y in CSS pixels, x right and y down, then 0 if it turns with the map, 1 if it stays on the
787
+ * screen; missing: none), whether its fills have patterns (0 or 1)
930
788
  */
931
789
  setVectorSublayers(id: number, kinds: Uint8Array, zooms: Float64Array, visible: Uint8Array, dashes: Float32Array, opacities: Float32Array, caps: Uint8Array, lit: Uint8Array, joins: Float32Array, translates: Float32Array, patterned: Uint8Array): void;
932
790
  /**
933
791
  * Adds or replaces tile `key` of a vector tile layer ready for the GPU, as the basemap workers make it (the
934
- * tessellation module): its polygons as for `setVectorTile` (picked here; their prisms built here if drawn in
935
- * relief while `prism` is false), the vertices of its fills (`shapes::Vertex` as bytes, each with its feature),
936
- * their triangles, per sublayer its top cap and the rest of its prism (`fill_ranges`: four numbers, first and
937
- * end of each), its line pieces (`pieces::Piece` as bytes), the line table (feature and length of each line),
792
+ * tessellation module): its polygons as for `setVectorTile` (their prisms built here if drawn in relief while
793
+ * `prism` is false), the vertices of its fills (`shapes::Vertex` as bytes, each with its feature), their
794
+ * triangles, per sublayer its top cap and the rest of its prism (`fill_ranges`: four numbers, first and end of
795
+ * each), its line pieces (`vector_tiles::TilePiece` as bytes), the line table (feature and length of each line),
938
796
  * per sublayer its pieces (`line_ranges`: first, end), the blocks of its extrusion sublayers (`shapes::Block` as
939
797
  * bytes), their triangles, per sublayer its blocks' triangles (`block_ranges`: first, end), the extent of its
940
798
  * points (`bounds`: min x, min y, max x, max y), its features' sublayers (one each, as for `setVectorTile`)
941
799
  *
942
800
  * # Errors
943
801
  *
944
- * Throws (to JavaScript) when the vertices, pieces or blocks are cut short, when a WebGL object of the tile cannot be
945
- * created, or when its features or lines need a table texture past the GPU's `MAX_TEXTURE_SIZE`
802
+ * Throws (to JavaScript) when the vertices, pieces or blocks are cut short, or when its features or lines need a
803
+ * table past the GPU's largest texture
946
804
  */
947
805
  setVectorTileMesh(id: number, key: number, points: Float64Array, ring_start: Uint32Array, polygon_start: Uint32Array, polygon_feature: Uint32Array, fill_start: Uint32Array, vertices: Uint8Array, indices: Uint32Array, fill_ranges: Uint32Array, prism: boolean, pieces: Uint8Array, line_table: Float32Array, line_ranges: Uint32Array, blocks: Uint8Array, block_indices: Uint32Array, block_ranges: Uint32Array, bounds: Float64Array, feature_sublayer: Uint16Array): void;
948
806
  /**
@@ -955,19 +813,16 @@ export class Engine {
955
813
  * Adds or replaces tile `key` of a vector tile layer: its polygons as for `addFills` (`fill_start`: the first
956
814
  * polygon of each sublayer, and the end; those of an extrusion sublayer raised into blocks), its lines as for
957
815
  * `addLines` (`line_start`: the first line of each sublayer, and the end), its features' sublayers (one each, the
958
- * features of a sublayer after those of the one before), styled as an
959
- * extrusion layer's (`setFeatureStyle` with the key: a color, then a line's width or a block's height and base);
960
- * `tile`: the corners of the tile they are cut to (west, north, east, south; empty: none), along whose edges no
961
- * wall of a block rises; `roofs` and `roof_heights`: per polygon, the shape and height of its block's roof
962
- * (`shapes::Roofs`: 0 flat, 1 to 5 `RoofShape::number`, 255 generated from its outline; metres, not a number: as
963
- * its slopes make it; empty: flat), the whole outlines of the buildings the tile cuts (`roof_outlines`, interleaved
964
- * Mercator points, `roof_outline_start`: where each polygon's starts, and the end), `roof_metres` the metres per
965
- * Mercator unit at the tile
816
+ * features of a sublayer after those of the one before), styled as an extrusion layer's (`setFeatureStyle` with
817
+ * the key); `tile`: the corners of the tile they are cut to (west, north, east, south; empty: none), along whose
818
+ * edges no wall of a block rises; `roofs` and `roof_heights`: per polygon, the shape and height of its block's
819
+ * roof (`shapes::Roofs`), the whole outlines of the buildings the tile cuts (`roof_outlines`, interleaved Mercator
820
+ * points, `roof_outline_start`: where each polygon's starts, and the end), `roof_metres` the metres per Mercator
821
+ * unit at the tile
966
822
  *
967
823
  * # Errors
968
824
  *
969
- * Throws (to JavaScript) when a WebGL object of the tile cannot be created, or when its features or lines need a
970
- * table texture past the GPU's `MAX_TEXTURE_SIZE`
825
+ * Throws (to JavaScript) when its features or lines need a table past the GPU's largest texture
971
826
  */
972
827
  setVectorTile(id: number, key: number, points: Float64Array, ring_start: Uint32Array, polygon_start: Uint32Array, polygon_feature: Uint32Array, fill_start: Uint32Array, line_points: Float64Array, line_first: Uint32Array, line_feature: Uint32Array, line_start: Uint32Array, feature_sublayer: Uint16Array, tile: Float64Array, roofs: Uint8Array, roof_heights: Float32Array, roof_outlines: Float64Array, roof_outline_start: Uint32Array, roof_metres: number): void;
973
828
  /**
@@ -976,11 +831,6 @@ export class Engine {
976
831
  * only heading, tilt, angles of view across and up (degrees), the heading NaN to look all around. What some
977
832
  * observer sees is tinted with `visible`, what is hidden from all those that reach it with `hidden` (RGB 0-1),
978
833
  * at `opacity`; `outline` (RGB 0-1, or empty) the color of the cones' edges drawn in 3D
979
- *
980
- * # Errors
981
- *
982
- * Throws (to JavaScript) when, on the first call, a WebGL object cannot be created or a shader fails to compile
983
- * (the error carries its info log)
984
834
  */
985
835
  setViewshed(observers: Float64Array, visible: Float32Array, hidden: Float32Array, opacity: number, outline: Float32Array): void;
986
836
  /**
@@ -998,20 +848,21 @@ export class Engine {
998
848
  stepFlow(id: number, seconds: number): boolean;
999
849
  /**
1000
850
  * The height above the relief (metres) of the top of what stands at a position (degrees): a roof, a mesh, 0 on
1001
- * the bare ground; undefined where nothing of the last frame is there. The scene is drawn from above into a single
1002
- * pixel and read back (a stall, cheap: one pixel to fill)
851
+ * the bare ground; undefined where nothing of the last frame is there, or until measured: the scene is drawn
852
+ * looking down at it after a frame and read back a frame or two later (a frame is asked for), the answer kept and
853
+ * measured again every 250 ms at most
1003
854
  */
1004
855
  surfaceAt(lon: number, lat: number): any;
1005
856
  /**
1006
857
  * What is drawn under a screen point (CSS pixels): longitude, latitude and its height above the relief (metres),
1007
- * on a roof, a wall or a mesh as on the ground; undefined where nothing was drawn. The scene is drawn again and
1008
- * read back (a stall): for clicks and drags
858
+ * on a roof, a wall or a mesh as on the ground; undefined where nothing was drawn. From the last copy of the
859
+ * scene's depth (a frame or two old, one pixel in 4 CSS pixels): at once, without waiting for the GPU
1009
860
  */
1010
861
  surface(x: number, y: number): [lon: number, lat: number, height: number] | undefined;
1011
862
  /**
1012
- * Compressed texture formats of the GPU (their WebGL extensions get enabled), for the KTX2 transcoding
863
+ * Compressed texture formats of the GPU, for the KTX2 transcoding
1013
864
  */
1014
- textureFormats(): TextureFormats;
865
+ textureFormats(): import('./isard_tiles3d.js').TextureFormats;
1015
866
  /**
1016
867
  * The feature of a picked handle (`pick`'s index on a 3D Tiles layer): `[properties, feature]`, its properties
1017
868
  * (undefined when its tile has none) and its index in its tile; undefined if the handle is not of the last picking
@@ -1035,24 +886,19 @@ export class Engine {
1035
886
  *
1036
887
  * # Errors
1037
888
  *
1038
- * Throws (to JavaScript) when there is no texture `name`, or when the region is out of its bounds or
1039
- * `data` holds too few bytes
889
+ * Throws (to JavaScript) when there is no texture `name`, or when the region is out of its bounds or `data` holds
890
+ * too few bytes
1040
891
  */
1041
892
  updateGroundTexture(id: number, name: string, x: number, y: number, layer: number, width: number, height: number, data: Uint8Array): void;
1042
893
  /**
1043
894
  * A region of the icon atlas: `width` × `height` RGBA texels (premultiplied) at (`x`, `y`)
1044
895
  */
1045
896
  updateIconAtlas(x: number, y: number, width: number, height: number, data: Uint8Array): void;
1046
- /**
1047
- * Uploads a part more of the blocks of tile `key` of a vector tile layer (a large tile's, a part at a time over
1048
- * several frames); whether some are left. Its blocks are drawn once they are all there
1049
- */
1050
- uploadVectorTile(id: number, key: number): boolean;
1051
897
  /**
1052
898
  * Vector tiles (512 CSS pixels across at their level, as `MapLibre`'s) for the view of the last frame (else the
1053
899
  * camera's), levels `min_z` to `max_z`, three numbers per tile (z, x, y), the nearest to the eye first: what a
1054
- * vector tile layer draws (`addVectorTiles`), coarser far away in a tilted view as the raster layers, and no
1055
- * farther than `reach` times the screen center's distance (infinite: to the horizon)
900
+ * vector tile layer draws, coarser far away in a tilted view as the raster layers, and no farther than `reach`
901
+ * times the screen center's distance (infinite: to the horizon)
1056
902
  */
1057
903
  vectorTilesInView(min_z: number, max_z: number, reach: number): Uint32Array;
1058
904
  /**
@@ -1066,62 +912,49 @@ export class Engine {
1066
912
  zoomAt(delta: number, x: number, y: number): void;
1067
913
  }
1068
914
 
1069
- /**
1070
- * Decodes a `.b3dm` / `.pnts` / `.glb` tile: `{ anchor: Float64Array(3), primitives: [{ vertices: Float32Array (x,
1071
- * y, z, u, v per vertex, relative to the anchor), indices: Uint32Array, image?: Uint8Array, mime?: string, color?:
1072
- * Float32Array (the material's base color, when not white) }], points: [Uint8Array] (the points' vertices) }`.
1073
- * `transform`: the tile's world transform (16 numbers, column-major).
1074
- * `draco`: the decoded geometries of its Draco primitives (`dracoRequests`), if any.
1075
- */
1076
- export function decodeTile(bytes: Uint8Array, transform: Float64Array, y_up: boolean, draco: DracoGeometry[] | undefined): EncodedTile;
1077
-
1078
- /**
1079
- * The Draco-compressed primitives of a tile, to decode before `decodeTile`
1080
- */
1081
- export function dracoRequests(bytes: Uint8Array): DracoRequest[];
1082
-
1083
915
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
1084
916
 
1085
917
  export interface InitOutput {
1086
918
  readonly memory: WebAssembly.Memory;
1087
919
  readonly __wbg_engine_free: (a: number, b: number) => void;
1088
- readonly decodeTile: (a: number, b: number, c: number, d: number, e: number, f: any) => [number, number, number];
1089
- readonly dracoRequests: (a: number, b: number) => [number, number, number];
1090
920
  readonly engine_addCircles: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
1091
921
  readonly engine_addCustomLayer: (a: number, b: any, c: number) => number;
1092
922
  readonly engine_addExtrusions: (a: number) => [number, number, number];
1093
923
  readonly engine_addFills: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number, number];
1094
924
  readonly engine_addFlow: (a: number, b: number, c: number) => [number, number, number];
1095
- readonly engine_addGround: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number];
925
+ readonly engine_addGround: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number];
1096
926
  readonly engine_addLines: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number, number];
1097
- readonly engine_addModels: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
927
+ readonly engine_addModels: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
1098
928
  readonly engine_addNetwork: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number];
1099
- readonly engine_addPointCloud: (a: number, b: number, c: number, d: any) => [number, number, number];
1100
- readonly engine_addRaster: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number, number];
929
+ readonly engine_addPointCloud: (a: number, b: number, c: number, d: any) => number;
930
+ readonly engine_addRaster: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
1101
931
  readonly engine_addSymbols: (a: number) => [number, number, number];
1102
- readonly engine_addTiles3d: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
932
+ readonly engine_addTiles3d: (a: number, b: number, c: number, d: number, e: number) => number;
1103
933
  readonly engine_addVectorTiles: (a: number) => [number, number, number];
934
+ readonly engine_backend: (a: number) => [number, number];
1104
935
  readonly engine_bounds: (a: number) => [number, number];
1105
936
  readonly engine_camera: (a: number) => any;
1106
937
  readonly engine_clearPanorama: (a: number) => void;
1107
938
  readonly engine_clearPivot: (a: number) => void;
1108
939
  readonly engine_clearPreload: (a: number) => void;
1109
940
  readonly engine_clearViewshed: (a: number) => void;
941
+ readonly engine_create: (a: any, b: any, c: number) => any;
1110
942
  readonly engine_customMatrix: (a: number, b: number, c: number) => [number, number];
1111
943
  readonly engine_elevationAt: (a: number, b: number, c: number) => [number, number];
1112
944
  readonly engine_geoidHeight: (a: number, b: number) => number;
945
+ readonly engine_gpuDevice: (a: number) => any;
1113
946
  readonly engine_ground: (a: number, b: number, c: number) => any;
1114
947
  readonly engine_linkExtrusionNetwork: (a: number, b: number, c: number, d: number) => void;
1115
948
  readonly engine_localMatrix: (a: number, b: number, c: number, d: number) => [number, number];
949
+ readonly engine_maxTextureSize: (a: number) => number;
950
+ readonly engine_memory: (a: number) => [number, number];
1116
951
  readonly engine_moveLayer: (a: number, b: number, c: number) => void;
1117
952
  readonly engine_networkStats: (a: number, b: number) => any;
1118
- readonly engine_new: (a: any, b: any, c: number) => [number, number, number];
1119
953
  readonly engine_pan: (a: number, b: number, c: number, d: number, e: number) => void;
1120
- readonly engine_pick: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => any;
1121
954
  readonly engine_pointCloudInfo: (a: number, b: number) => any;
1122
955
  readonly engine_pointCloudPoint: (a: number, b: number, c: number) => any;
1123
956
  readonly engine_pointCloudStats: (a: number, b: number) => any;
1124
- readonly engine_pollPick: (a: number) => any;
957
+ readonly engine_pollPick: (a: number, b: number) => any;
1125
958
  readonly engine_preload: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1126
959
  readonly engine_project: (a: number, b: number, c: number, d: number, e: number) => any;
1127
960
  readonly engine_promoteFlowNext: (a: number, b: number) => void;
@@ -1138,6 +971,7 @@ export interface InitOutput {
1138
971
  readonly engine_setCamera: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1139
972
  readonly engine_setCircleAlignment: (a: number, b: number, c: number) => void;
1140
973
  readonly engine_setCircles: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
974
+ readonly engine_setDrape: (a: number, b: number, c: number, d: number, e: number) => void;
1141
975
  readonly engine_setExtrusionAnchors: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1142
976
  readonly engine_setExtrusionBatch: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number) => [number, number];
1143
977
  readonly engine_setFacades: (a: number, b: number, c: number) => void;
@@ -1158,7 +992,7 @@ export interface InitOutput {
1158
992
  readonly engine_setGlyphAtlas: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1159
993
  readonly engine_setGlyphPages: (a: number, b: number, c: number, d: number) => [number, number];
1160
994
  readonly engine_setGroundBounds: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1161
- readonly engine_setGroundTexture: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => [number, number];
995
+ readonly engine_setGroundTexture: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
1162
996
  readonly engine_setGroundUniform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1163
997
  readonly engine_setGroundVisible: (a: number, b: number, c: number) => void;
1164
998
  readonly engine_setIconAtlas: (a: number, b: number, c: number) => [number, number];
@@ -1166,6 +1000,7 @@ export interface InitOutput {
1166
1000
  readonly engine_setLineDash: (a: number, b: number, c: number, d: number) => void;
1167
1001
  readonly engine_setLines: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
1168
1002
  readonly engine_setMaxPitch: (a: number, b: number) => void;
1003
+ readonly engine_setMemoryBudget: (a: number, b: number) => void;
1169
1004
  readonly engine_setModelGlow: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1170
1005
  readonly engine_setModelHighlight: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1171
1006
  readonly engine_setModelInstances: (a: number, b: number, c: number, d: number, e: number) => void;
@@ -1175,19 +1010,18 @@ export interface InitOutput {
1175
1010
  readonly engine_setNetworkStyle: (a: number, b: number, c: number, d: number) => void;
1176
1011
  readonly engine_setNetworkValues: (a: number, b: number, c: number, d: number) => void;
1177
1012
  readonly engine_setPanorama: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
1178
- readonly engine_setPanoramaImage: (a: number, b: number, c: any) => [number, number];
1013
+ readonly engine_setPanoramaImage: (a: number, b: number, c: any) => void;
1179
1014
  readonly engine_setPivot: (a: number, b: number, c: number) => number;
1180
1015
  readonly engine_setPointCloudStyle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1181
1016
  readonly engine_setRasterStyle: (a: number, b: number, c: number, d: number) => void;
1182
1017
  readonly engine_setRequestHeaders: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
1183
1018
  readonly engine_setSky: (a: number, b: number) => void;
1184
- readonly engine_setSun: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1019
+ readonly engine_setSun: (a: number, b: number, c: number, d: number, e: number) => void;
1185
1020
  readonly engine_setSwipe: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
1186
1021
  readonly engine_setSymbolLayer: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1187
1022
  readonly engine_setSymbols: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => [number, number];
1188
- readonly engine_setTerrain: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1023
+ readonly engine_setTerrain: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
1189
1024
  readonly engine_setTileLoader: (a: number, b: any) => void;
1190
- readonly engine_setTiles3dDrape: (a: number, b: number, c: number, d: number, e: number) => void;
1191
1025
  readonly engine_setTiles3dFacades: (a: number, b: number, c: number) => void;
1192
1026
  readonly engine_setTiles3dFeatureColors: (a: number, b: number, c: any) => void;
1193
1027
  readonly engine_setTiles3dStyle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
@@ -1195,7 +1029,7 @@ export interface InitOutput {
1195
1029
  readonly engine_setVectorTile: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number, y: number, z: number, a1: number, b1: number, c1: number, d1: number, e1: number, f1: number, g1: number, h1: number) => [number, number];
1196
1030
  readonly engine_setVectorTileMesh: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number, y: number, z: number, a1: number, b1: number, c1: number, d1: number, e1: number, f1: number, g1: number, h1: number, i1: number, j1: number) => [number, number];
1197
1031
  readonly engine_setVectorTilePoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
1198
- readonly engine_setViewshed: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
1032
+ readonly engine_setViewshed: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1199
1033
  readonly engine_setZoomRange: (a: number, b: number, c: number) => void;
1200
1034
  readonly engine_stats: (a: number) => any;
1201
1035
  readonly engine_stepFlow: (a: number, b: number, c: number) => number;
@@ -1208,12 +1042,15 @@ export interface InitOutput {
1208
1042
  readonly engine_updateGlyphPage: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1209
1043
  readonly engine_updateGroundTexture: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
1210
1044
  readonly engine_updateIconAtlas: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
1211
- readonly engine_uploadVectorTile: (a: number, b: number, c: number) => number;
1212
1045
  readonly engine_vectorTilesInView: (a: number, b: number, c: number, d: number) => [number, number];
1213
1046
  readonly engine_wantedTiles: (a: number, b: number) => [number, number];
1214
1047
  readonly engine_zoomAt: (a: number, b: number, c: number, d: number) => void;
1215
1048
  readonly wasm_bindgen_2e566c63402fe7fa___convert__closures_____invoke___js_sys_b1e1c29ba6b0e6b3___Function_fn_wasm_bindgen_2e566c63402fe7fa___JsValue_____wasm_bindgen_2e566c63402fe7fa___sys__Undefined___js_sys_b1e1c29ba6b0e6b3___Function_fn_wasm_bindgen_2e566c63402fe7fa___JsValue_____wasm_bindgen_2e566c63402fe7fa___sys__Undefined_______true_: (a: number, b: number, c: any, d: any) => void;
1216
1049
  readonly wasm_bindgen_2e566c63402fe7fa___convert__closures_____invoke___wasm_bindgen_2e566c63402fe7fa___JsValue__core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_2e566c63402fe7fa___JsError___true_: (a: number, b: number, c: any) => [number, number];
1050
+ readonly wasm_bindgen_2e566c63402fe7fa___convert__closures_____invoke___wasm_bindgen_2e566c63402fe7fa___sys__JsNullable_wgpu_79b597b3111bcbe9___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_2e566c63402fe7fa___JsError___true_: (a: number, b: number, c: any) => [number, number];
1051
+ readonly wasm_bindgen_2e566c63402fe7fa___convert__closures_____invoke___wasm_bindgen_2e566c63402fe7fa___sys__JsNullable_wgpu_79b597b3111bcbe9___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_2e566c63402fe7fa___JsError___true__132: (a: number, b: number, c: any) => [number, number];
1052
+ readonly wasm_bindgen_2e566c63402fe7fa___convert__closures_____invoke___wasm_bindgen_2e566c63402fe7fa___sys__JsNullable_wgpu_79b597b3111bcbe9___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_2e566c63402fe7fa___JsError___true__133: (a: number, b: number, c: any) => [number, number];
1053
+ readonly wasm_bindgen_2e566c63402fe7fa___convert__closures_____invoke___wgpu_79b597b3111bcbe9___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_: (a: number, b: number, c: any) => void;
1217
1054
  readonly __wbindgen_malloc: (a: number, b: number) => number;
1218
1055
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
1219
1056
  readonly __wbindgen_exn_store: (a: number) => void;