@cesium/engine 17.0.0 → 18.0.1-splats.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 (188) hide show
  1. package/Build/ThirdParty/Workers/z-worker-pako.js +1 -1
  2. package/Build/Workers/{chunk-UC7KH56Y.js → chunk-2AXKROJA.js} +5 -5
  3. package/Build/Workers/{chunk-IKDQX7DY.js → chunk-2J5ZZ7CY.js} +4 -4
  4. package/Build/Workers/{chunk-4TIR5UPL.js → chunk-2SYY3UBI.js} +1 -1
  5. package/Build/Workers/{chunk-CC2WKHIW.js → chunk-2WKW3BEB.js} +6 -6
  6. package/Build/Workers/{chunk-CBFJVM6I.js → chunk-2ZO6BCHN.js} +11 -11
  7. package/Build/Workers/{chunk-7PHT4JHA.js → chunk-3UKG5X7F.js} +12 -12
  8. package/Build/Workers/{chunk-PM4Q36WX.js → chunk-4GYIDPXP.js} +9 -9
  9. package/Build/Workers/{chunk-QUFN3GEO.js → chunk-6EP7ED36.js} +3 -3
  10. package/Build/Workers/{chunk-QJTIOB2Z.js → chunk-6QOBORNG.js} +6 -6
  11. package/Build/Workers/{chunk-YE6MDFDA.js → chunk-6WWHK2ER.js} +14 -14
  12. package/Build/Workers/{chunk-RX65FA7X.js → chunk-6Y6TVYHS.js} +7 -7
  13. package/Build/Workers/{chunk-P2N5IDWU.js → chunk-744VWE2U.js} +13 -13
  14. package/Build/Workers/{chunk-LVGYWPEX.js → chunk-7PQ52XCW.js} +4 -4
  15. package/Build/Workers/{chunk-PS3OKVOQ.js → chunk-A5UFJW2M.js} +12 -12
  16. package/Build/Workers/{chunk-CAKU6ZPR.js → chunk-AQKVFTWV.js} +8 -8
  17. package/Build/Workers/{chunk-236N6BJN.js → chunk-BKTEHJFD.js} +2 -2
  18. package/Build/Workers/{chunk-5PC577K7.js → chunk-CQXYKPAW.js} +16 -16
  19. package/Build/Workers/{chunk-DRMXU674.js → chunk-DI7PHKC6.js} +5 -5
  20. package/Build/Workers/{chunk-CQMXZF4A.js → chunk-DKKIQS6F.js} +6 -6
  21. package/Build/Workers/{chunk-J2HTPGC7.js → chunk-DTVWE5YL.js} +2 -2
  22. package/Build/Workers/{chunk-SSLK4U3V.js → chunk-ERPS2WZC.js} +4 -4
  23. package/Build/Workers/chunk-EYMZ5FSQ.js +280 -0
  24. package/Build/Workers/{chunk-LPGOAMYH.js → chunk-F43TQW5B.js} +2 -2
  25. package/Build/Workers/{chunk-5RPUEFSA.js → chunk-FOMRN6II.js} +6 -6
  26. package/Build/Workers/{chunk-2BJXFXD7.js → chunk-FOTXJYKS.js} +4 -4
  27. package/Build/Workers/{chunk-VXAKU6EV.js → chunk-G2Y7EA4W.js} +5 -5
  28. package/Build/Workers/{chunk-KE45DUDH.js → chunk-GY4E4ZP6.js} +10 -10
  29. package/Build/Workers/{chunk-NZSBSY5K.js → chunk-HDG3VHYL.js} +2 -2
  30. package/Build/Workers/{chunk-WP3IJYLC.js → chunk-HOEUXPBL.js} +9 -9
  31. package/Build/Workers/{chunk-5YEFZMMM.js → chunk-IWDYVJ56.js} +12 -12
  32. package/Build/Workers/{chunk-SQKTLDSD.js → chunk-JA4KPQJL.js} +12 -12
  33. package/Build/Workers/{chunk-MAIKDIBS.js → chunk-JZZQEZMA.js} +6 -6
  34. package/Build/Workers/{chunk-77MDEA47.js → chunk-KPLU3WDY.js} +5 -5
  35. package/Build/Workers/{chunk-E7SMO47Q.js → chunk-LHM6V4D6.js} +5 -5
  36. package/Build/Workers/{chunk-HBNWBMAM.js → chunk-LMTGCD6P.js} +1 -1
  37. package/Build/Workers/{chunk-XYGBWBD5.js → chunk-LWZOYSSF.js} +1 -1
  38. package/Build/Workers/{chunk-OBHLT34A.js → chunk-M6U7SV4T.js} +7 -7
  39. package/Build/Workers/{chunk-MS5NWDHH.js → chunk-O25M56DO.js} +2 -2
  40. package/Build/Workers/{chunk-UX5JWAC7.js → chunk-OE2WXO2Z.js} +10 -10
  41. package/Build/Workers/{chunk-C5DCX2YQ.js → chunk-PFD462OE.js} +6 -6
  42. package/Build/Workers/{chunk-37PA7GZW.js → chunk-PPI33PXH.js} +7 -7
  43. package/Build/Workers/{chunk-4BGKMM7J.js → chunk-PRQQHLUB.js} +1 -1
  44. package/Build/Workers/{chunk-IFIS4CVK.js → chunk-RTUZ7MJB.js} +2 -2
  45. package/Build/Workers/{chunk-G6JUXZUO.js → chunk-S6QBTP5U.js} +4 -4
  46. package/Build/Workers/{chunk-UFV3YUIN.js → chunk-SMFCIGM3.js} +5 -5
  47. package/Build/Workers/{chunk-P57PR3WM.js → chunk-TC3LEKFJ.js} +5 -5
  48. package/Build/Workers/{chunk-7IIMO7ZZ.js → chunk-UTLYCPFY.js} +16 -16
  49. package/Build/Workers/{chunk-HGEGZ67N.js → chunk-V7LEBY53.js} +6 -6
  50. package/Build/Workers/{chunk-GO3RZX2R.js → chunk-VE3UKRDB.js} +9 -9
  51. package/Build/Workers/{chunk-ZTBZMRQT.js → chunk-W3FBD4FE.js} +8 -8
  52. package/Build/Workers/{chunk-K5JTWJPE.js → chunk-YRR6CJGG.js} +4 -4
  53. package/Build/Workers/{chunk-UZ6KXWCA.js → chunk-ZVTKMLU6.js} +4 -4
  54. package/Build/Workers/combineGeometry.js +21 -21
  55. package/Build/Workers/createBoxGeometry.js +15 -15
  56. package/Build/Workers/createBoxOutlineGeometry.js +13 -13
  57. package/Build/Workers/createCircleGeometry.js +23 -23
  58. package/Build/Workers/createCircleOutlineGeometry.js +16 -16
  59. package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
  60. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
  61. package/Build/Workers/createCorridorGeometry.js +26 -26
  62. package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
  63. package/Build/Workers/createCylinderGeometry.js +17 -17
  64. package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
  65. package/Build/Workers/createEllipseGeometry.js +23 -23
  66. package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
  67. package/Build/Workers/createEllipsoidGeometry.js +16 -16
  68. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
  69. package/Build/Workers/createFrustumGeometry.js +15 -15
  70. package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
  71. package/Build/Workers/createGeometry.js +23 -21
  72. package/Build/Workers/createGroundPolylineGeometry.js +19 -19
  73. package/Build/Workers/createPlaneGeometry.js +13 -13
  74. package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
  75. package/Build/Workers/createPolygonGeometry.js +29 -29
  76. package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
  77. package/Build/Workers/createPolylineGeometry.js +22 -22
  78. package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
  79. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
  80. package/Build/Workers/createRectangleGeometry.js +24 -24
  81. package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
  82. package/Build/Workers/createSimplePolylineGeometry.js +20 -20
  83. package/Build/Workers/createSphereGeometry.js +16 -16
  84. package/Build/Workers/createSphereOutlineGeometry.js +15 -15
  85. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  86. package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
  87. package/Build/Workers/createVectorTileGeometries.js +21 -21
  88. package/Build/Workers/createVectorTilePoints.js +11 -11
  89. package/Build/Workers/createVectorTilePolygons.js +19 -19
  90. package/Build/Workers/createVectorTilePolylines.js +12 -12
  91. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +19 -19
  92. package/Build/Workers/createVerticesFromHeightmap.js +19 -19
  93. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +16 -16
  94. package/Build/Workers/createWallGeometry.js +21 -21
  95. package/Build/Workers/createWallOutlineGeometry.js +20 -20
  96. package/Build/Workers/decodeDraco.js +10 -10
  97. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  98. package/Build/Workers/decodeI3S.js +9 -9
  99. package/Build/Workers/gaussianSplatSorter.js +62 -0
  100. package/Build/Workers/gaussianSplatTextureGenerator.js +68 -0
  101. package/Build/Workers/transcodeKTX2.js +78 -7
  102. package/Build/Workers/transferTypedArrayTest.js +1 -1
  103. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
  104. package/Source/Core/Ion.js +1 -1
  105. package/Source/Core/PixelFormat.js +98 -0
  106. package/Source/Renderer/Context.js +2 -0
  107. package/Source/Renderer/Pass.js +3 -2
  108. package/Source/Renderer/Texture.js +1 -0
  109. package/Source/Renderer/Texture3D.js +568 -0
  110. package/Source/Renderer/VertexArray.js +33 -8
  111. package/Source/Renderer/createUniform.js +3 -0
  112. package/Source/Renderer/createUniformArray.js +1 -0
  113. package/Source/Scene/ArcGisMapService.js +1 -1
  114. package/Source/Scene/Cesium3DTileContentFactory.js +23 -0
  115. package/Source/Scene/Cesium3DTileset.js +197 -2
  116. package/Source/Scene/GaussianSplat3DTileContent.js +504 -0
  117. package/Source/Scene/GaussianSplatPrimitive.js +932 -0
  118. package/Source/Scene/GaussianSplatRenderResources.js +81 -0
  119. package/Source/Scene/GaussianSplatSorter.js +73 -0
  120. package/Source/Scene/GaussianSplatTextureGenerator.js +64 -0
  121. package/Source/Scene/GlobeSurfaceShaderSet.js +4 -5
  122. package/Source/Scene/GltfLoader.js +82 -4
  123. package/Source/Scene/GltfSpzLoader.js +222 -0
  124. package/Source/Scene/GltfVertexBufferLoader.js +98 -3
  125. package/Source/Scene/ImageryLayer.js +19 -4
  126. package/Source/Scene/ImageryLayerCollection.js +3 -2
  127. package/Source/Scene/Model/CartesianRectangle.js +108 -0
  128. package/Source/Scene/Model/ImageryConfiguration.js +25 -0
  129. package/Source/Scene/Model/ImageryCoverage.js +488 -0
  130. package/Source/Scene/Model/ImageryFlags.js +31 -0
  131. package/Source/Scene/Model/ImageryInput.js +60 -0
  132. package/Source/Scene/Model/ImageryPipelineStage.js +1040 -0
  133. package/Source/Scene/Model/MappedPositions.js +84 -0
  134. package/Source/Scene/Model/Model.js +38 -0
  135. package/Source/Scene/Model/ModelImagery.js +403 -0
  136. package/Source/Scene/Model/ModelImageryMapping.js +489 -0
  137. package/Source/Scene/Model/ModelPrimitiveImagery.js +972 -0
  138. package/Source/Scene/Model/ModelReader.js +810 -0
  139. package/Source/Scene/Model/ModelRenderResources.js +13 -0
  140. package/Source/Scene/Model/ModelRuntimePrimitive.js +20 -0
  141. package/Source/Scene/Model/ModelSceneGraph.js +133 -27
  142. package/Source/Scene/Model/ModelUtility.js +2 -0
  143. package/Source/Scene/Model/NodeRenderResources.js +10 -0
  144. package/Source/Scene/ModelComponents.js +10 -0
  145. package/Source/Scene/PrimitiveLoadPlan.js +59 -0
  146. package/Source/Scene/ResourceCache.js +60 -3
  147. package/Source/Scene/ResourceCacheKey.js +39 -1
  148. package/Source/Scene/Scene.js +32 -1
  149. package/Source/Scene/VertexAttributeSemantic.js +30 -0
  150. package/Source/Scene/VoxelPrimitive.js +22 -37
  151. package/Source/Scene/VoxelRenderResources.js +1 -1
  152. package/Source/Scene/processVoxelProperties.js +41 -100
  153. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +9 -0
  154. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +11 -0
  155. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  156. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  157. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  158. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +0 -1
  159. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +0 -1
  160. package/Source/Shaders/GlobeFS.glsl +22 -0
  161. package/Source/Shaders/GlobeFS.js +22 -0
  162. package/Source/Shaders/Model/MaterialStageFS.glsl +4 -0
  163. package/Source/Shaders/Model/MaterialStageFS.js +4 -0
  164. package/Source/Shaders/Model/ModelFS.glsl +3 -1
  165. package/Source/Shaders/Model/ModelFS.js +3 -1
  166. package/Source/Shaders/Model/ModelVS.glsl +5 -1
  167. package/Source/Shaders/Model/ModelVS.js +5 -1
  168. package/Source/Shaders/Model/PointCloudStylingStageVS.glsl +1 -1
  169. package/Source/Shaders/Model/PointCloudStylingStageVS.js +2 -1
  170. package/Source/Shaders/PrimitiveGaussianSplatFS.glsl +18 -0
  171. package/Source/Shaders/PrimitiveGaussianSplatFS.js +20 -0
  172. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +108 -0
  173. package/Source/Shaders/PrimitiveGaussianSplatVS.js +109 -0
  174. package/Source/Shaders/Voxels/IntersectDepth.glsl +10 -3
  175. package/Source/Shaders/Voxels/IntersectDepth.js +10 -3
  176. package/Source/Shaders/Voxels/Intersection.glsl +1 -3
  177. package/Source/Shaders/Voxels/Intersection.js +1 -3
  178. package/Source/Shaders/Voxels/IntersectionUtils.glsl +1 -0
  179. package/Source/Shaders/Voxels/IntersectionUtils.js +1 -0
  180. package/Source/Shaders/Voxels/VoxelFS.glsl +37 -24
  181. package/Source/Shaders/Voxels/VoxelFS.js +37 -24
  182. package/Source/ThirdParty/Workers/z-worker-pako.js +1 -1
  183. package/Source/ThirdParty/wasm_splats_bg.wasm +0 -0
  184. package/Source/Workers/gaussianSplatSorter.js +34 -0
  185. package/Source/Workers/gaussianSplatTextureGenerator.js +39 -0
  186. package/index.d.ts +66 -2
  187. package/index.js +101 -80
  188. package/package.json +6 -4
@@ -9,6 +9,7 @@ import JobType from "./JobType.js";
9
9
  import ModelComponents from "./ModelComponents.js";
10
10
  import ResourceLoader from "./ResourceLoader.js";
11
11
  import ResourceLoaderState from "./ResourceLoaderState.js";
12
+ import CesiumMath from "../Core/Math.js";
12
13
 
13
14
  /**
14
15
  * Loads a vertex buffer from a glTF buffer view.
@@ -53,6 +54,7 @@ function GltfVertexBufferLoader(options) {
53
54
  const attributeSemantic = options.attributeSemantic;
54
55
  const accessorId = options.accessorId;
55
56
  const cacheKey = options.cacheKey;
57
+ const spz = options.spz;
56
58
  const asynchronous = options.asynchronous ?? true;
57
59
  const loadBuffer = options.loadBuffer ?? false;
58
60
  const loadTypedArray = options.loadTypedArray ?? false;
@@ -73,10 +75,10 @@ function GltfVertexBufferLoader(options) {
73
75
  const hasDraco = hasDracoCompression(draco, attributeSemantic);
74
76
  const hasAttributeSemantic = defined(attributeSemantic);
75
77
  const hasAccessorId = defined(accessorId);
76
-
77
- if (hasBufferViewId === hasDraco) {
78
+ const hasSpz = defined(spz);
79
+ if (hasBufferViewId === (hasDraco !== hasSpz)) {
78
80
  throw new DeveloperError(
79
- "One of options.bufferViewId and options.draco must be defined.",
81
+ "One of options.bufferViewId, options.draco, or options.spz must be defined.",
80
82
  );
81
83
  }
82
84
 
@@ -104,6 +106,7 @@ function GltfVertexBufferLoader(options) {
104
106
  Check.typeOf.string("options.attributeSemantic", attributeSemantic);
105
107
  Check.typeOf.number("options.accessorId", accessorId);
106
108
  }
109
+
107
110
  //>>includeEnd('debug');
108
111
 
109
112
  this._resourceCache = resourceCache;
@@ -113,6 +116,7 @@ function GltfVertexBufferLoader(options) {
113
116
  this._bufferViewId = bufferViewId;
114
117
  this._primitive = primitive;
115
118
  this._draco = draco;
119
+ this._spz = spz;
116
120
  this._attributeSemantic = attributeSemantic;
117
121
  this._accessorId = accessorId;
118
122
  this._cacheKey = cacheKey;
@@ -210,6 +214,11 @@ GltfVertexBufferLoader.prototype.load = async function () {
210
214
  return this._promise;
211
215
  }
212
216
 
217
+ if (defined(this._spz)) {
218
+ this._promise = loadFromSpz(this);
219
+ return this._promise;
220
+ }
221
+
213
222
  if (hasDracoCompression(this._draco, this._attributeSemantic)) {
214
223
  this._promise = loadFromDraco(this);
215
224
  return this._promise;
@@ -270,6 +279,74 @@ function getQuantizationInformation(
270
279
  return quantization;
271
280
  }
272
281
 
282
+ async function loadFromSpz(vertexBufferLoader) {
283
+ vertexBufferLoader._state = ResourceLoaderState.LOADING;
284
+ const resourceCache = vertexBufferLoader._resourceCache;
285
+ try {
286
+ const spzLoader = resourceCache.getSpzLoader({
287
+ gltf: vertexBufferLoader._gltf,
288
+ primitive: vertexBufferLoader._primitive,
289
+ spz: vertexBufferLoader._spz,
290
+ gltfResource: vertexBufferLoader._gltfResource,
291
+ baseResource: vertexBufferLoader._baseResource,
292
+ });
293
+ vertexBufferLoader._spzLoader = spzLoader;
294
+ await spzLoader.load();
295
+
296
+ if (vertexBufferLoader.isDestroyed()) {
297
+ return;
298
+ }
299
+
300
+ vertexBufferLoader._state = ResourceLoaderState.LOADED;
301
+ return vertexBufferLoader;
302
+ } catch {
303
+ if (vertexBufferLoader.isDestroyed()) {
304
+ return;
305
+ }
306
+ }
307
+ }
308
+
309
+ function processSpz(vertexBufferLoader) {
310
+ vertexBufferLoader._state = ResourceLoaderState.PROCESSING;
311
+ const spzLoader = vertexBufferLoader._spzLoader;
312
+
313
+ const gcloudData = spzLoader.decodedData.gcloud;
314
+
315
+ if (vertexBufferLoader._attributeSemantic === "POSITION") {
316
+ vertexBufferLoader._typedArray = gcloudData.positions;
317
+ } else if (vertexBufferLoader._attributeSemantic === "_SCALE") {
318
+ vertexBufferLoader._typedArray = gcloudData.scales;
319
+ } else if (vertexBufferLoader._attributeSemantic === "_ROTATION") {
320
+ vertexBufferLoader._typedArray = gcloudData.rotations;
321
+ } else if (vertexBufferLoader._attributeSemantic === "COLOR_0") {
322
+ const colors = gcloudData.colors;
323
+ const alphas = gcloudData.alphas;
324
+ vertexBufferLoader._typedArray = new Uint8Array((colors.length / 3) * 4);
325
+ for (let i = 0; i < colors.length / 3; i++) {
326
+ vertexBufferLoader._typedArray[i * 4] = CesiumMath.clamp(
327
+ colors[i * 3] * 255.0,
328
+ 0.0,
329
+ 255.0,
330
+ );
331
+ vertexBufferLoader._typedArray[i * 4 + 1] = CesiumMath.clamp(
332
+ colors[i * 3 + 1] * 255.0,
333
+ 0.0,
334
+ 255.0,
335
+ );
336
+ vertexBufferLoader._typedArray[i * 4 + 2] = CesiumMath.clamp(
337
+ colors[i * 3 + 2] * 255.0,
338
+ 0.0,
339
+ 255.0,
340
+ );
341
+ vertexBufferLoader._typedArray[i * 4 + 3] = CesiumMath.clamp(
342
+ alphas[i] * 255.0,
343
+ 0.0,
344
+ 255.0,
345
+ );
346
+ }
347
+ }
348
+ }
349
+
273
350
  async function loadFromDraco(vertexBufferLoader) {
274
351
  vertexBufferLoader._state = ResourceLoaderState.LOADING;
275
352
  const resourceCache = vertexBufferLoader._resourceCache;
@@ -427,6 +504,19 @@ GltfVertexBufferLoader.prototype.process = function (frameState) {
427
504
  processDraco(this);
428
505
  }
429
506
 
507
+ if (defined(this._spzLoader)) {
508
+ try {
509
+ const ready = this._spzLoader.process(frameState);
510
+ if (!ready) {
511
+ return false;
512
+ }
513
+ } catch (error) {
514
+ handleError(this, error);
515
+ }
516
+
517
+ processSpz(this);
518
+ }
519
+
430
520
  let buffer;
431
521
  const typedArray = this._typedArray;
432
522
  if (this._loadBuffer && this._asynchronous) {
@@ -474,8 +564,13 @@ GltfVertexBufferLoader.prototype.unload = function () {
474
564
  resourceCache.unload(this._dracoLoader);
475
565
  }
476
566
 
567
+ if (defined(this._spzLoader)) {
568
+ resourceCache.unload(this._spzLoader);
569
+ }
570
+
477
571
  this._bufferViewLoader = undefined;
478
572
  this._dracoLoader = undefined;
573
+ this._spzLoader = undefined;
479
574
  this._typedArray = undefined;
480
575
  this._buffer = undefined;
481
576
  this._gltf = undefined;
@@ -127,7 +127,7 @@ import TileImagery from "./TileImagery.js";
127
127
 
128
128
  /**
129
129
  * An imagery layer that displays tiled image data from a single imagery provider
130
- * on a {@link Globe}.
130
+ * on a {@link Globe} or {@link Cesium3DTileset}.
131
131
  *
132
132
  * @alias ImageryLayer
133
133
  * @constructor
@@ -135,8 +135,10 @@ import TileImagery from "./TileImagery.js";
135
135
  * @param {ImageryProvider} [imageryProvider] The imagery provider to use.
136
136
  * @param {ImageryLayer.ConstructorOptions} [options] An object describing initialization options
137
137
  *
138
- * @see ImageryLayer.fromProviderAsync
139
- * @see ImageryLayer.fromWorldImagery
138
+ * @see {@link ImageryLayer.fromProviderAsync} for creating an imagery layer from an asynchronous imagery provider.
139
+ * @see {@link ImageryLayer.fromWorldImagery} for creating an imagery layer for Cesium ion's default global base imagery layer.
140
+ * @see {@link Scene#imageryLayers} for adding an imagery layer to the globe.
141
+ * @see {@link Cesium3DTileset#imageryLayers} for adding an imagery layer to a 3D tileset.
140
142
  *
141
143
  * @example
142
144
  * // Add an OpenStreetMaps layer
@@ -155,6 +157,19 @@ import TileImagery from "./TileImagery.js";
155
157
  * const imageryLayer = Cesium.ImageryLayer.fromProviderAsync(Cesium.IonImageryProvider.fromAssetId(3812));
156
158
  * imageryLayer.alpha = 0.5;
157
159
  * scene.imageryLayers.add(imageryLayer);
160
+ *
161
+ * @example
162
+ * // Drape Bing Maps Aerial imagery over a 3D tileset
163
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
164
+ * "http://localhost:8002/tilesets/Seattle/tileset.json"
165
+ * );
166
+ * scene.primitives.add(tileset);
167
+ *
168
+ * const imageryProvider = await Cesium.createWorldImageryAsync({
169
+ * style: Cesium.IonWorldImageryStyle.AERIAL,
170
+ * });
171
+ * const imageryLayer = new ImageryLayer(imageryProvider);
172
+ * tileset.imageryLayers.add(imageryLayer);
158
173
  */
159
174
  function ImageryLayer(imageryProvider, options) {
160
175
  this._imageryProvider = imageryProvider;
@@ -663,7 +678,7 @@ ImageryLayer.prototype.getImageryRectangle = function () {
663
678
  *
664
679
  * @private
665
680
  *
666
- * @param {Tile} tile The terrain tile.
681
+ * @param {QuadtreeTile} tile The terrain tile.
667
682
  * @param {TerrainProvider|undefined} terrainProvider The terrain provider associated with the terrain tile.
668
683
  * @param {number} insertionPoint The position to insert new skeletons before in the tile's imagery list.
669
684
  * @returns {boolean} true if this layer overlaps any portion of the terrain tile; otherwise, false.
@@ -7,11 +7,12 @@ import Rectangle from "../Core/Rectangle.js";
7
7
  import ImageryLayer from "./ImageryLayer.js";
8
8
 
9
9
  /**
10
- * An ordered collection of imagery layers.
10
+ * An ordered collection of imagery layers for rendering raster imagery on a {@link Globe} or {@link Cesium3DTileset}.
11
11
  *
12
12
  * @alias ImageryLayerCollection
13
13
  * @constructor
14
- *
14
+ * @see {@link Scene#imageryLayers} for manipulating imagery layers on the globe.
15
+ * @see {@link Cesium3DTileset#imageryLayers} for manipulating imagery layers on a 3D tileset.
15
16
  * @demo {@link https://sandcastle.cesium.com/index.html?src=Imagery%20Adjustment.html|Cesium Sandcastle Imagery Adjustment Demo}
16
17
  * @demo {@link https://sandcastle.cesium.com/index.html?src=Imagery%20Layers%20Manipulation.html|Cesium Sandcastle Imagery Manipulation Demo}
17
18
  */
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Internal class for texture coordinate and index range computations.
3
+ *
4
+ * @private
5
+ */
6
+ class CartesianRectangle {
7
+ /**
8
+ * Creates a new instance
9
+ *
10
+ * @param {number} [minX=0] The minimum x-coordinate
11
+ * @param {number} [minY=0] The minimum y-coordinate
12
+ * @param {number} [maxX=0] The maximum x-coordinate
13
+ * @param {number} [maxY=0] The maximum y-coordinate
14
+ */
15
+ constructor(minX, minY, maxX, maxY) {
16
+ this._minX = minX ?? 0.0;
17
+ this._minY = minY ?? 0.0;
18
+ this._maxX = maxX ?? 0.0;
19
+ this._maxY = maxY ?? 0.0;
20
+ }
21
+
22
+ /**
23
+ * Returns the minimum x-coordinate
24
+ *
25
+ * @returns {number} The coordinate
26
+ */
27
+ get minX() {
28
+ return this._minX;
29
+ }
30
+ set minX(value) {
31
+ this._minX = value;
32
+ }
33
+
34
+ /**
35
+ * Returns the minimum y-coordinate
36
+ *
37
+ * @returns {number} The coordinate
38
+ */
39
+ get minY() {
40
+ return this._minY;
41
+ }
42
+ set minY(value) {
43
+ this._minY = value;
44
+ }
45
+
46
+ /**
47
+ * Returns the maximum x-coordinate
48
+ *
49
+ * @returns {number} The coordinate
50
+ */
51
+ get maxX() {
52
+ return this._maxX;
53
+ }
54
+ set maxX(value) {
55
+ this._maxX = value;
56
+ }
57
+
58
+ /**
59
+ * Returns the maximum y-coordinate
60
+ *
61
+ * @returns {number} The coordinate
62
+ */
63
+ get maxY() {
64
+ return this._maxY;
65
+ }
66
+ set maxY(value) {
67
+ this._maxY = value;
68
+ }
69
+
70
+ /**
71
+ * Returns whether this rectangle contains the given coordinates,
72
+ * using the default containment check, which includes the
73
+ * minimum point, but excludes the maximum point
74
+ *
75
+ * @param {number} x The x-coordinate
76
+ * @param {number} y The y-coordinate
77
+ * @returns {boolean} The result
78
+ */
79
+ contains(x, y) {
80
+ return x >= this.minX && x < this.maxX && y >= this.minY && y < this.maxY;
81
+ }
82
+
83
+ /**
84
+ * Returns whether this rectangle contains the given coordinates,
85
+ * excluding the border
86
+ *
87
+ * @param {number} x The x-coordinate
88
+ * @param {number} y The y-coordinate
89
+ * @returns {boolean} The result
90
+ */
91
+ containsExclusive(x, y) {
92
+ return x > this.minX && x < this.maxX && y > this.minY && y < this.maxY;
93
+ }
94
+
95
+ /**
96
+ * Returns whether this rectangle contains the given coordinates,
97
+ * including the border
98
+ *
99
+ * @param {number} x The x-coordinate
100
+ * @param {number} y The y-coordinate
101
+ * @returns {boolean} The result
102
+ */
103
+ containsInclusive(x, y) {
104
+ return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;
105
+ }
106
+ }
107
+
108
+ export default CartesianRectangle;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * A class containing a the values that affect the appearance of
3
+ * an <code>ImageryLayer</code>.
4
+ *
5
+ * This is used in the <code>ModelImagery</code> to detect changes in
6
+ * the imagery settings: The <code>ModelImagery</code> stores one
7
+ * instance per imagery layer. During the <code>update</code>
8
+ * call, it checks whether any of the settings was changed.
9
+ * If this is the case, the draw commands of the model are reset.
10
+ *
11
+ * @private
12
+ */
13
+ class ImageryConfiguration {
14
+ constructor(imageryLayer) {
15
+ this.alpha = imageryLayer.alpha;
16
+ this.brightness = imageryLayer.brightness;
17
+ this.contrast = imageryLayer.contrast;
18
+ this.hue = imageryLayer.hue;
19
+ this.saturation = imageryLayer.saturation;
20
+ this.gamma = imageryLayer.gamma;
21
+ this.colorToAlpha = imageryLayer.colorToAlpha;
22
+ }
23
+ }
24
+
25
+ export default ImageryConfiguration;