@hztxi/cesium-engine 25.0.6 → 26.2.1

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 (484) hide show
  1. package/Build/Workers/chunk-2GJAWJJT.js +1344 -0
  2. package/Build/Workers/chunk-2J2VS5RI.js +288 -0
  3. package/Build/Workers/chunk-2NCNUVAT.js +56 -0
  4. package/Build/Workers/chunk-2ZYRUVVU.js +301 -0
  5. package/Build/Workers/chunk-36IU7N4V.js +1284 -0
  6. package/Build/Workers/chunk-375SHKGW.js +44 -0
  7. package/Build/Workers/chunk-3BDLET5S.js +198 -0
  8. package/Build/Workers/chunk-3PRHI4KX.js +241 -0
  9. package/Build/Workers/chunk-3R6E2SH4.js +672 -0
  10. package/Build/Workers/chunk-3ZKKXEXL.js +415 -0
  11. package/Build/Workers/chunk-47KVKPTO.js +415 -0
  12. package/Build/Workers/chunk-4N227IPR.js +973 -0
  13. package/Build/Workers/chunk-4P6OAPBM.js +97 -0
  14. package/Build/Workers/chunk-4ZOLEPZK.js +519 -0
  15. package/Build/Workers/chunk-5EF3WWQG.js +352 -0
  16. package/Build/Workers/chunk-5FYUSABU.js +945 -0
  17. package/Build/Workers/chunk-5I76476T.js +288 -0
  18. package/Build/Workers/chunk-5PBZKBAP.js +511 -0
  19. package/Build/Workers/chunk-5RVAAW26.js +82 -0
  20. package/Build/Workers/chunk-5VWK76PO.js +511 -0
  21. package/Build/Workers/chunk-5WU37CUJ.js +630 -0
  22. package/Build/Workers/chunk-6EBDN5WS.js +97 -0
  23. package/Build/Workers/chunk-75HIWCEV.js +301 -0
  24. package/Build/Workers/chunk-77DBX23X.js +455 -0
  25. package/Build/Workers/chunk-7AMVPXZY.js +1992 -0
  26. package/Build/Workers/chunk-7BMDD6SM.js +124 -0
  27. package/Build/Workers/chunk-7GQOWCSN.js +959 -0
  28. package/Build/Workers/chunk-7J2ONMKC.js +198 -0
  29. package/Build/Workers/chunk-7MHUHXZZ.js +219 -0
  30. package/Build/Workers/chunk-7MQPHOAS.js +455 -0
  31. package/Build/Workers/chunk-7NJ5O7TP.js +387 -0
  32. package/Build/Workers/chunk-7OME2OKM.js +171 -0
  33. package/Build/Workers/chunk-7Y642MCO.js +352 -0
  34. package/Build/Workers/chunk-7ZFKBLUE.js +1054 -0
  35. package/Build/Workers/chunk-A2BROW3D.js +352 -0
  36. package/Build/Workers/chunk-A7LGY5XS.js +140 -0
  37. package/Build/Workers/chunk-AN2NVYL6.js +1483 -0
  38. package/Build/Workers/chunk-B4XOVZGA.js +476 -0
  39. package/Build/Workers/chunk-B7PT2VL5.js +630 -0
  40. package/Build/Workers/chunk-C6XQGBPV.js +476 -0
  41. package/Build/Workers/chunk-CAEC5DA2.js +57 -0
  42. package/Build/Workers/chunk-CBCOHH5O.js +837 -0
  43. package/Build/Workers/chunk-CDLPLYLV.js +1287 -0
  44. package/Build/Workers/chunk-CEKCKPFN.js +368 -0
  45. package/Build/Workers/chunk-CEMXKBQO.js +1800 -0
  46. package/Build/Workers/chunk-CHMDKP5L.js +2342 -0
  47. package/Build/Workers/chunk-CKW3STKA.js +1067 -0
  48. package/Build/Workers/chunk-CV5RICKT.js +1992 -0
  49. package/Build/Workers/chunk-CWGB3D4Z.js +257 -0
  50. package/Build/Workers/chunk-DBWSISJT.js +56 -0
  51. package/Build/Workers/chunk-DQEUGBGA.js +2719 -0
  52. package/Build/Workers/chunk-DSBSPPPJ.js +1344 -0
  53. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  54. package/Build/Workers/chunk-DUBE5G2H.js +497 -0
  55. package/Build/Workers/chunk-DXD7OPSP.js +1992 -0
  56. package/Build/Workers/chunk-DXECZBSA.js +368 -0
  57. package/Build/Workers/chunk-DZIRO6ZK.js +682 -0
  58. package/Build/Workers/chunk-E4CRPGX5.js +140 -0
  59. package/Build/Workers/chunk-E4IVMEBH.js +52 -0
  60. package/Build/Workers/chunk-E4PBNWWK.js +58 -0
  61. package/Build/Workers/chunk-E5MWOMVC.js +57 -0
  62. package/Build/Workers/chunk-ECN3VUMA.js +73 -0
  63. package/Build/Workers/chunk-ECSKVHUB.js +476 -0
  64. package/Build/Workers/chunk-EE3XBOQI.js +1483 -0
  65. package/Build/Workers/chunk-EHA2ZDPZ.js +415 -0
  66. package/Build/Workers/chunk-EKEKPAJF.js +454 -0
  67. package/Build/Workers/chunk-EL4B5CSQ.js +162 -0
  68. package/Build/Workers/chunk-EOHKUXPX.js +198 -0
  69. package/Build/Workers/chunk-ERENMHG2.js +754 -0
  70. package/Build/Workers/chunk-ESQGFRLZ.js +163 -0
  71. package/Build/Workers/chunk-FAYBQGKO.js +219 -0
  72. package/Build/Workers/chunk-FGCXPEZM.js +3201 -0
  73. package/Build/Workers/chunk-FHCRXPA6.js +44 -0
  74. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  75. package/Build/Workers/chunk-FQDYQG4P.js +1284 -0
  76. package/Build/Workers/chunk-FTCBY5HH.js +138 -0
  77. package/Build/Workers/chunk-FV4OWDV4.js +9230 -0
  78. package/Build/Workers/chunk-FYRNNQSL.js +280 -0
  79. package/Build/Workers/chunk-GI5RWJAY.js +101 -0
  80. package/Build/Workers/chunk-GNLMSDRO.js +945 -0
  81. package/Build/Workers/chunk-GVUJ6O3R.js +73 -0
  82. package/Build/Workers/chunk-HCGU7OCG.js +97 -0
  83. package/Build/Workers/chunk-HRIPVWSC.js +58 -0
  84. package/Build/Workers/chunk-IC3BR6SC.js +102 -0
  85. package/Build/Workers/chunk-IU3YAYPT.js +1344 -0
  86. package/Build/Workers/chunk-J7MZR7B2.js +1483 -0
  87. package/Build/Workers/chunk-JMF4ATAS.js +3794 -0
  88. package/Build/Workers/chunk-KEJKMITY.js +82 -0
  89. package/Build/Workers/chunk-KSIEJYNL.js +3822 -0
  90. package/Build/Workers/chunk-KT3GG7AW.js +754 -0
  91. package/Build/Workers/chunk-KW2QZDUS.js +147 -0
  92. package/Build/Workers/chunk-KYCEM22I.js +1800 -0
  93. package/Build/Workers/chunk-L6B5XPBL.js +73 -0
  94. package/Build/Workers/chunk-LGJXN2VP.js +352 -0
  95. package/Build/Workers/chunk-LJTQW46H.js +57 -0
  96. package/Build/Workers/chunk-LMQGYJME.js +672 -0
  97. package/Build/Workers/chunk-LOBYJQA4.js +76 -0
  98. package/Build/Workers/chunk-LOF32O7F.js +163 -0
  99. package/Build/Workers/chunk-LOTIJA7D.js +124 -0
  100. package/Build/Workers/chunk-LY2UG3HV.js +38 -0
  101. package/Build/Workers/chunk-M7Z3MPAX.js +973 -0
  102. package/Build/Workers/chunk-MHNLTQHO.js +3201 -0
  103. package/Build/Workers/chunk-ML7OMD72.js +2342 -0
  104. package/Build/Workers/chunk-NBTGXEMT.js +945 -0
  105. package/Build/Workers/chunk-NCPJBP24.js +140 -0
  106. package/Build/Workers/chunk-NFY5V6MR.js +102 -0
  107. package/Build/Workers/chunk-NQZC37F7.js +38 -0
  108. package/Build/Workers/chunk-O3X3D2Z3.js +352 -0
  109. package/Build/Workers/chunk-OBUIHPKF.js +352 -0
  110. package/Build/Workers/chunk-OYPSUED3.js +1067 -0
  111. package/Build/Workers/chunk-PAEWNYIV.js +138 -0
  112. package/Build/Workers/chunk-PANJ7YH6.js +102 -0
  113. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  114. package/Build/Workers/chunk-PIIUGRQD.js +387 -0
  115. package/Build/Workers/chunk-POKD22OT.js +2719 -0
  116. package/Build/Workers/chunk-PQMA7MFS.js +9237 -0
  117. package/Build/Workers/chunk-PURIPUSY.js +682 -0
  118. package/Build/Workers/chunk-QIOOTLWN.js +56 -0
  119. package/Build/Workers/chunk-QQZPPXY4.js +3822 -0
  120. package/Build/Workers/chunk-QUPRALOD.js +101 -0
  121. package/Build/Workers/chunk-QXLQLGL2.js +1067 -0
  122. package/Build/Workers/chunk-RBEVHHXK.js +3201 -0
  123. package/Build/Workers/chunk-RC4YC3VU.js +278 -0
  124. package/Build/Workers/chunk-RGNNWVR6.js +171 -0
  125. package/Build/Workers/chunk-RHO5HV52.js +305 -0
  126. package/Build/Workers/chunk-SBBIEHYT.js +44 -0
  127. package/Build/Workers/chunk-SVCZUP5R.js +837 -0
  128. package/Build/Workers/chunk-SWVZTU6X.js +305 -0
  129. package/Build/Workers/chunk-T3EUPM5A.js +454 -0
  130. package/Build/Workers/chunk-TA6IU2XL.js +171 -0
  131. package/Build/Workers/chunk-TBHW5UME.js +973 -0
  132. package/Build/Workers/chunk-TLSGD5TR.js +280 -0
  133. package/Build/Workers/chunk-TOXDLWKZ.js +368 -0
  134. package/Build/Workers/chunk-TPOX6IOR.js +1054 -0
  135. package/Build/Workers/chunk-TZBM6TAB.js +124 -0
  136. package/Build/Workers/chunk-U2OY6MX6.js +398 -0
  137. package/Build/Workers/chunk-UCY4B5EV.js +288 -0
  138. package/Build/Workers/chunk-ULNBTI6R.js +138 -0
  139. package/Build/Workers/chunk-UMUS2AQQ.js +398 -0
  140. package/Build/Workers/chunk-UZ7GTP2L.js +162 -0
  141. package/Build/Workers/chunk-V52FEPCV.js +754 -0
  142. package/Build/Workers/chunk-VBEXZBG5.js +147 -0
  143. package/Build/Workers/chunk-VC76B6GM.js +959 -0
  144. package/Build/Workers/chunk-VCUOYHWC.js +519 -0
  145. package/Build/Workers/chunk-VJIL5H6K.js +2719 -0
  146. package/Build/Workers/chunk-VMF7KOGY.js +162 -0
  147. package/Build/Workers/chunk-W3C7OHXF.js +387 -0
  148. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  149. package/Build/Workers/chunk-WB5GWYDP.js +455 -0
  150. package/Build/Workers/chunk-WN6MAL25.js +682 -0
  151. package/Build/Workers/chunk-WTR7KMQA.js +693 -0
  152. package/Build/Workers/chunk-WTTFMU3P.js +241 -0
  153. package/Build/Workers/chunk-WULONJZC.js +1800 -0
  154. package/Build/Workers/chunk-WZPMAVTV.js +511 -0
  155. package/Build/Workers/chunk-XHT5SVP4.js +52 -0
  156. package/Build/Workers/chunk-XITBARMZ.js +2342 -0
  157. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  158. package/Build/Workers/chunk-XZ6HDXKM.js +76 -0
  159. package/Build/Workers/chunk-Y7KVUJEB.js +219 -0
  160. package/Build/Workers/chunk-Y7NDFEQ3.js +398 -0
  161. package/Build/Workers/chunk-YBBQDYX2.js +301 -0
  162. package/Build/Workers/chunk-YHPYPVAB.js +837 -0
  163. package/Build/Workers/chunk-YNKK6BXY.js +454 -0
  164. package/Build/Workers/chunk-YRAJ74HR.js +305 -0
  165. package/Build/Workers/chunk-YULTZK5O.js +147 -0
  166. package/Build/Workers/chunk-YUNQYP3Z.js +9237 -0
  167. package/Build/Workers/chunk-Z6JV4DZG.js +1046 -0
  168. package/Build/Workers/chunk-Z7BONRW2.js +241 -0
  169. package/Build/Workers/chunk-ZK2R3DEJ.js +1054 -0
  170. package/Build/Workers/chunk-ZTK5EBUI.js +76 -0
  171. package/Build/Workers/chunk-ZZPDORJK.js +56 -0
  172. package/Build/Workers/combineGeometry.js +24 -24
  173. package/Build/Workers/createBoxGeometry.js +18 -18
  174. package/Build/Workers/createBoxOutlineGeometry.js +18 -18
  175. package/Build/Workers/createCircleGeometry.js +26 -26
  176. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  177. package/Build/Workers/createCoplanarPolygonGeometry.js +39 -39
  178. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -33
  179. package/Build/Workers/createCorridorGeometry.js +36 -37
  180. package/Build/Workers/createCorridorOutlineGeometry.js +34 -35
  181. package/Build/Workers/createCylinderGeometry.js +20 -20
  182. package/Build/Workers/createCylinderOutlineGeometry.js +20 -20
  183. package/Build/Workers/createEllipseGeometry.js +26 -26
  184. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  185. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  187. package/Build/Workers/createFrustumGeometry.js +18 -18
  188. package/Build/Workers/createFrustumOutlineGeometry.js +20 -20
  189. package/Build/Workers/createGeometry.js +25 -24
  190. package/Build/Workers/createGroundPolylineGeometry.js +98 -34
  191. package/Build/Workers/createMvtTile.js +111 -19
  192. package/Build/Workers/createPlaneGeometry.js +18 -18
  193. package/Build/Workers/createPlaneOutlineGeometry.js +17 -17
  194. package/Build/Workers/createPolygonGeometry.js +36 -36
  195. package/Build/Workers/createPolygonOutlineGeometry.js +33 -33
  196. package/Build/Workers/createPolylineGeometry.js +28 -28
  197. package/Build/Workers/createPolylineVolumeGeometry.js +38 -36
  198. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -31
  199. package/Build/Workers/createRectangleGeometry.js +29 -29
  200. package/Build/Workers/createRectangleOutlineGeometry.js +23 -23
  201. package/Build/Workers/createSimplePolylineGeometry.js +26 -26
  202. package/Build/Workers/createSphereGeometry.js +19 -19
  203. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  204. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  205. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  206. package/Build/Workers/createVectorTileGeometries.js +24 -24
  207. package/Build/Workers/createVectorTilePoints.js +13 -13
  208. package/Build/Workers/createVectorTilePolygons.js +22 -22
  209. package/Build/Workers/createVectorTilePolylines.js +14 -14
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -26
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -23
  212. package/Build/Workers/createVerticesFromHeightmap.js +23 -23
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +21 -21
  214. package/Build/Workers/createWallGeometry.js +26 -26
  215. package/Build/Workers/createWallOutlineGeometry.js +26 -26
  216. package/Build/Workers/decodeDraco.js +10 -10
  217. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +993 -2334
  218. package/Build/Workers/decodeI3S.js +10 -10
  219. package/Build/Workers/gaussianSplatSorter.js +4 -4
  220. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  221. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  222. package/Build/Workers/transcodeKTX2.js +6 -6
  223. package/Build/Workers/transferTypedArrayTest.js +1 -1
  224. package/Build/Workers/upsampleQuantizedTerrainMesh.js +23 -23
  225. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -26
  226. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  227. package/Source/Core/BoundingRectangle.js +6 -8
  228. package/Source/Core/BoundingSphere.js +0 -3
  229. package/Source/Core/Cartesian2.js +1 -1
  230. package/Source/Core/Cartesian3.js +1 -1
  231. package/Source/Core/Cartesian4.js +1 -1
  232. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  233. package/Source/Core/Color.js +1 -0
  234. package/Source/Core/ComponentDatatype.js +35 -0
  235. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  236. package/Source/Core/CorridorGeometry.js +2 -4
  237. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  238. package/Source/Core/EarthOrientationParameters.js +2 -2
  239. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  240. package/Source/Core/EllipsoidGeodesic.js +3 -3
  241. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  242. package/Source/Core/GroundPolylineGeometry.js +99 -4
  243. package/Source/Core/Heap.js +1 -1
  244. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  245. package/Source/Core/InterpolationAlgorithm.js +58 -50
  246. package/Source/Core/Ion.js +1 -1
  247. package/Source/Core/JulianDate.js +1 -1
  248. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  249. package/Source/Core/LinearApproximation.js +69 -66
  250. package/Source/Core/MapProjection.js +1 -0
  251. package/Source/Core/Math.js +59 -0
  252. package/Source/Core/Matrix2.js +3 -3
  253. package/Source/Core/Matrix3.js +3 -3
  254. package/Source/Core/Matrix4.js +1 -1
  255. package/Source/Core/OrthographicFrustum.js +1 -1
  256. package/Source/Core/PerspectiveFrustum.js +1 -1
  257. package/Source/Core/PolygonGeometry.js +2 -2
  258. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  259. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  260. package/Source/Core/PolylineGeometry.js +1 -1
  261. package/Source/Core/PolylinePipeline.js +9 -2
  262. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  263. package/Source/Core/Rectangle.js +7 -1
  264. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  265. package/Source/Core/Resource.js +1 -1
  266. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  267. package/Source/Core/SimplePolylineGeometry.js +1 -1
  268. package/Source/Core/TerrainEncoding.js +2 -2
  269. package/Source/Core/TerrainMesh.js +3 -3
  270. package/Source/Core/TerrainPicker.js +180 -168
  271. package/Source/Core/TimeIntervalCollection.js +1 -3
  272. package/Source/Core/Tipsify.js +1 -1
  273. package/Source/Core/Transforms.js +5 -1
  274. package/Source/Core/VectorPipeline.js +1117 -0
  275. package/Source/Core/VectorProvider.js +429 -0
  276. package/Source/Core/WallOutlineGeometry.js +1 -1
  277. package/Source/Core/createColorRamp.js +37 -0
  278. package/Source/Core/getTimestamp.js +4 -2
  279. package/Source/Core/globalTypes.js +25 -0
  280. package/Source/Core/writeTextToCanvas.js +1 -0
  281. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  282. package/Source/DataSources/CzmlDataSource.js +14 -0
  283. package/Source/DataSources/DataSourceDisplay.js +1 -1
  284. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  285. package/Source/DataSources/GeometryVisualizer.js +1 -1
  286. package/Source/DataSources/KmlDataSource.js +529 -557
  287. package/Source/DataSources/PathGraphics.js +8 -1
  288. package/Source/DataSources/PathMode.js +27 -0
  289. package/Source/DataSources/PathVisualizer.js +298 -1
  290. package/Source/DataSources/PolylineGeometryUpdater.js +125 -7
  291. package/Source/DataSources/PolylineVisualizer.js +1 -1
  292. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  293. package/Source/Renderer/AutomaticUniforms.js +23 -0
  294. package/Source/Renderer/Context.js +9 -3
  295. package/Source/Renderer/DrawCommand.js +22 -0
  296. package/Source/Renderer/Framebuffer.js +4 -0
  297. package/Source/Renderer/Pass.js +11 -9
  298. package/Source/Renderer/Texture.js +12 -1
  299. package/Source/Renderer/UniformState.js +7 -0
  300. package/Source/Renderer/VertexArray.js +1 -1
  301. package/Source/Renderer/createUniform.js +346 -239
  302. package/Source/Renderer/createUniformArray.js +494 -381
  303. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  304. package/Source/Scene/ArcGisMapService.js +1 -1
  305. package/Source/Scene/Billboard.js +2 -1
  306. package/Source/Scene/BillboardCollection.js +15 -5
  307. package/Source/Scene/BillboardTexture.js +5 -3
  308. package/Source/Scene/BufferPointCollection.js +11 -1
  309. package/Source/Scene/BufferPolygonCollection.js +26 -0
  310. package/Source/Scene/BufferPolylineCollection.js +2 -0
  311. package/Source/Scene/BufferPrimitiveCollection.js +105 -32
  312. package/Source/Scene/Camera.js +137 -8
  313. package/Source/Scene/CameraEventAggregator.js +30 -18
  314. package/Source/Scene/CameraFlightPath.js +17 -0
  315. package/Source/Scene/Cesium3DTile.js +102 -4
  316. package/Source/Scene/Cesium3DTileContent.js +195 -254
  317. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  318. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  319. package/Source/Scene/Cesium3DTileStyle.js +40 -0
  320. package/Source/Scene/Cesium3DTileset.js +213 -8
  321. package/Source/Scene/Cesium3DTilesetTraversal.js +14 -0
  322. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  323. package/Source/Scene/ClippingPolygon.js +2 -0
  324. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  325. package/Source/Scene/ColumbusWorlds.js +190 -0
  326. package/Source/Scene/Composite3DTileContent.js +254 -292
  327. package/Source/Scene/Controllers/Controller.js +63 -0
  328. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  329. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  330. package/Source/Scene/Controllers/MouseButton.js +32 -0
  331. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  332. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  333. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  334. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  335. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  336. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  337. package/Source/Scene/DerivedCommand.js +98 -0
  338. package/Source/Scene/EdgeDisplayMode.js +50 -0
  339. package/Source/Scene/EdgeFramebuffer.js +1 -5
  340. package/Source/Scene/Empty3DTileContent.js +100 -132
  341. package/Source/Scene/Expression.js +6 -8
  342. package/Source/Scene/FrameState.js +27 -0
  343. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  344. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  345. package/Source/Scene/Geometry3DTileContent.js +151 -185
  346. package/Source/Scene/Globe.js +110 -22
  347. package/Source/Scene/GlobeDepth.js +243 -6
  348. package/Source/Scene/GlobeSurfaceShaderSet.js +637 -540
  349. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  350. package/Source/Scene/GlobeSurfaceTileProvider.js +2289 -1842
  351. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  352. package/Source/Scene/GltfLoader.js +146 -3
  353. package/Source/Scene/GltfLoaderUtil.js +20 -4
  354. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  355. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  356. package/Source/Scene/GltfSpzLoader.js +1 -1
  357. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  358. package/Source/Scene/GroundPolylinePrimitive.js +2 -1
  359. package/Source/Scene/I3SDataProvider.js +1 -1
  360. package/Source/Scene/I3SLayer.js +1 -1
  361. package/Source/Scene/I3SNode.js +2 -2
  362. package/Source/Scene/ImageryLayer.js +2 -2
  363. package/Source/Scene/ImageryLayerCollection.js +190 -6
  364. package/Source/Scene/Implicit3DTileContent.js +192 -216
  365. package/Source/Scene/ImplicitTileCoordinates.js +17 -0
  366. package/Source/Scene/IonImageryProvider.js +1 -5
  367. package/Source/Scene/Label.js +4 -4
  368. package/Source/Scene/LabelCollection.js +4 -1
  369. package/Source/Scene/MVTDataProvider.js +555 -0
  370. package/Source/Scene/Material.js +1 -0
  371. package/Source/Scene/Model/B3dmLoader.js +1 -2
  372. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +82 -312
  373. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  374. package/Source/Scene/Model/I3dmLoader.js +1 -1
  375. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  376. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  377. package/Source/Scene/Model/Model.js +45 -10
  378. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  379. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  380. package/Source/Scene/Model/ModelDrawCommand.js +180 -8
  381. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  382. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  383. package/Source/Scene/Model/ModelUtility.js +5 -0
  384. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  385. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  386. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +645 -153
  387. package/Source/Scene/ModelComponents.js +112 -0
  388. package/Source/Scene/Multiple3DTileContent.js +291 -334
  389. package/Source/Scene/MvtLabelCandidates.js +295 -0
  390. package/Source/Scene/MvtLabelManager.js +1069 -0
  391. package/Source/Scene/Picking.js +19 -3
  392. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  393. package/Source/Scene/PntsParser.js +1 -1
  394. package/Source/Scene/Polyline.js +32 -5
  395. package/Source/Scene/PolylineCollection.js +39 -0
  396. package/Source/Scene/PostProcessStage.js +4 -2
  397. package/Source/Scene/Primitive.js +12 -13
  398. package/Source/Scene/PrimitivePipeline.js +158 -28
  399. package/Source/Scene/QuadtreePrimitive.js +3 -2
  400. package/Source/Scene/ResourceCache.js +7 -4
  401. package/Source/Scene/ResourceCacheKey.js +21 -18
  402. package/Source/Scene/Scene.js +655 -6
  403. package/Source/Scene/SceneTransforms.js +18 -0
  404. package/Source/Scene/ScreenSpaceCameraController.js +12 -3
  405. package/Source/Scene/ShadowMap.js +9 -3
  406. package/Source/Scene/ShadowMapShader.js +50 -2
  407. package/Source/Scene/SnapFramebuffer.js +121 -0
  408. package/Source/Scene/Snapping.js +184 -0
  409. package/Source/Scene/TerrainFillMesh.js +3 -2
  410. package/Source/Scene/Tileset3DTileContent.js +113 -146
  411. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +543 -0
  412. package/Source/Scene/Vector3DTileContent.js +207 -237
  413. package/Source/Scene/VectorGltf3DTileContent.js +185 -45
  414. package/Source/Scene/View.js +10 -8
  415. package/Source/Scene/VoxelPrimitive.js +159 -175
  416. package/Source/Scene/VoxelProvider.js +64 -91
  417. package/Source/Scene/VoxelTraversal.js +1 -1
  418. package/Source/Scene/buildVectorGltfFromMVT.js +1208 -0
  419. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  420. package/Source/Scene/createElevationBandMaterial.js +1 -1
  421. package/Source/Scene/decodeMVT.js +877 -0
  422. package/Source/Scene/findMeshoptExtension.js +23 -0
  423. package/Source/Scene/renderBufferPointCollection.js +114 -64
  424. package/Source/Scene/renderBufferPolygonCollection.js +245 -53
  425. package/Source/Scene/renderBufferPolylineCollection.js +271 -145
  426. package/Source/Shaders/BillboardCollectionVS.glsl +23 -25
  427. package/Source/Shaders/BillboardCollectionVS.js +23 -25
  428. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  429. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  430. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  431. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  432. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  433. package/Source/Shaders/BufferPolygonMaterialFS.js +13 -0
  434. package/Source/Shaders/BufferPolygonMaterialVS.glsl +22 -4
  435. package/Source/Shaders/BufferPolygonMaterialVS.js +23 -5
  436. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  437. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  440. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  441. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  442. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  443. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  444. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  445. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  446. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  447. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  448. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  449. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  450. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  451. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  452. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  453. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  454. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  455. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  456. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  457. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  458. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  459. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  460. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  461. package/Source/Shaders/GlobeFS.glsl +10 -6
  462. package/Source/Shaders/GlobeFS.js +10 -6
  463. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  464. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  465. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  466. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  467. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  468. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  469. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  470. package/Source/Shaders/Model/ModelFS.js +105 -0
  471. package/Source/Shaders/PolylineShadowVolumeFS.glsl +14 -0
  472. package/Source/Shaders/PolylineShadowVolumeFS.js +14 -0
  473. package/Source/Shaders/RestoreDepth.glsl +8 -0
  474. package/Source/Shaders/RestoreDepth.js +10 -0
  475. package/Source/Shaders/VectorCommon.glsl +178 -0
  476. package/Source/Shaders/VectorCommon.js +180 -0
  477. package/Source/ThirdParty/zip-module.wasm +0 -0
  478. package/Source/Widget/CesiumWidget.js +30 -0
  479. package/Source/Workers/createMvtTile.js +39 -0
  480. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  481. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  482. package/index.d.ts +535 -1393
  483. package/index.js +125 -93
  484. package/package.json +13 -13
@@ -21,6 +21,8 @@ import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
21
21
  import AttributeCompression from "../Core/AttributeCompression.js";
22
22
  import IndexDatatype from "../Core/IndexDatatype.js";
23
23
  import BufferPolygonMaterial from "./BufferPolygonMaterial.js";
24
+ import BlendOption from "./BlendOption.js";
25
+ import WebGLConstants from "../Core/WebGLConstants.js";
24
26
 
25
27
  /** @import {TypedArray} from "../Core/globalTypes.js"; */
26
28
  /** @import FrameState from "./FrameState.js"; */
@@ -28,29 +30,47 @@ import BufferPolygonMaterial from "./BufferPolygonMaterial.js";
28
30
 
29
31
  /**
30
32
  * TODO(PR#13211): Need 'keyof' syntax to avoid duplicating attribute names.
31
- * @typedef {'positionHigh' | 'positionLow' | 'pickColor' | 'showAndColor'} BufferPolygonAttribute
33
+ * @typedef {'positionHigh' | 'positionLow' | 'pickColor' | 'showColorAlpha' | 'outlineWidthColorAlpha'} BufferPolygonAttribute
32
34
  * @ignore
33
35
  */
34
36
 
35
37
  /**
38
+ * Attribute locations when using 64-bit position precision.
36
39
  * @type {Record<BufferPolygonAttribute, number>}
37
40
  * @ignore
38
41
  */
39
- const BufferPolygonAttributeLocations = {
42
+ const BufferPolygonAttributeLocationsFloat64 = {
40
43
  positionHigh: 0,
41
44
  positionLow: 1,
42
45
  pickColor: 2,
43
- showAndColor: 3,
46
+ showColorAlpha: 3,
47
+ outlineWidthColorAlpha: 4,
48
+ };
49
+
50
+ /**
51
+ * Attribute locations when using <= 32-bit position precision.
52
+ * @type {Record<string, number>}
53
+ * @ignore
54
+ */
55
+ const BufferPolygonAttributeLocations = {
56
+ position: 0,
57
+ pickColor: 1,
58
+ showColorAlpha: 2,
59
+ outlineWidthColorAlpha: 3,
44
60
  };
45
61
 
46
62
  /**
47
63
  * @typedef {object} BufferPolygonRenderContext
48
64
  * @property {VertexArray} [vertexArray]
49
- * @property {Record<BufferPolygonAttribute, TypedArray>} [attributeArrays]
65
+ * @property {Record<string, TypedArray>} [attributeArrays]
50
66
  * @property {TypedArray} [indexArray]
67
+ * @property {number} [triangleIndexMax]
51
68
  * @property {RenderState} [renderState]
69
+ * @property {RenderState} [outlineRenderState]
52
70
  * @property {ShaderProgram} [shaderProgram]
71
+ * @property {ShaderProgram} [outlineShaderProgram]
53
72
  * @property {DrawCommand} [command]
73
+ * @property {DrawCommand} [outlineCommand]
54
74
  * @property {Function} destroy
55
75
  * @ignore
56
76
  */
@@ -60,7 +80,7 @@ const polygon = new BufferPolygon();
60
80
  const material = new BufferPolygonMaterial();
61
81
  const pickColor = new Color();
62
82
  const cartesian = new Cartesian3();
63
- const encodedCartesian = new EncodedCartesian3();
83
+ const encodedC = new EncodedCartesian3();
64
84
 
65
85
  /**
66
86
  * @param {BufferPolygonCollection} collection
@@ -72,24 +92,35 @@ const encodedCartesian = new EncodedCartesian3();
72
92
  function renderBufferPolygonCollection(collection, frameState, renderContext) {
73
93
  const context = frameState.context;
74
94
  renderContext = renderContext || { destroy: destroyRenderContext };
95
+ const useFloat64 = collection._positionDatatype === ComponentDatatype.DOUBLE;
96
+ const attributeLocations = useFloat64
97
+ ? BufferPolygonAttributeLocationsFloat64
98
+ : BufferPolygonAttributeLocations;
75
99
 
76
100
  if (
77
101
  !defined(renderContext.attributeArrays) ||
78
102
  !defined(renderContext.indexArray)
79
103
  ) {
80
104
  const { vertexCountMax, triangleCountMax } = collection;
105
+ const triangleIndexMax = triangleCountMax * 3;
106
+ renderContext.triangleIndexMax = triangleIndexMax;
81
107
 
82
108
  // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
83
109
  renderContext.indexArray = IndexDatatype.createTypedArray(
84
110
  vertexCountMax,
85
- triangleCountMax * 3,
111
+ triangleIndexMax + vertexCountMax * 2,
86
112
  );
87
113
 
88
114
  renderContext.attributeArrays = {
89
- positionHigh: new Float32Array(vertexCountMax * 3),
90
- positionLow: new Float32Array(vertexCountMax * 3),
115
+ ...(!useFloat64
116
+ ? { position: collection._positionView }
117
+ : {
118
+ positionHigh: new Float32Array(vertexCountMax * 3),
119
+ positionLow: new Float32Array(vertexCountMax * 3),
120
+ }),
91
121
  pickColor: new Uint8Array(vertexCountMax * 4),
92
- showAndColor: new Float32Array(vertexCountMax * 2),
122
+ showColorAlpha: new Float32Array(vertexCountMax * 3),
123
+ outlineWidthColorAlpha: new Float32Array(vertexCountMax * 3),
93
124
  };
94
125
  }
95
126
 
@@ -97,11 +128,13 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
97
128
  const { attributeArrays } = renderContext;
98
129
  const { _dirtyOffset, _dirtyCount } = collection;
99
130
 
100
- const indexArray = renderContext.indexArray;
101
131
  const positionHighArray = attributeArrays.positionHigh;
102
132
  const positionLowArray = attributeArrays.positionLow;
133
+ const indexArray = renderContext.indexArray;
103
134
  const pickColorArray = attributeArrays.pickColor;
104
- const showAndColorArray = attributeArrays.showAndColor;
135
+ const showColorAlphaArray = attributeArrays.showColorAlpha;
136
+ const outlineWidthColorAlphaArray = attributeArrays.outlineWidthColorAlpha;
137
+ const triangleIndexMax = renderContext.triangleIndexMax;
105
138
 
106
139
  for (let i = _dirtyOffset, il = _dirtyOffset + _dirtyCount; i < il; i++) {
107
140
  collection.get(i, polygon);
@@ -125,36 +158,49 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
125
158
  }
126
159
 
127
160
  const show = polygon.show;
128
- const cartesianArray = polygon.getPositions();
161
+ const cartesianArray = !useFloat64 ? null : polygon.getPositions();
129
162
  polygon.getMaterial(material);
130
163
  const encodedColor = AttributeCompression.encodeRGB8(material.color);
164
+ const hasOutline = material.outlineWidth > 0;
165
+ const encodedOutlineColor = AttributeCompression.encodeRGB8(
166
+ hasOutline ? material.outlineColor : material.color,
167
+ );
131
168
  Color.fromRgba(polygon._pickId, pickColor);
132
169
 
133
170
  // Update vertex arrays.
134
171
  for (let j = 0, jl = polygon.vertexCount; j < jl; j++) {
135
- // @ts-expect-error TODO(tsd-jsdoc): See https://github.com/CesiumGS/cesium/pull/13302.
136
- Cartesian3.fromArray(cartesianArray, j * 3, cartesian);
137
- EncodedCartesian3.fromCartesian(cartesian, encodedCartesian);
138
-
139
- positionHighArray[vOffset * 3] = encodedCartesian.high.x;
140
- positionHighArray[vOffset * 3 + 1] = encodedCartesian.high.y;
141
- positionHighArray[vOffset * 3 + 2] = encodedCartesian.high.z;
142
-
143
- positionLowArray[vOffset * 3] = encodedCartesian.low.x;
144
- positionLowArray[vOffset * 3 + 1] = encodedCartesian.low.y;
145
- positionLowArray[vOffset * 3 + 2] = encodedCartesian.low.z;
172
+ if (useFloat64) {
173
+ // @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
174
+ Cartesian3.fromArray(cartesianArray, j * 3, cartesian);
175
+ EncodedCartesian3.fromCartesian(cartesian, encodedC);
176
+ // @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
177
+ Cartesian3.pack(encodedC.high, positionHighArray, vOffset * 3);
178
+ // @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
179
+ Cartesian3.pack(encodedC.low, positionLowArray, vOffset * 3);
180
+ }
146
181
 
147
182
  pickColorArray[vOffset * 4] = Color.floatToByte(pickColor.red);
148
183
  pickColorArray[vOffset * 4 + 1] = Color.floatToByte(pickColor.green);
149
184
  pickColorArray[vOffset * 4 + 2] = Color.floatToByte(pickColor.blue);
150
185
  pickColorArray[vOffset * 4 + 3] = Color.floatToByte(pickColor.alpha);
151
186
 
152
- showAndColorArray[vOffset * 2] = show ? 1 : 0;
153
- showAndColorArray[vOffset * 2 + 1] = encodedColor;
187
+ showColorAlphaArray[vOffset * 3] = show ? 1 : 0;
188
+ showColorAlphaArray[vOffset * 3 + 1] = encodedColor;
189
+ showColorAlphaArray[vOffset * 3 + 2] = material.color.alpha;
190
+
191
+ outlineWidthColorAlphaArray[vOffset * 3] = hasOutline
192
+ ? material.outlineWidth
193
+ : 0;
194
+ outlineWidthColorAlphaArray[vOffset * 3 + 1] = encodedOutlineColor;
195
+ outlineWidthColorAlphaArray[vOffset * 3 + 2] = hasOutline
196
+ ? material.outlineColor.alpha
197
+ : 0;
154
198
 
155
199
  vOffset++;
156
200
  }
157
201
 
202
+ updatePolygonOutlineIndices(polygon, indexArray, triangleIndexMax);
203
+
158
204
  polygon._dirty = false;
159
205
  }
160
206
  }
@@ -174,42 +220,68 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
174
220
  }),
175
221
 
176
222
  attributes: [
223
+ ...(!useFloat64
224
+ ? [
225
+ {
226
+ index: BufferPolygonAttributeLocations.position,
227
+ componentDatatype: collection._positionDatatype,
228
+ componentsPerAttribute: 3,
229
+ normalize: collection._positionNormalized,
230
+ vertexBuffer: Buffer.createVertexBuffer({
231
+ typedArray: attributeArrays.position,
232
+ context,
233
+ usage: BufferUsage.STATIC_DRAW,
234
+ }),
235
+ },
236
+ ]
237
+ : [
238
+ {
239
+ index: BufferPolygonAttributeLocationsFloat64.positionHigh,
240
+ componentDatatype: ComponentDatatype.FLOAT,
241
+ componentsPerAttribute: 3,
242
+ vertexBuffer: Buffer.createVertexBuffer({
243
+ typedArray: attributeArrays.positionHigh,
244
+ context,
245
+ usage: BufferUsage.STATIC_DRAW,
246
+ }),
247
+ },
248
+ {
249
+ index: BufferPolygonAttributeLocationsFloat64.positionLow,
250
+ componentDatatype: ComponentDatatype.FLOAT,
251
+ componentsPerAttribute: 3,
252
+ vertexBuffer: Buffer.createVertexBuffer({
253
+ typedArray: attributeArrays.positionLow,
254
+ context,
255
+ usage: BufferUsage.STATIC_DRAW,
256
+ }),
257
+ },
258
+ ]),
177
259
  {
178
- index: BufferPolygonAttributeLocations.positionHigh,
179
- componentDatatype: ComponentDatatype.FLOAT,
180
- componentsPerAttribute: 3,
260
+ index: attributeLocations.pickColor,
261
+ componentDatatype: ComponentDatatype.UNSIGNED_BYTE,
262
+ componentsPerAttribute: 4,
181
263
  vertexBuffer: Buffer.createVertexBuffer({
182
- typedArray: attributeArrays.positionHigh,
264
+ typedArray: attributeArrays.pickColor,
183
265
  context,
184
266
  usage: BufferUsage.STATIC_DRAW,
185
267
  }),
186
268
  },
187
269
  {
188
- index: BufferPolygonAttributeLocations.positionLow,
270
+ index: attributeLocations.showColorAlpha,
189
271
  componentDatatype: ComponentDatatype.FLOAT,
190
272
  componentsPerAttribute: 3,
191
273
  vertexBuffer: Buffer.createVertexBuffer({
192
- typedArray: attributeArrays.positionLow,
274
+ typedArray: attributeArrays.showColorAlpha,
193
275
  context,
194
276
  usage: BufferUsage.STATIC_DRAW,
195
277
  }),
196
278
  },
197
279
  {
198
- index: BufferPolygonAttributeLocations.pickColor,
199
- componentDatatype: ComponentDatatype.UNSIGNED_BYTE,
200
- componentsPerAttribute: 4,
201
- vertexBuffer: Buffer.createVertexBuffer({
202
- typedArray: attributeArrays.pickColor,
203
- context,
204
- usage: BufferUsage.STATIC_DRAW,
205
- }),
206
- },
207
- {
208
- index: BufferPolygonAttributeLocations.showAndColor,
280
+ index: attributeLocations.outlineWidthColorAlpha,
209
281
  componentDatatype: ComponentDatatype.FLOAT,
210
- componentsPerAttribute: 2,
282
+ componentsPerAttribute: 3,
211
283
  vertexBuffer: Buffer.createVertexBuffer({
212
- typedArray: attributeArrays.showAndColor,
284
+ typedArray: attributeArrays.outlineWidthColorAlpha,
213
285
  context,
214
286
  usage: BufferUsage.STATIC_DRAW,
215
287
  }),
@@ -225,12 +297,20 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
225
297
  indexOffset,
226
298
  indexCount,
227
299
  );
300
+ const triangleIndexMax = /** @type {number} */ (
301
+ renderContext.triangleIndexMax
302
+ );
303
+ renderContext.vertexArray.copyIndexFromRange(
304
+ renderContext.indexArray,
305
+ triangleIndexMax + vertexOffset * 2,
306
+ vertexCount * 2,
307
+ );
228
308
 
229
- for (const key in BufferPolygonAttributeLocations) {
230
- if (Object.hasOwn(BufferPolygonAttributeLocations, key)) {
309
+ for (const key in attributeLocations) {
310
+ if (Object.hasOwn(attributeLocations, key)) {
231
311
  const attribute = /** @type {BufferPolygonAttribute} */ (key);
232
312
  renderContext.vertexArray.copyAttributeFromRange(
233
- BufferPolygonAttributeLocations[attribute],
313
+ attributeLocations[attribute],
234
314
  renderContext.attributeArrays[attribute],
235
315
  vertexOffset,
236
316
  vertexCount,
@@ -241,21 +321,53 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
241
321
 
242
322
  if (!defined(renderContext.renderState)) {
243
323
  renderContext.renderState = RenderState.fromCache({
244
- blending: BlendingState.DISABLED,
324
+ blending:
325
+ collection._blendOption === BlendOption.OPAQUE
326
+ ? BlendingState.DISABLED
327
+ : BlendingState.ALPHA_BLEND,
245
328
  depthTest: { enabled: true },
246
329
  });
247
330
  }
248
331
 
332
+ if (!defined(renderContext.outlineRenderState)) {
333
+ renderContext.outlineRenderState = RenderState.fromCache({
334
+ blending:
335
+ collection._blendOption === BlendOption.OPAQUE
336
+ ? BlendingState.DISABLED
337
+ : BlendingState.ALPHA_BLEND,
338
+ depthTest: {
339
+ enabled: true,
340
+ func: WebGLConstants.LEQUAL,
341
+ },
342
+ });
343
+ }
344
+
249
345
  if (!defined(renderContext.shaderProgram)) {
250
346
  renderContext.shaderProgram = ShaderProgram.fromCache({
251
347
  context,
252
348
  vertexShaderSource: new ShaderSource({
253
349
  sources: [BufferPolygonMaterialVS],
350
+ defines: useFloat64 ? ["USE_FLOAT64"] : [],
351
+ }),
352
+ fragmentShaderSource: new ShaderSource({
353
+ sources: [BufferPolygonMaterialFS],
354
+ }),
355
+ attributeLocations,
356
+ });
357
+ }
358
+
359
+ if (!defined(renderContext.outlineShaderProgram)) {
360
+ renderContext.outlineShaderProgram = ShaderProgram.fromCache({
361
+ context,
362
+ vertexShaderSource: new ShaderSource({
363
+ sources: [BufferPolygonMaterialVS],
364
+ defines: useFloat64 ? ["USE_FLOAT64"] : [],
254
365
  }),
255
366
  fragmentShaderSource: new ShaderSource({
256
367
  sources: [BufferPolygonMaterialFS],
368
+ defines: ["OUTLINE"],
257
369
  }),
258
- attributeLocations: BufferPolygonAttributeLocations,
370
+ attributeLocations,
259
371
  });
260
372
  }
261
373
 
@@ -267,12 +379,15 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
267
379
  renderState: renderContext.renderState,
268
380
  shaderProgram: renderContext.shaderProgram,
269
381
  primitiveType: PrimitiveType.TRIANGLES,
270
- pass: Pass.OPAQUE,
382
+ pass:
383
+ collection._blendOption === BlendOption.OPAQUE
384
+ ? Pass.OPAQUE
385
+ : Pass.TRANSLUCENT,
271
386
  pickId: collection._allowPicking ? "v_pickColor" : undefined,
272
387
  owner: collection,
273
388
  count: drawCount,
274
389
  modelMatrix: collection.modelMatrix, // shared reference
275
- boundingVolume: collection.boundingVolumeWC, // shared reference
390
+ boundingVolume: collection.boundingVolume, // shared reference
276
391
  debugShowBoundingVolume: collection.debugShowBoundingVolume,
277
392
  });
278
393
  }
@@ -289,12 +404,89 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
289
404
 
290
405
  frameState.commandList.push(command);
291
406
 
292
- collection._dirtyCount = 0;
293
- collection._dirtyOffset = 0;
407
+ if (collection._polygonOutlineEnabled) {
408
+ if (!defined(renderContext.outlineCommand)) {
409
+ renderContext.outlineCommand = new DrawCommand({
410
+ vertexArray: renderContext.vertexArray,
411
+ renderState: renderContext.outlineRenderState,
412
+ shaderProgram: renderContext.outlineShaderProgram,
413
+ primitiveType: PrimitiveType.LINES,
414
+ pass: Pass.OVERLAY,
415
+ pickId: collection._allowPicking ? "v_pickColor" : undefined,
416
+ owner: collection,
417
+ count: collection.vertexCount * 2,
418
+ modelMatrix: collection.modelMatrix, // shared reference
419
+ boundingVolume: collection.boundingVolume, // shared reference
420
+ debugShowBoundingVolume: collection.debugShowBoundingVolume,
421
+ });
422
+ }
423
+
424
+ const outlineCommand = renderContext.outlineCommand;
425
+ const outlineCount = collection.vertexCount * 2;
426
+ outlineCommand.offset = /** @type {number} */ (
427
+ renderContext.triangleIndexMax
428
+ );
429
+ if (outlineCommand.count !== outlineCount) {
430
+ outlineCommand.count = outlineCount;
431
+ }
432
+ if (
433
+ outlineCommand.debugShowBoundingVolume !==
434
+ collection.debugShowBoundingVolume
435
+ ) {
436
+ outlineCommand.debugShowBoundingVolume =
437
+ collection.debugShowBoundingVolume;
438
+ }
439
+ frameState.commandList.push(outlineCommand);
440
+ }
441
+
442
+ collection._makeClean();
294
443
 
295
444
  return renderContext;
296
445
  }
297
446
 
447
+ /**
448
+ * Writes two indices per polygon vertex, closing each exterior/interior ring.
449
+ * Edges on a clipped tile boundary are emitted as degenerate segments so they
450
+ * do not draw artificial tile seams. The fixed 2 * vertexCount layout keeps
451
+ * every polygon's outline range at `triangleIndexMax + vertexOffset * 2`, so
452
+ * dirty updates stay contiguous.
453
+ *
454
+ * @param {BufferPolygon} polygon
455
+ * @param {TypedArray} indexArray
456
+ * @param {number} triangleIndexMax
457
+ * @ignore
458
+ */
459
+ function updatePolygonOutlineIndices(polygon, indexArray, triangleIndexMax) {
460
+ const tileBoundaryFlags = polygon._collection._polygonTileBoundaryFlags;
461
+ const holes = polygon.getHoles();
462
+ const ringStarts = [0];
463
+ for (let i = 0; i < holes.length; i++) {
464
+ ringStarts.push(holes[i]);
465
+ }
466
+
467
+ const globalVertexStart = polygon.vertexOffset;
468
+ let writeOffset = triangleIndexMax + globalVertexStart * 2;
469
+
470
+ for (let i = 0; i < ringStarts.length; i++) {
471
+ const ringStart = ringStarts[i];
472
+ const ringEnd =
473
+ i + 1 < ringStarts.length ? ringStarts[i + 1] : polygon.vertexCount;
474
+ const ringVertexCount = ringEnd - ringStart;
475
+
476
+ for (let j = 0; j < ringVertexCount; j++) {
477
+ const next = (j + 1) % ringVertexCount;
478
+ const vertexA = globalVertexStart + ringStart + j;
479
+ const vertexB = globalVertexStart + ringStart + next;
480
+ const isTileBoundaryEdge =
481
+ defined(tileBoundaryFlags) &&
482
+ (tileBoundaryFlags[vertexA] & tileBoundaryFlags[vertexB]) !== 0;
483
+
484
+ indexArray[writeOffset++] = vertexA;
485
+ indexArray[writeOffset++] = isTileBoundaryEdge ? vertexA : vertexB;
486
+ }
487
+ }
488
+ }
489
+
298
490
  /**
299
491
  * Computes dirty ranges for attribute and index buffers in a collection.
300
492
  * @param {BufferPolygonCollection} collection