@cesium/engine 8.0.0 → 9.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 (192) hide show
  1. package/Build/ThirdParty/Workers/z-worker-pako.js +7 -10
  2. package/Build/Workers/{chunk-F4HFJMGM.js → chunk-2CSEEWHN.js} +6 -6
  3. package/Build/Workers/{chunk-7TC63SJW.js → chunk-34DGOKCO.js} +10 -12
  4. package/Build/Workers/{chunk-7ZFGPDJA.js → chunk-3RZK5NNV.js} +4 -4
  5. package/Build/Workers/{chunk-M7ERACJJ.js → chunk-3S2MFY4B.js} +13 -13
  6. package/Build/Workers/{chunk-BROJAZRZ.js → chunk-4AJGCQFX.js} +13 -13
  7. package/Build/Workers/{chunk-2FWRMUTY.js → chunk-4KIUON73.js} +4 -4
  8. package/Build/Workers/{chunk-5QULIR53.js → chunk-4PHPQRSH.js} +4 -4
  9. package/Build/Workers/{chunk-X4356LRH.js → chunk-66E3H2KU.js} +12 -12
  10. package/Build/Workers/{chunk-G43QFN4Q.js → chunk-6HCAQOVK.js} +6 -6
  11. package/Build/Workers/{chunk-23UFSGND.js → chunk-7LPEGKOF.js} +7 -7
  12. package/Build/Workers/{chunk-DDUQAJ4P.js → chunk-7VZNXIKG.js} +7 -7
  13. package/Build/Workers/{chunk-JURN7NPV.js → chunk-A6NCZSL3.js} +19 -19
  14. package/Build/Workers/{chunk-ZT7KWISZ.js → chunk-AOFMPKUB.js} +4 -4
  15. package/Build/Workers/{chunk-BIKA3NRA.js → chunk-AOIKO5Y7.js} +5 -5
  16. package/Build/Workers/{chunk-YWTJ2B4B.js → chunk-BDUJXBVF.js} +1 -1
  17. package/Build/Workers/{chunk-OGXZVPPM.js → chunk-C5CE4OG6.js} +469 -6
  18. package/Build/Workers/{chunk-FNIRWHJB.js → chunk-CE6GTZ4I.js} +11 -13
  19. package/Build/Workers/{chunk-SH5USDPI.js → chunk-CYAJYEKW.js} +6 -6
  20. package/Build/Workers/{chunk-Y5UQJLYE.js → chunk-FOZQIHZK.js} +6 -6
  21. package/Build/Workers/{chunk-2FRVPMCS.js → chunk-G7CJQKKD.js} +7 -7
  22. package/Build/Workers/{chunk-EERJKOAF.js → chunk-GIFJ77E4.js} +4 -4
  23. package/Build/Workers/{chunk-FJKNFAKQ.js → chunk-I5TDPPC4.js} +7197 -5096
  24. package/Build/Workers/{chunk-3VAZEH7M.js → chunk-IBXGK4WV.js} +2 -2
  25. package/Build/Workers/{chunk-VOXYEYJT.js → chunk-JI2445T5.js} +11 -11
  26. package/Build/Workers/{chunk-PGSJK77E.js → chunk-KPY4F4BW.js} +6 -6
  27. package/Build/Workers/{chunk-I46ZRR5W.js → chunk-LVJCR7DH.js} +17 -17
  28. package/Build/Workers/{chunk-T3XIFPYR.js → chunk-LW7WGHEU.js} +16 -16
  29. package/Build/Workers/{chunk-HU6N6EXB.js → chunk-MWYZ64MH.js} +12 -11
  30. package/Build/Workers/chunk-NI2R52QD.js +961 -0
  31. package/Build/Workers/{chunk-SOWMRMWA.js → chunk-PEABJLCK.js} +1 -1
  32. package/Build/Workers/{chunk-EG6PTBY2.js → chunk-PK7TEP3J.js} +15 -15
  33. package/Build/Workers/{chunk-GRC2ZTAF.js → chunk-POLFRINT.js} +14 -14
  34. package/Build/Workers/{chunk-Z3TIFFGF.js → chunk-PS6AEMBR.js} +7 -7
  35. package/Build/Workers/{chunk-Y2ME2IJV.js → chunk-PWF3YJJ5.js} +13 -13
  36. package/Build/Workers/{chunk-2A75IWRS.js → chunk-QKF7XXEQ.js} +7 -7
  37. package/Build/Workers/{chunk-4H7PY4U5.js → chunk-RL73GOEF.js} +2 -2
  38. package/Build/Workers/{chunk-MDWEGWPA.js → chunk-RR7EOKGZ.js} +10 -10
  39. package/Build/Workers/{chunk-F3YA3Y2Z.js → chunk-S4XDCPKD.js} +1 -1
  40. package/Build/Workers/{chunk-PPH7OFP3.js → chunk-TMMOULW3.js} +5 -5
  41. package/Build/Workers/{chunk-XGI5BXZY.js → chunk-U4IMCOF5.js} +2 -2
  42. package/Build/Workers/{chunk-4DO5W5XZ.js → chunk-UAJEGIWA.js} +6 -6
  43. package/Build/Workers/{chunk-BBWDMCVU.js → chunk-UCPPWV64.js} +1 -1
  44. package/Build/Workers/{chunk-FZRIVR7Y.js → chunk-V7JB576Q.js} +5 -5
  45. package/Build/Workers/{chunk-2UPKWTMJ.js → chunk-WEGCQ5DY.js} +6 -6
  46. package/Build/Workers/{chunk-STW2DGFI.js → chunk-WFICTTOE.js} +2 -2
  47. package/Build/Workers/{chunk-LPR3YNP2.js → chunk-WWP3I7R5.js} +5 -5
  48. package/Build/Workers/{chunk-A5DWLWCY.js → chunk-XHLDDE65.js} +10 -10
  49. package/Build/Workers/{chunk-UEXTBDBE.js → chunk-XWML5Y7N.js} +11 -13
  50. package/Build/Workers/{chunk-EHWHNOEX.js → chunk-YLZTCEBJ.js} +1 -1
  51. package/Build/Workers/{chunk-34FXV7D7.js → chunk-ZC4AGBZK.js} +2 -2
  52. package/Build/Workers/{chunk-GATZHF3K.js → chunk-ZDP32RQI.js} +2 -2
  53. package/Build/Workers/{chunk-KKCR2YOP.js → chunk-ZWPIM77Q.js} +11 -11
  54. package/Build/Workers/combineGeometry.js +22 -24
  55. package/Build/Workers/createBoxGeometry.js +16 -18
  56. package/Build/Workers/createBoxOutlineGeometry.js +14 -16
  57. package/Build/Workers/createCircleGeometry.js +24 -26
  58. package/Build/Workers/createCircleOutlineGeometry.js +17 -19
  59. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -34
  60. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -31
  61. package/Build/Workers/createCorridorGeometry.js +27 -29
  62. package/Build/Workers/createCorridorOutlineGeometry.js +26 -28
  63. package/Build/Workers/createCylinderGeometry.js +18 -20
  64. package/Build/Workers/createCylinderOutlineGeometry.js +16 -18
  65. package/Build/Workers/createEllipseGeometry.js +24 -26
  66. package/Build/Workers/createEllipseOutlineGeometry.js +17 -19
  67. package/Build/Workers/createEllipsoidGeometry.js +17 -19
  68. package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -18
  69. package/Build/Workers/createFrustumGeometry.js +16 -18
  70. package/Build/Workers/createFrustumOutlineGeometry.js +18 -19
  71. package/Build/Workers/createGeometry.js +23 -25
  72. package/Build/Workers/createGroundPolylineGeometry.js +23 -25
  73. package/Build/Workers/createPlaneGeometry.js +14 -16
  74. package/Build/Workers/createPlaneOutlineGeometry.js +13 -15
  75. package/Build/Workers/createPolygonGeometry.js +33 -35
  76. package/Build/Workers/createPolygonOutlineGeometry.js +28 -30
  77. package/Build/Workers/createPolylineGeometry.js +23 -25
  78. package/Build/Workers/createPolylineVolumeGeometry.js +29 -31
  79. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -27
  80. package/Build/Workers/createRectangleGeometry.js +27 -29
  81. package/Build/Workers/createRectangleOutlineGeometry.js +18 -20
  82. package/Build/Workers/createSimplePolylineGeometry.js +21 -23
  83. package/Build/Workers/createSphereGeometry.js +17 -19
  84. package/Build/Workers/createSphereOutlineGeometry.js +16 -18
  85. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  86. package/Build/Workers/createVectorTileClampedPolylines.js +14 -16
  87. package/Build/Workers/createVectorTileGeometries.js +22 -24
  88. package/Build/Workers/createVectorTilePoints.js +12 -12
  89. package/Build/Workers/createVectorTilePolygons.js +20 -22
  90. package/Build/Workers/createVectorTilePolylines.js +14 -16
  91. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -25
  92. package/Build/Workers/createVerticesFromHeightmap.js +23 -25
  93. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -22
  94. package/Build/Workers/createWallGeometry.js +22 -24
  95. package/Build/Workers/createWallOutlineGeometry.js +21 -23
  96. package/Build/Workers/decodeDraco.js +11 -11
  97. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  98. package/Build/Workers/decodeI3S.js +10 -11
  99. package/Build/Workers/transcodeKTX2.js +8 -8
  100. package/Build/Workers/transferTypedArrayTest.js +1 -1
  101. package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -22
  102. package/Source/Core/Check.d.ts +127 -0
  103. package/Source/Core/Check.js +0 -1
  104. package/Source/Core/Geometry.js +1 -1
  105. package/Source/Core/Ion.js +1 -1
  106. package/Source/Core/PixelFormat.js +1 -0
  107. package/Source/Core/PolygonGeometry.js +1 -1
  108. package/Source/Core/Rectangle.js +89 -0
  109. package/Source/Core/VerticalExaggeration.js +2 -1
  110. package/Source/DataSources/DataSourceDisplay.js +5 -0
  111. package/Source/Renderer/ShaderBuilder.js +6 -3
  112. package/Source/Scene/ArcGisMapService.js +1 -1
  113. package/Source/Scene/Billboard.js +37 -3
  114. package/Source/Scene/BillboardCollection.js +1 -1
  115. package/Source/Scene/BingMapsImageryProvider.js +4 -0
  116. package/Source/Scene/Cesium3DTile.js +65 -0
  117. package/Source/Scene/Cesium3DTilesVoxelProvider.js +2 -9
  118. package/Source/Scene/Cesium3DTileset.js +52 -40
  119. package/Source/Scene/ClippingPolygon.js +212 -0
  120. package/Source/Scene/ClippingPolygonCollection.js +968 -0
  121. package/Source/Scene/Globe.js +14 -67
  122. package/Source/Scene/GlobeSurfaceShaderSet.js +81 -15
  123. package/Source/Scene/GlobeSurfaceTileProvider.js +81 -1
  124. package/Source/Scene/Label.js +33 -0
  125. package/Source/Scene/LabelCollection.js +2 -1
  126. package/Source/Scene/Model/Model.js +83 -0
  127. package/Source/Scene/Model/Model3DTileContent.js +21 -0
  128. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +92 -0
  129. package/Source/Scene/Model/ModelSceneGraph.js +5 -0
  130. package/Source/Scene/Primitive.js +0 -3
  131. package/Source/Scene/SensorVolumePortionToDisplay.js +1 -1
  132. package/Source/Scene/Terrain.js +2 -2
  133. package/Source/Scene/VoxelBoxShape.js +0 -15
  134. package/Source/Scene/VoxelCylinderShape.js +14 -131
  135. package/Source/Scene/VoxelEllipsoidShape.js +136 -227
  136. package/Source/Scene/VoxelPrimitive.js +106 -14
  137. package/Source/Scene/VoxelRenderResources.js +9 -3
  138. package/Source/Scene/VoxelShape.js +0 -10
  139. package/Source/Scene/processVoxelProperties.js +1 -0
  140. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  141. package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +37 -0
  142. package/Source/Shaders/Builtin/Functions/clipPolygons.js +39 -0
  143. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +14 -0
  144. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +15 -0
  145. package/Source/Shaders/GlobeFS.glsl +12 -0
  146. package/Source/Shaders/GlobeFS.js +12 -0
  147. package/Source/Shaders/GlobeVS.glsl +32 -0
  148. package/Source/Shaders/GlobeVS.js +32 -0
  149. package/Source/Shaders/Model/GeometryStageVS.glsl +1 -1
  150. package/Source/Shaders/Model/GeometryStageVS.js +1 -1
  151. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +6 -0
  152. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +8 -0
  153. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +27 -0
  154. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +29 -0
  155. package/Source/Shaders/Model/ModelFS.glsl +6 -0
  156. package/Source/Shaders/Model/ModelFS.js +7 -1
  157. package/Source/Shaders/Model/ModelVS.glsl +4 -0
  158. package/Source/Shaders/Model/ModelVS.js +4 -0
  159. package/Source/Shaders/PolygonSignedDistanceFS.glsl +100 -0
  160. package/Source/Shaders/PolygonSignedDistanceFS.js +101 -0
  161. package/Source/Shaders/Voxels/IntersectBox.glsl +21 -47
  162. package/Source/Shaders/Voxels/IntersectBox.js +21 -47
  163. package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +1 -1
  164. package/Source/Shaders/Voxels/IntersectClippingPlanes.js +1 -1
  165. package/Source/Shaders/Voxels/IntersectCylinder.glsl +66 -96
  166. package/Source/Shaders/Voxels/IntersectCylinder.js +66 -96
  167. package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +226 -154
  168. package/Source/Shaders/Voxels/IntersectEllipsoid.js +226 -154
  169. package/Source/Shaders/Voxels/IntersectionUtils.glsl +33 -11
  170. package/Source/Shaders/Voxels/IntersectionUtils.js +33 -11
  171. package/Source/Shaders/Voxels/Megatexture.glsl +1 -2
  172. package/Source/Shaders/Voxels/Megatexture.js +1 -2
  173. package/Source/Shaders/Voxels/Octree.glsl +14 -9
  174. package/Source/Shaders/Voxels/Octree.js +14 -9
  175. package/Source/Shaders/Voxels/VoxelFS.glsl +93 -43
  176. package/Source/Shaders/Voxels/VoxelFS.js +93 -43
  177. package/Source/Shaders/Voxels/VoxelUtils.glsl +31 -0
  178. package/Source/Shaders/Voxels/VoxelUtils.js +33 -0
  179. package/Source/Shaders/Voxels/convertUvToBox.glsl +24 -3
  180. package/Source/Shaders/Voxels/convertUvToBox.js +24 -4
  181. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +50 -8
  182. package/Source/Shaders/Voxels/convertUvToCylinder.js +50 -8
  183. package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +82 -53
  184. package/Source/Shaders/Voxels/convertUvToEllipsoid.js +82 -53
  185. package/Source/ThirdParty/Workers/z-worker-pako.js +1 -1
  186. package/Source/Workers/createGeometry.js +1 -1
  187. package/index.d.ts +478 -35
  188. package/index.js +61 -52
  189. package/package.json +2 -2
  190. package/Build/Workers/chunk-BG4UCVXN.js +0 -73
  191. package/Build/Workers/chunk-TTUZP4BO.js +0 -501
  192. package/Build/Workers/chunk-YJEBABKH.js +0 -2977
@@ -255,6 +255,27 @@ Model3DTileContent.prototype.update = function (tileset, frameState) {
255
255
  model._clippingPlanesState = 0;
256
256
  }
257
257
 
258
+ // Updating clipping polygons requires more effort because of ownership checks
259
+ const tilesetClippingPolygons = tileset.clippingPolygons;
260
+ if (defined(tilesetClippingPolygons) && tile.clippingPolygonsDirty) {
261
+ // Dereference the clipping polygons from the model if they are irrelevant.
262
+ model._clippingPolygons =
263
+ tilesetClippingPolygons.enabled && tile._isClippedByPolygon
264
+ ? tilesetClippingPolygons
265
+ : undefined;
266
+ }
267
+
268
+ // If the model references a different ClippingPolygonCollection from the tileset,
269
+ // update the model to use the new ClippingPolygonCollection.
270
+ if (
271
+ defined(tilesetClippingPolygons) &&
272
+ defined(model._clippingPolygons) &&
273
+ model._clippingPolygons !== tilesetClippingPolygons
274
+ ) {
275
+ model._clippingPolygons = tilesetClippingPolygons;
276
+ model._clippingPolygonsState = 0;
277
+ }
278
+
258
279
  model.update(frameState);
259
280
 
260
281
  if (!this._ready && model.ready) {
@@ -0,0 +1,92 @@
1
+ import combine from "../../Core/combine.js";
2
+ import ModelClippingPolygonsStageVS from "../../Shaders/Model/ModelClippingPolygonsStageVS.js";
3
+ import ModelClippingPolygonsStageFS from "../../Shaders/Model/ModelClippingPolygonsStageFS.js";
4
+ import ShaderDestination from "../../Renderer/ShaderDestination.js";
5
+
6
+ /**
7
+ * The model clipping planes stage is responsible for applying clipping planes to the model.
8
+ *
9
+ * @namespace ModelClippingPolygonsPipelineStage
10
+ *
11
+ * @private
12
+ */
13
+ const ModelClippingPolygonsPipelineStage = {
14
+ name: "ModelClippingPolygonsPipelineStage", // Helps with debugging
15
+ };
16
+
17
+ /**
18
+ * Process a model for polygon clipping. This modifies the following parts of the render resources:
19
+ *
20
+ * <ul>
21
+ * <li>adds a define to both the vertex and fragment shaders to indicate that the model has clipping polygons</li>
22
+ * <li>adds the defines to both the vertex and fragment shaders for parameters related to clipping polygons, such as the number of polygons</li>
23
+ * <li>adds a function to the vertex shader to determine lookup uvs</li>
24
+ * <li>adds a function to the fragment shader to discard clipped regions</li>
25
+ * <li>adds the uniforms to the vertex and fragment shaders for the clipping extents texture and clipping distance respectively</li>
26
+ * <li>adds a varying for lookup uvs in the clipping texture</li>
27
+ *</ul>
28
+ *
29
+ * @param {ModelRenderResources} renderResources The render resources for this model.
30
+ * @param {Model} model The model.
31
+ * @param {FrameState} frameState The frameState.
32
+ *
33
+ * @private
34
+ */
35
+ ModelClippingPolygonsPipelineStage.process = function (
36
+ renderResources,
37
+ model,
38
+ frameState
39
+ ) {
40
+ const clippingPolygons = model.clippingPolygons;
41
+ const shaderBuilder = renderResources.shaderBuilder;
42
+
43
+ shaderBuilder.addDefine(
44
+ "ENABLE_CLIPPING_POLYGONS",
45
+ undefined,
46
+ ShaderDestination.BOTH
47
+ );
48
+
49
+ if (clippingPolygons.inverse) {
50
+ shaderBuilder.addDefine(
51
+ "CLIPPING_INVERSE",
52
+ undefined,
53
+ ShaderDestination.FRAGMENT
54
+ );
55
+ }
56
+
57
+ shaderBuilder.addDefine(
58
+ "CLIPPING_POLYGON_REGIONS_LENGTH",
59
+ clippingPolygons.extentsCount,
60
+ ShaderDestination.BOTH
61
+ );
62
+
63
+ shaderBuilder.addUniform(
64
+ "sampler2D",
65
+ "model_clippingDistance",
66
+ ShaderDestination.FRAGMENT
67
+ );
68
+
69
+ shaderBuilder.addUniform(
70
+ "sampler2D",
71
+ "model_clippingExtents",
72
+ ShaderDestination.VERTEX
73
+ );
74
+
75
+ shaderBuilder.addVarying("vec2", "v_clippingPosition");
76
+ shaderBuilder.addVarying("int", "v_regionIndex", "flat");
77
+ shaderBuilder.addVertexLines(ModelClippingPolygonsStageVS);
78
+ shaderBuilder.addFragmentLines(ModelClippingPolygonsStageFS);
79
+
80
+ const uniformMap = {
81
+ model_clippingDistance: function () {
82
+ return clippingPolygons.clippingTexture;
83
+ },
84
+ model_clippingExtents: function () {
85
+ return clippingPolygons.extentsTexture;
86
+ },
87
+ };
88
+
89
+ renderResources.uniformMap = combine(uniformMap, renderResources.uniformMap);
90
+ };
91
+
92
+ export default ModelClippingPolygonsPipelineStage;
@@ -14,6 +14,7 @@ import ImageBasedLightingPipelineStage from "./ImageBasedLightingPipelineStage.j
14
14
  import ModelArticulation from "./ModelArticulation.js";
15
15
  import ModelColorPipelineStage from "./ModelColorPipelineStage.js";
16
16
  import ModelClippingPlanesPipelineStage from "./ModelClippingPlanesPipelineStage.js";
17
+ import ModelClippingPolygonsPipelineStage from "./ModelClippingPolygonsPipelineStage.js";
17
18
  import ModelNode from "./ModelNode.js";
18
19
  import ModelRuntimeNode from "./ModelRuntimeNode.js";
19
20
  import ModelRuntimePrimitive from "./ModelRuntimePrimitive.js";
@@ -626,6 +627,10 @@ ModelSceneGraph.prototype.configurePipeline = function (frameState) {
626
627
  modelPipelineStages.push(ModelClippingPlanesPipelineStage);
627
628
  }
628
629
 
630
+ if (model.isClippingPolygonsEnabled()) {
631
+ modelPipelineStages.push(ModelClippingPolygonsPipelineStage);
632
+ }
633
+
629
634
  if (model.hasSilhouette(frameState)) {
630
635
  modelPipelineStages.push(ModelSilhouettePipelineStage);
631
636
  }
@@ -2515,9 +2515,6 @@ function setReady(primitive, frameState, state, error) {
2515
2515
  primitive._ready =
2516
2516
  primitive._state === PrimitiveState.COMPLETE ||
2517
2517
  primitive._state === PrimitiveState.FAILED;
2518
- if (!defined(error)) {
2519
- return true;
2520
- }
2521
2518
  });
2522
2519
  }
2523
2520
  export default Primitive;
@@ -1,4 +1,4 @@
1
- import { DeveloperError } from "@cesium/engine";
1
+ import DeveloperError from "../Core/DeveloperError.js";
2
2
 
3
3
  /**
4
4
  * Constants used to indicated what part of the sensor volume to display.
@@ -83,7 +83,7 @@ Object.defineProperties(Terrain.prototype, {
83
83
 
84
84
  /**
85
85
  * Returns true when the terrain provider has been successfully created. Otherwise, returns false.
86
- * @memberof Viewer.prototype
86
+ * @memberof Terrain.prototype
87
87
  *
88
88
  * @type {boolean}
89
89
  * @readonly
@@ -96,7 +96,7 @@ Object.defineProperties(Terrain.prototype, {
96
96
 
97
97
  /**
98
98
  * The terrain provider providing surface geometry to a globe. Do not use until {@link Terrain.readyEvent} is raised.
99
- * @memberof Viewer.prototype
99
+ * @memberof Terrain.prototype
100
100
  *
101
101
  * @type {TerrainProvider}
102
102
  * @readonly
@@ -427,21 +427,6 @@ VoxelBoxShape.prototype.computeOrientedBoundingBoxForSample = function (
427
427
  );
428
428
  };
429
429
 
430
- /**
431
- * Computes an approximate step size for raymarching the root tile of a voxel grid.
432
- * The update function must be called before calling this function.
433
- *
434
- * @param {Cartesian3} dimensions The voxel grid dimensions for a tile.
435
- * @returns {number} The step size.
436
- */
437
- VoxelBoxShape.prototype.computeApproximateStepSize = function (dimensions) {
438
- //>>includeStart('debug', pragmas.debug);
439
- Check.typeOf.object("dimensions", dimensions);
440
- //>>includeEnd('debug');
441
-
442
- return 1.0 / Cartesian3.maximumComponent(dimensions);
443
- };
444
-
445
430
  /**
446
431
  * Defines the minimum bounds of the shape. Corresponds to minimum X, Y, Z.
447
432
  *
@@ -96,9 +96,8 @@ function VoxelCylinderShape() {
96
96
  * @readonly
97
97
  */
98
98
  this.shaderUniforms = {
99
- cylinderUvToRenderBoundsScale: new Cartesian3(),
100
- cylinderUvToRenderBoundsTranslate: new Cartesian3(),
101
- cylinderUvToRenderRadiusMin: 0.0,
99
+ cylinderRenderHeightMinMax: new Cartesian2(),
100
+ cylinderRenderRadiusMinMax: new Cartesian2(),
102
101
  cylinderRenderAngleMinMax: new Cartesian2(),
103
102
  cylinderUvToShapeUvRadius: new Cartesian2(),
104
103
  cylinderUvToShapeUvHeight: new Cartesian2(),
@@ -113,10 +112,7 @@ function VoxelCylinderShape() {
113
112
  */
114
113
  this.shaderDefines = {
115
114
  CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN: undefined,
116
- CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MAX: undefined,
117
115
  CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT: undefined,
118
- CYLINDER_HAS_RENDER_BOUNDS_HEIGHT: undefined,
119
- CYLINDER_HAS_RENDER_BOUNDS_HEIGHT_FLAT: undefined,
120
116
  CYLINDER_HAS_RENDER_BOUNDS_ANGLE: undefined,
121
117
  CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO: undefined,
122
118
  CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF: undefined,
@@ -143,17 +139,6 @@ function VoxelCylinderShape() {
143
139
  }
144
140
 
145
141
  const scratchScale = new Cartesian3();
146
- const scratchBoundsTranslation = new Cartesian3();
147
- const scratchBoundsScale = new Cartesian3();
148
- const scratchBoundsScaleMatrix = new Matrix3();
149
- const scratchTransformLocalToBounds = new Matrix4();
150
- const scratchTransformUvToBounds = new Matrix4();
151
-
152
- const transformUvToLocal = Matrix4.fromRotationTranslation(
153
- Matrix3.fromUniformScale(2.0, new Matrix3()),
154
- new Cartesian3(-1.0, -1.0, -1.0),
155
- new Matrix4()
156
- );
157
142
 
158
143
  /**
159
144
  * Update the shape's state.
@@ -339,11 +324,7 @@ VoxelCylinderShape.prototype.update = function (
339
324
  epsilonAngleDiscontinuity
340
325
  );
341
326
 
342
- const renderIsDefaultMaxRadius = renderMaxRadius === defaultMaxRadius;
343
327
  const renderIsDefaultMinRadius = renderMinRadius === defaultMinRadius;
344
- const renderIsDefaultHeight =
345
- renderMinHeight === defaultMinHeight &&
346
- renderMaxHeight === defaultMaxHeight;
347
328
  const renderIsAngleReversed = renderMaxAngle < renderMinAngle;
348
329
  const renderAngleRange =
349
330
  renderMaxAngle - renderMinAngle + renderIsAngleReversed * defaultAngleRange;
@@ -376,22 +357,16 @@ VoxelCylinderShape.prototype.update = function (
376
357
  shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN"] = true;
377
358
  shaderDefines["CYLINDER_INTERSECTION_INDEX_RADIUS_MIN"] = intersectionCount;
378
359
  intersectionCount += 1;
379
-
380
- shaderUniforms.cylinderUvToRenderRadiusMin =
381
- renderMaxRadius / renderMinRadius;
382
- }
383
- if (!renderIsDefaultMaxRadius) {
384
- shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MAX"] = true;
385
360
  }
361
+ shaderUniforms.cylinderRenderRadiusMinMax = Cartesian2.fromElements(
362
+ renderMinRadius,
363
+ renderMaxRadius,
364
+ shaderUniforms.cylinderRenderRadiusMinMax
365
+ );
366
+
386
367
  if (renderMinRadius === renderMaxRadius) {
387
368
  shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT"] = true;
388
369
  }
389
- if (!renderIsDefaultHeight) {
390
- shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_HEIGHT"] = true;
391
- }
392
- if (renderMinHeight === renderMaxHeight) {
393
- shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_HEIGHT_FLAT"] = true;
394
- }
395
370
  if (!shapeIsDefaultRadius) {
396
371
  shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_RADIUS"] = true;
397
372
 
@@ -442,42 +417,11 @@ VoxelCylinderShape.prototype.update = function (
442
417
  shaderUniforms.cylinderUvToShapeUvHeight
443
418
  );
444
419
  }
445
-
446
- if (!renderIsDefaultMaxRadius || !renderIsDefaultHeight) {
447
- const heightScale = 0.5 * (renderMaxHeight - renderMinHeight);
448
- const scaleLocalToBounds = Cartesian3.fromElements(
449
- 1.0 / renderMaxRadius,
450
- 1.0 / renderMaxRadius,
451
- 1.0 / (heightScale === 0.0 ? 1.0 : heightScale),
452
- scratchBoundsScale
453
- );
454
- // -inverse(scale) * translation // affine inverse
455
- // -inverse(scale) * 0.5 * (minHeight + maxHeight)
456
- const translateLocalToBounds = Cartesian3.fromElements(
457
- 0.0,
458
- 0.0,
459
- -scaleLocalToBounds.z * 0.5 * (renderMinHeight + renderMaxHeight),
460
- scratchBoundsTranslation
461
- );
462
- const transformLocalToBounds = Matrix4.fromRotationTranslation(
463
- Matrix3.fromScale(scaleLocalToBounds, scratchBoundsScaleMatrix),
464
- translateLocalToBounds,
465
- scratchTransformLocalToBounds
466
- );
467
- const transformUvToBounds = Matrix4.multiplyTransformation(
468
- transformLocalToBounds,
469
- transformUvToLocal,
470
- scratchTransformUvToBounds
471
- );
472
- shaderUniforms.cylinderUvToRenderBoundsScale = Matrix4.getScale(
473
- transformUvToBounds,
474
- shaderUniforms.cylinderUvToRenderBoundsScale
475
- );
476
- shaderUniforms.cylinderUvToRenderBoundsTranslate = Matrix4.getTranslation(
477
- transformUvToBounds,
478
- shaderUniforms.cylinderUvToRenderBoundsTranslate
479
- );
480
- }
420
+ shaderUniforms.cylinderRenderHeightMinMax = Cartesian2.fromElements(
421
+ renderMinHeight,
422
+ renderMaxHeight,
423
+ shaderUniforms.cylinderRenderHeightMinMax
424
+ );
481
425
 
482
426
  if (shapeIsAngleReversed) {
483
427
  shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED"] = true;
@@ -501,7 +445,7 @@ VoxelCylinderShape.prototype.update = function (
501
445
  shaderUniforms.cylinderRenderAngleMinMax = Cartesian2.fromElements(
502
446
  renderMinAngle,
503
447
  renderMaxAngle,
504
- shaderUniforms.cylinderAngleMinMax
448
+ shaderUniforms.cylinderRenderAngleMinMax
505
449
  );
506
450
  }
507
451
 
@@ -716,67 +660,6 @@ VoxelCylinderShape.prototype.computeOrientedBoundingBoxForSample = function (
716
660
  );
717
661
  };
718
662
 
719
- const scratchOrientedBoundingBox = new OrientedBoundingBox();
720
- const scratchVoxelScale = new Cartesian3();
721
- const scratchRootScale = new Cartesian3();
722
- const scratchScaleRatio = new Cartesian3();
723
-
724
- /**
725
- * Computes an approximate step size for raymarching the root tile of a voxel grid.
726
- * The update function must be called before calling this function.
727
- *
728
- * @param {Cartesian3} dimensions The voxel grid dimensions for a tile.
729
- * @returns {number} The step size.
730
- */
731
- VoxelCylinderShape.prototype.computeApproximateStepSize = function (
732
- dimensions
733
- ) {
734
- //>>includeStart('debug', pragmas.debug);
735
- Check.typeOf.object("dimensions", dimensions);
736
- //>>includeEnd('debug');
737
-
738
- const shapeTransform = this.shapeTransform;
739
- const minRadius = this._minimumRadius;
740
- const maxRadius = this._maximumRadius;
741
- const minHeight = this._minimumHeight;
742
- const maxHeight = this._maximumHeight;
743
- const minAngle = this._minimumAngle;
744
- const maxAngle = this._maximumAngle;
745
-
746
- const lerpRadius = 1.0 - 1.0 / dimensions.x;
747
- const lerpHeight = 1.0 - 1.0 / dimensions.y;
748
- const lerpAngle = 1.0 - 1.0 / dimensions.z;
749
-
750
- // Compare the size of an outermost cylinder voxel to the total cylinder
751
- const voxelMinimumRadius = CesiumMath.lerp(minRadius, maxRadius, lerpRadius);
752
- const voxelMinimumHeight = CesiumMath.lerp(minHeight, maxHeight, lerpHeight);
753
- const voxelMinimumAngle = CesiumMath.lerp(minAngle, maxAngle, lerpAngle);
754
- const voxelMaximumRadius = maxRadius;
755
- const voxelMaximumHeight = maxHeight;
756
- const voxelMaximumAngle = maxAngle;
757
-
758
- const voxelObb = getCylinderChunkObb(
759
- voxelMinimumRadius,
760
- voxelMaximumRadius,
761
- voxelMinimumHeight,
762
- voxelMaximumHeight,
763
- voxelMinimumAngle,
764
- voxelMaximumAngle,
765
- shapeTransform,
766
- scratchOrientedBoundingBox
767
- );
768
-
769
- const voxelScale = Matrix3.getScale(voxelObb.halfAxes, scratchVoxelScale);
770
- const rootScale = Matrix4.getScale(shapeTransform, scratchRootScale);
771
- const scaleRatio = Cartesian3.divideComponents(
772
- voxelScale,
773
- rootScale,
774
- scratchScaleRatio
775
- );
776
- const stepSize = Cartesian3.minimumComponent(scaleRatio);
777
- return stepSize;
778
- };
779
-
780
663
  /**
781
664
  * Defines the minimum bounds of the shape. Corresponds to minimum radius, height, angle.
782
665
  *