@cesium/engine 26.0.0 → 26.2.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 (471) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +586 -480
  2. package/Build/Workers/{chunk-7J2HKPRH.js → chunk-27FWRTJI.js} +9 -9
  3. package/Build/Workers/{chunk-EF2QYXGA.js → chunk-2EFYUSUY.js} +14 -14
  4. package/Build/Workers/chunk-2H5264K7.js +1284 -0
  5. package/Build/Workers/{chunk-DOBXCNC3.js → chunk-2H73KDBM.js} +13 -13
  6. package/Build/Workers/chunk-2RGJPWQX.js +1284 -0
  7. package/Build/Workers/chunk-2Z4ZLVOD.js +352 -0
  8. package/Build/Workers/{chunk-F6QDY6HU.js → chunk-2ZKH2QZB.js} +13 -13
  9. package/Build/Workers/chunk-36NI5E6W.js +3820 -0
  10. package/Build/Workers/{chunk-ZK3CF7ZD.js → chunk-37SW7SYS.js} +12 -12
  11. package/Build/Workers/chunk-3GHVJ3SO.js +455 -0
  12. package/Build/Workers/chunk-3LB4UVPU.js +387 -0
  13. package/Build/Workers/chunk-3PONLKEL.js +778 -0
  14. package/Build/Workers/{chunk-Y57HREW5.js → chunk-3PSS3T43.js} +4 -4
  15. package/Build/Workers/chunk-3QR662HH.js +3820 -0
  16. package/Build/Workers/{chunk-QN67VG36.js → chunk-3SX2WYSO.js} +6 -6
  17. package/Build/Workers/{chunk-G7PXZRVF.js → chunk-3UDN6LYX.js} +7 -7
  18. package/Build/Workers/chunk-47MCBSXI.js +9237 -0
  19. package/Build/Workers/{chunk-KKOSKAZB.js → chunk-4E626OCE.js} +17 -17
  20. package/Build/Workers/chunk-4NW2MJKH.js +455 -0
  21. package/Build/Workers/{chunk-DBOEKL43.js → chunk-52YK5BSN.js} +7 -7
  22. package/Build/Workers/{chunk-KFSTQKNM.js → chunk-5LSOO2KD.js} +7 -7
  23. package/Build/Workers/chunk-5RNAQZK6.js +9234 -0
  24. package/Build/Workers/chunk-5YPQBFRD.js +519 -0
  25. package/Build/Workers/{chunk-S4MCOY6I.js → chunk-6FHT43QR.js} +5 -5
  26. package/Build/Workers/chunk-6FZDPMTO.js +455 -0
  27. package/Build/Workers/{chunk-VQYETPWC.js → chunk-6HK6IXK2.js} +4 -4
  28. package/Build/Workers/chunk-6R5X2GUA.js +1284 -0
  29. package/Build/Workers/{chunk-AYKR4VBR.js → chunk-6YR6JBMY.js} +2 -2
  30. package/Build/Workers/chunk-76FDC45O.js +511 -0
  31. package/Build/Workers/chunk-7A2OGDHT.js +305 -0
  32. package/Build/Workers/chunk-7CGEQUM2.js +305 -0
  33. package/Build/Workers/{chunk-54I6Y66F.js → chunk-7D2HZKH7.js} +6 -6
  34. package/Build/Workers/{chunk-3VFEWOBI.js → chunk-7I325HV6.js} +7 -7
  35. package/Build/Workers/{chunk-4MGMYHOO.js → chunk-7KVKHY7O.js} +6 -6
  36. package/Build/Workers/chunk-7MM3N2VE.js +1067 -0
  37. package/Build/Workers/chunk-7TKLTCZW.js +219 -0
  38. package/Build/Workers/chunk-7UUKBDH6.js +1054 -0
  39. package/Build/Workers/chunk-7W6DUHAB.js +693 -0
  40. package/Build/Workers/{chunk-DDWSZVMY.js → chunk-7XM5JK5F.js} +5 -5
  41. package/Build/Workers/chunk-7YG3ND3P.js +454 -0
  42. package/Build/Workers/{chunk-IRBKFCEJ.js → chunk-A3O6EDBK.js} +2 -2
  43. package/Build/Workers/chunk-A62YI6S6.js +305 -0
  44. package/Build/Workers/{chunk-V7VQKN6N.js → chunk-A6X24AZI.js} +5 -5
  45. package/Build/Workers/chunk-A7TTWVTF.js +2719 -0
  46. package/Build/Workers/chunk-ACTVJHSP.js +519 -0
  47. package/Build/Workers/chunk-ADX3CBKD.js +9234 -0
  48. package/Build/Workers/{chunk-52JDLOEM.js → chunk-AF7DTMJ7.js} +14 -14
  49. package/Build/Workers/{chunk-ZP7JMQV4.js → chunk-AHWAZRBV.js} +6 -2
  50. package/Build/Workers/chunk-AJSFRY4U.js +1344 -0
  51. package/Build/Workers/{chunk-EBSIOBXY.js → chunk-ARZICEEP.js} +8 -8
  52. package/Build/Workers/chunk-B3QHNA4A.js +147 -0
  53. package/Build/Workers/{chunk-YLY7NKAB.js → chunk-B4CQSLZJ.js} +4 -4
  54. package/Build/Workers/chunk-BKPQFCXH.js +511 -0
  55. package/Build/Workers/{chunk-O3EA5HS7.js → chunk-BSPCI2LO.js} +10 -10
  56. package/Build/Workers/chunk-BUJWSX5S.js +301 -0
  57. package/Build/Workers/{chunk-J6BWOHUF.js → chunk-C7JQVRLM.js} +3 -3
  58. package/Build/Workers/chunk-C7QDUNI3.js +138 -0
  59. package/Build/Workers/{chunk-KSSWJIZW.js → chunk-CDJDJ5LK.js} +2 -2
  60. package/Build/Workers/chunk-CEEZE3YZ.js +476 -0
  61. package/Build/Workers/chunk-CIV5DJOQ.js +778 -0
  62. package/Build/Workers/{chunk-INUEEEQA.js → chunk-CLCTQVVL.js} +8 -8
  63. package/Build/Workers/{chunk-C6J67V5A.js → chunk-CQNFIAZU.js} +1 -1
  64. package/Build/Workers/chunk-CRCGE4J4.js +9237 -0
  65. package/Build/Workers/{chunk-SMQZZOW6.js → chunk-CUTRKXUQ.js} +10 -10
  66. package/Build/Workers/{chunk-Q3PY526V.js → chunk-D6AY775A.js} +6 -6
  67. package/Build/Workers/chunk-DBD5WWG2.js +959 -0
  68. package/Build/Workers/{chunk-E7VQ76KE.js → chunk-DIGUUD6G.js} +6 -6
  69. package/Build/Workers/{chunk-P3CK7MCY.js → chunk-DSGLDRTI.js} +4 -4
  70. package/Build/Workers/chunk-DZBQUULR.js +138 -0
  71. package/Build/Workers/chunk-DZUFEE4L.js +140 -0
  72. package/Build/Workers/chunk-E2NKV5YT.js +3820 -0
  73. package/Build/Workers/{chunk-424RNO3D.js → chunk-E7NZJOK7.js} +196 -22
  74. package/Build/Workers/{chunk-UOOIQ3KX.js → chunk-EB3Y5P3A.js} +12 -12
  75. package/Build/Workers/{chunk-ACXQXN46.js → chunk-EHTS2YPT.js} +16 -16
  76. package/Build/Workers/{chunk-EPYXRCDB.js → chunk-ELE6SC2C.js} +12 -12
  77. package/Build/Workers/{chunk-VWV2IJRB.js → chunk-ENNFMWDW.js} +11 -11
  78. package/Build/Workers/chunk-EOWDZN5S.js +288 -0
  79. package/Build/Workers/chunk-ERKUET22.js +3201 -0
  80. package/Build/Workers/chunk-EZGQPOIG.js +162 -0
  81. package/Build/Workers/chunk-F2IMBMZY.js +241 -0
  82. package/Build/Workers/chunk-F4CSNRZO.js +219 -0
  83. package/Build/Workers/chunk-FBP4DUQJ.js +693 -0
  84. package/Build/Workers/{chunk-FRQZECAO.js → chunk-FCP2QY4G.js} +5 -5
  85. package/Build/Workers/{chunk-ZZ46LWL6.js → chunk-FDK4K5IA.js} +1 -1
  86. package/Build/Workers/{chunk-C6KNZ7T4.js → chunk-FGQFQHN5.js} +17 -17
  87. package/Build/Workers/chunk-FJWZMGOQ.js +1992 -0
  88. package/Build/Workers/{chunk-Y5BF6AFU.js → chunk-FQ42MT7M.js} +2 -2
  89. package/Build/Workers/chunk-FU4BGABC.js +398 -0
  90. package/Build/Workers/chunk-FX3VEAIU.js +2719 -0
  91. package/Build/Workers/chunk-GGNWQWSB.js +301 -0
  92. package/Build/Workers/chunk-GHXVQVUM.js +1344 -0
  93. package/Build/Workers/{chunk-CZEYZU4N.js → chunk-GNKXEN4C.js} +10 -10
  94. package/Build/Workers/{chunk-MYP774IS.js → chunk-GSWMAFTE.js} +8 -8
  95. package/Build/Workers/chunk-GVA7XQI2.js +368 -0
  96. package/Build/Workers/chunk-GXDHRC4J.js +1344 -0
  97. package/Build/Workers/chunk-GXWQZBAI.js +58 -0
  98. package/Build/Workers/chunk-GYSYP6PC.js +1067 -0
  99. package/Build/Workers/chunk-H2WCFXLP.js +241 -0
  100. package/Build/Workers/chunk-HDL4HOXZ.js +778 -0
  101. package/Build/Workers/chunk-HHV3MCGV.js +162 -0
  102. package/Build/Workers/chunk-HLW2ZRVK.js +368 -0
  103. package/Build/Workers/chunk-HS6AD4P2.js +398 -0
  104. package/Build/Workers/chunk-HT6FASOT.js +973 -0
  105. package/Build/Workers/chunk-I74ZH5LK.js +959 -0
  106. package/Build/Workers/{chunk-7WM2PX4V.js → chunk-IDVHUDZT.js} +5 -5
  107. package/Build/Workers/chunk-IGAZBTFZ.js +3201 -0
  108. package/Build/Workers/chunk-IJZJMIUY.js +789 -0
  109. package/Build/Workers/chunk-ILME5BXA.js +301 -0
  110. package/Build/Workers/chunk-IMBVP57H.js +44 -0
  111. package/Build/Workers/chunk-IOO7Z2AV.js +57 -0
  112. package/Build/Workers/chunk-IUIFLOYO.js +44 -0
  113. package/Build/Workers/chunk-J73T2VOY.js +171 -0
  114. package/Build/Workers/chunk-JALGQYDY.js +288 -0
  115. package/Build/Workers/chunk-JKXV6PG5.js +56 -0
  116. package/Build/Workers/chunk-JW6OZT4R.js +288 -0
  117. package/Build/Workers/{chunk-CXOYE2WM.js → chunk-JXYLJCTC.js} +5 -5
  118. package/Build/Workers/{chunk-CFQP6LYM.js → chunk-K27QOAW6.js} +4 -4
  119. package/Build/Workers/chunk-KGXSYGBG.js +387 -0
  120. package/Build/Workers/chunk-KMV25A63.js +789 -0
  121. package/Build/Workers/chunk-KP5QD7WU.js +693 -0
  122. package/Build/Workers/chunk-KZWFWJML.js +2719 -0
  123. package/Build/Workers/chunk-LCXRRALY.js +387 -0
  124. package/Build/Workers/chunk-LD64RPYV.js +368 -0
  125. package/Build/Workers/{chunk-U3ZA64U7.js → chunk-LDRQSYBN.js} +2 -2
  126. package/Build/Workers/chunk-LGNDTZVX.js +97 -0
  127. package/Build/Workers/chunk-LNSQVXFH.js +1800 -0
  128. package/Build/Workers/chunk-M4JZ6TSZ.js +959 -0
  129. package/Build/Workers/chunk-M6QKXVAU.js +1054 -0
  130. package/Build/Workers/chunk-MAAHFYPC.js +198 -0
  131. package/Build/Workers/chunk-MCJDRDJQ.js +102 -0
  132. package/Build/Workers/chunk-MEENMEAH.js +198 -0
  133. package/Build/Workers/{chunk-TKKIREQ6.js → chunk-N7CCOFLX.js} +1 -1
  134. package/Build/Workers/chunk-NAWU5RF4.js +162 -0
  135. package/Build/Workers/{chunk-M3B5JKSM.js → chunk-NCL22ZUX.js} +1 -1
  136. package/Build/Workers/chunk-NEFDMMLY.js +241 -0
  137. package/Build/Workers/{chunk-UA25D5MX.js → chunk-NIWITKQK.js} +10 -10
  138. package/Build/Workers/chunk-NJVBJG63.js +124 -0
  139. package/Build/Workers/chunk-NLLCQBX3.js +73 -0
  140. package/Build/Workers/chunk-NSKZ6SBK.js +1483 -0
  141. package/Build/Workers/chunk-NXGQBQWE.js +837 -0
  142. package/Build/Workers/chunk-O3DKEX7Q.js +352 -0
  143. package/Build/Workers/chunk-O3XFXGPZ.js +476 -0
  144. package/Build/Workers/chunk-OA6MYL2C.js +837 -0
  145. package/Build/Workers/chunk-OBEU25PI.js +1067 -0
  146. package/Build/Workers/chunk-OHP4ELS7.js +198 -0
  147. package/Build/Workers/chunk-OZGPS7FB.js +138 -0
  148. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  149. package/Build/Workers/chunk-PD4GK4EM.js +57 -0
  150. package/Build/Workers/chunk-PEDU33QG.js +2342 -0
  151. package/Build/Workers/chunk-PRWUMCXF.js +682 -0
  152. package/Build/Workers/chunk-PVTSNNVI.js +288 -0
  153. package/Build/Workers/chunk-QFSSCLLZ.js +973 -0
  154. package/Build/Workers/chunk-QHPZH22L.js +241 -0
  155. package/Build/Workers/chunk-QIZDWZK6.js +301 -0
  156. package/Build/Workers/chunk-QV6DG2YX.js +1483 -0
  157. package/Build/Workers/chunk-QVLAFFJY.js +56 -0
  158. package/Build/Workers/{chunk-6YEE6JDR.js → chunk-R4FPNAZ2.js} +6 -6
  159. package/Build/Workers/chunk-R4K7EHOU.js +171 -0
  160. package/Build/Workers/chunk-R7JGHDD6.js +789 -0
  161. package/Build/Workers/chunk-RASQEYD4.js +1483 -0
  162. package/Build/Workers/chunk-RG4F5R57.js +454 -0
  163. package/Build/Workers/chunk-RW6ITX7Q.js +3820 -0
  164. package/Build/Workers/chunk-RYSQVJR6.js +398 -0
  165. package/Build/Workers/chunk-S6RJU5NM.js +1054 -0
  166. package/Build/Workers/chunk-SA2A2AN5.js +2342 -0
  167. package/Build/Workers/chunk-SDFHDNS4.js +147 -0
  168. package/Build/Workers/chunk-SF6K72D7.js +124 -0
  169. package/Build/Workers/chunk-SGRGNDOD.js +682 -0
  170. package/Build/Workers/{chunk-QRWGUWI6.js → chunk-SJYSIOEM.js} +11 -11
  171. package/Build/Workers/chunk-SM2CDCYF.js +198 -0
  172. package/Build/Workers/chunk-SMTGMFBL.js +97 -0
  173. package/Build/Workers/chunk-SS5ABQGY.js +102 -0
  174. package/Build/Workers/{chunk-IYOUHCZB.js → chunk-SXSP3JHS.js} +1 -1
  175. package/Build/Workers/chunk-T5QBPLE3.js +414 -0
  176. package/Build/Workers/chunk-TN35HP5B.js +1067 -0
  177. package/Build/Workers/chunk-TNWKJNUZ.js +454 -0
  178. package/Build/Workers/chunk-TOAF47AQ.js +102 -0
  179. package/Build/Workers/chunk-TQ4QCOXT.js +2719 -0
  180. package/Build/Workers/chunk-TSDSILQB.js +124 -0
  181. package/Build/Workers/chunk-TVZD72WJ.js +778 -0
  182. package/Build/Workers/chunk-U5LV3F3Z.js +1054 -0
  183. package/Build/Workers/chunk-UAZUP4I5.js +1992 -0
  184. package/Build/Workers/chunk-UEY73NRN.js +38 -0
  185. package/Build/Workers/chunk-UF46SZEZ.js +789 -0
  186. package/Build/Workers/chunk-UNRTMCET.js +398 -0
  187. package/Build/Workers/chunk-UTB7U3O6.js +1992 -0
  188. package/Build/Workers/chunk-UVO6COT2.js +352 -0
  189. package/Build/Workers/chunk-V46YGZE6.js +352 -0
  190. package/Build/Workers/chunk-VAL7DYNR.js +278 -0
  191. package/Build/Workers/chunk-VDGOCROW.js +57 -0
  192. package/Build/Workers/chunk-VFWSSBPT.js +511 -0
  193. package/Build/Workers/chunk-VVYMXI3I.js +1284 -0
  194. package/Build/Workers/chunk-VXWHPYQM.js +837 -0
  195. package/Build/Workers/chunk-VXYUBRSB.js +219 -0
  196. package/Build/Workers/chunk-VZLDLEWI.js +387 -0
  197. package/Build/Workers/{chunk-4S7IE3LB.js → chunk-W5OCKMPJ.js} +2 -2
  198. package/Build/Workers/chunk-WBSY7HDY.js +837 -0
  199. package/Build/Workers/chunk-WN3F4CVG.js +3201 -0
  200. package/Build/Workers/chunk-WPRUWXGV.js +693 -0
  201. package/Build/Workers/chunk-WTO2ERBP.js +414 -0
  202. package/Build/Workers/chunk-WVHMDVG4.js +959 -0
  203. package/Build/Workers/chunk-XCBZVTIV.js +280 -0
  204. package/Build/Workers/chunk-XDWCTQCZ.js +101 -0
  205. package/Build/Workers/chunk-XGA23TAX.js +73 -0
  206. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  207. package/Build/Workers/chunk-XLXSDIP5.js +973 -0
  208. package/Build/Workers/chunk-XQ3SKCMM.js +140 -0
  209. package/Build/Workers/chunk-XQH66YJC.js +147 -0
  210. package/Build/Workers/chunk-XTA7BXJG.js +682 -0
  211. package/Build/Workers/chunk-XTIDAFRS.js +476 -0
  212. package/Build/Workers/chunk-XUEDWBUD.js +682 -0
  213. package/Build/Workers/chunk-XYFLRH3H.js +124 -0
  214. package/Build/Workers/chunk-Y7JRTRTO.js +305 -0
  215. package/Build/Workers/chunk-Y7QSMDCJ.js +352 -0
  216. package/Build/Workers/chunk-YCB5TYTR.js +1483 -0
  217. package/Build/Workers/chunk-YEYOSTJX.js +219 -0
  218. package/Build/Workers/chunk-YGFVAGYF.js +630 -0
  219. package/Build/Workers/chunk-YIIACKQO.js +368 -0
  220. package/Build/Workers/chunk-YJGSP6PE.js +511 -0
  221. package/Build/Workers/{chunk-XZMBNNDX.js → chunk-YKU2Q3A2.js} +9 -9
  222. package/Build/Workers/chunk-Z4LR5EHE.js +454 -0
  223. package/Build/Workers/chunk-Z66EVE2A.js +44 -0
  224. package/Build/Workers/chunk-ZHIHHHTB.js +414 -0
  225. package/Build/Workers/chunk-ZMBHFYOX.js +1344 -0
  226. package/Build/Workers/chunk-ZNWHFSLE.js +171 -0
  227. package/Build/Workers/chunk-ZQLZG4IN.js +2342 -0
  228. package/Build/Workers/chunk-ZRTSMUZ2.js +414 -0
  229. package/Build/Workers/{chunk-MPZHGZU6.js → chunk-ZSGUV73H.js} +4 -4
  230. package/Build/Workers/chunk-ZZUVT5BM.js +476 -0
  231. package/Build/Workers/combineGeometry.js +24 -24
  232. package/Build/Workers/createBoxGeometry.js +18 -18
  233. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  234. package/Build/Workers/createCircleGeometry.js +26 -26
  235. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  236. package/Build/Workers/createCoplanarPolygonGeometry.js +35 -35
  237. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  238. package/Build/Workers/createCorridorGeometry.js +31 -33
  239. package/Build/Workers/createCorridorOutlineGeometry.js +29 -31
  240. package/Build/Workers/createCylinderGeometry.js +20 -20
  241. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  242. package/Build/Workers/createEllipseGeometry.js +26 -26
  243. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  244. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  245. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  246. package/Build/Workers/createFrustumGeometry.js +18 -18
  247. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  248. package/Build/Workers/createGeometry.js +24 -24
  249. package/Build/Workers/createGroundPolylineGeometry.js +24 -24
  250. package/Build/Workers/createPlaneGeometry.js +16 -16
  251. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  252. package/Build/Workers/createPolygonGeometry.js +34 -34
  253. package/Build/Workers/createPolygonOutlineGeometry.js +31 -31
  254. package/Build/Workers/createPolylineGeometry.js +26 -26
  255. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  256. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  257. package/Build/Workers/createRectangleGeometry.js +27 -27
  258. package/Build/Workers/createRectangleOutlineGeometry.js +21 -21
  259. package/Build/Workers/createSimplePolylineGeometry.js +24 -24
  260. package/Build/Workers/createSphereGeometry.js +19 -19
  261. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  262. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  263. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  264. package/Build/Workers/createVectorTileGeometries.js +24 -24
  265. package/Build/Workers/createVectorTilePoints.js +13 -13
  266. package/Build/Workers/createVectorTilePolygons.js +22 -22
  267. package/Build/Workers/createVectorTilePolylines.js +14 -14
  268. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  269. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  270. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  271. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  272. package/Build/Workers/createWallGeometry.js +24 -24
  273. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  274. package/Build/Workers/decodeDraco.js +10 -10
  275. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +987 -2320
  276. package/Build/Workers/decodeI3S.js +10 -10
  277. package/Build/Workers/gaussianSplatSorter.js +4 -4
  278. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  279. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  280. package/Build/Workers/transcodeKTX2.js +6 -6
  281. package/Build/Workers/transferTypedArrayTest.js +1 -1
  282. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  283. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  284. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  285. package/Source/Core/BoundingRectangle.js +6 -8
  286. package/Source/Core/BoundingSphere.js +0 -3
  287. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  288. package/Source/Core/Color.js +1 -0
  289. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  290. package/Source/Core/CorridorGeometry.js +2 -4
  291. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  292. package/Source/Core/EarthOrientationParameters.js +2 -2
  293. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  294. package/Source/Core/EllipsoidGeodesic.js +3 -3
  295. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  296. package/Source/Core/GroundPolylineGeometry.js +2 -2
  297. package/Source/Core/Heap.js +1 -1
  298. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  299. package/Source/Core/InterpolationAlgorithm.js +58 -50
  300. package/Source/Core/Ion.js +1 -1
  301. package/Source/Core/JulianDate.js +1 -1
  302. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  303. package/Source/Core/LinearApproximation.js +69 -66
  304. package/Source/Core/Math.js +59 -0
  305. package/Source/Core/Matrix2.js +2 -2
  306. package/Source/Core/Matrix3.js +2 -2
  307. package/Source/Core/OrthographicFrustum.js +1 -1
  308. package/Source/Core/PerspectiveFrustum.js +1 -1
  309. package/Source/Core/PolygonGeometry.js +2 -2
  310. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  311. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  312. package/Source/Core/PolylineGeometry.js +1 -1
  313. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  314. package/Source/Core/Rectangle.js +7 -1
  315. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  316. package/Source/Core/SimplePolylineGeometry.js +1 -1
  317. package/Source/Core/TerrainEncoding.js +2 -2
  318. package/Source/Core/TerrainMesh.js +3 -3
  319. package/Source/Core/TerrainPicker.js +180 -168
  320. package/Source/Core/TimeIntervalCollection.js +1 -3
  321. package/Source/Core/Tipsify.js +1 -1
  322. package/Source/Core/Transforms.js +5 -1
  323. package/Source/Core/VectorPipeline.js +1117 -0
  324. package/Source/Core/VectorProvider.js +429 -0
  325. package/Source/Core/WallOutlineGeometry.js +1 -1
  326. package/Source/Core/getTimestamp.js +4 -2
  327. package/Source/Core/writeTextToCanvas.js +1 -0
  328. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  329. package/Source/DataSources/CzmlDataSource.js +14 -0
  330. package/Source/DataSources/DataSourceDisplay.js +1 -1
  331. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  332. package/Source/DataSources/GeometryVisualizer.js +1 -1
  333. package/Source/DataSources/KmlDataSource.js +529 -557
  334. package/Source/DataSources/PathGraphics.js +8 -1
  335. package/Source/DataSources/PathMode.js +27 -0
  336. package/Source/DataSources/PathVisualizer.js +298 -1
  337. package/Source/DataSources/PolylineVisualizer.js +1 -1
  338. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  339. package/Source/Renderer/AutomaticUniforms.js +23 -0
  340. package/Source/Renderer/Context.js +9 -3
  341. package/Source/Renderer/DrawCommand.js +22 -0
  342. package/Source/Renderer/Framebuffer.js +4 -0
  343. package/Source/Renderer/Pass.js +11 -10
  344. package/Source/Renderer/Texture.js +12 -1
  345. package/Source/Renderer/UniformState.js +7 -0
  346. package/Source/Renderer/VertexArray.js +1 -1
  347. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  348. package/Source/Scene/ArcGisMapService.js +1 -1
  349. package/Source/Scene/Billboard.js +2 -1
  350. package/Source/Scene/BillboardCollection.js +7 -3
  351. package/Source/Scene/BillboardTexture.js +5 -3
  352. package/Source/Scene/BufferPrimitiveCollection.js +27 -5
  353. package/Source/Scene/Camera.js +71 -5
  354. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  355. package/Source/Scene/Cesium3DTileset.js +1 -1
  356. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  357. package/Source/Scene/ClippingPolygon.js +2 -0
  358. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  359. package/Source/Scene/Controllers/Controller.js +63 -0
  360. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  361. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  362. package/Source/Scene/Controllers/MouseButton.js +32 -0
  363. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  364. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  365. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  366. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  367. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  368. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  369. package/Source/Scene/DerivedCommand.js +98 -0
  370. package/Source/Scene/EdgeFramebuffer.js +1 -5
  371. package/Source/Scene/Expression.js +6 -8
  372. package/Source/Scene/FrameState.js +17 -0
  373. package/Source/Scene/Globe.js +20 -0
  374. package/Source/Scene/GlobeDepth.js +27 -1
  375. package/Source/Scene/GlobeSurfaceShaderSet.js +511 -409
  376. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  377. package/Source/Scene/GlobeSurfaceTileProvider.js +1382 -1151
  378. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  379. package/Source/Scene/GltfLoader.js +33 -3
  380. package/Source/Scene/GltfLoaderUtil.js +20 -4
  381. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  382. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  383. package/Source/Scene/GltfSpzLoader.js +1 -1
  384. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  385. package/Source/Scene/I3SDataProvider.js +1 -1
  386. package/Source/Scene/I3SLayer.js +1 -1
  387. package/Source/Scene/I3SNode.js +2 -2
  388. package/Source/Scene/ImageryLayer.js +2 -2
  389. package/Source/Scene/ImageryLayerCollection.js +190 -6
  390. package/Source/Scene/IonImageryProvider.js +1 -5
  391. package/Source/Scene/Label.js +4 -4
  392. package/Source/Scene/LabelCollection.js +1 -1
  393. package/Source/Scene/MVTDataProvider.js +2 -0
  394. package/Source/Scene/Material.js +1 -0
  395. package/Source/Scene/Model/B3dmLoader.js +1 -2
  396. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
  397. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  398. package/Source/Scene/Model/I3dmLoader.js +1 -1
  399. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  400. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  401. package/Source/Scene/Model/Model.js +11 -10
  402. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  403. package/Source/Scene/Model/ModelDrawCommand.js +160 -16
  404. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  405. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  406. package/Source/Scene/Model/ModelUtility.js +1 -0
  407. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  408. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  409. package/Source/Scene/ModelComponents.js +71 -0
  410. package/Source/Scene/Picking.js +19 -3
  411. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  412. package/Source/Scene/PntsParser.js +1 -1
  413. package/Source/Scene/PolylineCollection.js +1 -1
  414. package/Source/Scene/PostProcessStage.js +4 -2
  415. package/Source/Scene/QuadtreePrimitive.js +3 -2
  416. package/Source/Scene/ResourceCache.js +7 -4
  417. package/Source/Scene/ResourceCacheKey.js +21 -18
  418. package/Source/Scene/Scene.js +203 -5
  419. package/Source/Scene/ScreenSpaceCameraController.js +1 -2
  420. package/Source/Scene/ShadowMap.js +9 -3
  421. package/Source/Scene/ShadowMapShader.js +50 -2
  422. package/Source/Scene/SnapFramebuffer.js +121 -0
  423. package/Source/Scene/Snapping.js +184 -0
  424. package/Source/Scene/TerrainFillMesh.js +3 -2
  425. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +1 -1
  426. package/Source/Scene/Vector3DTileContent.js +2 -3
  427. package/Source/Scene/VectorGltf3DTileContent.js +23 -3
  428. package/Source/Scene/View.js +10 -8
  429. package/Source/Scene/VoxelTraversal.js +1 -1
  430. package/Source/Scene/createElevationBandMaterial.js +1 -1
  431. package/Source/Scene/findMeshoptExtension.js +23 -0
  432. package/Source/Scene/renderBufferPointCollection.js +14 -10
  433. package/Source/Scene/renderBufferPolygonCollection.js +10 -15
  434. package/Source/Scene/renderBufferPolylineCollection.js +121 -194
  435. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  436. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  437. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  440. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  441. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  442. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  443. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  444. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  445. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  446. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  447. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  448. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  449. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  450. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  451. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  452. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  453. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  454. package/Source/Shaders/GlobeFS.glsl +10 -5
  455. package/Source/Shaders/GlobeFS.js +9 -5
  456. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  457. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  458. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  459. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  460. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  461. package/Source/Shaders/Model/ModelFS.js +105 -0
  462. package/Source/Shaders/VectorCommon.glsl +178 -0
  463. package/Source/Shaders/VectorCommon.js +75 -0
  464. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  465. package/Source/ThirdParty/zip-module.wasm +0 -0
  466. package/Source/Widget/CesiumWidget.js +30 -0
  467. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  468. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  469. package/index.d.ts +825 -260
  470. package/index.js +29 -10
  471. package/package.json +4 -4
@@ -1,41 +1,517 @@
1
+ // @ts-check
2
+
1
3
  import defined from "../Core/defined.js";
2
4
  import destroyObject from "../Core/destroyObject.js";
3
5
  import TerrainQuantization from "../Core/TerrainQuantization.js";
4
6
  import ShaderProgram from "../Renderer/ShaderProgram.js";
7
+ import VectorCommon from "../Shaders/VectorCommon.js";
5
8
  import getClippingFunction from "./getClippingFunction.js";
6
9
  import SceneMode from "./SceneMode.js";
7
10
 
8
- function GlobeSurfaceShader(
9
- numberOfDayTextures,
10
- flags,
11
- material,
12
- shaderProgram,
13
- clippingShaderState,
14
- clippingPolygonShaderState,
15
- ) {
16
- this.numberOfDayTextures = numberOfDayTextures;
17
- this.flags = flags;
18
- this.material = material;
19
- this.shaderProgram = shaderProgram;
20
- this.clippingShaderState = clippingShaderState;
21
- this.clippingPolygonShaderState = clippingPolygonShaderState;
11
+ /** @import ClippingPlaneCollection from "./ClippingPlaneCollection.js"; */
12
+ /** @import ClippingPolygonCollection from "./ClippingPolygonCollection.js"; */
13
+ /** @import Context from "../Renderer/Context.js"; */
14
+ /** @import FrameState from "./FrameState.js"; */
15
+ /** @import GlobeSurfaceTile from "./GlobeSurfaceTile.js"; */
16
+
17
+ /**
18
+ * @ignore
19
+ */
20
+ class GlobeSurfaceShader {
21
+ /**
22
+ * @param {number} numberOfDayTextures
23
+ * @param {number} flags
24
+ * @param {*} material
25
+ * @param {ShaderProgram} shaderProgram
26
+ * @param {number} clippingShaderState
27
+ * @param {number} clippingPolygonShaderState
28
+ */
29
+ constructor(
30
+ numberOfDayTextures,
31
+ flags,
32
+ material,
33
+ shaderProgram,
34
+ clippingShaderState,
35
+ clippingPolygonShaderState,
36
+ ) {
37
+ /** @type {number} */
38
+ this.numberOfDayTextures = numberOfDayTextures;
39
+ this.flags = flags;
40
+ this.material = material;
41
+ /** @type {ShaderProgram} */
42
+ this.shaderProgram = shaderProgram;
43
+ this.clippingShaderState = clippingShaderState;
44
+ this.clippingPolygonShaderState = clippingPolygonShaderState;
45
+ }
22
46
  }
23
47
 
48
+ /**
49
+ * @typedef {object} GlobeSurfaceShaderSetOptions
50
+ * @property {FrameState} [frameState]
51
+ * @property {GlobeSurfaceTile} [surfaceTile]
52
+ * @property {number} [numberOfDayTextures]
53
+ * @property {boolean} [applyBrightness]
54
+ * @property {boolean} [applyContrast]
55
+ * @property {boolean} [applyHue]
56
+ * @property {boolean} [applySaturation]
57
+ * @property {boolean} [applyGamma]
58
+ * @property {boolean} [applyAlpha]
59
+ * @property {boolean} [applyDayNightAlpha]
60
+ * @property {boolean} [applySplit]
61
+ * @property {boolean} [hasWaterMask]
62
+ * @property {boolean} [showReflectiveOcean]
63
+ * @property {boolean} [showOceanWaves]
64
+ * @property {boolean} [enableLighting]
65
+ * @property {boolean} [dynamicAtmosphereLighting]
66
+ * @property {boolean} [dynamicAtmosphereLightingFromSun]
67
+ * @property {boolean} [showGroundAtmosphere]
68
+ * @property {boolean} [perFragmentGroundAtmosphere]
69
+ * @property {boolean} [hasVertexNormals]
70
+ * @property {boolean} [useWebMercatorProjection]
71
+ * @property {boolean} [enableFog]
72
+ * @property {boolean} [enableClippingPlanes]
73
+ * @property {ClippingPlaneCollection} [clippingPlanes]
74
+ * @property {boolean} [enableClippingPolygons]
75
+ * @property {ClippingPolygonCollection} [clippingPolygons]
76
+ * @property {boolean} [clippedByBoundaries]
77
+ * @property {boolean} [hasImageryLayerCutout]
78
+ * @property {boolean} [colorCorrect]
79
+ * @property {boolean} [highlightFillTile]
80
+ * @property {boolean} [colorToAlpha]
81
+ * @property {boolean} [hasGeodeticSurfaceNormals]
82
+ * @property {boolean} [hasExaggeration]
83
+ * @property {boolean} [showUndergroundColor]
84
+ * @property {boolean} [translucent]
85
+ * @private
86
+ */
87
+
24
88
  /**
25
89
  * Manages the shaders used to shade the surface of a {@link Globe}.
26
90
  *
27
- * @alias GlobeSurfaceShaderSet
28
91
  * @private
29
92
  */
30
- function GlobeSurfaceShaderSet() {
31
- this.baseVertexShaderSource = undefined;
32
- this.baseFragmentShaderSource = undefined;
93
+ class GlobeSurfaceShaderSet {
94
+ constructor() {
95
+ this.baseVertexShaderSource = undefined;
96
+ this.baseFragmentShaderSource = undefined;
97
+
98
+ /** @type {GlobeSurfaceShader[][]} */
99
+ this._shadersByTexturesFlags = [];
100
+
101
+ this.material = undefined;
102
+ }
103
+
104
+ /** @param {GlobeSurfaceShaderSetOptions} options */
105
+ getShaderProgram(options) {
106
+ const frameState = options.frameState;
107
+ const surfaceTile = options.surfaceTile;
108
+ const numberOfDayTextures = options.numberOfDayTextures;
109
+ const applyBrightness = options.applyBrightness;
110
+ const applyContrast = options.applyContrast;
111
+ const applyHue = options.applyHue;
112
+ const applySaturation = options.applySaturation;
113
+ const applyGamma = options.applyGamma;
114
+ const applyAlpha = options.applyAlpha;
115
+ const applyDayNightAlpha = options.applyDayNightAlpha;
116
+ const applySplit = options.applySplit;
117
+ const hasWaterMask = options.hasWaterMask;
118
+ const showReflectiveOcean = options.showReflectiveOcean;
119
+ const showOceanWaves = options.showOceanWaves;
120
+ const enableLighting = options.enableLighting;
121
+ const dynamicAtmosphereLighting = options.dynamicAtmosphereLighting;
122
+ const dynamicAtmosphereLightingFromSun =
123
+ options.dynamicAtmosphereLightingFromSun;
124
+ const showGroundAtmosphere = options.showGroundAtmosphere;
125
+ const perFragmentGroundAtmosphere = options.perFragmentGroundAtmosphere;
126
+ const hasVertexNormals = options.hasVertexNormals;
127
+ const useWebMercatorProjection = options.useWebMercatorProjection;
128
+ const enableFog = options.enableFog;
129
+ const enableClippingPlanes = options.enableClippingPlanes;
130
+ const clippingPlanes = options.clippingPlanes;
131
+ const enableClippingPolygons = options.enableClippingPolygons;
132
+ const clippingPolygons = options.clippingPolygons;
133
+ const clippedByBoundaries = options.clippedByBoundaries;
134
+ const hasImageryLayerCutout = options.hasImageryLayerCutout;
135
+ const colorCorrect = options.colorCorrect;
136
+ const highlightFillTile = options.highlightFillTile;
137
+ const colorToAlpha = options.colorToAlpha;
138
+ const hasGeodeticSurfaceNormals = options.hasGeodeticSurfaceNormals;
139
+ const hasExaggeration = options.hasExaggeration;
140
+ const showUndergroundColor = options.showUndergroundColor;
141
+ const translucent = options.translucent;
142
+ const vectorData = surfaceTile.vectorData;
143
+ const hasVectorLayer = vectorData?.show;
144
+
145
+ let quantization = 0;
146
+ let quantizationDefine = "";
147
+
148
+ const mesh = surfaceTile.renderedMesh;
149
+ const terrainEncoding = mesh.encoding;
150
+ const quantizationMode = terrainEncoding.quantization;
151
+ if (quantizationMode === TerrainQuantization.BITS12) {
152
+ quantization = 1;
153
+ quantizationDefine = "QUANTIZATION_BITS12";
154
+ }
155
+
156
+ let cartographicLimitRectangleFlag = 0;
157
+ let cartographicLimitRectangleDefine = "";
158
+ if (clippedByBoundaries) {
159
+ cartographicLimitRectangleFlag = 1;
160
+ cartographicLimitRectangleDefine = "TILE_LIMIT_RECTANGLE";
161
+ }
162
+
163
+ let imageryCutoutFlag = 0;
164
+ let imageryCutoutDefine = "";
165
+ if (hasImageryLayerCutout) {
166
+ imageryCutoutFlag = 1;
167
+ imageryCutoutDefine = "APPLY_IMAGERY_CUTOUT";
168
+ }
169
+
170
+ const sceneMode = frameState.mode;
171
+ // Bitwise OR uses 32-bit integers; bits 0-31 are packed below.
172
+ // Flags beyond bit 31 use arithmetic to avoid silent wrap-around
173
+ // (x << 32 === x << 0 in JavaScript).
174
+ const flags =
175
+ ((sceneMode |
176
+ (+applyBrightness << 2) |
177
+ (+applyContrast << 3) |
178
+ (+applyHue << 4) |
179
+ (+applySaturation << 5) |
180
+ (+applyGamma << 6) |
181
+ (+applyAlpha << 7) |
182
+ (+hasWaterMask << 8) |
183
+ (+showReflectiveOcean << 9) |
184
+ (+showOceanWaves << 10) |
185
+ (+enableLighting << 11) |
186
+ (+dynamicAtmosphereLighting << 12) |
187
+ (+dynamicAtmosphereLightingFromSun << 13) |
188
+ (+showGroundAtmosphere << 14) |
189
+ (+perFragmentGroundAtmosphere << 15) |
190
+ (+hasVertexNormals << 16) |
191
+ (+useWebMercatorProjection << 17) |
192
+ (+enableFog << 18) |
193
+ (quantization << 19) |
194
+ (+applySplit << 20) |
195
+ (+enableClippingPlanes << 21) |
196
+ (+enableClippingPolygons << 22) |
197
+ (cartographicLimitRectangleFlag << 23) |
198
+ (imageryCutoutFlag << 24) |
199
+ (+colorCorrect << 25) |
200
+ (+highlightFillTile << 26) |
201
+ (+colorToAlpha << 27) |
202
+ (+hasGeodeticSurfaceNormals << 28) |
203
+ (+hasExaggeration << 29) |
204
+ (+showUndergroundColor << 30) |
205
+ (+translucent << 31)) >>>
206
+ 0) +
207
+ (applyDayNightAlpha ? 0x100000000 : 0) +
208
+ (hasVectorLayer ? 0x200000000 : 0);
209
+
210
+ let currentClippingShaderState = 0;
211
+ // @ts-expect-error Missing types.
212
+ if (defined(clippingPlanes) && clippingPlanes.length > 0) {
213
+ currentClippingShaderState = enableClippingPlanes
214
+ ? // @ts-expect-error Missing types.
215
+ clippingPlanes.clippingPlanesState
216
+ : 0;
217
+ }
218
+
219
+ let currentClippingPolygonsShaderState = 0;
220
+ // @ts-expect-error Missing types.
221
+ if (defined(clippingPolygons) && clippingPolygons.length > 0) {
222
+ currentClippingPolygonsShaderState = enableClippingPolygons
223
+ ? // @ts-expect-error Missing types.
224
+ clippingPolygons.clippingPolygonsState
225
+ : 0;
226
+ }
227
+
228
+ let surfaceShader = surfaceTile.surfaceShader;
229
+ if (
230
+ defined(surfaceShader) &&
231
+ surfaceShader.numberOfDayTextures === numberOfDayTextures &&
232
+ surfaceShader.flags === flags &&
233
+ surfaceShader.material === this.material &&
234
+ surfaceShader.clippingShaderState === currentClippingShaderState &&
235
+ surfaceShader.clippingPolygonShaderState ===
236
+ currentClippingPolygonsShaderState
237
+ ) {
238
+ return surfaceShader.shaderProgram;
239
+ }
240
+
241
+ // New tile, or tile changed number of textures, flags, or clipping planes
242
+ let shadersByFlags = this._shadersByTexturesFlags[numberOfDayTextures];
243
+ if (!defined(shadersByFlags)) {
244
+ shadersByFlags = this._shadersByTexturesFlags[numberOfDayTextures] = [];
245
+ }
246
+
247
+ surfaceShader = shadersByFlags[flags];
248
+ if (
249
+ !defined(surfaceShader) ||
250
+ surfaceShader.material !== this.material ||
251
+ surfaceShader.clippingShaderState !== currentClippingShaderState ||
252
+ surfaceShader.clippingPolygonShaderState !==
253
+ currentClippingPolygonsShaderState
254
+ ) {
255
+ // Cache miss - we've never seen this combination of numberOfDayTextures and flags before.
256
+ const vs = this.baseVertexShaderSource.clone();
257
+ const fs = this.baseFragmentShaderSource.clone();
258
+
259
+ // Need to go before GlobeFS
260
+ if (currentClippingShaderState !== 0) {
261
+ fs.sources.unshift(
262
+ getClippingFunction(clippingPlanes, frameState.context),
263
+ );
264
+ }
265
+
266
+ // Need to go before GlobeFS
267
+ if (currentClippingPolygonsShaderState !== 0) {
268
+ fs.sources.unshift(getPolygonClippingFunction(frameState.context));
269
+ vs.sources.unshift(getUnpackClippingFunction(frameState.context));
270
+ }
271
+
272
+ vs.defines.push(quantizationDefine);
273
+ fs.defines.push(
274
+ `TEXTURE_UNITS ${numberOfDayTextures}`,
275
+ cartographicLimitRectangleDefine,
276
+ imageryCutoutDefine,
277
+ );
278
+
279
+ if (applyBrightness) {
280
+ fs.defines.push("APPLY_BRIGHTNESS");
281
+ }
282
+ if (applyContrast) {
283
+ fs.defines.push("APPLY_CONTRAST");
284
+ }
285
+ if (applyHue) {
286
+ fs.defines.push("APPLY_HUE");
287
+ }
288
+ if (applySaturation) {
289
+ fs.defines.push("APPLY_SATURATION");
290
+ }
291
+ if (applyGamma) {
292
+ fs.defines.push("APPLY_GAMMA");
293
+ }
294
+ if (applyAlpha) {
295
+ fs.defines.push("APPLY_ALPHA");
296
+ }
297
+ if (applyDayNightAlpha) {
298
+ fs.defines.push("APPLY_DAY_NIGHT_ALPHA");
299
+ }
300
+ if (hasWaterMask) {
301
+ fs.defines.push("HAS_WATER_MASK");
302
+ }
303
+ if (showReflectiveOcean) {
304
+ fs.defines.push("SHOW_REFLECTIVE_OCEAN");
305
+ vs.defines.push("SHOW_REFLECTIVE_OCEAN");
306
+ }
307
+ if (showOceanWaves) {
308
+ fs.defines.push("SHOW_OCEAN_WAVES");
309
+ }
310
+ if (colorToAlpha) {
311
+ fs.defines.push("APPLY_COLOR_TO_ALPHA");
312
+ }
313
+ if (showUndergroundColor) {
314
+ vs.defines.push("UNDERGROUND_COLOR");
315
+ fs.defines.push("UNDERGROUND_COLOR");
316
+ }
317
+ if (translucent) {
318
+ vs.defines.push("TRANSLUCENT");
319
+ fs.defines.push("TRANSLUCENT");
320
+ }
321
+ if (enableLighting) {
322
+ if (hasVertexNormals) {
323
+ vs.defines.push("ENABLE_VERTEX_LIGHTING");
324
+ fs.defines.push("ENABLE_VERTEX_LIGHTING");
325
+ } else {
326
+ vs.defines.push("ENABLE_DAYNIGHT_SHADING");
327
+ fs.defines.push("ENABLE_DAYNIGHT_SHADING");
328
+ }
329
+ }
330
+
331
+ if (dynamicAtmosphereLighting) {
332
+ vs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING");
333
+ fs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING");
334
+ if (dynamicAtmosphereLightingFromSun) {
335
+ vs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN");
336
+ fs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN");
337
+ }
338
+ }
339
+
340
+ if (showGroundAtmosphere) {
341
+ vs.defines.push("GROUND_ATMOSPHERE");
342
+ fs.defines.push("GROUND_ATMOSPHERE");
343
+ if (perFragmentGroundAtmosphere) {
344
+ vs.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE");
345
+ fs.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE");
346
+ }
347
+ }
348
+
349
+ vs.defines.push("INCLUDE_WEB_MERCATOR_Y");
350
+ fs.defines.push("INCLUDE_WEB_MERCATOR_Y");
351
+
352
+ if (enableFog) {
353
+ vs.defines.push("FOG");
354
+ fs.defines.push("FOG");
355
+ }
356
+
357
+ if (applySplit) {
358
+ fs.defines.push("APPLY_SPLIT");
359
+ }
360
+
361
+ if (enableClippingPlanes) {
362
+ fs.defines.push("ENABLE_CLIPPING_PLANES");
363
+ }
364
+
365
+ if (enableClippingPolygons) {
366
+ fs.defines.push("ENABLE_CLIPPING_POLYGONS");
367
+ vs.defines.push("ENABLE_CLIPPING_POLYGONS");
368
+
369
+ if (clippingPolygons.inverse) {
370
+ fs.defines.push("CLIPPING_INVERSE");
371
+ }
33
372
 
34
- this._shadersByTexturesFlags = [];
373
+ fs.defines.push(
374
+ // @ts-expect-error Missing types.
375
+ `CLIPPING_POLYGON_REGIONS_LENGTH ${clippingPolygons.extentsCount}`,
376
+ );
377
+ vs.defines.push(
378
+ // @ts-expect-error Missing types.
379
+ `CLIPPING_POLYGON_REGIONS_LENGTH ${clippingPolygons.extentsCount}`,
380
+ );
381
+ }
382
+
383
+ if (colorCorrect) {
384
+ fs.defines.push("COLOR_CORRECT");
385
+ }
386
+
387
+ if (highlightFillTile) {
388
+ fs.defines.push("HIGHLIGHT_FILL_TILE");
389
+ }
390
+
391
+ if (hasGeodeticSurfaceNormals) {
392
+ vs.defines.push("GEODETIC_SURFACE_NORMALS");
393
+ }
394
+
395
+ if (hasExaggeration) {
396
+ vs.defines.push("EXAGGERATION");
397
+ }
398
+
399
+ if (hasVectorLayer) {
400
+ vs.defines.push("HAS_VECTOR_LAYER");
401
+ fs.defines.push("HAS_VECTOR_LAYER");
402
+ fs.sources.unshift(VectorCommon); // before GlobeFS.
403
+ }
404
+
405
+ let computeDayColor =
406
+ "\
407
+ vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend)\n\
408
+ {\n\
409
+ vec4 color = initialColor;\n";
410
+
411
+ if (hasImageryLayerCutout) {
412
+ computeDayColor +=
413
+ "\
414
+ vec4 cutoutAndColorResult;\n\
415
+ bool texelUnclipped;\n";
416
+ }
417
+
418
+ for (let i = 0; i < numberOfDayTextures; ++i) {
419
+ if (hasImageryLayerCutout) {
420
+ computeDayColor += `\
421
+ cutoutAndColorResult = u_dayTextureCutoutRectangles[${i}];\n\
422
+ texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y;\n\
423
+ cutoutAndColorResult = sampleAndBlend(\n`;
424
+ } else {
425
+ computeDayColor +=
426
+ "\
427
+ color = sampleAndBlend(\n";
428
+ }
429
+ computeDayColor += `\
430
+ color,\n\
431
+ u_dayTextures[${i}],\n\
432
+ u_dayTextureUseWebMercatorT[${i}] ? textureCoordinates.xz : textureCoordinates.xy,\n\
433
+ u_dayTextureTexCoordsRectangle[${i}],\n\
434
+ u_dayTextureTranslationAndScale[${i}],\n\
435
+ ${applyAlpha ? `u_dayTextureAlpha[${i}]` : "1.0"},\n\
436
+ ${applyDayNightAlpha ? `u_dayTextureNightAlpha[${i}]` : "1.0"},\n\
437
+ ${applyDayNightAlpha ? `u_dayTextureDayAlpha[${i}]` : "1.0"},\n\
438
+ ${applyBrightness ? `u_dayTextureBrightness[${i}]` : "0.0"},\n\
439
+ ${applyContrast ? `u_dayTextureContrast[${i}]` : "0.0"},\n\
440
+ ${applyHue ? `u_dayTextureHue[${i}]` : "0.0"},\n\
441
+ ${applySaturation ? `u_dayTextureSaturation[${i}]` : "0.0"},\n\
442
+ ${applyGamma ? `u_dayTextureOneOverGamma[${i}]` : "0.0"},\n\
443
+ ${applySplit ? `u_dayTextureSplit[${i}]` : "0.0"},\n\
444
+ ${colorToAlpha ? `u_colorsToAlpha[${i}]` : "vec4(0.0)"},\n\
445
+ nightBlend\);\n`;
446
+ if (hasImageryLayerCutout) {
447
+ computeDayColor +=
448
+ "\
449
+ color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color);\n";
450
+ }
451
+ }
452
+
453
+ computeDayColor +=
454
+ "\
455
+ return color;\n\
456
+ }";
457
+
458
+ fs.sources.push(computeDayColor);
459
+
460
+ vs.sources.push(getPositionMode(sceneMode));
461
+ vs.sources.push(get2DYPositionFraction(useWebMercatorProjection));
462
+
463
+ const shader = ShaderProgram.fromCache({
464
+ context: frameState.context,
465
+ vertexShaderSource: vs,
466
+ fragmentShaderSource: fs,
467
+ attributeLocations: terrainEncoding.getAttributeLocations(),
468
+ });
469
+
470
+ surfaceShader = shadersByFlags[flags] = new GlobeSurfaceShader(
471
+ numberOfDayTextures,
472
+ flags,
473
+ this.material,
474
+ shader,
475
+ currentClippingShaderState,
476
+ currentClippingPolygonsShaderState,
477
+ );
478
+ }
479
+
480
+ surfaceTile.surfaceShader = surfaceShader;
481
+ return surfaceShader.shaderProgram;
482
+ }
483
+
484
+ destroy() {
485
+ let flags;
486
+ let shader;
487
+
488
+ const shadersByTexturesFlags = this._shadersByTexturesFlags;
489
+ for (const textureCount in shadersByTexturesFlags) {
490
+ if (shadersByTexturesFlags.hasOwnProperty(textureCount)) {
491
+ const shadersByFlags = shadersByTexturesFlags[textureCount];
492
+ if (!defined(shadersByFlags)) {
493
+ continue;
494
+ }
495
+
496
+ for (flags in shadersByFlags) {
497
+ if (shadersByFlags.hasOwnProperty(flags)) {
498
+ shader = shadersByFlags[flags];
499
+ if (defined(shader)) {
500
+ shader.shaderProgram.destroy();
501
+ }
502
+ }
503
+ }
504
+ }
505
+ }
35
506
 
36
- this.material = undefined;
507
+ return destroyObject(this);
508
+ }
37
509
  }
38
510
 
511
+ /**
512
+ * @param {SceneMode} sceneMode
513
+ * @ignore
514
+ */
39
515
  function getPositionMode(sceneMode) {
40
516
  const getPosition3DMode =
41
517
  "vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }";
@@ -62,8 +538,13 @@ function getPositionMode(sceneMode) {
62
538
  return positionMode;
63
539
  }
64
540
 
541
+ /**
542
+ * @param {Context} context
543
+ * @ignore
544
+ */
65
545
  function getPolygonClippingFunction(context) {
66
546
  // return a noop for webgl1
547
+ // @ts-expect-error Missing types.
67
548
  if (!context.webgl2) {
68
549
  return `void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
69
550
  }`;
@@ -74,8 +555,13 @@ function getPolygonClippingFunction(context) {
74
555
  }`;
75
556
  }
76
557
 
558
+ /**
559
+ * @param {Context} context
560
+ * @ignore
561
+ */
77
562
  function getUnpackClippingFunction(context) {
78
563
  // return a noop for webgl1
564
+ // @ts-expect-error Missing types.
79
565
  if (!context.webgl2) {
80
566
  return `vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
81
567
  return vec4();
@@ -87,6 +573,11 @@ function getUnpackClippingFunction(context) {
87
573
  }`;
88
574
  }
89
575
 
576
+ /**
577
+ * @param {boolean} useWebMercatorProjection
578
+ * @returns {string}
579
+ * @ignore
580
+ */
90
581
  function get2DYPositionFraction(useWebMercatorProjection) {
91
582
  const get2DYPositionFractionGeographicProjection =
92
583
  "float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }";
@@ -97,393 +588,4 @@ function get2DYPositionFraction(useWebMercatorProjection) {
97
588
  : get2DYPositionFractionGeographicProjection;
98
589
  }
99
590
 
100
- GlobeSurfaceShaderSet.prototype.getShaderProgram = function (options) {
101
- const frameState = options.frameState;
102
- const surfaceTile = options.surfaceTile;
103
- const numberOfDayTextures = options.numberOfDayTextures;
104
- const applyBrightness = options.applyBrightness;
105
- const applyContrast = options.applyContrast;
106
- const applyHue = options.applyHue;
107
- const applySaturation = options.applySaturation;
108
- const applyGamma = options.applyGamma;
109
- const applyAlpha = options.applyAlpha;
110
- const applyDayNightAlpha = options.applyDayNightAlpha;
111
- const applySplit = options.applySplit;
112
- const hasWaterMask = options.hasWaterMask;
113
- const showReflectiveOcean = options.showReflectiveOcean;
114
- const showOceanWaves = options.showOceanWaves;
115
- const enableLighting = options.enableLighting;
116
- const dynamicAtmosphereLighting = options.dynamicAtmosphereLighting;
117
- const dynamicAtmosphereLightingFromSun =
118
- options.dynamicAtmosphereLightingFromSun;
119
- const showGroundAtmosphere = options.showGroundAtmosphere;
120
- const perFragmentGroundAtmosphere = options.perFragmentGroundAtmosphere;
121
- const hasVertexNormals = options.hasVertexNormals;
122
- const useWebMercatorProjection = options.useWebMercatorProjection;
123
- const enableFog = options.enableFog;
124
- const enableClippingPlanes = options.enableClippingPlanes;
125
- const clippingPlanes = options.clippingPlanes;
126
- const enableClippingPolygons = options.enableClippingPolygons;
127
- const clippingPolygons = options.clippingPolygons;
128
- const clippedByBoundaries = options.clippedByBoundaries;
129
- const hasImageryLayerCutout = options.hasImageryLayerCutout;
130
- const colorCorrect = options.colorCorrect;
131
- const highlightFillTile = options.highlightFillTile;
132
- const colorToAlpha = options.colorToAlpha;
133
- const hasGeodeticSurfaceNormals = options.hasGeodeticSurfaceNormals;
134
- const hasExaggeration = options.hasExaggeration;
135
- const showUndergroundColor = options.showUndergroundColor;
136
- const translucent = options.translucent;
137
-
138
- let quantization = 0;
139
- let quantizationDefine = "";
140
-
141
- const mesh = surfaceTile.renderedMesh;
142
- const terrainEncoding = mesh.encoding;
143
- const quantizationMode = terrainEncoding.quantization;
144
- if (quantizationMode === TerrainQuantization.BITS12) {
145
- quantization = 1;
146
- quantizationDefine = "QUANTIZATION_BITS12";
147
- }
148
-
149
- let cartographicLimitRectangleFlag = 0;
150
- let cartographicLimitRectangleDefine = "";
151
- if (clippedByBoundaries) {
152
- cartographicLimitRectangleFlag = 1;
153
- cartographicLimitRectangleDefine = "TILE_LIMIT_RECTANGLE";
154
- }
155
-
156
- let imageryCutoutFlag = 0;
157
- let imageryCutoutDefine = "";
158
- if (hasImageryLayerCutout) {
159
- imageryCutoutFlag = 1;
160
- imageryCutoutDefine = "APPLY_IMAGERY_CUTOUT";
161
- }
162
-
163
- const sceneMode = frameState.mode;
164
- // Bitwise OR uses 32-bit integers; bits 0-31 are packed below.
165
- // Flags beyond bit 31 use arithmetic to avoid silent wrap-around
166
- // (x << 32 === x << 0 in JavaScript).
167
- const flags =
168
- ((sceneMode |
169
- (applyBrightness << 2) |
170
- (applyContrast << 3) |
171
- (applyHue << 4) |
172
- (applySaturation << 5) |
173
- (applyGamma << 6) |
174
- (applyAlpha << 7) |
175
- (hasWaterMask << 8) |
176
- (showReflectiveOcean << 9) |
177
- (showOceanWaves << 10) |
178
- (enableLighting << 11) |
179
- (dynamicAtmosphereLighting << 12) |
180
- (dynamicAtmosphereLightingFromSun << 13) |
181
- (showGroundAtmosphere << 14) |
182
- (perFragmentGroundAtmosphere << 15) |
183
- (hasVertexNormals << 16) |
184
- (useWebMercatorProjection << 17) |
185
- (enableFog << 18) |
186
- (quantization << 19) |
187
- (applySplit << 20) |
188
- (enableClippingPlanes << 21) |
189
- (enableClippingPolygons << 22) |
190
- (cartographicLimitRectangleFlag << 23) |
191
- (imageryCutoutFlag << 24) |
192
- (colorCorrect << 25) |
193
- (highlightFillTile << 26) |
194
- (colorToAlpha << 27) |
195
- (hasGeodeticSurfaceNormals << 28) |
196
- (hasExaggeration << 29) |
197
- (showUndergroundColor << 30) |
198
- (translucent << 31)) >>>
199
- 0) +
200
- (applyDayNightAlpha ? 0x100000000 : 0);
201
-
202
- let currentClippingShaderState = 0;
203
- if (defined(clippingPlanes) && clippingPlanes.length > 0) {
204
- currentClippingShaderState = enableClippingPlanes
205
- ? clippingPlanes.clippingPlanesState
206
- : 0;
207
- }
208
-
209
- let currentClippingPolygonsShaderState = 0;
210
- if (defined(clippingPolygons) && clippingPolygons.length > 0) {
211
- currentClippingPolygonsShaderState = enableClippingPolygons
212
- ? clippingPolygons.clippingPolygonsState
213
- : 0;
214
- }
215
-
216
- let surfaceShader = surfaceTile.surfaceShader;
217
- if (
218
- defined(surfaceShader) &&
219
- surfaceShader.numberOfDayTextures === numberOfDayTextures &&
220
- surfaceShader.flags === flags &&
221
- surfaceShader.material === this.material &&
222
- surfaceShader.clippingShaderState === currentClippingShaderState &&
223
- surfaceShader.clippingPolygonShaderState ===
224
- currentClippingPolygonsShaderState
225
- ) {
226
- return surfaceShader.shaderProgram;
227
- }
228
-
229
- // New tile, or tile changed number of textures, flags, or clipping planes
230
- let shadersByFlags = this._shadersByTexturesFlags[numberOfDayTextures];
231
- if (!defined(shadersByFlags)) {
232
- shadersByFlags = this._shadersByTexturesFlags[numberOfDayTextures] = [];
233
- }
234
-
235
- surfaceShader = shadersByFlags[flags];
236
- if (
237
- !defined(surfaceShader) ||
238
- surfaceShader.material !== this.material ||
239
- surfaceShader.clippingShaderState !== currentClippingShaderState ||
240
- surfaceShader.clippingPolygonShaderState !==
241
- currentClippingPolygonsShaderState
242
- ) {
243
- // Cache miss - we've never seen this combination of numberOfDayTextures and flags before.
244
- const vs = this.baseVertexShaderSource.clone();
245
- const fs = this.baseFragmentShaderSource.clone();
246
-
247
- // Need to go before GlobeFS
248
- if (currentClippingShaderState !== 0) {
249
- fs.sources.unshift(
250
- getClippingFunction(clippingPlanes, frameState.context),
251
- );
252
- }
253
-
254
- // Need to go before GlobeFS
255
- if (currentClippingPolygonsShaderState !== 0) {
256
- fs.sources.unshift(getPolygonClippingFunction(frameState.context));
257
- vs.sources.unshift(getUnpackClippingFunction(frameState.context));
258
- }
259
-
260
- vs.defines.push(quantizationDefine);
261
- fs.defines.push(
262
- `TEXTURE_UNITS ${numberOfDayTextures}`,
263
- cartographicLimitRectangleDefine,
264
- imageryCutoutDefine,
265
- );
266
-
267
- if (applyBrightness) {
268
- fs.defines.push("APPLY_BRIGHTNESS");
269
- }
270
- if (applyContrast) {
271
- fs.defines.push("APPLY_CONTRAST");
272
- }
273
- if (applyHue) {
274
- fs.defines.push("APPLY_HUE");
275
- }
276
- if (applySaturation) {
277
- fs.defines.push("APPLY_SATURATION");
278
- }
279
- if (applyGamma) {
280
- fs.defines.push("APPLY_GAMMA");
281
- }
282
- if (applyAlpha) {
283
- fs.defines.push("APPLY_ALPHA");
284
- }
285
- if (applyDayNightAlpha) {
286
- fs.defines.push("APPLY_DAY_NIGHT_ALPHA");
287
- }
288
- if (hasWaterMask) {
289
- fs.defines.push("HAS_WATER_MASK");
290
- }
291
- if (showReflectiveOcean) {
292
- fs.defines.push("SHOW_REFLECTIVE_OCEAN");
293
- vs.defines.push("SHOW_REFLECTIVE_OCEAN");
294
- }
295
- if (showOceanWaves) {
296
- fs.defines.push("SHOW_OCEAN_WAVES");
297
- }
298
- if (colorToAlpha) {
299
- fs.defines.push("APPLY_COLOR_TO_ALPHA");
300
- }
301
- if (showUndergroundColor) {
302
- vs.defines.push("UNDERGROUND_COLOR");
303
- fs.defines.push("UNDERGROUND_COLOR");
304
- }
305
- if (translucent) {
306
- vs.defines.push("TRANSLUCENT");
307
- fs.defines.push("TRANSLUCENT");
308
- }
309
- if (enableLighting) {
310
- if (hasVertexNormals) {
311
- vs.defines.push("ENABLE_VERTEX_LIGHTING");
312
- fs.defines.push("ENABLE_VERTEX_LIGHTING");
313
- } else {
314
- vs.defines.push("ENABLE_DAYNIGHT_SHADING");
315
- fs.defines.push("ENABLE_DAYNIGHT_SHADING");
316
- }
317
- }
318
-
319
- if (dynamicAtmosphereLighting) {
320
- vs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING");
321
- fs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING");
322
- if (dynamicAtmosphereLightingFromSun) {
323
- vs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN");
324
- fs.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN");
325
- }
326
- }
327
-
328
- if (showGroundAtmosphere) {
329
- vs.defines.push("GROUND_ATMOSPHERE");
330
- fs.defines.push("GROUND_ATMOSPHERE");
331
- if (perFragmentGroundAtmosphere) {
332
- vs.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE");
333
- fs.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE");
334
- }
335
- }
336
-
337
- vs.defines.push("INCLUDE_WEB_MERCATOR_Y");
338
- fs.defines.push("INCLUDE_WEB_MERCATOR_Y");
339
-
340
- if (enableFog) {
341
- vs.defines.push("FOG");
342
- fs.defines.push("FOG");
343
- }
344
-
345
- if (applySplit) {
346
- fs.defines.push("APPLY_SPLIT");
347
- }
348
-
349
- if (enableClippingPlanes) {
350
- fs.defines.push("ENABLE_CLIPPING_PLANES");
351
- }
352
-
353
- if (enableClippingPolygons) {
354
- fs.defines.push("ENABLE_CLIPPING_POLYGONS");
355
- vs.defines.push("ENABLE_CLIPPING_POLYGONS");
356
-
357
- if (clippingPolygons.inverse) {
358
- fs.defines.push("CLIPPING_INVERSE");
359
- }
360
-
361
- fs.defines.push(
362
- `CLIPPING_POLYGON_REGIONS_LENGTH ${clippingPolygons.extentsCount}`,
363
- );
364
- vs.defines.push(
365
- `CLIPPING_POLYGON_REGIONS_LENGTH ${clippingPolygons.extentsCount}`,
366
- );
367
- }
368
-
369
- if (colorCorrect) {
370
- fs.defines.push("COLOR_CORRECT");
371
- }
372
-
373
- if (highlightFillTile) {
374
- fs.defines.push("HIGHLIGHT_FILL_TILE");
375
- }
376
-
377
- if (hasGeodeticSurfaceNormals) {
378
- vs.defines.push("GEODETIC_SURFACE_NORMALS");
379
- }
380
-
381
- if (hasExaggeration) {
382
- vs.defines.push("EXAGGERATION");
383
- }
384
-
385
- let computeDayColor =
386
- "\
387
- vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend)\n\
388
- {\n\
389
- vec4 color = initialColor;\n";
390
-
391
- if (hasImageryLayerCutout) {
392
- computeDayColor +=
393
- "\
394
- vec4 cutoutAndColorResult;\n\
395
- bool texelUnclipped;\n";
396
- }
397
-
398
- for (let i = 0; i < numberOfDayTextures; ++i) {
399
- if (hasImageryLayerCutout) {
400
- computeDayColor += `\
401
- cutoutAndColorResult = u_dayTextureCutoutRectangles[${i}];\n\
402
- texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y;\n\
403
- cutoutAndColorResult = sampleAndBlend(\n`;
404
- } else {
405
- computeDayColor +=
406
- "\
407
- color = sampleAndBlend(\n";
408
- }
409
- computeDayColor += `\
410
- color,\n\
411
- u_dayTextures[${i}],\n\
412
- u_dayTextureUseWebMercatorT[${i}] ? textureCoordinates.xz : textureCoordinates.xy,\n\
413
- u_dayTextureTexCoordsRectangle[${i}],\n\
414
- u_dayTextureTranslationAndScale[${i}],\n\
415
- ${applyAlpha ? `u_dayTextureAlpha[${i}]` : "1.0"},\n\
416
- ${applyDayNightAlpha ? `u_dayTextureNightAlpha[${i}]` : "1.0"},\n\
417
- ${applyDayNightAlpha ? `u_dayTextureDayAlpha[${i}]` : "1.0"},\n\
418
- ${applyBrightness ? `u_dayTextureBrightness[${i}]` : "0.0"},\n\
419
- ${applyContrast ? `u_dayTextureContrast[${i}]` : "0.0"},\n\
420
- ${applyHue ? `u_dayTextureHue[${i}]` : "0.0"},\n\
421
- ${applySaturation ? `u_dayTextureSaturation[${i}]` : "0.0"},\n\
422
- ${applyGamma ? `u_dayTextureOneOverGamma[${i}]` : "0.0"},\n\
423
- ${applySplit ? `u_dayTextureSplit[${i}]` : "0.0"},\n\
424
- ${colorToAlpha ? `u_colorsToAlpha[${i}]` : "vec4(0.0)"},\n\
425
- nightBlend\);\n`;
426
- if (hasImageryLayerCutout) {
427
- computeDayColor +=
428
- "\
429
- color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color);\n";
430
- }
431
- }
432
-
433
- computeDayColor +=
434
- "\
435
- return color;\n\
436
- }";
437
-
438
- fs.sources.push(computeDayColor);
439
-
440
- vs.sources.push(getPositionMode(sceneMode));
441
- vs.sources.push(get2DYPositionFraction(useWebMercatorProjection));
442
-
443
- const shader = ShaderProgram.fromCache({
444
- context: frameState.context,
445
- vertexShaderSource: vs,
446
- fragmentShaderSource: fs,
447
- attributeLocations: terrainEncoding.getAttributeLocations(),
448
- });
449
-
450
- surfaceShader = shadersByFlags[flags] = new GlobeSurfaceShader(
451
- numberOfDayTextures,
452
- flags,
453
- this.material,
454
- shader,
455
- currentClippingShaderState,
456
- currentClippingPolygonsShaderState,
457
- );
458
- }
459
-
460
- surfaceTile.surfaceShader = surfaceShader;
461
- return surfaceShader.shaderProgram;
462
- };
463
-
464
- GlobeSurfaceShaderSet.prototype.destroy = function () {
465
- let flags;
466
- let shader;
467
-
468
- const shadersByTexturesFlags = this._shadersByTexturesFlags;
469
- for (const textureCount in shadersByTexturesFlags) {
470
- if (shadersByTexturesFlags.hasOwnProperty(textureCount)) {
471
- const shadersByFlags = shadersByTexturesFlags[textureCount];
472
- if (!defined(shadersByFlags)) {
473
- continue;
474
- }
475
-
476
- for (flags in shadersByFlags) {
477
- if (shadersByFlags.hasOwnProperty(flags)) {
478
- shader = shadersByFlags[flags];
479
- if (defined(shader)) {
480
- shader.shaderProgram.destroy();
481
- }
482
- }
483
- }
484
- }
485
- }
486
-
487
- return destroyObject(this);
488
- };
489
591
  export default GlobeSurfaceShaderSet;