@cesium/engine 23.0.1 → 25.0.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 (398) hide show
  1. package/Build/Workers/{chunk-ZEMJQKHD.js → chunk-35H3UBIO.js} +13 -12
  2. package/Build/Workers/{chunk-PQTSXJBJ.js → chunk-3LSD7OOA.js} +16 -16
  3. package/Build/Workers/{chunk-PUO7BYDY.js → chunk-3RFFPH4M.js} +1 -1
  4. package/Build/Workers/{chunk-PBECJOWF.js → chunk-3TKLDHV3.js} +2 -2
  5. package/Build/Workers/{chunk-TMCTZ5E3.js → chunk-3VDDRF2E.js} +14 -14
  6. package/Build/Workers/{chunk-FKU77FNM.js → chunk-3XY3MVPG.js} +4 -4
  7. package/Build/Workers/{chunk-2OBWHTIC.js → chunk-4GF4MVPY.js} +7 -7
  8. package/Build/Workers/{chunk-JUKGMJX7.js → chunk-4MTRQFJP.js} +3 -2
  9. package/Build/Workers/{chunk-66OWUDO7.js → chunk-4QQXGTCE.js} +8 -8
  10. package/Build/Workers/{chunk-ALTCIHRH.js → chunk-4XXHJI6Y.js} +17 -17
  11. package/Build/Workers/{chunk-K7UTK4OM.js → chunk-5T6QQAJW.js} +3 -2
  12. package/Build/Workers/{chunk-IJ3SUMK3.js → chunk-6SDGQI27.js} +3 -2
  13. package/Build/Workers/{chunk-FXSRA5UG.js → chunk-77RL3MBD.js} +6 -5
  14. package/Build/Workers/{chunk-G6MJ3ZW3.js → chunk-7LSFAEWF.js} +12 -11
  15. package/Build/Workers/{chunk-C6HHBKT5.js → chunk-A7A433MD.js} +5 -5
  16. package/Build/Workers/{chunk-PGZ3B6CB.js → chunk-A7ZBMVFS.js} +14 -14
  17. package/Build/Workers/{chunk-OZYB3AOR.js → chunk-ACFFCHHZ.js} +11 -11
  18. package/Build/Workers/{chunk-DNMASBMH.js → chunk-AEAVLYPS.js} +2 -2
  19. package/Build/Workers/{chunk-VPWYHFQA.js → chunk-AWFZHD2B.js} +4 -4
  20. package/Build/Workers/{chunk-TFPG3ZKW.js → chunk-BTX2NL3P.js} +59 -46
  21. package/Build/Workers/{chunk-TNXOPEIG.js → chunk-BVAIWR7O.js} +12 -12
  22. package/Build/Workers/chunk-CKQP3DSS.js +973 -0
  23. package/Build/Workers/{chunk-N6HRZLS6.js → chunk-CZ23Y3RM.js} +2 -2
  24. package/Build/Workers/{chunk-EIC3VAOZ.js → chunk-DFEI5MAV.js} +7 -7
  25. package/Build/Workers/{chunk-BTP3634E.js → chunk-DH26SNAB.js} +4 -1
  26. package/Build/Workers/{chunk-TXYQNXNW.js → chunk-DYT5NR6P.js} +3 -3
  27. package/Build/Workers/{chunk-O67UP5YO.js → chunk-EZARA5FJ.js} +13 -13
  28. package/Build/Workers/{chunk-YSJRB2UZ.js → chunk-FIBS5S7R.js} +2 -2
  29. package/Build/Workers/{chunk-2M7DKGLW.js → chunk-FVLVVOBQ.js} +10 -10
  30. package/Build/Workers/{chunk-B2VA6IEL.js → chunk-GL7DNVUS.js} +5 -5
  31. package/Build/Workers/{chunk-77DJBHMI.js → chunk-GPIGURCG.js} +59 -32
  32. package/Build/Workers/{chunk-QPXGGVHC.js → chunk-H2A4USJR.js} +10 -10
  33. package/Build/Workers/chunk-HSVQATK2.js +147 -0
  34. package/Build/Workers/{chunk-HXEPZWJN.js → chunk-HVMG6AG4.js} +11 -10
  35. package/Build/Workers/{chunk-H3TVRJLY.js → chunk-I3A6DXYZ.js} +4 -4
  36. package/Build/Workers/{chunk-UEWYSOFD.js → chunk-ITD2IN7N.js} +2 -2
  37. package/Build/Workers/{chunk-CYOPNGPX.js → chunk-J3OFS2RD.js} +12 -12
  38. package/Build/Workers/{chunk-RZX6LOG6.js → chunk-J647NNZW.js} +6 -6
  39. package/Build/Workers/{chunk-GLCPE2BJ.js → chunk-J7KQEKPK.js} +13 -13
  40. package/Build/Workers/{chunk-XPMXRJDD.js → chunk-K6NFIRFB.js} +5 -5
  41. package/Build/Workers/{chunk-CID5SY7L.js → chunk-LH5SF3XV.js} +7 -6
  42. package/Build/Workers/{chunk-UOQB7XQI.js → chunk-ND3NTTOF.js} +713 -435
  43. package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
  44. package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
  45. package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
  46. package/Build/Workers/{chunk-CJ7ZDY77.js → chunk-ST2UWDUU.js} +5 -5
  47. package/Build/Workers/{chunk-YDR5LX5Z.js → chunk-TA777BGS.js} +3 -2
  48. package/Build/Workers/{chunk-U4SWB6TI.js → chunk-TAI4HLII.js} +4 -4
  49. package/Build/Workers/{chunk-VX774SWE.js → chunk-URUCCIPS.js} +6 -6
  50. package/Build/Workers/{chunk-MNSNOONX.js → chunk-VQKLRBIK.js} +7 -7
  51. package/Build/Workers/{chunk-CVAAIRNP.js → chunk-WC57YYBN.js} +2 -2
  52. package/Build/Workers/{chunk-QNABVTTP.js → chunk-WN6P5UDH.js} +12 -12
  53. package/Build/Workers/{chunk-CNLXMOPM.js → chunk-WNN5D4W3.js} +12 -11
  54. package/Build/Workers/{chunk-4JJQRZYL.js → chunk-WTQGE7Q6.js} +17 -17
  55. package/Build/Workers/{chunk-FCJQO4NC.js → chunk-WUBKZFF6.js} +2213 -1349
  56. package/Build/Workers/{chunk-3UQ2YMPP.js → chunk-ZAPOS52G.js} +12 -10
  57. package/Build/Workers/{chunk-LHFC4R7Z.js → chunk-ZCCIIBZT.js} +6 -6
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +175 -118
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +24 -23
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +25 -25
  100. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +12 -12
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +12 -9
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/ArcType.js +6 -1
  112. package/Source/Core/ArticulationStageType.js +5 -1
  113. package/Source/Core/AssociativeArray.js +100 -94
  114. package/Source/Core/BoundingSphere.js +1296 -1300
  115. package/Source/Core/Cartesian2.js +7 -5
  116. package/Source/Core/Cartesian3.js +9 -8
  117. package/Source/Core/Cartesian4.js +8 -6
  118. package/Source/Core/Cartographic.js +257 -249
  119. package/Source/Core/ClockRange.js +6 -1
  120. package/Source/Core/ClockStep.js +6 -1
  121. package/Source/Core/Color.js +846 -835
  122. package/Source/Core/ComponentDatatype.js +4 -1
  123. package/Source/Core/CornerType.js +6 -1
  124. package/Source/Core/Credit.js +121 -124
  125. package/Source/Core/DeveloperError.js +2 -1
  126. package/Source/Core/Ellipsoid.js +637 -660
  127. package/Source/Core/ExtrapolationType.js +6 -1
  128. package/Source/Core/GeocodeType.js +6 -1
  129. package/Source/Core/GeographicProjection.js +74 -74
  130. package/Source/Core/GeographicTilingScheme.js +179 -198
  131. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  132. package/Source/Core/GeometryType.js +7 -1
  133. package/Source/Core/HeightmapEncoding.js +6 -1
  134. package/Source/Core/ITwinPlatform.js +1 -0
  135. package/Source/Core/Iau2006XysData.js +24 -13
  136. package/Source/Core/IndexDatatype.js +3 -1
  137. package/Source/Core/InterpolationType.js +5 -1
  138. package/Source/Core/Intersect.js +6 -1
  139. package/Source/Core/Ion.js +1 -1
  140. package/Source/Core/IonGeocodeProviderType.js +5 -1
  141. package/Source/Core/JulianDate.js +850 -848
  142. package/Source/Core/KeyboardEventModifier.js +6 -1
  143. package/Source/Core/MapProjection.js +39 -44
  144. package/Source/Core/Matrix2.js +906 -893
  145. package/Source/Core/Matrix3.js +1643 -1575
  146. package/Source/Core/Matrix4.js +2903 -2872
  147. package/Source/Core/PixelFormat.js +3 -1
  148. package/Source/Core/PrimitiveType.js +11 -1
  149. package/Source/Core/Ray.js +62 -60
  150. package/Source/Core/Rectangle.js +913 -904
  151. package/Source/Core/ReferenceFrame.js +6 -1
  152. package/Source/Core/RequestScheduler.js +8 -3
  153. package/Source/Core/RequestState.js +6 -1
  154. package/Source/Core/RequestType.js +6 -1
  155. package/Source/Core/S2Cell.js +2 -2
  156. package/Source/Core/ScreenSpaceEventType.js +6 -1
  157. package/Source/Core/TerrainMesh.js +10 -1
  158. package/Source/Core/TerrainPicker.js +1 -0
  159. package/Source/Core/TerrainQuantization.js +6 -1
  160. package/Source/Core/TilingScheme.js +100 -98
  161. package/Source/Core/TimeConstants.js +6 -1
  162. package/Source/Core/TimeStandard.js +6 -1
  163. package/Source/Core/TrackingReferenceFrame.js +6 -1
  164. package/Source/Core/Visibility.js +6 -1
  165. package/Source/Core/VulkanConstants.js +6 -1
  166. package/Source/Core/WallGeometry.js +1 -1
  167. package/Source/Core/WallOutlineGeometry.js +1 -1
  168. package/Source/Core/WebGLConstants.js +6 -1
  169. package/Source/Core/WebMercatorProjection.js +108 -109
  170. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  171. package/Source/Core/WindingOrder.js +3 -1
  172. package/Source/Core/assert.js +27 -0
  173. package/Source/Core/globalTypes.js +4 -0
  174. package/Source/DataSources/CzmlDataSource.js +9 -0
  175. package/Source/DataSources/PathGraphics.js +13 -0
  176. package/Source/DataSources/PathVisualizer.js +330 -18
  177. package/Source/DataSources/StaticGeometryColorBatch.js +7 -2
  178. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +7 -2
  179. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +4 -1
  180. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +4 -1
  181. package/Source/DataSources/StripeOrientation.js +6 -1
  182. package/Source/Renderer/BufferUsage.js +20 -9
  183. package/Source/Renderer/Context.js +2 -29
  184. package/Source/Renderer/DrawCommand.js +435 -403
  185. package/Source/Renderer/MipmapHint.js +5 -1
  186. package/Source/Renderer/Pass.js +7 -1
  187. package/Source/Renderer/PickId.js +44 -0
  188. package/Source/Renderer/PixelDatatype.js +3 -1
  189. package/Source/Renderer/RenderState.js +2 -2
  190. package/Source/Renderer/RenderbufferFormat.js +5 -1
  191. package/Source/Renderer/ShaderDestination.js +4 -1
  192. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  193. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  194. package/Source/Renderer/TextureWrap.js +5 -1
  195. package/Source/Renderer/VertexArray.js +80 -0
  196. package/Source/Scene/AlphaMode.js +5 -1
  197. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  198. package/Source/Scene/ArcGisMapService.js +1 -1
  199. package/Source/Scene/AttributeType.js +3 -1
  200. package/Source/Scene/Axis.js +3 -1
  201. package/Source/Scene/BillboardCollection.js +65 -364
  202. package/Source/Scene/BingMapsStyle.js +6 -1
  203. package/Source/Scene/BlendEquation.js +6 -1
  204. package/Source/Scene/BlendFunction.js +6 -1
  205. package/Source/Scene/BlendOption.js +6 -1
  206. package/Source/Scene/BlendingState.js +6 -1
  207. package/Source/Scene/BufferLoader.js +0 -2
  208. package/Source/Scene/BufferPoint.js +148 -0
  209. package/Source/Scene/BufferPointCollection.js +138 -0
  210. package/Source/Scene/BufferPointMaterial.js +95 -0
  211. package/Source/Scene/BufferPolygon.js +516 -0
  212. package/Source/Scene/BufferPolygonCollection.js +370 -0
  213. package/Source/Scene/BufferPolygonMaterial.js +41 -0
  214. package/Source/Scene/BufferPolyline.js +185 -0
  215. package/Source/Scene/BufferPolylineCollection.js +138 -0
  216. package/Source/Scene/BufferPolylineMaterial.js +93 -0
  217. package/Source/Scene/BufferPrimitive.js +347 -0
  218. package/Source/Scene/BufferPrimitiveCollection.js +818 -0
  219. package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
  220. package/Source/Scene/CameraEventType.js +6 -1
  221. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  222. package/Source/Scene/Cesium3DTileContent.js +5 -1
  223. package/Source/Scene/Cesium3DTileContentFactory.js +9 -0
  224. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  225. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  226. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  227. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  228. package/Source/Scene/Cesium3DTilePass.js +5 -1
  229. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  230. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  231. package/Source/Scene/Cesium3DTileStyle.js +22 -0
  232. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  233. package/Source/Scene/Cesium3DTileset.js +2 -1
  234. package/Source/Scene/ClassificationType.js +3 -1
  235. package/Source/Scene/ClippingPolygonCollection.js +270 -101
  236. package/Source/Scene/CloudType.js +3 -1
  237. package/Source/Scene/ColorBlendMode.js +4 -1
  238. package/Source/Scene/CubeMapPanorama.js +4 -4
  239. package/Source/Scene/CullFace.js +6 -1
  240. package/Source/Scene/DepthFunction.js +6 -1
  241. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  242. package/Source/Scene/EquirectangularPanorama.js +1 -0
  243. package/Source/Scene/ExpressionNodeType.js +6 -1
  244. package/Source/Scene/GaussianSplat3DTileContent.js +40 -46
  245. package/Source/Scene/GaussianSplatPrimitive.js +413 -70
  246. package/Source/Scene/GetFeatureInfoFormat.js +3 -3
  247. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  248. package/Source/Scene/GltfDracoLoader.js +0 -2
  249. package/Source/Scene/GltfImageLoader.js +0 -3
  250. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  251. package/Source/Scene/GltfJsonLoader.js +0 -2
  252. package/Source/Scene/GltfLoader.js +215 -39
  253. package/Source/Scene/GltfLoaderUtil.js +14 -0
  254. package/Source/Scene/GltfSpzLoader.js +109 -2
  255. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  256. package/Source/Scene/GltfTextureLoader.js +0 -2
  257. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  258. package/Source/Scene/HeightReference.js +5 -1
  259. package/Source/Scene/HorizontalOrigin.js +6 -1
  260. package/Source/Scene/ITwinData.js +1 -0
  261. package/Source/Scene/ImageryProvider.js +1 -1
  262. package/Source/Scene/ImageryState.js +6 -1
  263. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  264. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  265. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  266. package/Source/Scene/JobType.js +6 -1
  267. package/Source/Scene/Label.js +32 -0
  268. package/Source/Scene/LabelCollection.js +14 -13
  269. package/Source/Scene/LabelStyle.js +6 -1
  270. package/Source/Scene/MapMode2D.js +6 -1
  271. package/Source/Scene/Material.js +2 -0
  272. package/Source/Scene/Megatexture.js +1 -0
  273. package/Source/Scene/MetadataClassProperty.js +24 -10
  274. package/Source/Scene/MetadataComponentType.js +118 -24
  275. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  276. package/Source/Scene/MetadataSemantic.js +6 -2
  277. package/Source/Scene/MetadataType.js +3 -1
  278. package/Source/Scene/Model/B3dmLoader.js +0 -3
  279. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  280. package/Source/Scene/Model/CustomShaderPipelineStage.js +3 -1
  281. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  282. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +735 -264
  283. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  284. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  285. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  286. package/Source/Scene/Model/I3dmLoader.js +0 -3
  287. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  288. package/Source/Scene/Model/LightingModel.js +5 -1
  289. package/Source/Scene/Model/MaterialPipelineStage.js +331 -3
  290. package/Source/Scene/Model/MetadataPipelineStage.js +3 -3
  291. package/Source/Scene/Model/ModelDrawCommand.js +6 -0
  292. package/Source/Scene/Model/ModelReader.js +475 -4
  293. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  294. package/Source/Scene/Model/ModelType.js +3 -1
  295. package/Source/Scene/Model/ModelUtility.js +3 -1
  296. package/Source/Scene/Model/PntsLoader.js +4 -3
  297. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  298. package/Source/Scene/Model/UniformType.js +5 -1
  299. package/Source/Scene/Model/VaryingType.js +5 -1
  300. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +375 -0
  301. package/Source/Scene/Model/pickModel.js +94 -299
  302. package/Source/Scene/ModelAnimationLoop.js +6 -1
  303. package/Source/Scene/ModelAnimationState.js +6 -1
  304. package/Source/Scene/ModelComponents.js +1639 -1542
  305. package/Source/Scene/PickedMetadataInfo.js +1 -0
  306. package/Source/Scene/PrimitiveState.js +7 -1
  307. package/Source/Scene/QuadtreeOccluders.js +20 -15
  308. package/Source/Scene/QuadtreeTile.js +547 -541
  309. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  310. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  311. package/Source/Scene/ResourceLoader.js +0 -1
  312. package/Source/Scene/ResourceLoaderState.js +7 -1
  313. package/Source/Scene/SceneMode.js +4 -1
  314. package/Source/Scene/ScreenSpaceCameraController.js +13 -0
  315. package/Source/Scene/ShadowMode.js +3 -1
  316. package/Source/Scene/SkyBox.js +17 -8
  317. package/Source/Scene/SplitDirection.js +6 -1
  318. package/Source/Scene/StencilFunction.js +6 -1
  319. package/Source/Scene/StencilOperation.js +6 -1
  320. package/Source/Scene/TerrainState.js +7 -1
  321. package/Source/Scene/TileBoundingRegion.js +1 -1
  322. package/Source/Scene/TileBoundingS2Cell.js +1 -1
  323. package/Source/Scene/TileBoundingSphere.js +1 -1
  324. package/Source/Scene/TileState.js +7 -1
  325. package/Source/Scene/Tonemapper.js +5 -1
  326. package/Source/Scene/TweenCollection.js +7 -0
  327. package/Source/Scene/VectorGltf3DTileContent.js +403 -0
  328. package/Source/Scene/VertexAttributeSemantic.js +17 -1
  329. package/Source/Scene/VerticalOrigin.js +6 -1
  330. package/Source/Scene/VoxelBoxShape.js +12 -6
  331. package/Source/Scene/VoxelContent.js +2 -0
  332. package/Source/Scene/VoxelCylinderShape.js +39 -38
  333. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  334. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  335. package/Source/Scene/VoxelProvider.js +1 -0
  336. package/Source/Scene/VoxelShapeType.js +3 -1
  337. package/Source/Scene/WebMapServiceImageryProvider.js +2 -2
  338. package/Source/Scene/WebMapTileServiceImageryProvider.js +366 -131
  339. package/Source/Scene/parseStructuralMetadata.js +97 -37
  340. package/Source/Scene/renderBufferPointCollection.js +285 -0
  341. package/Source/Scene/renderBufferPolygonCollection.js +339 -0
  342. package/Source/Scene/renderBufferPolylineCollection.js +478 -0
  343. package/Source/Shaders/BillboardCollectionFS.glsl +2 -77
  344. package/Source/Shaders/BillboardCollectionFS.js +2 -77
  345. package/Source/Shaders/BillboardCollectionVS.glsl +2 -60
  346. package/Source/Shaders/BillboardCollectionVS.js +2 -60
  347. package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
  348. package/Source/Shaders/BufferPointMaterialFS.js +29 -0
  349. package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
  350. package/Source/Shaders/BufferPointMaterialVS.js +50 -0
  351. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  352. package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
  353. package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
  354. package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
  355. package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
  356. package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
  357. package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
  358. package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
  359. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  360. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  361. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  362. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  363. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  364. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  365. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  366. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +34 -48
  367. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +34 -49
  368. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
  369. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
  370. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  371. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  372. package/Source/Shaders/Model/ModelFS.glsl +15 -0
  373. package/Source/Shaders/Model/ModelFS.js +15 -0
  374. package/Source/Shaders/Model/ModelVS.glsl +8 -0
  375. package/Source/Shaders/Model/ModelVS.js +8 -0
  376. package/Source/Shaders/PolygonSignedDistanceFS.glsl +64 -33
  377. package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
  378. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +9 -2
  379. package/Source/Shaders/PrimitiveGaussianSplatVS.js +9 -2
  380. package/Source/Shaders/Voxels/VoxelFS.glsl +1 -1
  381. package/Source/Shaders/Voxels/VoxelFS.js +1 -1
  382. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  383. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  384. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  385. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  386. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  387. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  388. package/Source/Widget/CesiumWidget.js +11 -4
  389. package/Source/Workers/decodeDraco.js +3 -0
  390. package/Source/Workers/decodeI3S.js +5 -2
  391. package/index.d.ts +1332 -402
  392. package/index.js +111 -81
  393. package/package.json +3 -3
  394. package/Build/Workers/chunk-54O3AGOA.js +0 -642
  395. package/Build/Workers/chunk-6U5QMZU3.js +0 -940
  396. package/Build/Workers/chunk-HNDE73JK.js +0 -1829
  397. package/Build/Workers/chunk-PAFMAR7A.js +0 -2357
  398. package/Build/Workers/chunk-S53HSRT6.js +0 -114
@@ -0,0 +1,403 @@
1
+ // @ts-check
2
+
3
+ import BufferPoint from "./BufferPoint.js";
4
+ import BufferPointCollection from "./BufferPointCollection.js";
5
+ import BufferPointMaterial from "./BufferPointMaterial.js";
6
+ import BufferPolygon from "./BufferPolygon.js";
7
+ import BufferPolygonCollection from "./BufferPolygonCollection.js";
8
+ import BufferPolygonMaterial from "./BufferPolygonMaterial.js";
9
+ import BufferPolyline from "./BufferPolyline.js";
10
+ import BufferPolylineCollection from "./BufferPolylineCollection.js";
11
+ import BufferPolylineMaterial from "./BufferPolylineMaterial.js";
12
+ import Cesium3DTileStyle from "./Cesium3DTileStyle.js";
13
+ import Color from "../Core/Color.js";
14
+ import Matrix4 from "../Core/Matrix4.js";
15
+ import Model from "./Model/Model.js";
16
+ import ModelUtility from "./Model/ModelUtility.js";
17
+ import Pass from "../Renderer/Pass.js";
18
+ import createVectorTileBuffersFromModelComponents from "./Model/createVectorTileBuffersFromModelComponents.js";
19
+ import defined from "../Core/defined.js";
20
+ import destroyObject from "../Core/destroyObject.js";
21
+ import DeveloperError from "../Core/DeveloperError.js";
22
+
23
+ /** @import BufferPrimitive from "./BufferPrimitive.js"; */
24
+ /** @import BufferPrimitiveCollection from "./BufferPrimitiveCollection.js"; */
25
+ /** @import Cartesian3 from "../Core/Cartesian3.js"; */
26
+ /** @import Cesium3DContentGroup from "./Cesium3DContentGroup.js"; */
27
+ /** @import Cesium3DTile from "./Cesium3DTile.js"; */
28
+ /** @import Cesium3DTileBatchTable from "./Cesium3DTileBatchTable.js"; */
29
+ /** @import Cesium3DTileVectorFeature from "./Cesium3DTileVectorFeature.js";*/
30
+ /** @import Cesium3DTileset from "./Cesium3DTileset.js"; */
31
+ /** @import FrameState from "./FrameState.js"; */
32
+ /** @import ImplicitMetadataView from "./ImplicitMetadataView.js"; */
33
+ /** @import Ray from "../Core/Ray.js"; */
34
+ /** @import Resource from "../Core/Resource.js"; */
35
+
36
+ /** @ignore */
37
+ const point = new BufferPoint();
38
+ /** @ignore */
39
+ const polyline = new BufferPolyline();
40
+ /** @ignore */
41
+ const polygon = new BufferPolygon();
42
+
43
+ /** @ignore */
44
+ const pointMaterial = new BufferPointMaterial();
45
+ /** @ignore */
46
+ const polylineMaterial = new BufferPolylineMaterial();
47
+ /** @ignore */
48
+ const polygonMaterial = new BufferPolygonMaterial();
49
+
50
+ /** @ignore */
51
+ const scratchTileModelMatrix = new Matrix4();
52
+
53
+ /**
54
+ * Vector glTF tile content. This path decodes glTF primitives into vector
55
+ * buffers, then renders with dedicated vector primitives.
56
+ *
57
+ * @ignore
58
+ */
59
+ class VectorGltf3DTileContent {
60
+ /**
61
+ * @param {Cesium3DTileset} tileset
62
+ * @param {Cesium3DTile} tile
63
+ * @param {Resource} resource
64
+ */
65
+ constructor(tileset, tile, resource) {
66
+ /** @type {Cesium3DTileset} */
67
+ this._tileset = tileset;
68
+ /** @type {Cesium3DTile} */
69
+ this._tile = tile;
70
+ /** @type {Resource} */
71
+ this._resource = resource;
72
+
73
+ /** @type {Model} */
74
+ this._model = undefined;
75
+
76
+ /** @type {Array<BufferPrimitiveCollection<BufferPrimitive>>} */
77
+ this._collections = [];
78
+
79
+ /** @type {Array<Matrix4>} */
80
+ this._collectionLocalMatrices = [];
81
+
82
+ /** @type {Map<number, Cesium3DTileVectorFeature>} */
83
+ this._features = new Map();
84
+
85
+ /** @type {ImplicitMetadataView} */
86
+ this._metadata = undefined;
87
+ /** @type {Cesium3DContentGroup} */
88
+ this._group = undefined;
89
+
90
+ /** @type {boolean} */
91
+ this.featurePropertiesDirty = false;
92
+
93
+ /** @type {boolean} */
94
+ this._ready = false;
95
+
96
+ /** @type {Matrix4} */
97
+ this._modelMatrix = Matrix4.clone(Matrix4.IDENTITY);
98
+ }
99
+
100
+ get featuresLength() {
101
+ return this._collections.reduce(
102
+ (acc, collection) => acc + collection.primitiveCount,
103
+ 0,
104
+ );
105
+ }
106
+
107
+ get pointsLength() {
108
+ return this._collections
109
+ .filter((collection) => collection instanceof BufferPointCollection)
110
+ .reduce((acc, collection) => acc + collection.primitiveCount, 0);
111
+ }
112
+
113
+ get trianglesLength() {
114
+ return this._collections.reduce((acc, collection) => {
115
+ if (collection instanceof BufferPolygonCollection) {
116
+ return acc + collection.triangleCount;
117
+ } else if (collection instanceof BufferPolylineCollection) {
118
+ return acc + (collection.vertexCount - collection.primitiveCount) * 2;
119
+ }
120
+ return acc;
121
+ }, 0);
122
+ }
123
+
124
+ get geometryByteLength() {
125
+ return this._collections.reduce((totalByteLength, collection) => {
126
+ return totalByteLength + collection.byteLength;
127
+ }, 0);
128
+ }
129
+
130
+ get texturesByteLength() {
131
+ return 0;
132
+ }
133
+
134
+ get batchTableByteLength() {
135
+ return 0;
136
+ }
137
+
138
+ /** @returns {undefined} */
139
+ get innerContents() {
140
+ return undefined;
141
+ }
142
+
143
+ get ready() {
144
+ return this._ready;
145
+ }
146
+
147
+ get tileset() {
148
+ return this._tileset;
149
+ }
150
+
151
+ get tile() {
152
+ return this._tile;
153
+ }
154
+
155
+ get url() {
156
+ return this._resource.getUrlComponent(true);
157
+ }
158
+
159
+ /** @type {Cesium3DTileBatchTable[]} */
160
+ get batchTables() {
161
+ return this._model._featureTables;
162
+ }
163
+
164
+ /**
165
+ * @type {Cesium3DTileBatchTable}
166
+ * @deprecated See {@link batchTables}.
167
+ */
168
+ get batchTable() {
169
+ throw new DeveloperError("Deprecated: Use `content.batchTables`.");
170
+ }
171
+
172
+ /** @type {ImplicitMetadataView} */
173
+ get metadata() {
174
+ return this._metadata;
175
+ }
176
+
177
+ set metadata(value) {
178
+ this._metadata = value;
179
+ }
180
+
181
+ /** @type {Cesium3DContentGroup} */
182
+ get group() {
183
+ return this._group;
184
+ }
185
+
186
+ set group(value) {
187
+ this._group = value;
188
+ }
189
+
190
+ /**
191
+ * @param {number} featureId
192
+ * @returns {Cesium3DTileVectorFeature}
193
+ */
194
+ getFeature(featureId) {
195
+ return this._features.get(featureId);
196
+ }
197
+
198
+ /**
199
+ * @param {number} featureId
200
+ * @param {string} name
201
+ * @returns {boolean}
202
+ */
203
+ hasProperty(featureId, name) {
204
+ const feature = this.getFeature(featureId);
205
+ return feature ? feature.hasProperty(name) : false;
206
+ }
207
+
208
+ /**
209
+ * @param {boolean} enabled
210
+ * @param {Color} color
211
+ */
212
+ applyDebugSettings(enabled, color) {
213
+ color = enabled ? color : Color.WHITE;
214
+ this.applyStyle(new Cesium3DTileStyle({ color }));
215
+ }
216
+
217
+ /**
218
+ * @param {*} style
219
+ */
220
+ applyStyle(style) {
221
+ const isPointCollection = /** @param {unknown} c */ (c) =>
222
+ c instanceof BufferPointCollection;
223
+ const isPolylineCollection = /** @param {unknown} c */ (c) =>
224
+ c instanceof BufferPolylineCollection;
225
+ const isPolygonCollection = /** @param {unknown} c */ (c) =>
226
+ c instanceof BufferPolygonCollection;
227
+
228
+ for (const collection of this._collections.filter(isPointCollection)) {
229
+ for (let i = 0, il = collection.primitiveCount; i < il; i++) {
230
+ collection.get(i, point);
231
+ const feature = this.getFeature(point.featureId);
232
+
233
+ point.show = style.show?.evaluate(feature) ?? true;
234
+ style.color?.evaluate(feature, pointMaterial.color);
235
+ pointMaterial.size = style.pointSize?.evaluate(feature);
236
+ pointMaterial.outlineWidth = style.pointOutlineWidth?.evaluate(feature);
237
+ style.pointOutlineColor?.evaluate(feature, pointMaterial.outlineColor);
238
+
239
+ point.setMaterial(pointMaterial);
240
+ }
241
+ }
242
+
243
+ for (const collection of this._collections.filter(isPolylineCollection)) {
244
+ for (let i = 0, il = collection.primitiveCount; i < il; i++) {
245
+ collection.get(i, polyline);
246
+ const feature = this.getFeature(polyline.featureId);
247
+
248
+ polyline.show = style.show?.evaluate(feature) ?? true;
249
+ style.color?.evaluate(feature, polylineMaterial.color);
250
+ polylineMaterial.width = style.lineWidth?.evaluate(feature) ?? 1;
251
+
252
+ polyline.setMaterial(polylineMaterial);
253
+ }
254
+ }
255
+
256
+ for (const collection of this._collections.filter(isPolygonCollection)) {
257
+ for (let i = 0, il = collection.primitiveCount; i < il; i++) {
258
+ collection.get(i, polygon);
259
+ const feature = this.getFeature(polygon.featureId);
260
+
261
+ polygon.show = style.show?.evaluate(feature) ?? true;
262
+ style.color?.evaluate(feature, polygonMaterial.color);
263
+
264
+ polygon.setMaterial(polygonMaterial);
265
+ }
266
+ }
267
+ }
268
+
269
+ /**
270
+ * @param {Cesium3DTileset} _tileset
271
+ * @param {FrameState} frameState
272
+ */
273
+ update(_tileset, frameState) {
274
+ if (defined(this._model) && !this._ready) {
275
+ const model = this._model;
276
+ model.modelMatrix = this._tile.computedTransform;
277
+ model.update(frameState);
278
+
279
+ // @ts-expect-error Requires Model conversion to ES6 class.
280
+ if (model.ready) {
281
+ initializeVectorPrimitives(this);
282
+ this._ready = true;
283
+ }
284
+ }
285
+
286
+ Matrix4.multiplyTransformation(
287
+ this._tile.computedTransform,
288
+ this._modelMatrix,
289
+ scratchTileModelMatrix,
290
+ );
291
+
292
+ for (let i = 0; i < this._collections.length; i++) {
293
+ Matrix4.multiplyTransformation(
294
+ scratchTileModelMatrix,
295
+ this._collectionLocalMatrices[i],
296
+ this._collections[i].modelMatrix,
297
+ );
298
+ this._collections[i].update(frameState);
299
+ }
300
+ }
301
+
302
+ /**
303
+ * @param {Ray} _ray
304
+ * @param {FrameState} _frameState
305
+ * @param {Cartesian3|undefined} _result
306
+ * @returns {Cartesian3|undefined}
307
+ */
308
+ pick(_ray, _frameState, _result) {
309
+ return undefined;
310
+ }
311
+
312
+ isDestroyed() {
313
+ return false;
314
+ }
315
+
316
+ destroy() {
317
+ this._model?.destroy();
318
+ this._model = undefined;
319
+ this._collections.forEach((collection) => collection.destroy());
320
+ this._collections.length = 0;
321
+ return destroyObject(this);
322
+ }
323
+
324
+ /**
325
+ * @param {Cesium3DTileset} tileset
326
+ * @param {Cesium3DTile} tile
327
+ * @param {Resource} resource
328
+ * @param {unknown} gltf
329
+ * @returns {Promise<VectorGltf3DTileContent>}
330
+ */
331
+ static async fromGltf(tileset, tile, resource, gltf) {
332
+ const content = new VectorGltf3DTileContent(tileset, tile, resource);
333
+ const modelOptions = makeModelOptions(tileset, tile, content, gltf);
334
+ const model = await Model.fromGltfAsync(modelOptions);
335
+ // @ts-expect-error Requires Model conversion to ES6 class.
336
+ model.show = false;
337
+ content._model = model;
338
+ return content;
339
+ }
340
+ }
341
+
342
+ /**
343
+ * @param {Cesium3DTileset} tileset
344
+ * @param {Cesium3DTile} tile
345
+ * @param {VectorGltf3DTileContent} content
346
+ * @param {unknown} gltf
347
+ * @returns {*}
348
+ * @ignore
349
+ */
350
+ function makeModelOptions(tileset, tile, content, gltf) {
351
+ return {
352
+ gltf: gltf,
353
+ basePath: content._resource,
354
+ cull: false,
355
+ releaseGltfJson: true,
356
+ opaquePass: Pass.CESIUM_3D_TILE,
357
+ modelMatrix: tile.computedTransform,
358
+ upAxis: tileset._modelUpAxis,
359
+ forwardAxis: tileset._modelForwardAxis,
360
+ incrementallyLoadTextures: false,
361
+ content: content,
362
+ // @ts-expect-error Requires Cesium3DTileset conversion to ES6 class.
363
+ featureIdLabel: tileset.featureIdLabel,
364
+ // @ts-expect-error Requires Cesium3DTileset conversion to ES6 class.
365
+ instanceFeatureIdLabel: tileset.instanceFeatureIdLabel,
366
+ projectTo2D: tileset._projectTo2D,
367
+ enablePick: tileset._enablePick,
368
+ enableDebugWireframe: tileset._enableDebugWireframe,
369
+ enableShowOutline: false,
370
+ };
371
+ }
372
+
373
+ /**
374
+ * @param {VectorGltf3DTileContent} content
375
+ * @ignore
376
+ */
377
+ function initializeVectorPrimitives(content) {
378
+ // @ts-expect-error Requires Model conversion to ES6 class.
379
+ const components = content._model.sceneGraph.components;
380
+
381
+ const axisCorrection = ModelUtility.getAxisCorrectionMatrix(
382
+ components.upAxis,
383
+ components.forwardAxis,
384
+ new Matrix4(),
385
+ );
386
+
387
+ Matrix4.multiplyTransformation(
388
+ components.transform,
389
+ axisCorrection,
390
+ content._modelMatrix,
391
+ );
392
+
393
+ const result = createVectorTileBuffersFromModelComponents(
394
+ content,
395
+ components,
396
+ );
397
+
398
+ content._collections = result.collections;
399
+ content._collectionLocalMatrices = result.collectionLocalMatrices;
400
+ content._features = result.features;
401
+ }
402
+
403
+ export default VectorGltf3DTileContent;
@@ -87,6 +87,13 @@ const VertexAttributeSemantic = {
87
87
  * @constant
88
88
  */
89
89
  ROTATION: "KHR_gaussian_splatting:ROTATION",
90
+ /**
91
+ * Per-vertex cumulative distance for line patterning.
92
+ *
93
+ * @type {string}
94
+ * @constant
95
+ */
96
+ CUMULATIVE_DISTANCE: "BENTLEY_materials_line_style:CUMULATIVE_DISTANCE",
90
97
  };
91
98
 
92
99
  function semanticToVariableName(semantic) {
@@ -111,6 +118,8 @@ function semanticToVariableName(semantic) {
111
118
  return "scale";
112
119
  case VertexAttributeSemantic.ROTATION:
113
120
  return "rotation";
121
+ case VertexAttributeSemantic.CUMULATIVE_DISTANCE:
122
+ return "cumulativeDistance";
114
123
  //>>includeStart('debug', pragmas.debug);
115
124
  default:
116
125
  throw new DeveloperError("semantic is not a valid value.");
@@ -136,6 +145,7 @@ VertexAttributeSemantic.hasSetIndex = function (semantic) {
136
145
  case VertexAttributeSemantic.POSITION:
137
146
  case VertexAttributeSemantic.NORMAL:
138
147
  case VertexAttributeSemantic.TANGENT:
148
+ case VertexAttributeSemantic.CUMULATIVE_DISTANCE:
139
149
  return false;
140
150
  case VertexAttributeSemantic.TEXCOORD:
141
151
  case VertexAttributeSemantic.COLOR:
@@ -198,6 +208,8 @@ VertexAttributeSemantic.fromGltfSemantic = function (gltfSemantic) {
198
208
  case "KHR_gaussian_splatting:ROTATION":
199
209
  case "_ROTATION":
200
210
  return VertexAttributeSemantic.ROTATION;
211
+ case "BENTLEY_materials_line_style:CUMULATIVE_DISTANCE":
212
+ return VertexAttributeSemantic.CUMULATIVE_DISTANCE;
201
213
  }
202
214
 
203
215
  return undefined;
@@ -271,6 +283,8 @@ VertexAttributeSemantic.getGlslType = function (semantic) {
271
283
  return "vec3";
272
284
  case VertexAttributeSemantic.ROTATION:
273
285
  return "vec4";
286
+ case VertexAttributeSemantic.CUMULATIVE_DISTANCE:
287
+ return "float";
274
288
  case VertexAttributeSemantic.OPACITY:
275
289
  return "float";
276
290
  //>>includeStart('debug', pragmas.debug);
@@ -302,4 +316,6 @@ VertexAttributeSemantic.getVariableName = function (semantic, setIndex) {
302
316
  return variableName;
303
317
  };
304
318
 
305
- export default Object.freeze(VertexAttributeSemantic);
319
+ Object.freeze(VertexAttributeSemantic);
320
+
321
+ export default VertexAttributeSemantic;
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * The vertical location of an origin relative to an object, e.g., a {@link Billboard}
3
5
  * or {@link Label}. For example, setting the vertical origin to <code>TOP</code>
@@ -46,4 +48,7 @@ const VerticalOrigin = {
46
48
  */
47
49
  TOP: -1,
48
50
  };
49
- export default Object.freeze(VerticalOrigin);
51
+
52
+ Object.freeze(VerticalOrigin);
53
+
54
+ export default VerticalOrigin;
@@ -76,10 +76,16 @@ function VoxelBoxShape() {
76
76
 
77
77
  this._renderBoundPlanes = new VoxelBoundsCollection({ planes: boundPlanes });
78
78
 
79
+ /**
80
+ * UV space transformation translation (JS-only, not a shader uniform)
81
+ * @type {Cartesian3}
82
+ * @private
83
+ */
84
+ this._localToShapeUvTranslate = new Cartesian3();
85
+
79
86
  this._shaderUniforms = {
80
87
  boxEcToXyz: new Matrix3(),
81
88
  boxLocalToShapeUvScale: new Cartesian3(),
82
- boxLocalToShapeUvTranslate: new Cartesian3(),
83
89
  };
84
90
 
85
91
  this._shaderDefines = {
@@ -321,13 +327,13 @@ VoxelBoxShape.prototype.update = function (
321
327
  boundScale(min.z, max.z),
322
328
  shaderUniforms.boxLocalToShapeUvScale,
323
329
  );
324
- shaderUniforms.boxLocalToShapeUvTranslate = Cartesian3.negate(
330
+ this._localToShapeUvTranslate = Cartesian3.negate(
325
331
  Cartesian3.multiplyComponents(
326
332
  boxLocalToShapeUvScale,
327
333
  min,
328
- shaderUniforms.boxLocalToShapeUvTranslate,
334
+ this._localToShapeUvTranslate,
329
335
  ),
330
- shaderUniforms.boxLocalToShapeUvTranslate,
336
+ this._localToShapeUvTranslate,
331
337
  );
332
338
 
333
339
  this._shaderMaximumIntersectionsLength = intersectionCount;
@@ -381,8 +387,8 @@ VoxelBoxShape.prototype.convertLocalToShapeUvSpace = function (
381
387
  Check.typeOf.object("result", result);
382
388
  //>>includeEnd('debug');
383
389
 
384
- const { boxLocalToShapeUvScale, boxLocalToShapeUvTranslate } =
385
- this._shaderUniforms;
390
+ const { boxLocalToShapeUvScale } = this._shaderUniforms;
391
+ const boxLocalToShapeUvTranslate = this._localToShapeUvTranslate;
386
392
 
387
393
  return Cartesian3.add(
388
394
  Cartesian3.multiplyComponents(
@@ -66,6 +66,8 @@ Object.defineProperties(VoxelContent.prototype, {
66
66
  * The metadata for this voxel content.
67
67
  * The metadata is an array of typed arrays, one for each field.
68
68
  * The data for one field is a flattened 3D array ordered by X, then Y, then Z.
69
+ *
70
+ * @memberof VoxelContent.prototype
69
71
  * @type {Int8Array[]|Uint8Array[]|Int16Array[]|Uint16Array[]|Int32Array[]|Uint32Array[]|Float32Array[]|Float64Array[]}
70
72
  * @readonly
71
73
  */
@@ -54,14 +54,20 @@ function VoxelCylinderShape() {
54
54
 
55
55
  this._renderBoundPlanes = new VoxelBoundsCollection({ planes: boundPlanes });
56
56
 
57
+ /**
58
+ * UV space transformation translations (JS-only, not shader uniforms)
59
+ * Components: [radius, angle, height] translation
60
+ * @type {Cartesian3}
61
+ * @private
62
+ */
63
+ this._localToShapeUvTranslate = new Cartesian3();
64
+
57
65
  this._shaderUniforms = {
58
66
  cameraShapePosition: new Cartesian3(),
59
67
  cylinderEcToRadialTangentUp: new Matrix3(),
60
68
  cylinderRenderRadiusMinMax: new Cartesian2(),
61
69
  cylinderRenderAngleMinMax: new Cartesian2(),
62
- cylinderLocalToShapeUvRadius: new Cartesian2(),
63
- cylinderLocalToShapeUvAngle: new Cartesian2(),
64
- cylinderLocalToShapeUvHeight: new Cartesian2(),
70
+ cylinderLocalToShapeUvScale: new Cartesian3(),
65
71
  cylinderShapeUvAngleRangeOrigin: 0.0,
66
72
  };
67
73
 
@@ -359,30 +365,22 @@ VoxelCylinderShape.prototype.update = function (
359
365
  }
360
366
 
361
367
  const radiusRange = maxBounds.x - minBounds.x;
368
+ // Defaults are for the case where radiusRange is zero, to avoid division by zero.
362
369
  let radialScale = 0.0;
363
370
  let radialOffset = 1.0;
364
371
  if (radiusRange !== 0.0) {
365
372
  radialScale = 1.0 / radiusRange;
366
373
  radialOffset = -minBounds.x * radialScale;
367
374
  }
368
- shaderUniforms.cylinderLocalToShapeUvRadius = Cartesian2.fromElements(
369
- radialScale,
370
- radialOffset,
371
- shaderUniforms.cylinderLocalToShapeUvRadius,
372
- );
373
375
 
374
376
  const heightRange = maxBounds.z - minBounds.z; // Default 2.0
377
+ // Defaults are for the case where heightRange is zero, to avoid division by zero.
375
378
  let heightScale = 0.0;
376
379
  let heightOffset = 1.0;
377
380
  if (heightRange !== 0.0) {
378
381
  heightScale = 1.0 / heightRange;
379
382
  heightOffset = -minBounds.z * heightScale;
380
383
  }
381
- shaderUniforms.cylinderLocalToShapeUvHeight = Cartesian2.fromElements(
382
- heightScale,
383
- heightOffset,
384
- shaderUniforms.cylinderLocalToShapeUvHeight,
385
- );
386
384
 
387
385
  if (renderHasAngle) {
388
386
  shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_ANGLE"] = true;
@@ -414,23 +412,31 @@ VoxelCylinderShape.prototype.update = function (
414
412
  const uvAngleRangeOrigin = (uvMaxAngle + 0.5 * uvAngleRangeZero) % 1.0;
415
413
  shaderUniforms.cylinderShapeUvAngleRangeOrigin = uvAngleRangeOrigin;
416
414
 
417
- if (shapeAngleRange <= epsilonAngle) {
418
- shaderUniforms.cylinderLocalToShapeUvAngle = Cartesian2.fromElements(
419
- 0.0,
420
- 1.0,
421
- shaderUniforms.cylinderLocalToShapeUvAngle,
422
- );
423
- } else {
424
- const scale = defaultAngleRange / shapeAngleRange;
415
+ // Defaults are for the case where shapeAngleRange is zero, to avoid division by zero.
416
+ let angleScale = 0.0;
417
+ let angleOffset = 1.0;
418
+ if (shapeAngleRange > epsilonAngle) {
419
+ angleScale = defaultAngleRange / shapeAngleRange;
425
420
  const shiftedMinAngle = uvMinAngle - uvAngleRangeOrigin;
426
- const offset = -scale * (shiftedMinAngle - Math.floor(shiftedMinAngle));
427
- shaderUniforms.cylinderLocalToShapeUvAngle = Cartesian2.fromElements(
428
- scale,
429
- offset,
430
- shaderUniforms.cylinderLocalToShapeUvAngle,
431
- );
421
+ angleOffset = -angleScale * (shiftedMinAngle - Math.floor(shiftedMinAngle));
432
422
  }
433
423
 
424
+ // Store scales in shader uniforms (GPU)
425
+ shaderUniforms.cylinderLocalToShapeUvScale = Cartesian3.fromElements(
426
+ radialScale,
427
+ angleScale,
428
+ heightScale,
429
+ shaderUniforms.cylinderLocalToShapeUvScale,
430
+ );
431
+
432
+ // Store translations in private property (JS-only)
433
+ this._localToShapeUvTranslate = Cartesian3.fromElements(
434
+ radialOffset,
435
+ angleOffset,
436
+ heightOffset,
437
+ this._localToShapeUvTranslate,
438
+ );
439
+
434
440
  this._shaderMaximumIntersectionsLength = intersectionCount;
435
441
 
436
442
  return true;
@@ -523,25 +529,20 @@ VoxelCylinderShape.prototype.convertLocalToShapeUvSpace = function (
523
529
  let angle = Math.atan2(positionLocal.y, positionLocal.x);
524
530
  let height = positionLocal.z;
525
531
 
526
- const {
527
- cylinderLocalToShapeUvRadius,
528
- cylinderLocalToShapeUvAngle,
529
- cylinderShapeUvAngleRangeOrigin,
530
- cylinderLocalToShapeUvHeight,
531
- } = this._shaderUniforms;
532
+ const { cylinderLocalToShapeUvScale, cylinderShapeUvAngleRangeOrigin } =
533
+ this._shaderUniforms;
534
+ const localToShapeUvTranslate = this._localToShapeUvTranslate;
532
535
 
533
- radius =
534
- radius * cylinderLocalToShapeUvRadius.x + cylinderLocalToShapeUvRadius.y;
536
+ radius = radius * cylinderLocalToShapeUvScale.x + localToShapeUvTranslate.x;
535
537
 
536
538
  // Convert angle to a "UV" in [0,1] with 0 defined at the center of the unoccupied space.
537
539
  angle = (angle + Math.PI) / (2.0 * Math.PI);
538
540
  angle -= cylinderShapeUvAngleRangeOrigin;
539
541
  angle = angle - Math.floor(angle);
540
542
  // Scale and shift so [0,1] covers the occupied space.
541
- angle = angle * cylinderLocalToShapeUvAngle.x + cylinderLocalToShapeUvAngle.y;
543
+ angle = angle * cylinderLocalToShapeUvScale.y + localToShapeUvTranslate.y;
542
544
 
543
- height =
544
- height * cylinderLocalToShapeUvHeight.x + cylinderLocalToShapeUvHeight.y;
545
+ height = height * cylinderLocalToShapeUvScale.z + localToShapeUvTranslate.z;
545
546
 
546
547
  return Cartesian3.fromElements(radius, angle, height, result);
547
548
  };