@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
@@ -20,6 +20,7 @@ import TextureWrap from "../Renderer/TextureWrap.js";
20
20
  import ClippingPolygon from "./ClippingPolygon.js";
21
21
  import ComputeCommand from "../Renderer/ComputeCommand.js";
22
22
  import PolygonSignedDistanceFS from "../Shaders/PolygonSignedDistanceFS.js";
23
+ import Pass from "../Renderer/Pass.js";
23
24
 
24
25
  /**
25
26
  * Specifies a set of clipping polygons. Clipping polygons selectively disable rendering in a region
@@ -34,6 +35,7 @@ import PolygonSignedDistanceFS from "../Shaders/PolygonSignedDistanceFS.js";
34
35
  * @param {ClippingPolygon[]} [options.polygons=[]] An array of {@link ClippingPolygon} objects used to selectively disable rendering on the inside of each polygon.
35
36
  * @param {boolean} [options.enabled=true] Determines whether the clipping polygons are active.
36
37
  * @param {boolean} [options.inverse=false] If true, a region will be clipped if it is outside of every polygon in the collection. Otherwise, a region will only be clipped if it is on the inside of any polygon.
38
+ * @param {number} [options.quality=1.0] A scalar that controls the resolution of the signed distance texture used for clipping. Values greater than 1.0 increase quality, values less than 1.0 decrease it. Must be greater than 0.0.
37
39
  *
38
40
  * @example
39
41
  * const positions = Cesium.Cartesian3.fromRadiansArray([
@@ -63,6 +65,8 @@ function ClippingPolygonCollection(options) {
63
65
  this._polygons = [];
64
66
  this._totalPositions = 0;
65
67
 
68
+ this.debugShowDistanceTexture = options.debugShowDistanceTexture ?? false;
69
+
66
70
  /**
67
71
  * If true, clipping will be enabled.
68
72
  *
@@ -81,6 +85,15 @@ function ClippingPolygonCollection(options) {
81
85
  */
82
86
  this.inverse = options.inverse ?? false;
83
87
 
88
+ /**
89
+ * A scalar that controls the resolution of the signed distance texture used for clipping.
90
+ * Values greater than 1.0 increase quality, values less than 1.0 decrease it. Must be greater than 0.0.
91
+ *
92
+ * @type {number}
93
+ * @default 1.0
94
+ */
95
+ this.quality = options.quality ?? 1.0;
96
+
84
97
  /**
85
98
  * An event triggered when a new clipping polygon is added to the collection. Event handlers
86
99
  * are passed the new polygon and the index at which it was added.
@@ -204,8 +217,8 @@ Object.defineProperties(ClippingPolygonCollection.prototype, {
204
217
  pixelsNeededForPolygonPositions: {
205
218
  get: function () {
206
219
  // In an RG FLOAT texture, each polygon position is 2 floats packed to a RG.
207
- // Each polygon is the number of positions of that polygon, followed by the list of positions
208
- return this.totalPositions + this.length;
220
+ // Each polygon has a 1-pixel header + 2 pixels for individual extents + the list of positions
221
+ return this.totalPositions + 3 * this.length;
209
222
  },
210
223
  },
211
224
 
@@ -362,91 +375,160 @@ ClippingPolygonCollection.prototype.remove = function (polygon) {
362
375
  return true;
363
376
  };
364
377
 
365
- const scratchRectangle = new Rectangle();
378
+ /**
379
+ * Computes padded extents for a polygon's bounding rectangle, clamped to valid spherical ranges.
380
+ *
381
+ * @param {Rectangle} extents The original spherical extents to pad.
382
+ * @param {number} padding A multiplier applied to the extents' width and height to determine the padding amount.
383
+ * @param {Rectangle} [result] An optional rectangle to store the result in.
384
+ * @returns {Rectangle} The padded and clamped rectangle.
385
+ *
386
+ * @private
387
+ */
388
+ function computePaddedExtents(extents, padding, result) {
389
+ const height = Math.max(extents.height * padding, 0);
390
+ const width = Math.max(extents.width * padding, 0);
391
+ const paddedExtents = Rectangle.clone(extents, result);
392
+
393
+ // Pad
394
+ paddedExtents.south -= height;
395
+ paddedExtents.west -= width;
396
+ paddedExtents.north += height;
397
+ paddedExtents.east += width;
398
+
399
+ // Clamp
400
+ paddedExtents.south = Math.max(paddedExtents.south, -Math.PI);
401
+ paddedExtents.west = Math.max(paddedExtents.west, -Math.PI);
402
+ paddedExtents.north = Math.min(paddedExtents.north, Math.PI);
403
+ paddedExtents.east = Math.min(paddedExtents.east, Math.PI);
404
+
405
+ return paddedExtents;
406
+ }
407
+
408
+ /**
409
+ * @typedef {object} ExtentsResult
410
+ * @property {Rectangle[]} extentsList The list of merged padded extents, one per group.
411
+ * @property {Map<number, number>} extentsIndexByPolygon A map from polygon index to the index of its group in extentsList.
412
+ * @private
413
+ */
414
+
415
+ /**
416
+ * Groups nearby ClippingPolygons based on their spherical extents. Overlapping extents will be merged
417
+ * into a single encompassing extent. Each Extent will later map into one region in the SignedDistanceTexture (atlas).
418
+ *
419
+ * Definitions:
420
+ * n = number of polygons
421
+ * g = number of resulting extents (merged) (g <= n)
422
+ * absorb = merge two extents into one
423
+ * restart = redo intersection check with previous groups
424
+ *
425
+ * Algorithm:
426
+ * For each polygon we scan existing groups for a first overlap (O(g)),
427
+ * then on each subsequent overlap we absorb the group and restart the
428
+ * inner scan. Each group can be absorbed at most once per polygon, and
429
+ * each restart reduces the group count by one, so the absorb-loop does
430
+ * at most O(g) restarts per polygon. Overall: O(n * g) where g ≤ n,
431
+ * giving O(n²) worst case when all polygons overlap transitively, but
432
+ * typically much better when groups are few and disjoint.
433
+ *
434
+ * Note: Restarts are required because the new merged bounding box might
435
+ * be larger than the two individual that were merged and introduce new
436
+ * collisions. Example:
437
+ *
438
+ * Before merging A and B:
439
+ *
440
+ * ┌─────────┐
441
+ * │ A │
442
+ * │ ┌┼────────┐
443
+ * └─────────┘│ B │
444
+ * ┌────┐ │ │
445
+ * │ C │ └────────┘
446
+ * └────┘
447
+ *
448
+ * A overlaps B ✓
449
+ * A overlaps C ✗
450
+ * B overlaps C ✗
451
+ *
452
+ * After merging A ∪ B into one extent:
453
+ *
454
+ * ┌───────────────────┐
455
+ * │ │
456
+ * │ A ∪ B │
457
+ * ├────┐ │
458
+ * │ C │ │
459
+ * └────┘──────────────┘
460
+ *
461
+ * (A ∪ B) overlaps C ✓ ← new collision!
462
+ *
463
+ * @param {ClippingPolygon[]} polygons The array of clipping polygons to compute extents for.
464
+ * @param {Rectangle[]} polygonExtentsCache An array of pre-computed spherical extents for each polygon, indexed by polygon index.
465
+ * @returns {ExtentsResult} The merged extents and a mapping from polygon indices to their extent group indices.
466
+ *
467
+ * @private
468
+ */
469
+ function getExtents(polygons, polygonExtentsCache) {
470
+ // Pad extents to avoid floating point error when fragment culling at edges.
471
+ const PADDING = 2.5;
366
472
 
367
- // Map the polygons to a list of extents-- Overlapping extents will be merged
368
- // into a single encompassing extent
369
- function getExtents(polygons) {
370
- const extentsList = [];
371
- const polygonIndicesList = [];
473
+ // Each group: { extent: padded Rectangle, polygonIndices: number[] }
474
+ const groups = [];
372
475
 
373
476
  const length = polygons.length;
374
477
  for (let polygonIndex = 0; polygonIndex < length; ++polygonIndex) {
375
- const polygon = polygons[polygonIndex];
376
- const extents = polygon.computeSphericalExtents();
377
-
378
- let height = Math.max(extents.height * 2.5, 0.001);
379
- let width = Math.max(extents.width * 2.5, 0.001);
380
-
381
- // Pad extents to avoid floating point error when fragment culling at edges.
382
- let paddedExtents = Rectangle.clone(extents);
383
- paddedExtents.south -= height;
384
- paddedExtents.west -= width;
385
- paddedExtents.north += height;
386
- paddedExtents.east += width;
387
-
388
- paddedExtents.south = Math.max(paddedExtents.south, -Math.PI);
389
- paddedExtents.west = Math.max(paddedExtents.west, -Math.PI);
390
- paddedExtents.north = Math.min(paddedExtents.north, Math.PI);
391
- paddedExtents.east = Math.min(paddedExtents.east, Math.PI);
392
-
393
- const polygonIndices = [polygonIndex];
394
- for (let i = 0; i < extentsList.length; ++i) {
395
- const e = extentsList[i];
478
+ const paddedExtent = computePaddedExtents(
479
+ polygonExtentsCache[polygonIndex],
480
+ PADDING,
481
+ );
482
+
483
+ // Pass 1: Find the first overlapping group
484
+ let targetIdx = -1;
485
+ for (let g = 0; g < groups.length; ++g) {
396
486
  if (
397
- defined(e) &&
398
- defined(Rectangle.simpleIntersection(e, paddedExtents)) &&
399
- !Rectangle.equals(e, paddedExtents)
487
+ defined(Rectangle.simpleIntersection(groups[g].extent, paddedExtent))
400
488
  ) {
401
- const intersectingPolygons = polygonIndicesList[i];
402
- polygonIndices.push(...intersectingPolygons);
403
- intersectingPolygons.reduce(
404
- (extents, p) =>
405
- Rectangle.union(
406
- polygons[p].computeSphericalExtents(scratchRectangle),
407
- extents,
408
- extents,
409
- ),
410
- extents,
411
- );
412
-
413
- extentsList[i] = undefined;
414
- polygonIndicesList[i] = undefined;
415
-
416
- height = Math.max(extents.height * 2.5, 0.001);
417
- width = Math.max(extents.width * 2.5, 0.001);
418
-
419
- paddedExtents = Rectangle.clone(extents, paddedExtents);
420
- paddedExtents.south -= height;
421
- paddedExtents.west -= width;
422
- paddedExtents.north += height;
423
- paddedExtents.east += width;
424
-
425
- paddedExtents.south = Math.max(paddedExtents.south, -Math.PI);
426
- paddedExtents.west = Math.max(paddedExtents.west, -Math.PI);
427
- paddedExtents.north = Math.min(paddedExtents.north, Math.PI);
428
- paddedExtents.east = Math.min(paddedExtents.east, Math.PI);
429
-
430
- // Reiterate through the extents list until there are no more intersections
431
- i = -1;
489
+ targetIdx = g;
490
+ break;
432
491
  }
433
492
  }
434
493
 
435
- extentsList.push(paddedExtents);
436
- polygonIndicesList.push(polygonIndices);
494
+ if (targetIdx === -1) {
495
+ // No overlap — start a new group
496
+ groups.push({ extent: paddedExtent, polygonIndices: [polygonIndex] });
497
+ } else {
498
+ // Overlap - Merge the polygon into the target group
499
+ const target = groups[targetIdx];
500
+ target.polygonIndices.push(polygonIndex);
501
+ Rectangle.union(target.extent, paddedExtent, target.extent);
502
+
503
+ // Pass 2: Absorb all other groups that overlap the (growing) target
504
+ // extent. After each absorption the target grows, so restart the scan
505
+ // to catch groups that now transitively overlap.
506
+ for (let g = 0; g < groups.length; ++g) {
507
+ if (g === targetIdx) {
508
+ continue;
509
+ }
510
+ if (
511
+ defined(Rectangle.simpleIntersection(groups[g].extent, target.extent))
512
+ ) {
513
+ target.polygonIndices.push(...groups[g].polygonIndices);
514
+ Rectangle.union(target.extent, groups[g].extent, target.extent);
515
+ groups.splice(g, 1);
516
+ if (g < targetIdx) {
517
+ targetIdx--;
518
+ }
519
+ g = -1; // restart (loop increment brings it to 0)
520
+ }
521
+ }
522
+ }
437
523
  }
438
524
 
525
+ const extentsList = groups.map((g) => g.extent);
439
526
  const extentsIndexByPolygon = new Map();
440
- polygonIndicesList
441
- .filter(defined)
442
- .forEach((polygonIndices, e) =>
443
- polygonIndices.forEach((p) => extentsIndexByPolygon.set(p, e)),
444
- );
527
+ groups.forEach((g, extentIndex) =>
528
+ g.polygonIndices.forEach((p) => extentsIndexByPolygon.set(p, extentIndex)),
529
+ );
445
530
 
446
- return {
447
- extentsList: extentsList.filter(defined),
448
- extentsIndexByPolygon: extentsIndexByPolygon,
449
- };
531
+ return { extentsList, extentsIndexByPolygon };
450
532
  }
451
533
 
452
534
  /**
@@ -471,15 +553,52 @@ function packPolygonsAsFloats(clippingPolygonCollection) {
471
553
  const extentsFloat32View = clippingPolygonCollection._extentsFloat32View;
472
554
  const polygons = clippingPolygonCollection._polygons;
473
555
 
474
- const { extentsList, extentsIndexByPolygon } = getExtents(polygons);
556
+ /**
557
+ * Pre-calculate all polygon spherical extents as it an expensive operation
558
+ * @type {ReadonlyArray<Rectangle>}
559
+ * */
560
+ const polygonExtentsCache = polygons.map((polygon) =>
561
+ polygon.computeSphericalExtents(),
562
+ );
563
+
564
+ const { extentsList, extentsIndexByPolygon } = getExtents(
565
+ polygons,
566
+ polygonExtentsCache,
567
+ );
568
+
569
+ // Polygons are packed sequentially (ordered by extentsIndex) into polygonsFloat32View as follows:
570
+ // For each polygon:
571
+ // [0] vertexCount - the number of vertices in the polygon
572
+ // [1] extentsIndex - index into the extents texture for this polygon's bounding rectangle
573
+ // [2] south - southern boundary of the individual polygon extent (radians)
574
+ // [3] west - western boundary of the individual polygon extent (radians)
575
+ // [4] latitudeRange - (north - south) for the individual polygon extent
576
+ // [5] longitudeRange - (east - west) for the individual polygon extent
577
+ // [6..6+2*vertexCount-1] pairs of (latitude, longitude) for each vertex,
578
+ // computed as fastApproximateAtan2 values to match the shader
579
+
580
+ // Sort polygon indices by extentsIndex so polygons sharing the same extent are packed together
581
+ // Can enable optimizations in the shader
582
+ const sortedPolygonIndices = Array.from(polygons.keys()).sort(
583
+ (a, b) => extentsIndexByPolygon.get(a) - extentsIndexByPolygon.get(b),
584
+ );
475
585
 
476
586
  let floatIndex = 0;
477
- for (const [polygonIndex, polygon] of polygons.entries()) {
587
+ for (const polygonIndex of sortedPolygonIndices) {
588
+ const polygon = polygons[polygonIndex];
478
589
  // Pack the length of the polygon into the polygon texture array buffer
479
590
  const length = polygon.length;
480
591
  polygonsFloat32View[floatIndex++] = length;
481
592
  polygonsFloat32View[floatIndex++] = extentsIndexByPolygon.get(polygonIndex);
482
593
 
594
+ // Pack the individual polygon extent
595
+ const polygonExtent = polygonExtentsCache[polygonIndex];
596
+ polygonsFloat32View[floatIndex++] = polygonExtent.south;
597
+ polygonsFloat32View[floatIndex++] = polygonExtent.west;
598
+ polygonsFloat32View[floatIndex++] =
599
+ polygonExtent.north - polygonExtent.south;
600
+ polygonsFloat32View[floatIndex++] = polygonExtent.east - polygonExtent.west;
601
+
483
602
  // Pack the polygon positions into the polygon texture array buffer
484
603
  for (let i = 0; i < length; ++i) {
485
604
  const spherePoint = polygon.positions[i];
@@ -502,7 +621,12 @@ function packPolygonsAsFloats(clippingPolygonCollection) {
502
621
  }
503
622
  }
504
623
 
505
- // Pack extents
624
+ // Extents are packed sequentially into extentsFloat32View as follows:
625
+ // For each extent (maps to one RGBA pixel in the extents texture):
626
+ // [0] south - the southern boundary of the bounding rectangle (radians)
627
+ // [1] west - the western boundary of the bounding rectangle (radians)
628
+ // [2] latitudeRangeInverse - 1.0 / (north - south)
629
+ // [3] longitudeRangeInverse - 1.0 / (east - west)
506
630
  let extentsFloatIndex = 0;
507
631
  for (const extents of extentsList) {
508
632
  const longitudeRangeInverse = 1.0 / (extents.east - extents.west);
@@ -536,6 +660,16 @@ ClippingPolygonCollection.prototype.update = function (frameState) {
536
660
  );
537
661
  }
538
662
 
663
+ if (this.debugShowDistanceTexture && defined(this._signedDistanceTexture)) {
664
+ if (!defined(this.debugCommand)) {
665
+ this.debugCommand = createDebugCommand(
666
+ this._signedDistanceTexture,
667
+ frameState.context,
668
+ );
669
+ }
670
+ frameState.commandList.push(this.debugCommand);
671
+ }
672
+
539
673
  // It'd be expensive to validate any individual position has changed. Instead verify if the list of polygon positions has had elements added or removed, which should be good enough for most cases.
540
674
  const totalPositions = this._polygons.reduce(
541
675
  (totalPositions, polygon) => totalPositions + polygon.length,
@@ -685,6 +819,35 @@ ClippingPolygonCollection.prototype.update = function (frameState) {
685
819
  this._signedDistanceComputeCommand = createSignedDistanceTextureCommand(this);
686
820
  };
687
821
 
822
+ function createDebugCommand(texture, context) {
823
+ const fs =
824
+ "uniform highp sampler2D billboard_texture; \n" +
825
+ "in vec2 v_textureCoordinates; \n" +
826
+ "float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { \n" +
827
+ " float signedDistance = texture(clippingDistance, uv).r; \n" +
828
+ " return (signedDistance - 0.5) * 2.0; \n" +
829
+ "} \n" +
830
+ "void main() \n" +
831
+ "{ \n" +
832
+ " float dist = texture(billboard_texture, v_textureCoordinates).r; \n" +
833
+ " if (dist > 0.5) { \n" +
834
+ " out_FragColor = vec4(dist, 0.0, 0.0, 1.0); \n" + // outside
835
+ " } else {\n" +
836
+ " out_FragColor = vec4(0.0, dist, 0.0, 1.0); \n" + // inside
837
+ " } \n" +
838
+ "} \n";
839
+
840
+ const drawCommand = context.createViewportQuadCommand(fs, {
841
+ uniformMap: {
842
+ billboard_texture: function () {
843
+ return texture;
844
+ },
845
+ },
846
+ });
847
+ drawCommand.pass = Pass.OVERLAY;
848
+ return drawCommand;
849
+ }
850
+
688
851
  /**
689
852
  * Called when {@link Viewer} or {@link CesiumWidget} render the scene to
690
853
  * build the resources for clipping polygons.
@@ -731,6 +894,7 @@ function createSignedDistanceTextureCommand(collection) {
731
894
 
732
895
  const scratchRectangleTile = new Rectangle();
733
896
  const scratchRectangleIntersection = new Rectangle();
897
+ const scratchRectanglePolygon = new Rectangle();
734
898
  /**
735
899
  * Determines the type intersection with the polygons of this ClippingPolygonCollection instance and the specified {@link TileBoundingVolume}.
736
900
  * @private
@@ -750,30 +914,33 @@ ClippingPolygonCollection.prototype.computeIntersectionWithBoundingVolume =
750
914
  intersection = Intersect.INSIDE;
751
915
  }
752
916
 
917
+ let tileBoundingRectangle = tileBoundingVolume.rectangle;
918
+ if (
919
+ !defined(tileBoundingRectangle) &&
920
+ defined(tileBoundingVolume.boundingVolume?.computeCorners)
921
+ ) {
922
+ const points = tileBoundingVolume.boundingVolume.computeCorners();
923
+ tileBoundingRectangle = Rectangle.fromCartesianArray(
924
+ points,
925
+ ellipsoid,
926
+ scratchRectangleTile,
927
+ );
928
+ }
929
+
930
+ if (!defined(tileBoundingRectangle)) {
931
+ tileBoundingRectangle = Rectangle.fromBoundingSphere(
932
+ tileBoundingVolume.boundingSphere,
933
+ ellipsoid,
934
+ scratchRectangleTile,
935
+ );
936
+ }
937
+
753
938
  for (let i = 0; i < length; ++i) {
754
939
  const polygon = polygons[i];
755
940
 
756
- const polygonBoundingRectangle = polygon.computeRectangle();
757
- let tileBoundingRectangle = tileBoundingVolume.rectangle;
758
- if (
759
- !defined(tileBoundingRectangle) &&
760
- defined(tileBoundingVolume.boundingVolume?.computeCorners)
761
- ) {
762
- const points = tileBoundingVolume.boundingVolume.computeCorners();
763
- tileBoundingRectangle = Rectangle.fromCartesianArray(
764
- points,
765
- ellipsoid,
766
- scratchRectangleTile,
767
- );
768
- }
769
-
770
- if (!defined(tileBoundingRectangle)) {
771
- tileBoundingRectangle = Rectangle.fromBoundingSphere(
772
- tileBoundingVolume.boundingSphere,
773
- ellipsoid,
774
- scratchRectangleTile,
775
- );
776
- }
941
+ const polygonBoundingRectangle = polygon.computeRectangle(
942
+ scratchRectanglePolygon,
943
+ );
777
944
 
778
945
  const result = Rectangle.simpleIntersection(
779
946
  tileBoundingRectangle,
@@ -782,7 +949,7 @@ ClippingPolygonCollection.prototype.computeIntersectionWithBoundingVolume =
782
949
  );
783
950
 
784
951
  if (defined(result)) {
785
- intersection = Intersect.INTERSECTING;
952
+ return Intersect.INTERSECTING;
786
953
  }
787
954
  }
788
955
 
@@ -885,8 +1052,10 @@ ClippingPolygonCollection.getClippingDistanceTextureResolution = function (
885
1052
  return result;
886
1053
  }
887
1054
 
888
- result.x = Math.min(ContextLimits.maximumTextureSize, 4096);
889
- result.y = Math.min(ContextLimits.maximumTextureSize, 4096);
1055
+ const quality = clippingPolygonCollection.quality;
1056
+ const baseSize = Math.max(128, Math.ceil(4096 * quality));
1057
+ result.x = Math.min(ContextLimits.maximumTextureSize, baseSize);
1058
+ result.y = Math.min(ContextLimits.maximumTextureSize, baseSize);
890
1059
 
891
1060
  return result;
892
1061
  };
@@ -30,4 +30,6 @@ CloudType.validate = function (cloudType) {
30
30
  return cloudType === CloudType.CUMULUS;
31
31
  };
32
32
 
33
- export default Object.freeze(CloudType);
33
+ Object.freeze(CloudType);
34
+
35
+ export default CloudType;
@@ -30,4 +30,7 @@ ColorBlendMode.getColorBlend = function (colorBlendMode, colorBlendAmount) {
30
30
  return CesiumMath.clamp(colorBlendAmount, CesiumMath.EPSILON4, 1.0);
31
31
  }
32
32
  };
33
- export default Object.freeze(ColorBlendMode);
33
+
34
+ Object.freeze(ColorBlendMode);
35
+
36
+ export default ColorBlendMode;
@@ -29,7 +29,7 @@ import Credit from "../Core/Credit.js";
29
29
  * Initialization options for the CubeMapPanorama constructor
30
30
  *
31
31
  * @property {object} [options.sources] The source URL or <code>Image</code> object for each of the six cube map faces. See the example below.
32
- * @property {Matrix4} [options.transform] A 4x4 transformation matrix that defines the panorama’s position and orientation
32
+ * @property {Matrix3} [options.transform] A 3x3 transformation matrix that defines the panorama’s orientation. If not specified, the default orientation is defined using the True Equator Mean Equinox (TEME) axes.
33
33
  * @property {boolean} [options.show=true] Determines if this primitive will be shown.
34
34
  * @property {Credit|string} [options.credit] A credit for the panorama, which is displayed on the canvas.
35
35
  *
@@ -86,7 +86,7 @@ function CubeMapPanorama(options) {
86
86
  this.sources = options.sources;
87
87
  this._sources = undefined;
88
88
 
89
- this._transform = options.transform ?? undefined;
89
+ this._transform = options.transform;
90
90
 
91
91
  /**
92
92
  * Determines if the cube map panorama will be shown.
@@ -122,9 +122,9 @@ function CubeMapPanorama(options) {
122
122
 
123
123
  Object.defineProperties(CubeMapPanorama.prototype, {
124
124
  /**
125
- * Gets the transform of the panorama.
125
+ * Gets the transform of the panorama. If undefined, the default orientation uses the True Equator Mean Equinox (TEME) axes.
126
126
  * @memberof CubeMapPanorama.prototype
127
- * @type {Matrix4}
127
+ * @type {Matrix3}
128
128
  * @readonly
129
129
  */
130
130
  transform: {
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  import WebGLConstants from "../Core/WebGLConstants.js";
2
4
 
3
5
  /**
@@ -30,4 +32,7 @@ const CullFace = {
30
32
  */
31
33
  FRONT_AND_BACK: WebGLConstants.FRONT_AND_BACK,
32
34
  };
33
- export default Object.freeze(CullFace);
35
+
36
+ Object.freeze(CullFace);
37
+
38
+ export default CullFace;
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  import WebGLConstants from "../Core/WebGLConstants.js";
2
4
 
3
5
  /**
@@ -70,4 +72,7 @@ const DepthFunction = {
70
72
  */
71
73
  ALWAYS: WebGLConstants.ALWAYS,
72
74
  };
73
- export default Object.freeze(DepthFunction);
75
+
76
+ Object.freeze(DepthFunction);
77
+
78
+ export default DepthFunction;
@@ -53,4 +53,6 @@ DynamicAtmosphereLightingType.fromGlobeFlags = function (globe) {
53
53
  return DynamicAtmosphereLightingType.SCENE_LIGHT;
54
54
  };
55
55
 
56
- export default Object.freeze(DynamicAtmosphereLightingType);
56
+ Object.freeze(DynamicAtmosphereLightingType);
57
+
58
+ export default DynamicAtmosphereLightingType;
@@ -126,6 +126,7 @@ function EquirectangularPanorama(options) {
126
126
  material: equirectangularMaterial,
127
127
  closed: true,
128
128
  faceForward: false,
129
+ flat: true,
129
130
  translucent: false,
130
131
  renderState: {
131
132
  cull: {
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * @private
3
5
  */
@@ -22,4 +24,7 @@ const ExpressionNodeType = {
22
24
  LITERAL_UNDEFINED: 17,
23
25
  BUILTIN_VARIABLE: 18,
24
26
  };
25
- export default Object.freeze(ExpressionNodeType);
27
+
28
+ Object.freeze(ExpressionNodeType);
29
+
30
+ export default ExpressionNodeType;