@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,478 @@
1
+ // @ts-check
2
+
3
+ import defined from "../Core/defined.js";
4
+ import Cartesian3 from "../Core/Cartesian3.js";
5
+ import Color from "../Core/Color.js";
6
+ import BufferPolyline from "./BufferPolyline.js";
7
+ import Buffer from "../Renderer/Buffer.js";
8
+ import BufferUsage from "../Renderer/BufferUsage.js";
9
+ import VertexArray from "../Renderer/VertexArray.js";
10
+ import ComponentDatatype from "../Core/ComponentDatatype.js";
11
+ import RenderState from "../Renderer/RenderState.js";
12
+ import BlendingState from "./BlendingState.js";
13
+ import ShaderSource from "../Renderer/ShaderSource.js";
14
+ import ShaderProgram from "../Renderer/ShaderProgram.js";
15
+ import DrawCommand from "../Renderer/DrawCommand.js";
16
+ import Pass from "../Renderer/Pass.js";
17
+ import PrimitiveType from "../Core/PrimitiveType.js";
18
+ import BufferPolylineMaterialVS from "../Shaders/BufferPolylineMaterialVS.js";
19
+ import BufferPolylineMaterialFS from "../Shaders/BufferPolylineMaterialFS.js";
20
+ import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
21
+ import AttributeCompression from "../Core/AttributeCompression.js";
22
+ import IndexDatatype from "../Core/IndexDatatype.js";
23
+ import PolylineCommon from "../Shaders/PolylineCommon.js";
24
+ import BufferPolylineMaterial from "./BufferPolylineMaterial.js";
25
+
26
+ /** @import FrameState from "./FrameState.js"; */
27
+ /** @import BufferPolylineCollection from "./BufferPolylineCollection.js"; */
28
+ /** @import {TypedArray} from "../Core/globalTypes.js"; */
29
+
30
+ /**
31
+ * TODO(PR#13211): Need 'keyof' syntax to avoid duplicating attribute names.
32
+ * @typedef {'positionHigh' | 'positionLow' | 'prevPositionHigh' | 'prevPositionLow' | 'nextPositionHigh' | 'nextPositionLow' | 'pickColor' | 'showColorWidthAndTexCoord'} BufferPolylineAttribute
33
+ * @ignore
34
+ */
35
+
36
+ /**
37
+ * @type {Record<BufferPolylineAttribute, number>}
38
+ * @ignore
39
+ */
40
+ const BufferPolylineAttributeLocations = {
41
+ positionHigh: 0,
42
+ positionLow: 1,
43
+ prevPositionHigh: 2,
44
+ prevPositionLow: 3,
45
+ nextPositionHigh: 4,
46
+ nextPositionLow: 5,
47
+ pickColor: 6,
48
+ showColorWidthAndTexCoord: 7,
49
+ };
50
+
51
+ /**
52
+ * @typedef {object} BufferPolylineRenderContext
53
+ * @property {VertexArray} [vertexArray]
54
+ * @property {Record<BufferPolylineAttribute, TypedArray>} [attributeArrays]
55
+ * @property {TypedArray} [indexArray]
56
+ * @property {RenderState} [renderState]
57
+ * @property {ShaderProgram} [shaderProgram]
58
+ * @property {DrawCommand} [command]
59
+ * @property {Function} destroy
60
+ * @ignore
61
+ */
62
+
63
+ // Scratch variables.
64
+ const polyline = new BufferPolyline();
65
+ const material = new BufferPolylineMaterial();
66
+ const pickColor = new Color();
67
+ const cartesian = new Cartesian3();
68
+ const prevCartesian = new Cartesian3();
69
+ const nextCartesian = new Cartesian3();
70
+ const cartesianEnc = new EncodedCartesian3();
71
+ const prevCartesianEnc = new EncodedCartesian3();
72
+ const nextCartesianEnc = new EncodedCartesian3();
73
+
74
+ /**
75
+ * Renders line segments as quads, each composed of two triangles. Writes each
76
+ * vertex twice, extruding the pairs in opposing directions outward.
77
+ *
78
+ * Tips:
79
+ * - # segments in polyline primitive = vertexCount - 1
80
+ * - # segments in collection = vertexCount - primitiveCount
81
+ * - # vertices rendered = vertexCount * 2
82
+ * - # indices = segmentCount * 6
83
+ *
84
+ * 0 - 2 - 4 - 6 - 8
85
+ * | \ | \ | \ | \ | ...
86
+ * 1 - 3 - 5 - 7 - 9
87
+ *
88
+ * @param {BufferPolylineCollection} collection
89
+ * @param {FrameState} frameState
90
+ * @param {BufferPolylineRenderContext} [renderContext]
91
+ * @returns {BufferPolylineRenderContext}
92
+ * @ignore
93
+ */
94
+ function renderBufferPolylineCollection(collection, frameState, renderContext) {
95
+ const context = frameState.context;
96
+ renderContext = renderContext || { destroy: destroyRenderContext };
97
+
98
+ if (
99
+ !defined(renderContext.attributeArrays) ||
100
+ !defined(renderContext.indexArray)
101
+ ) {
102
+ // Number of primitives can only increase, which _decreases_ remaining
103
+ // segment capacity: use `primitiveCount` here, not `primitiveCountMax`.
104
+ const segmentCountMax =
105
+ collection.vertexCountMax - collection.primitiveCount;
106
+ const vertexCountMax = collection.vertexCountMax * 2;
107
+
108
+ // @ts-expect-error https://github.com/CesiumGS/cesium/issues/13420
109
+ renderContext.indexArray = IndexDatatype.createTypedArray(
110
+ vertexCountMax,
111
+ segmentCountMax * 6,
112
+ );
113
+
114
+ renderContext.attributeArrays = {
115
+ positionHigh: new Float32Array(vertexCountMax * 3),
116
+ positionLow: new Float32Array(vertexCountMax * 3),
117
+ prevPositionHigh: new Float32Array(vertexCountMax * 3),
118
+ prevPositionLow: new Float32Array(vertexCountMax * 3),
119
+ nextPositionHigh: new Float32Array(vertexCountMax * 3),
120
+ nextPositionLow: new Float32Array(vertexCountMax * 3),
121
+ pickColor: new Uint8Array(vertexCountMax * 4),
122
+ showColorWidthAndTexCoord: new Float32Array(vertexCountMax * 4),
123
+ };
124
+ }
125
+
126
+ if (collection._dirtyCount > 0) {
127
+ const { _dirtyOffset, _dirtyCount } = collection;
128
+ const { attributeArrays } = renderContext;
129
+
130
+ const indexArray = renderContext.indexArray;
131
+ const positionHighArray = attributeArrays.positionHigh;
132
+ const positionLowArray = attributeArrays.positionLow;
133
+ const prevPositionHighArray = attributeArrays.prevPositionHigh;
134
+ const prevPositionLowArray = attributeArrays.prevPositionLow;
135
+ const nextPositionHighArray = attributeArrays.nextPositionHigh;
136
+ const nextPositionLowArray = attributeArrays.nextPositionLow;
137
+ const pickColorArray = attributeArrays.pickColor;
138
+ const showColorWidthAndTexCoordArray =
139
+ attributeArrays.showColorWidthAndTexCoord;
140
+
141
+ for (let i = _dirtyOffset, il = _dirtyOffset + _dirtyCount; i < il; i++) {
142
+ collection.get(i, polyline);
143
+
144
+ if (!polyline._dirty) {
145
+ continue;
146
+ }
147
+
148
+ const cartesianArray = polyline.getPositions();
149
+ polyline.getMaterial(material);
150
+ const encodedColor = AttributeCompression.encodeRGB8(material.color);
151
+ Color.fromRgba(polyline._pickId, pickColor);
152
+ const show = polyline.show;
153
+
154
+ let vOffset = polyline.vertexOffset * 2; // vertex offset
155
+ let iOffset = (polyline.vertexOffset - i) * 6; // index offset
156
+
157
+ for (let j = 0, jl = polyline.vertexCount; j < jl; j++) {
158
+ const isFirstSegment = j === 0;
159
+ const isLastSegment = j === jl - 1;
160
+
161
+ // For first/last vertices, infer missing vertices by mirroring the segment.
162
+ // @ts-expect-error TODO(tsd-jsdoc): See https://github.com/CesiumGS/cesium/pull/13302.
163
+ Cartesian3.fromArray(cartesianArray, j * 3, cartesian);
164
+ if (isFirstSegment) {
165
+ // @ts-expect-error TODO(tsd-jsdoc): See https://github.com/CesiumGS/cesium/pull/13302.
166
+ Cartesian3.fromArray(cartesianArray, (j + 1) * 3, nextCartesian);
167
+ Cartesian3.subtract(cartesian, nextCartesian, prevCartesian);
168
+ Cartesian3.add(cartesian, prevCartesian, prevCartesian);
169
+ } else if (isLastSegment) {
170
+ // @ts-expect-error TODO(tsd-jsdoc): See https://github.com/CesiumGS/cesium/pull/13302.
171
+ Cartesian3.fromArray(cartesianArray, (j - 1) * 3, prevCartesian);
172
+ Cartesian3.subtract(cartesian, prevCartesian, nextCartesian);
173
+ Cartesian3.add(cartesian, nextCartesian, nextCartesian);
174
+ } else {
175
+ // @ts-expect-error TODO(tsd-jsdoc): See https://github.com/CesiumGS/cesium/pull/13302.
176
+ Cartesian3.fromArray(cartesianArray, (j - 1) * 3, prevCartesian);
177
+ // @ts-expect-error TODO(tsd-jsdoc): See https://github.com/CesiumGS/cesium/pull/13302.
178
+ Cartesian3.fromArray(cartesianArray, (j + 1) * 3, nextCartesian);
179
+ }
180
+
181
+ // For each segment, draw two triangles.
182
+ if (!isLastSegment) {
183
+ indexArray[iOffset] = vOffset;
184
+ indexArray[iOffset + 1] = vOffset + 1;
185
+ indexArray[iOffset + 2] = vOffset + 2;
186
+
187
+ indexArray[iOffset + 3] = vOffset + 2;
188
+ indexArray[iOffset + 4] = vOffset + 1;
189
+ indexArray[iOffset + 5] = vOffset + 3;
190
+
191
+ iOffset += 6;
192
+ }
193
+
194
+ EncodedCartesian3.fromCartesian(cartesian, cartesianEnc);
195
+ EncodedCartesian3.fromCartesian(prevCartesian, prevCartesianEnc);
196
+ EncodedCartesian3.fromCartesian(nextCartesian, nextCartesianEnc);
197
+
198
+ // TODO(donmccurdy): Diverging from PolylineCollection.js, which writes
199
+ // internal vertices to buffer 4x, not 2x. Not sure that's needed?
200
+ for (let k = 0; k < 2; k++) {
201
+ // Position.
202
+ positionHighArray[vOffset * 3] = cartesianEnc.high.x;
203
+ positionHighArray[vOffset * 3 + 1] = cartesianEnc.high.y;
204
+ positionHighArray[vOffset * 3 + 2] = cartesianEnc.high.z;
205
+
206
+ positionLowArray[vOffset * 3] = cartesianEnc.low.x;
207
+ positionLowArray[vOffset * 3 + 1] = cartesianEnc.low.y;
208
+ positionLowArray[vOffset * 3 + 2] = cartesianEnc.low.z;
209
+
210
+ // Previous position.
211
+ prevPositionHighArray[vOffset * 3] = prevCartesianEnc.high.x;
212
+ prevPositionHighArray[vOffset * 3 + 1] = prevCartesianEnc.high.y;
213
+ prevPositionHighArray[vOffset * 3 + 2] = prevCartesianEnc.high.z;
214
+
215
+ prevPositionLowArray[vOffset * 3] = prevCartesianEnc.low.x;
216
+ prevPositionLowArray[vOffset * 3 + 1] = prevCartesianEnc.low.y;
217
+ prevPositionLowArray[vOffset * 3 + 2] = prevCartesianEnc.low.z;
218
+
219
+ // Next position.
220
+ nextPositionHighArray[vOffset * 3] = nextCartesianEnc.high.x;
221
+ nextPositionHighArray[vOffset * 3 + 1] = nextCartesianEnc.high.y;
222
+ nextPositionHighArray[vOffset * 3 + 2] = nextCartesianEnc.high.z;
223
+
224
+ nextPositionLowArray[vOffset * 3] = nextCartesianEnc.low.x;
225
+ nextPositionLowArray[vOffset * 3 + 1] = nextCartesianEnc.low.y;
226
+ nextPositionLowArray[vOffset * 3 + 2] = nextCartesianEnc.low.z;
227
+
228
+ // Pick ID.
229
+ pickColorArray[vOffset * 4] = Color.floatToByte(pickColor.red);
230
+ pickColorArray[vOffset * 4 + 1] = Color.floatToByte(pickColor.green);
231
+ pickColorArray[vOffset * 4 + 2] = Color.floatToByte(pickColor.blue);
232
+ pickColorArray[vOffset * 4 + 3] = Color.floatToByte(pickColor.alpha);
233
+
234
+ // Properties.
235
+ showColorWidthAndTexCoordArray[vOffset * 4] = show ? 1 : 0;
236
+ showColorWidthAndTexCoordArray[vOffset * 4 + 1] = encodedColor;
237
+ showColorWidthAndTexCoordArray[vOffset * 4 + 2] = material.width;
238
+ showColorWidthAndTexCoordArray[vOffset * 4 + 3] = j / (jl - 1); // texcoord.s
239
+
240
+ vOffset++;
241
+ }
242
+ }
243
+
244
+ polyline._dirty = false;
245
+ }
246
+ }
247
+
248
+ if (!defined(renderContext.vertexArray)) {
249
+ const attributeArrays = renderContext.attributeArrays;
250
+
251
+ renderContext.vertexArray = new VertexArray({
252
+ context,
253
+
254
+ indexBuffer: Buffer.createIndexBuffer({
255
+ context,
256
+ typedArray: renderContext.indexArray,
257
+ usage: BufferUsage.STATIC_DRAW,
258
+ // @ts-expect-error https://github.com/CesiumGS/cesium/issues/13420
259
+ indexDatatype: IndexDatatype.fromTypedArray(renderContext.indexArray),
260
+ }),
261
+
262
+ attributes: [
263
+ {
264
+ index: BufferPolylineAttributeLocations.positionHigh,
265
+ componentDatatype: ComponentDatatype.FLOAT,
266
+ componentsPerAttribute: 3,
267
+ vertexBuffer: Buffer.createVertexBuffer({
268
+ typedArray: attributeArrays.positionHigh,
269
+ context,
270
+ usage: BufferUsage.STATIC_DRAW,
271
+ }),
272
+ },
273
+ {
274
+ index: BufferPolylineAttributeLocations.positionLow,
275
+ componentDatatype: ComponentDatatype.FLOAT,
276
+ componentsPerAttribute: 3,
277
+ vertexBuffer: Buffer.createVertexBuffer({
278
+ typedArray: attributeArrays.positionLow,
279
+ context,
280
+ usage: BufferUsage.STATIC_DRAW,
281
+ }),
282
+ },
283
+
284
+ {
285
+ index: BufferPolylineAttributeLocations.prevPositionHigh,
286
+ componentDatatype: ComponentDatatype.FLOAT,
287
+ componentsPerAttribute: 3,
288
+ vertexBuffer: Buffer.createVertexBuffer({
289
+ typedArray: attributeArrays.prevPositionHigh,
290
+ context,
291
+ usage: BufferUsage.STATIC_DRAW,
292
+ }),
293
+ },
294
+ {
295
+ index: BufferPolylineAttributeLocations.prevPositionLow,
296
+ componentDatatype: ComponentDatatype.FLOAT,
297
+ componentsPerAttribute: 3,
298
+ vertexBuffer: Buffer.createVertexBuffer({
299
+ typedArray: attributeArrays.prevPositionLow,
300
+ context,
301
+ usage: BufferUsage.STATIC_DRAW,
302
+ }),
303
+ },
304
+
305
+ {
306
+ index: BufferPolylineAttributeLocations.nextPositionHigh,
307
+ componentDatatype: ComponentDatatype.FLOAT,
308
+ componentsPerAttribute: 3,
309
+ vertexBuffer: Buffer.createVertexBuffer({
310
+ typedArray: attributeArrays.nextPositionHigh,
311
+ context,
312
+ usage: BufferUsage.STATIC_DRAW,
313
+ }),
314
+ },
315
+ {
316
+ index: BufferPolylineAttributeLocations.nextPositionLow,
317
+ componentDatatype: ComponentDatatype.FLOAT,
318
+ componentsPerAttribute: 3,
319
+ vertexBuffer: Buffer.createVertexBuffer({
320
+ typedArray: attributeArrays.nextPositionLow,
321
+ context,
322
+ usage: BufferUsage.STATIC_DRAW,
323
+ }),
324
+ },
325
+ {
326
+ index: BufferPolylineAttributeLocations.pickColor,
327
+ componentDatatype: ComponentDatatype.UNSIGNED_BYTE,
328
+ componentsPerAttribute: 4,
329
+ vertexBuffer: Buffer.createVertexBuffer({
330
+ typedArray: attributeArrays.pickColor,
331
+ context,
332
+ usage: BufferUsage.STATIC_DRAW,
333
+ }),
334
+ },
335
+ {
336
+ index: BufferPolylineAttributeLocations.showColorWidthAndTexCoord,
337
+ componentDatatype: ComponentDatatype.FLOAT,
338
+ componentsPerAttribute: 4,
339
+ vertexBuffer: Buffer.createVertexBuffer({
340
+ typedArray: attributeArrays.showColorWidthAndTexCoord,
341
+ context,
342
+ usage: BufferUsage.STATIC_DRAW,
343
+ }),
344
+ },
345
+ ],
346
+ });
347
+ } else if (collection._dirtyCount > 0) {
348
+ const { indexOffset, indexCount, vertexOffset, vertexCount } =
349
+ getPolylineDirtyRanges(collection);
350
+
351
+ renderContext.vertexArray.copyIndexFromRange(
352
+ renderContext.indexArray,
353
+ indexOffset,
354
+ indexCount,
355
+ );
356
+
357
+ for (const key in BufferPolylineAttributeLocations) {
358
+ if (Object.hasOwn(BufferPolylineAttributeLocations, key)) {
359
+ const attribute = /** @type {BufferPolylineAttribute} */ (key);
360
+ renderContext.vertexArray.copyAttributeFromRange(
361
+ BufferPolylineAttributeLocations[attribute],
362
+ renderContext.attributeArrays[attribute],
363
+ vertexOffset,
364
+ vertexCount,
365
+ );
366
+ }
367
+ }
368
+ }
369
+
370
+ if (!defined(renderContext.renderState)) {
371
+ renderContext.renderState = RenderState.fromCache({
372
+ blending: BlendingState.DISABLED,
373
+ depthTest: { enabled: true },
374
+ });
375
+ }
376
+
377
+ if (!defined(renderContext.shaderProgram)) {
378
+ renderContext.shaderProgram = ShaderProgram.fromCache({
379
+ context,
380
+ vertexShaderSource: new ShaderSource({
381
+ sources: [PolylineCommon, BufferPolylineMaterialVS],
382
+ }),
383
+ fragmentShaderSource: new ShaderSource({
384
+ sources: [BufferPolylineMaterialFS],
385
+ }),
386
+ attributeLocations: BufferPolylineAttributeLocations,
387
+ });
388
+ }
389
+
390
+ const drawCount = getDrawIndexCount(collection);
391
+
392
+ if (!defined(renderContext.command)) {
393
+ renderContext.command = new DrawCommand({
394
+ vertexArray: renderContext.vertexArray,
395
+ renderState: renderContext.renderState,
396
+ shaderProgram: renderContext.shaderProgram,
397
+ primitiveType: PrimitiveType.TRIANGLES,
398
+ pass: Pass.OPAQUE,
399
+ pickId: collection._allowPicking ? "v_pickColor" : undefined,
400
+ owner: collection,
401
+ count: drawCount,
402
+ modelMatrix: collection.modelMatrix, // shared reference
403
+ boundingVolume: collection.boundingVolumeWC, // shared reference
404
+ debugShowBoundingVolume: collection.debugShowBoundingVolume,
405
+ });
406
+ }
407
+
408
+ const command = renderContext.command;
409
+
410
+ if (command.count !== drawCount) {
411
+ command.count = drawCount;
412
+ }
413
+
414
+ if (command.debugShowBoundingVolume !== collection.debugShowBoundingVolume) {
415
+ command.debugShowBoundingVolume = collection.debugShowBoundingVolume;
416
+ }
417
+
418
+ frameState.commandList.push(command);
419
+
420
+ collection._dirtyCount = 0;
421
+ collection._dirtyOffset = 0;
422
+
423
+ return renderContext;
424
+ }
425
+
426
+ /**
427
+ * Returns number of drawn (not allocated) indices for given collection.
428
+ * @param {BufferPolylineCollection} collection
429
+ * @ignore
430
+ */
431
+ function getDrawIndexCount(collection) {
432
+ return (collection.vertexCount - collection.primitiveCount) * 6;
433
+ }
434
+
435
+ /**
436
+ * Computes dirty ranges for attribute and index buffers in a collection.
437
+ * @param {BufferPolylineCollection} collection
438
+ * @ignore
439
+ */
440
+ function getPolylineDirtyRanges(collection) {
441
+ const { _dirtyOffset, _dirtyCount } = collection;
442
+
443
+ collection.get(_dirtyOffset, polyline);
444
+ const vertexOffset = polyline.vertexOffset * 2;
445
+ const segmentOffset = polyline.vertexOffset - _dirtyOffset;
446
+ const indexOffset = segmentOffset * 6;
447
+
448
+ collection.get(_dirtyOffset + _dirtyCount - 1, polyline);
449
+ const vertexCount =
450
+ (polyline.vertexOffset + polyline.vertexCount) * 2 - vertexOffset;
451
+ const segmentCount = vertexCount / 2 - _dirtyCount;
452
+ const indexCount = segmentCount * 6;
453
+
454
+ return { indexOffset, indexCount, vertexOffset, vertexCount };
455
+ }
456
+
457
+ /**
458
+ * Destroys render context resources. Deleting properties from the context
459
+ * object isn't necessary, as collection.destroy() will discard the object.
460
+ * @ignore
461
+ */
462
+ function destroyRenderContext() {
463
+ const context = /** @type {BufferPolylineRenderContext} */ (this);
464
+
465
+ if (defined(context.vertexArray)) {
466
+ context.vertexArray.destroy();
467
+ }
468
+
469
+ if (defined(context.shaderProgram)) {
470
+ context.shaderProgram.destroy();
471
+ }
472
+
473
+ if (defined(context.renderState)) {
474
+ RenderState.removeFromCache(context.renderState);
475
+ }
476
+ }
477
+
478
+ export default renderBufferPolylineCollection;
@@ -20,16 +20,6 @@ in vec4 v_compressed; // x: eyeDepth, y: applyTran
20
20
  const float SHIFT_LEFT1 = 2.0;
21
21
  const float SHIFT_RIGHT1 = 1.0 / 2.0;
22
22
 
23
- #ifdef FS_THREE_POINT_DEPTH_CHECK
24
- in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates
25
- in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs)
26
- in mat2 v_rotationMatrix;
27
-
28
- const float SHIFT_LEFT12 = 4096.0;
29
-
30
- const float SHIFT_RIGHT12 = 1.0 / 4096.0;
31
- #endif
32
-
33
23
  float getGlobeDepthAtCoords(vec2 st)
34
24
  {
35
25
  float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st));
@@ -42,27 +32,6 @@ float getGlobeDepthAtCoords(vec2 st)
42
32
  return eyeCoordinate.z / eyeCoordinate.w;
43
33
  }
44
34
 
45
- #ifdef FS_THREE_POINT_DEPTH_CHECK
46
- float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize)
47
- {
48
- vec2 lookupVector = imageSize * (depthLookupST - adjustedST);
49
- lookupVector = v_rotationMatrix * lookupVector;
50
- vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal
51
-
52
- vec2 translation = v_originTextureCoordinateAndTranslate.zw;
53
-
54
- if (applyTranslate)
55
- {
56
- // this is only needed for labels where the horizontal origin is not LEFT
57
- // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT
58
- translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0));
59
- }
60
-
61
- vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw;
62
- return getGlobeDepthAtCoords(st);
63
- }
64
- #endif
65
-
66
35
  #ifdef SDF
67
36
 
68
37
  // Get the distance from the edge of a glyph at a given position sampling an SDF texture.
@@ -93,44 +62,6 @@ vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smo
93
62
  }
94
63
  #endif
95
64
 
96
- #ifdef FS_THREE_POINT_DEPTH_CHECK
97
- void doThreePointDepthTest(float eyeDepth, bool applyTranslate) {
98
-
99
- if (eyeDepth < -u_threePointDepthTestDistance) return;
100
- float temp = v_compressed.z;
101
- temp = temp * SHIFT_RIGHT12;
102
-
103
- vec2 dimensions;
104
- dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12;
105
- dimensions.x = floor(temp);
106
-
107
- temp = v_compressed.w;
108
- temp = temp * SHIFT_RIGHT12;
109
-
110
- vec2 imageSize;
111
- imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12;
112
- imageSize.x = floor(temp);
113
-
114
- vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy;
115
- adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y);
116
-
117
- float epsilonEyeDepth = v_compressed.x + czm_epsilon1;
118
- float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize);
119
-
120
- // negative values go into the screen
121
- if (globeDepth1 == 0.0 || globeDepth1 < epsilonEyeDepth) return;
122
-
123
- float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner
124
- if (globeDepth2 == 0.0 || globeDepth2 < epsilonEyeDepth) return;
125
-
126
- float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner
127
- if (globeDepth3 == 0.0 || globeDepth3 < epsilonEyeDepth) return;
128
-
129
- // All three key points are occluded, discard the fragment (and by extension the entire billboard)
130
- discard;
131
- }
132
- #endif
133
-
134
65
  bool getDepthTestEnabled() {
135
66
  float temp = v_compressed.y;
136
67
  temp = temp * SHIFT_RIGHT1;
@@ -153,13 +84,7 @@ float getRelativeEyeDepth(float eyeDepth, float distanceToEllipsoid, float epsil
153
84
  // by the globe when near and far from the camera.
154
85
  void doDepthTest(float eyeDepth, float globeDepth) {
155
86
 
156
- #ifdef FS_THREE_POINT_DEPTH_CHECK
157
- // If the billboard is clamped to the ground and within a given distance, we do a 3-point depth test. This test is performed in the vertex shader, unless
158
- // vertex texture sampling is not supported, in which case we do it here.
159
- bool applyTranslate = floor(temp) != 0.0;
160
- doThreePointDepthTest(eyeDepth, applyTranslate);
161
-
162
- #elif defined(VS_THREE_POINT_DEPTH_CHECK)
87
+ #ifdef VS_THREE_POINT_DEPTH_CHECK
163
88
  // Since discarding vertices is not possible, the vertex shader sets eyeDepth to 0 to indicate the depth test failed. Apply the discard here.
164
89
  if (eyeDepth > -u_threePointDepthTestDistance) {
165
90
  if (eyeDepth == 0.0) {
@@ -188,7 +113,7 @@ void writeDepth(float eyeDepth, float globeDepth, float distanceToEllipsoid) {
188
113
 
189
114
  float depthArg = v_depthFromNearPlusOne;
190
115
 
191
- if (globeDepth != 0.0 && getRelativeEyeDepth(eyeDepth, distanceToEllipsoid, czm_epsilon3) > 0.0) {
116
+ if (globeDepth != 0.0 && getRelativeEyeDepth(eyeDepth, distanceToEllipsoid, czm_epsilon3) > 0.0) {
192
117
  float globeDepthFromNearPlusOne = (-globeDepth - czm_currentFrustum.x) + 1.0;
193
118
  float nudge = max(globeDepthFromNearPlusOne * 5e-6, czm_epsilon7);
194
119
  float globeOnTop = max(1.0, globeDepthFromNearPlusOne - nudge);