@hztxi/cesium-engine 25.0.2 → 25.0.4

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 (292) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +761 -520
  2. package/Build/Workers/chunk-2KZP32NE.js +3201 -0
  3. package/Build/Workers/chunk-2P5SGQUU.js +44 -0
  4. package/Build/Workers/chunk-2PFSIZOR.js +959 -0
  5. package/Build/Workers/chunk-2RC5GQMH.js +82 -0
  6. package/Build/Workers/chunk-2TM5FET3.js +241 -0
  7. package/Build/Workers/chunk-2ZYMQXBB.js +519 -0
  8. package/Build/Workers/chunk-37IVAHRF.js +3201 -0
  9. package/Build/Workers/chunk-3B2TIEWW.js +73 -0
  10. package/Build/Workers/chunk-3CSWK42O.js +3648 -0
  11. package/Build/Workers/chunk-3GDVUAIX.js +1287 -0
  12. package/Build/Workers/chunk-3HOOLJ6E.js +1483 -0
  13. package/Build/Workers/chunk-3L5NZHVW.js +288 -0
  14. package/Build/Workers/chunk-3LQDIJFX.js +2719 -0
  15. package/Build/Workers/chunk-3MWOYCFC.js +511 -0
  16. package/Build/Workers/chunk-3Q52BERF.js +476 -0
  17. package/Build/Workers/chunk-3WIDW5QO.js +1800 -0
  18. package/Build/Workers/chunk-4L4ZXXL7.js +57 -0
  19. package/Build/Workers/chunk-4MHUA5ZK.js +163 -0
  20. package/Build/Workers/chunk-4QK5RZ5I.js +171 -0
  21. package/Build/Workers/chunk-4RWSLDVO.js +198 -0
  22. package/Build/Workers/chunk-53HFLKT5.js +76 -0
  23. package/Build/Workers/chunk-5BVKUNRB.js +368 -0
  24. package/Build/Workers/chunk-5DJBLQEH.js +56 -0
  25. package/Build/Workers/chunk-5FNZGB4U.js +368 -0
  26. package/Build/Workers/chunk-5KOCUIKQ.js +476 -0
  27. package/Build/Workers/chunk-5PK42ITB.js +219 -0
  28. package/Build/Workers/chunk-5SGB3BKM.js +73 -0
  29. package/Build/Workers/chunk-5ZWRS2E6.js +280 -0
  30. package/Build/Workers/chunk-642GMGGP.js +162 -0
  31. package/Build/Workers/chunk-65LZTCWG.js +1344 -0
  32. package/Build/Workers/chunk-6FU5LWYG.js +352 -0
  33. package/Build/Workers/chunk-6IYEGXEW.js +1344 -0
  34. package/Build/Workers/chunk-6KWWDFT4.js +278 -0
  35. package/Build/Workers/chunk-6PYOAYJD.js +1046 -0
  36. package/Build/Workers/chunk-73DJHI53.js +398 -0
  37. package/Build/Workers/chunk-73OT3YBQ.js +1054 -0
  38. package/Build/Workers/chunk-73T2E2OA.js +454 -0
  39. package/Build/Workers/chunk-752QDGCS.js +778 -0
  40. package/Build/Workers/chunk-76HD3HYN.js +2342 -0
  41. package/Build/Workers/chunk-7I4AKIEV.js +58 -0
  42. package/Build/Workers/chunk-7ZYD7GL6.js +414 -0
  43. package/Build/Workers/chunk-AH6GJ5MT.js +754 -0
  44. package/Build/Workers/chunk-ALJYMECF.js +973 -0
  45. package/Build/Workers/chunk-AM56LGEB.js +352 -0
  46. package/Build/Workers/chunk-ANGZAKVP.js +257 -0
  47. package/Build/Workers/chunk-ATT5UEK6.js +97 -0
  48. package/Build/Workers/chunk-AW3UT5RP.js +97 -0
  49. package/Build/Workers/chunk-AZGPL6BR.js +38 -0
  50. package/Build/Workers/chunk-B7SMDRPA.js +476 -0
  51. package/Build/Workers/chunk-BADQ2G5E.js +837 -0
  52. package/Build/Workers/chunk-BAPOWX62.js +368 -0
  53. package/Build/Workers/chunk-BE5ULV4I.js +1800 -0
  54. package/Build/Workers/chunk-BII4UB3C.js +476 -0
  55. package/Build/Workers/chunk-BPL3HT2R.js +837 -0
  56. package/Build/Workers/chunk-BVAMP4M3.js +101 -0
  57. package/Build/Workers/chunk-BVFS5LSK.js +1067 -0
  58. package/Build/Workers/chunk-CADDH6MK.js +140 -0
  59. package/Build/Workers/chunk-CEIY3YH2.js +57 -0
  60. package/Build/Workers/chunk-CJT3FTZK.js +58 -0
  61. package/Build/Workers/chunk-CKWUU4JK.js +138 -0
  62. package/Build/Workers/chunk-CMMHWVUF.js +2719 -0
  63. package/Build/Workers/chunk-CQNFIAZU.js +56 -0
  64. package/Build/Workers/chunk-CSUBL77L.js +140 -0
  65. package/Build/Workers/chunk-CV7K25H3.js +138 -0
  66. package/Build/Workers/chunk-DHCQSFRN.js +301 -0
  67. package/Build/Workers/chunk-DKFSOFKR.js +241 -0
  68. package/Build/Workers/chunk-DLHFYNG6.js +52 -0
  69. package/Build/Workers/chunk-DNEERCHO.js +171 -0
  70. package/Build/Workers/chunk-EHXAKTME.js +147 -0
  71. package/Build/Workers/chunk-ETABYWY4.js +973 -0
  72. package/Build/Workers/chunk-EYVCQUVQ.js +1067 -0
  73. package/Build/Workers/chunk-FE7VHPNW.js +102 -0
  74. package/Build/Workers/chunk-FF6JKPLF.js +454 -0
  75. package/Build/Workers/chunk-FFEVCOBU.js +387 -0
  76. package/Build/Workers/chunk-FTRHXHI5.js +3794 -0
  77. package/Build/Workers/chunk-FWABE4BL.js +305 -0
  78. package/Build/Workers/chunk-GC24BPCQ.js +305 -0
  79. package/Build/Workers/chunk-GCTHMF35.js +387 -0
  80. package/Build/Workers/chunk-GDHSPLWC.js +9237 -0
  81. package/Build/Workers/chunk-GGK7SA4Y.js +414 -0
  82. package/Build/Workers/chunk-GGVG7G5Z.js +1483 -0
  83. package/Build/Workers/chunk-GH2D6MPO.js +497 -0
  84. package/Build/Workers/chunk-GHVEEVR7.js +778 -0
  85. package/Build/Workers/chunk-GL7W3I3A.js +959 -0
  86. package/Build/Workers/chunk-H52M4HMP.js +9230 -0
  87. package/Build/Workers/chunk-H7QGY7HB.js +1054 -0
  88. package/Build/Workers/chunk-H7ZXQIV2.js +398 -0
  89. package/Build/Workers/chunk-HBJKIDKK.js +76 -0
  90. package/Build/Workers/chunk-HERVRBJW.js +76 -0
  91. package/Build/Workers/chunk-HFMS7MXO.js +511 -0
  92. package/Build/Workers/chunk-HH6PJ22V.js +455 -0
  93. package/Build/Workers/chunk-HQ2PXPP7.js +102 -0
  94. package/Build/Workers/chunk-HTO45L3X.js +454 -0
  95. package/Build/Workers/chunk-HUNCRVVV.js +1067 -0
  96. package/Build/Workers/chunk-HW5TLMPQ.js +57 -0
  97. package/Build/Workers/chunk-IC3HVJBG.js +301 -0
  98. package/Build/Workers/chunk-IEKP7CEH.js +387 -0
  99. package/Build/Workers/chunk-IFSGYIDE.js +257 -0
  100. package/Build/Workers/chunk-ILUFUAF3.js +1992 -0
  101. package/Build/Workers/chunk-ILX5N5QR.js +2342 -0
  102. package/Build/Workers/chunk-IRSD4EJW.js +630 -0
  103. package/Build/Workers/chunk-ISRYZ3F4.js +414 -0
  104. package/Build/Workers/chunk-J3A3XMTG.js +672 -0
  105. package/Build/Workers/chunk-JBJ5PC2D.js +102 -0
  106. package/Build/Workers/chunk-JFPBQCDB.js +398 -0
  107. package/Build/Workers/chunk-JK54NBBO.js +778 -0
  108. package/Build/Workers/chunk-JKPELBSI.js +682 -0
  109. package/Build/Workers/chunk-JLLWLD6O.js +973 -0
  110. package/Build/Workers/chunk-JSFKPEFK.js +352 -0
  111. package/Build/Workers/chunk-JTSSQ3RH.js +147 -0
  112. package/Build/Workers/chunk-JZVZDHC2.js +288 -0
  113. package/Build/Workers/chunk-K724BR5O.js +455 -0
  114. package/Build/Workers/chunk-KCUS7QEU.js +387 -0
  115. package/Build/Workers/chunk-KFRKYG4B.js +288 -0
  116. package/Build/Workers/chunk-KJOVSN7J.js +56 -0
  117. package/Build/Workers/chunk-KKEMKV5G.js +44 -0
  118. package/Build/Workers/chunk-KXNXQXP5.js +682 -0
  119. package/Build/Workers/chunk-KYXZ3XTC.js +497 -0
  120. package/Build/Workers/chunk-L65LWRUE.js +3648 -0
  121. package/Build/Workers/chunk-LAN4XQR6.js +162 -0
  122. package/Build/Workers/chunk-LERIK6IA.js +219 -0
  123. package/Build/Workers/chunk-LOVXQI64.js +2719 -0
  124. package/Build/Workers/chunk-LVO4J36T.js +1800 -0
  125. package/Build/Workers/chunk-LY5KUQ2L.js +57 -0
  126. package/Build/Workers/chunk-M2XWG5VC.js +124 -0
  127. package/Build/Workers/chunk-MD7CEJO5.js +2342 -0
  128. package/Build/Workers/chunk-MUPWJMPP.js +44 -0
  129. package/Build/Workers/chunk-MVBEMXN4.js +163 -0
  130. package/Build/Workers/chunk-MVQYVX6D.js +511 -0
  131. package/Build/Workers/chunk-N4RF6TUL.js +301 -0
  132. package/Build/Workers/chunk-NCH4P66E.js +219 -0
  133. package/Build/Workers/chunk-NCL22ZUX.js +56 -0
  134. package/Build/Workers/chunk-NNJDVVEG.js +3794 -0
  135. package/Build/Workers/chunk-NYQSZLRF.js +78 -0
  136. package/Build/Workers/chunk-O2V4I3I5.js +682 -0
  137. package/Build/Workers/chunk-O453S45W.js +1483 -0
  138. package/Build/Workers/chunk-O5CYW2IR.js +1046 -0
  139. package/Build/Workers/chunk-OJ7O7DKV.js +973 -0
  140. package/Build/Workers/chunk-OJK33YVT.js +171 -0
  141. package/Build/Workers/chunk-OKFC4PDV.js +1344 -0
  142. package/Build/Workers/chunk-OKPQ3QBG.js +124 -0
  143. package/Build/Workers/chunk-OKUXJIW3.js +124 -0
  144. package/Build/Workers/chunk-OWDZ5BX4.js +280 -0
  145. package/Build/Workers/chunk-PC7533X2.js +1800 -0
  146. package/Build/Workers/chunk-PCERHV4S.js +198 -0
  147. package/Build/Workers/chunk-PCXE4XMI.js +82 -0
  148. package/Build/Workers/chunk-PJT22BD4.js +352 -0
  149. package/Build/Workers/chunk-PKV3R77E.js +672 -0
  150. package/Build/Workers/chunk-PQ2MGY7X.js +162 -0
  151. package/Build/Workers/chunk-PR62UBKE.js +693 -0
  152. package/Build/Workers/chunk-PXPUYOFJ.js +1287 -0
  153. package/Build/Workers/chunk-QJJ3GXSH.js +140 -0
  154. package/Build/Workers/chunk-QM4HZZYW.js +219 -0
  155. package/Build/Workers/chunk-QQ2BBL7Z.js +162 -0
  156. package/Build/Workers/chunk-QX6AYJX2.js +455 -0
  157. package/Build/Workers/chunk-QYC6Y25A.js +124 -0
  158. package/Build/Workers/chunk-RBAZR7R2.js +280 -0
  159. package/Build/Workers/chunk-REZJEC6F.js +241 -0
  160. package/Build/Workers/chunk-RS3LRHOK.js +73 -0
  161. package/Build/Workers/chunk-RSJUCJPN.js +241 -0
  162. package/Build/Workers/chunk-S2WTOFGB.js +102 -0
  163. package/Build/Workers/chunk-SGLJWWWY.js +352 -0
  164. package/Build/Workers/chunk-SJZMU3OS.js +2342 -0
  165. package/Build/Workers/chunk-SMZXVFCA.js +1344 -0
  166. package/Build/Workers/chunk-SND4KNB6.js +754 -0
  167. package/Build/Workers/chunk-SPTT255E.js +301 -0
  168. package/Build/Workers/chunk-SRH2XIWS.js +1067 -0
  169. package/Build/Workers/chunk-STXWAEVD.js +101 -0
  170. package/Build/Workers/chunk-SUG6ECWR.js +76 -0
  171. package/Build/Workers/chunk-SXSP3JHS.js +38 -0
  172. package/Build/Workers/chunk-T6SVKD76.js +511 -0
  173. package/Build/Workers/chunk-TA3PH4Q7.js +519 -0
  174. package/Build/Workers/chunk-TDJ2NSYJ.js +171 -0
  175. package/Build/Workers/chunk-TJCD5NV5.js +837 -0
  176. package/Build/Workers/chunk-TPT5IM72.js +280 -0
  177. package/Build/Workers/chunk-TTG2JNFN.js +198 -0
  178. package/Build/Workers/chunk-TXBADNRA.js +9237 -0
  179. package/Build/Workers/chunk-TYW2D7VU.js +2719 -0
  180. package/Build/Workers/chunk-U3KB4HMG.js +1054 -0
  181. package/Build/Workers/chunk-U6OMVSBY.js +368 -0
  182. package/Build/Workers/chunk-UAVMVBMC.js +754 -0
  183. package/Build/Workers/chunk-UCOZLNHF.js +1284 -0
  184. package/Build/Workers/chunk-UDKEO3UF.js +163 -0
  185. package/Build/Workers/chunk-UDXUBVNR.js +1992 -0
  186. package/Build/Workers/chunk-UIQUUY4A.js +73 -0
  187. package/Build/Workers/chunk-ULY2FDDP.js +454 -0
  188. package/Build/Workers/chunk-UNXJWCXV.js +9230 -0
  189. package/Build/Workers/chunk-UT7YX565.js +1992 -0
  190. package/Build/Workers/chunk-UTKCX3AS.js +352 -0
  191. package/Build/Workers/chunk-UTOYFI3Q.js +1992 -0
  192. package/Build/Workers/chunk-UUXWWJI7.js +101 -0
  193. package/Build/Workers/chunk-V5AWAGL2.js +97 -0
  194. package/Build/Workers/chunk-V5AXOGPW.js +682 -0
  195. package/Build/Workers/chunk-VAUX2Q2X.js +138 -0
  196. package/Build/Workers/chunk-VDX4SJKV.js +58 -0
  197. package/Build/Workers/chunk-VL2WHGQI.js +305 -0
  198. package/Build/Workers/chunk-W37YFRTG.js +38 -0
  199. package/Build/Workers/chunk-W5AGSDWX.js +44 -0
  200. package/Build/Workers/chunk-W7WEPLZL.js +414 -0
  201. package/Build/Workers/chunk-WBQDTVCN.js +97 -0
  202. package/Build/Workers/chunk-WDSHSR57.js +837 -0
  203. package/Build/Workers/chunk-WNAG4FHY.js +305 -0
  204. package/Build/Workers/chunk-WNQX2CP3.js +455 -0
  205. package/Build/Workers/chunk-XCASHPVG.js +778 -0
  206. package/Build/Workers/chunk-XJUIVTHG.js +1483 -0
  207. package/Build/Workers/chunk-XPIDT6UT.js +1054 -0
  208. package/Build/Workers/chunk-XQETP7YD.js +3201 -0
  209. package/Build/Workers/chunk-XQVSSVT2.js +140 -0
  210. package/Build/Workers/chunk-Y5E2LVSX.js +138 -0
  211. package/Build/Workers/chunk-YEMKJOOG.js +352 -0
  212. package/Build/Workers/chunk-YGFVAGYF.js +630 -0
  213. package/Build/Workers/chunk-YNWTO2WN.js +147 -0
  214. package/Build/Workers/chunk-YZAMLSIA.js +352 -0
  215. package/Build/Workers/chunk-Z3KHKVNA.js +56 -0
  216. package/Build/Workers/chunk-Z6LUW5FN.js +198 -0
  217. package/Build/Workers/chunk-Z7XRKD6H.js +693 -0
  218. package/Build/Workers/chunk-ZDUCDVKX.js +288 -0
  219. package/Build/Workers/chunk-ZEEPTE4R.js +147 -0
  220. package/Build/Workers/chunk-ZIBW2BFB.js +1284 -0
  221. package/Build/Workers/chunk-ZOYVNCFZ.js +754 -0
  222. package/Build/Workers/chunk-ZQUSI7YK.js +630 -0
  223. package/Build/Workers/chunk-ZSWY7UNG.js +3201 -0
  224. package/Build/Workers/chunk-ZXRWKKJP.js +398 -0
  225. package/Build/Workers/chunk-ZY4DTNR2.js +56 -0
  226. package/Build/Workers/combineGeometry.js +24 -24
  227. package/Build/Workers/createBoxGeometry.js +18 -18
  228. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  229. package/Build/Workers/createCircleGeometry.js +26 -26
  230. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  231. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  232. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  233. package/Build/Workers/createCorridorGeometry.js +29 -29
  234. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  235. package/Build/Workers/createCylinderGeometry.js +20 -20
  236. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  237. package/Build/Workers/createEllipseGeometry.js +26 -26
  238. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  239. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  240. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  241. package/Build/Workers/createFrustumGeometry.js +18 -18
  242. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  243. package/Build/Workers/createGeometry.js +24 -24
  244. package/Build/Workers/createGroundPolylineGeometry.js +23 -23
  245. package/Build/Workers/createMvtTile.js +1815 -0
  246. package/Build/Workers/createPlaneGeometry.js +16 -16
  247. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  248. package/Build/Workers/createPolygonGeometry.js +32 -32
  249. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  250. package/Build/Workers/createPolylineGeometry.js +25 -25
  251. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  252. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  253. package/Build/Workers/createRectangleGeometry.js +27 -27
  254. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  255. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  256. package/Build/Workers/createSphereGeometry.js +19 -19
  257. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  258. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  259. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  260. package/Build/Workers/createVectorTileGeometries.js +24 -24
  261. package/Build/Workers/createVectorTilePoints.js +13 -13
  262. package/Build/Workers/createVectorTilePolygons.js +22 -22
  263. package/Build/Workers/createVectorTilePolylines.js +14 -14
  264. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -26
  265. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -23
  266. package/Build/Workers/createVerticesFromHeightmap.js +25 -25
  267. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +21 -21
  268. package/Build/Workers/createWallGeometry.js +24 -24
  269. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  270. package/Build/Workers/decodeDraco.js +10 -10
  271. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +58 -44
  272. package/Build/Workers/decodeI3S.js +10 -10
  273. package/Build/Workers/gaussianSplatSorter.js +4 -4
  274. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  275. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  276. package/Build/Workers/transcodeKTX2.js +7 -7
  277. package/Build/Workers/transferTypedArrayTest.js +1 -1
  278. package/Build/Workers/upsampleQuantizedTerrainMesh.js +23 -23
  279. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -26
  280. package/Source/Core/ScreenSpaceEventHandler.js +19 -0
  281. package/Source/Scene/Globe.js +55 -0
  282. package/Source/Scene/GlobeSurfaceShaderSet.js +132 -1
  283. package/Source/Scene/GlobeSurfaceTileProvider.js +378 -2
  284. package/Source/Scene/ImageryLayer.js +244 -10
  285. package/Source/Scene/QuadtreePrimitive.js +256 -2
  286. package/Source/Shaders/GlobeFS.glsl +43 -0
  287. package/Source/Shaders/GlobeFS.js +43 -0
  288. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  289. package/Source/ThirdParty/zip-module.wasm +0 -0
  290. package/index.d.ts +48305 -0
  291. package/index.js +184 -184
  292. package/package.json +1 -1
@@ -1756,6 +1756,36 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
1756
1756
  u_dayTextureOneOverGamma: function () {
1757
1757
  return this.properties.dayTextureOneOverGamma;
1758
1758
  },
1759
+ u_dayTextureToneGain: function () {
1760
+ return this.properties.dayTextureToneGain;
1761
+ },
1762
+ u_dayTextureToneBias: function () {
1763
+ return this.properties.dayTextureToneBias;
1764
+ },
1765
+ u_dayTextureToneEdgeGain: function () {
1766
+ return this.properties.dayTextureToneEdgeGain;
1767
+ },
1768
+ u_dayTextureToneEdgeBias: function () {
1769
+ return this.properties.dayTextureToneEdgeBias;
1770
+ },
1771
+ u_dayTextureToneEdgeBlend: function () {
1772
+ return this.properties.dayTextureToneEdgeBlend;
1773
+ },
1774
+ u_dayTextureCrossTexture: function () {
1775
+ return this.properties.dayTextureCrossTexture;
1776
+ },
1777
+ u_dayTextureCrossTranslationAndScale: function () {
1778
+ return this.properties.dayTextureCrossTranslationAndScale;
1779
+ },
1780
+ u_dayTextureCrossGain: function () {
1781
+ return this.properties.dayTextureCrossGain;
1782
+ },
1783
+ u_dayTextureCrossBias: function () {
1784
+ return this.properties.dayTextureCrossBias;
1785
+ },
1786
+ u_dayTextureCrossBlend: function () {
1787
+ return this.properties.dayTextureCrossBlend;
1788
+ },
1759
1789
  u_dayIntensity: function () {
1760
1790
  return this.properties.dayIntensity;
1761
1791
  },
@@ -1896,6 +1926,16 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
1896
1926
  dayTextureHue: [],
1897
1927
  dayTextureSaturation: [],
1898
1928
  dayTextureOneOverGamma: [],
1929
+ dayTextureToneGain: [],
1930
+ dayTextureToneBias: [],
1931
+ dayTextureToneEdgeGain: [],
1932
+ dayTextureToneEdgeBias: [],
1933
+ dayTextureToneEdgeBlend: [],
1934
+ dayTextureCrossTexture: [],
1935
+ dayTextureCrossTranslationAndScale: [],
1936
+ dayTextureCrossGain: [],
1937
+ dayTextureCrossBias: [],
1938
+ dayTextureCrossBlend: [],
1899
1939
  dayTextureSplit: [],
1900
1940
  dayTextureCutoutRectangles: [],
1901
1941
  dayIntensity: 0.0,
@@ -2124,6 +2164,110 @@ const surfaceShaderSetOptionsScratch = {
2124
2164
  const defaultUndergroundColor = Color.TRANSPARENT;
2125
2165
  const defaultUndergroundColorAlphaByDistance = new NearFarScalar();
2126
2166
 
2167
+ // Flattens the per-texture-count render buckets into one array, rebuilt at
2168
+ // most once per frame. Shared by every levelColorEdgeBlend neighbor lookup.
2169
+ function getRenderedTilesFlat(tileProvider, frameNumber) {
2170
+ let flat = tileProvider._edgeBlendTiles;
2171
+ if (!defined(flat) || tileProvider._edgeBlendTilesFrame !== frameNumber) {
2172
+ flat = [];
2173
+ const buckets = tileProvider._tilesToRenderByTextureCount;
2174
+ for (let bucketIndex = 0; bucketIndex < buckets.length; ++bucketIndex) {
2175
+ const bucket = buckets[bucketIndex];
2176
+ if (!defined(bucket)) {
2177
+ continue;
2178
+ }
2179
+ for (let tileIndex = 0; tileIndex < bucket.length; ++tileIndex) {
2180
+ flat.push(bucket[tileIndex]);
2181
+ }
2182
+ }
2183
+ tileProvider._edgeBlendTiles = flat;
2184
+ tileProvider._edgeBlendTilesFrame = frameNumber;
2185
+ }
2186
+ return flat;
2187
+ }
2188
+
2189
+ // Finds the rendered tile sharing the given geographic edge of `rectangle`.
2190
+ // Edge order matches the shader uniforms: 0 = south, 1 = east, 2 = north,
2191
+ // 3 = west. When several tiles share the edge (finer neighbors), the one
2192
+ // with the longest shared extent wins. Tiles straddling the antimeridian do
2193
+ // not test as adjacent, so no fade is applied across it.
2194
+ const edgeAdjacencyEpsilon = CesiumMath.EPSILON12;
2195
+
2196
+ // Reused by findAdjacentRenderedTile callers that need the shared-edge length
2197
+ // (dominant coarser-neighbor selection for the content cross-fade).
2198
+ const adjacentRenderedTileScratch = { tile: undefined, overlap: 0.0 };
2199
+
2200
+ function findAdjacentRenderedTile(renderedTiles, rectangle, edge, result) {
2201
+ result = defined(result) ? result : adjacentRenderedTileScratch;
2202
+ let best;
2203
+ let bestOverlap = 0.0;
2204
+ for (let tileIndex = 0; tileIndex < renderedTiles.length; ++tileIndex) {
2205
+ const other = renderedTiles[tileIndex];
2206
+ const otherRectangle = other.rectangle;
2207
+ let overlapStart;
2208
+ let overlapEnd;
2209
+ if (edge === 0) {
2210
+ if (
2211
+ Math.abs(otherRectangle.north - rectangle.south) > edgeAdjacencyEpsilon
2212
+ ) {
2213
+ continue;
2214
+ }
2215
+ overlapStart = Math.max(otherRectangle.west, rectangle.west);
2216
+ overlapEnd = Math.min(otherRectangle.east, rectangle.east);
2217
+ } else if (edge === 1) {
2218
+ if (
2219
+ Math.abs(otherRectangle.west - rectangle.east) > edgeAdjacencyEpsilon
2220
+ ) {
2221
+ continue;
2222
+ }
2223
+ overlapStart = Math.max(otherRectangle.south, rectangle.south);
2224
+ overlapEnd = Math.min(otherRectangle.north, rectangle.north);
2225
+ } else if (edge === 2) {
2226
+ if (
2227
+ Math.abs(otherRectangle.south - rectangle.north) > edgeAdjacencyEpsilon
2228
+ ) {
2229
+ continue;
2230
+ }
2231
+ overlapStart = Math.max(otherRectangle.west, rectangle.west);
2232
+ overlapEnd = Math.min(otherRectangle.east, rectangle.east);
2233
+ } else {
2234
+ if (
2235
+ Math.abs(otherRectangle.east - rectangle.west) > edgeAdjacencyEpsilon
2236
+ ) {
2237
+ continue;
2238
+ }
2239
+ overlapStart = Math.max(otherRectangle.south, rectangle.south);
2240
+ overlapEnd = Math.min(otherRectangle.north, rectangle.north);
2241
+ }
2242
+ const overlap = overlapEnd - overlapStart;
2243
+ if (overlap > bestOverlap) {
2244
+ bestOverlap = overlap;
2245
+ best = other;
2246
+ }
2247
+ }
2248
+ result.tile = best;
2249
+ result.overlap = bestOverlap;
2250
+ return result;
2251
+ }
2252
+
2253
+ function getNeighborImageryLevel(neighborTile, imageryLayer) {
2254
+ const imageryList = neighborTile.data.imagery;
2255
+ if (!defined(imageryList)) {
2256
+ return undefined;
2257
+ }
2258
+ for (let tileIndex = 0; tileIndex < imageryList.length; ++tileIndex) {
2259
+ const readyImagery = imageryList[tileIndex].readyImagery;
2260
+ if (defined(readyImagery) && readyImagery.imageryLayer === imageryLayer) {
2261
+ return readyImagery.level;
2262
+ }
2263
+ }
2264
+ return undefined;
2265
+ }
2266
+
2267
+ // Per-edge neighbor imagery levels for the texture unit currently being
2268
+ // filled; reused across units and tiles every frame.
2269
+ const edgeNeighborLevelsScratch = new Array(4);
2270
+
2127
2271
  function addDrawCommandsForTile(tileProvider, tile, frameState) {
2128
2272
  const surfaceTile = tile.data;
2129
2273
 
@@ -2601,6 +2745,10 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2601
2745
  let applyGamma = false;
2602
2746
  let applyAlpha = false;
2603
2747
  let applyDayNightAlpha = false;
2748
+ let applyToneMatch = false;
2749
+ let applyToneMatchEdge = false;
2750
+ let applyToneMatchCross = false;
2751
+ let crossUnits = 0;
2604
2752
  let applySplit = false;
2605
2753
  let applyCutout = false;
2606
2754
  let applyColorToAlpha = false;
@@ -2702,6 +2850,217 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2702
2850
  uniformMapProperties.dayTextureOneOverGamma[numberOfDayTextures] !==
2703
2851
  1.0 / ImageryLayer.DEFAULT_GAMMA;
2704
2852
 
2853
+ const levelCorrection = imageryLayer._getLevelColorCorrection(
2854
+ imagery.level,
2855
+ );
2856
+ applyToneMatch = applyToneMatch || defined(levelCorrection);
2857
+
2858
+ let toneGain =
2859
+ uniformMapProperties.dayTextureToneGain[numberOfDayTextures];
2860
+ if (!defined(toneGain)) {
2861
+ toneGain = new Cartesian3(1.0, 1.0, 1.0);
2862
+ uniformMapProperties.dayTextureToneGain[numberOfDayTextures] = toneGain;
2863
+ }
2864
+ if (defined(levelCorrection)) {
2865
+ Cartesian3.clone(levelCorrection.gain, toneGain);
2866
+ } else {
2867
+ toneGain.x = 1.0;
2868
+ toneGain.y = 1.0;
2869
+ toneGain.z = 1.0;
2870
+ }
2871
+
2872
+ let toneBias =
2873
+ uniformMapProperties.dayTextureToneBias[numberOfDayTextures];
2874
+ if (!defined(toneBias)) {
2875
+ toneBias = new Cartesian3(0.0, 0.0, 0.0);
2876
+ uniformMapProperties.dayTextureToneBias[numberOfDayTextures] = toneBias;
2877
+ }
2878
+ if (defined(levelCorrection)) {
2879
+ Cartesian3.clone(levelCorrection.bias, toneBias);
2880
+ } else {
2881
+ toneBias.x = 0.0;
2882
+ toneBias.y = 0.0;
2883
+ toneBias.z = 0.0;
2884
+ }
2885
+
2886
+ // Edge-band fade of this texture's correction toward the adjacent
2887
+ // coarser tile's correction. Only the finer side of a LOD boundary
2888
+ // fades; same-level and finer neighbors leave the edge at this
2889
+ // texture's own correction, so the fade is a no-op there.
2890
+ const levelEdgeBlend = imageryLayer.levelColorEdgeBlend;
2891
+ if (defined(levelCorrection) && levelEdgeBlend > 0.0) {
2892
+ applyToneMatchEdge = true;
2893
+ }
2894
+ const edgeBaseIndex = numberOfDayTextures * 4;
2895
+ // Cross-fade bookkeeping: imagery level of each edge's neighbor, plus
2896
+ // the dominant (longest shared edge) coarser neighbor whose ancestor
2897
+ // texture will be bound for content cross-fading below.
2898
+ let dominantCrossLevel;
2899
+ let dominantCrossOverlap = 0.0;
2900
+ for (let edgeIndex = 0; edgeIndex < 4; ++edgeIndex) {
2901
+ let edgeGain =
2902
+ uniformMapProperties.dayTextureToneEdgeGain[
2903
+ edgeBaseIndex + edgeIndex
2904
+ ];
2905
+ if (!defined(edgeGain)) {
2906
+ edgeGain = new Cartesian3();
2907
+ uniformMapProperties.dayTextureToneEdgeGain[
2908
+ edgeBaseIndex + edgeIndex
2909
+ ] = edgeGain;
2910
+ }
2911
+ let edgeBias =
2912
+ uniformMapProperties.dayTextureToneEdgeBias[
2913
+ edgeBaseIndex + edgeIndex
2914
+ ];
2915
+ if (!defined(edgeBias)) {
2916
+ edgeBias = new Cartesian3();
2917
+ uniformMapProperties.dayTextureToneEdgeBias[
2918
+ edgeBaseIndex + edgeIndex
2919
+ ] = edgeBias;
2920
+ }
2921
+
2922
+ edgeNeighborLevelsScratch[edgeIndex] = undefined;
2923
+ uniformMapProperties.dayTextureToneEdgeBlend[
2924
+ edgeBaseIndex + edgeIndex
2925
+ ] = 0.0;
2926
+ if (defined(levelCorrection) && levelEdgeBlend > 0.0) {
2927
+ const neighbor = findAdjacentRenderedTile(
2928
+ getRenderedTilesFlat(tileProvider, frameState.frameNumber),
2929
+ tile.rectangle,
2930
+ edgeIndex,
2931
+ );
2932
+ const neighborLevel = defined(neighbor.tile)
2933
+ ? getNeighborImageryLevel(neighbor.tile, imageryLayer)
2934
+ : undefined;
2935
+ edgeNeighborLevelsScratch[edgeIndex] = neighborLevel;
2936
+ if (defined(neighborLevel) && neighborLevel < imagery.level) {
2937
+ if (neighbor.overlap > dominantCrossOverlap) {
2938
+ dominantCrossOverlap = neighbor.overlap;
2939
+ dominantCrossLevel = neighborLevel;
2940
+ }
2941
+ const neighborCorrection =
2942
+ imageryLayer._getLevelColorCorrection(neighborLevel);
2943
+ if (defined(neighborCorrection)) {
2944
+ Cartesian3.clone(neighborCorrection.gain, edgeGain);
2945
+ Cartesian3.clone(neighborCorrection.bias, edgeBias);
2946
+ uniformMapProperties.dayTextureToneEdgeBlend[
2947
+ edgeBaseIndex + edgeIndex
2948
+ ] = levelEdgeBlend;
2949
+ continue;
2950
+ }
2951
+ }
2952
+ }
2953
+ Cartesian3.clone(toneGain, edgeGain);
2954
+ Cartesian3.clone(toneBias, edgeBias);
2955
+ }
2956
+
2957
+ // Content cross-fade: bind the ancestor imagery at the dominant coarser
2958
+ // neighbor's level (the very source texture the coarser side renders).
2959
+ // Near edges facing that neighbor, the shader blends the tile's full
2960
+ // rendered result with the ancestor's rendering, making both sides of
2961
+ // the boundary pixel-identical at the shared edge regardless of whether
2962
+ // the residual step came from correction limits or content differences.
2963
+ // Falls back to the correction fade above when the ancestor texture is
2964
+ // not resident, the level gap is too large (the ancestor would be
2965
+ // minified beyond recognition), the sampler budget is exhausted, or the
2966
+ // layer opts out. Edges whose coarser neighbor is at a different level
2967
+ // keep the correction fade (single bound ancestor per texture).
2968
+ // Every unit gets valid values (identity when unbound): a command's
2969
+ // shader is the CROSS variant if ANY unit bound, and the pooled uniform
2970
+ // arrays must not contain holes or stale entries for the others.
2971
+ let crossGain =
2972
+ uniformMapProperties.dayTextureCrossGain[numberOfDayTextures];
2973
+ if (!defined(crossGain)) {
2974
+ crossGain = new Cartesian3(1.0, 1.0, 1.0);
2975
+ uniformMapProperties.dayTextureCrossGain[numberOfDayTextures] =
2976
+ crossGain;
2977
+ }
2978
+ let crossBias =
2979
+ uniformMapProperties.dayTextureCrossBias[numberOfDayTextures];
2980
+ if (!defined(crossBias)) {
2981
+ crossBias = new Cartesian3(0.0, 0.0, 0.0);
2982
+ uniformMapProperties.dayTextureCrossBias[numberOfDayTextures] =
2983
+ crossBias;
2984
+ }
2985
+ let crossTranslationAndScale =
2986
+ uniformMapProperties.dayTextureCrossTranslationAndScale[
2987
+ numberOfDayTextures
2988
+ ];
2989
+ if (!defined(crossTranslationAndScale)) {
2990
+ crossTranslationAndScale = new Cartesian4(0.0, 0.0, 1.0, 1.0);
2991
+ uniformMapProperties.dayTextureCrossTranslationAndScale[
2992
+ numberOfDayTextures
2993
+ ] = crossTranslationAndScale;
2994
+ }
2995
+
2996
+ let crossTexture = texture;
2997
+ if (
2998
+ defined(levelCorrection) &&
2999
+ levelEdgeBlend > 0.0 &&
3000
+ imageryLayer.levelColorEdgeCrossFade &&
3001
+ defined(dominantCrossLevel) &&
3002
+ imagery.level - dominantCrossLevel <= 4 &&
3003
+ numberOfDayTextures + crossUnits + 1 <= maxTextures
3004
+ ) {
3005
+ let ancestor = imagery.parent;
3006
+ while (defined(ancestor) && ancestor.level > dominantCrossLevel) {
3007
+ ancestor = ancestor.parent;
3008
+ }
3009
+ const ancestorTexture =
3010
+ defined(ancestor) &&
3011
+ ancestor.level === dominantCrossLevel &&
3012
+ ancestor.state === ImageryState.READY
3013
+ ? tileImagery.useWebMercatorT
3014
+ ? ancestor.textureWebMercator
3015
+ : ancestor.texture
3016
+ : undefined;
3017
+ if (defined(ancestorTexture)) {
3018
+ crossTexture = ancestorTexture;
3019
+ ++crossUnits;
3020
+ applyToneMatchCross = true;
3021
+
3022
+ const crossCorrection =
3023
+ imageryLayer._getLevelColorCorrection(dominantCrossLevel);
3024
+ if (defined(crossCorrection)) {
3025
+ Cartesian3.clone(crossCorrection.gain, crossGain);
3026
+ Cartesian3.clone(crossCorrection.bias, crossBias);
3027
+ }
3028
+ imageryLayer._calculateImageryTranslationAndScale(
3029
+ tile,
3030
+ ancestor,
3031
+ tileImagery.useWebMercatorT,
3032
+ crossTranslationAndScale,
3033
+ );
3034
+
3035
+ for (let edgeIndex = 0; edgeIndex < 4; ++edgeIndex) {
3036
+ uniformMapProperties.dayTextureCrossBlend[
3037
+ edgeBaseIndex + edgeIndex
3038
+ ] =
3039
+ edgeNeighborLevelsScratch[edgeIndex] === dominantCrossLevel
3040
+ ? levelEdgeBlend
3041
+ : 0.0;
3042
+ }
3043
+ }
3044
+ }
3045
+ if (crossTexture === texture) {
3046
+ crossGain.x = 1.0;
3047
+ crossGain.y = 1.0;
3048
+ crossGain.z = 1.0;
3049
+ crossBias.x = 0.0;
3050
+ crossBias.y = 0.0;
3051
+ crossBias.z = 0.0;
3052
+ crossTranslationAndScale.x = 0.0;
3053
+ crossTranslationAndScale.y = 0.0;
3054
+ crossTranslationAndScale.z = 1.0;
3055
+ crossTranslationAndScale.w = 1.0;
3056
+ for (let edgeIndex = 0; edgeIndex < 4; ++edgeIndex) {
3057
+ uniformMapProperties.dayTextureCrossBlend[edgeBaseIndex + edgeIndex] =
3058
+ 0.0;
3059
+ }
3060
+ }
3061
+ uniformMapProperties.dayTextureCrossTexture[numberOfDayTextures] =
3062
+ crossTexture;
3063
+
2705
3064
  uniformMapProperties.dayTextureSplit[numberOfDayTextures] =
2706
3065
  imageryLayer.splitDirection;
2707
3066
  applySplit =
@@ -2784,6 +3143,18 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2784
3143
  // trim texture array to the used length so we don't end up using old textures
2785
3144
  // which might get destroyed eventually
2786
3145
  uniformMapProperties.dayTextures.length = numberOfDayTextures;
3146
+ uniformMapProperties.dayTextureToneEdgeGain.length =
3147
+ numberOfDayTextures * 4;
3148
+ uniformMapProperties.dayTextureToneEdgeBias.length =
3149
+ numberOfDayTextures * 4;
3150
+ uniformMapProperties.dayTextureToneEdgeBlend.length =
3151
+ numberOfDayTextures * 4;
3152
+ uniformMapProperties.dayTextureCrossTexture.length = numberOfDayTextures;
3153
+ uniformMapProperties.dayTextureCrossTranslationAndScale.length =
3154
+ numberOfDayTextures;
3155
+ uniformMapProperties.dayTextureCrossGain.length = numberOfDayTextures;
3156
+ uniformMapProperties.dayTextureCrossBias.length = numberOfDayTextures;
3157
+ uniformMapProperties.dayTextureCrossBlend.length = numberOfDayTextures * 4;
2787
3158
  uniformMapProperties.waterMask = waterMaskTexture;
2788
3159
  Cartesian4.clone(
2789
3160
  waterMaskTranslationAndScale,
@@ -2817,6 +3188,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2817
3188
  surfaceShaderSetOptions.applyHue = applyHue;
2818
3189
  surfaceShaderSetOptions.applySaturation = applySaturation;
2819
3190
  surfaceShaderSetOptions.applyGamma = applyGamma;
3191
+ surfaceShaderSetOptions.applyToneMatch = applyToneMatch;
3192
+ surfaceShaderSetOptions.applyToneMatchEdge = applyToneMatchEdge;
3193
+ surfaceShaderSetOptions.applyToneMatchCross = applyToneMatchCross;
2820
3194
  surfaceShaderSetOptions.applyAlpha = applyAlpha;
2821
3195
  surfaceShaderSetOptions.applyDayNightAlpha = applyDayNightAlpha;
2822
3196
  surfaceShaderSetOptions.applySplit = applySplit;
@@ -2859,7 +3233,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2859
3233
  }
2860
3234
  }
2861
3235
 
2862
- let boundingVolume = command.boundingVolume;
3236
+ const boundingVolume = command.boundingVolume;
2863
3237
  const orientedBoundingBox = command.orientedBoundingBox;
2864
3238
 
2865
3239
  if (frameState.mode !== SceneMode.SCENE3D) {
@@ -2878,7 +3252,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2878
3252
  );
2879
3253
 
2880
3254
  if (frameState.mode === SceneMode.MORPHING) {
2881
- boundingVolume = BoundingSphere.union(
3255
+ // The result is written into boundingVolume in place (the same object
3256
+ // referenced by command.boundingVolume), so the return value is unused.
3257
+ BoundingSphere.union(
2882
3258
  tileBoundingRegion.boundingSphere,
2883
3259
  boundingVolume,
2884
3260
  boundingVolume,