@hztxi/cesium-engine 25.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1964) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +640 -0
  2. package/Build/Workers/chunk-3GCPDH2L.js +102 -0
  3. package/Build/Workers/chunk-3MADNO4X.js +1067 -0
  4. package/Build/Workers/chunk-3TKLDHV3.js +58 -0
  5. package/Build/Workers/chunk-3WDC2GH6.js +2719 -0
  6. package/Build/Workers/chunk-4FNZCUUX.js +1483 -0
  7. package/Build/Workers/chunk-4MTRQFJP.js +56 -0
  8. package/Build/Workers/chunk-4VKEY67A.js +76 -0
  9. package/Build/Workers/chunk-5T6QQAJW.js +56 -0
  10. package/Build/Workers/chunk-6SDGQI27.js +38 -0
  11. package/Build/Workers/chunk-6ZAVOU5L.js +140 -0
  12. package/Build/Workers/chunk-74MSEXYZ.js +280 -0
  13. package/Build/Workers/chunk-77RL3MBD.js +257 -0
  14. package/Build/Workers/chunk-7P2BCMTU.js +198 -0
  15. package/Build/Workers/chunk-AT5SJZKV.js +305 -0
  16. package/Build/Workers/chunk-BBRRFEOV.js +455 -0
  17. package/Build/Workers/chunk-CZ23Y3RM.js +163 -0
  18. package/Build/Workers/chunk-DH26SNAB.js +78 -0
  19. package/Build/Workers/chunk-DH3HFR2Z.js +147 -0
  20. package/Build/Workers/chunk-DOB5JF3K.js +3620 -0
  21. package/Build/Workers/chunk-E7K6ZXWI.js +44 -0
  22. package/Build/Workers/chunk-ELW65VL5.js +1054 -0
  23. package/Build/Workers/chunk-EPD5RWBB.js +219 -0
  24. package/Build/Workers/chunk-F7BREJ3U.js +511 -0
  25. package/Build/Workers/chunk-FIBS5S7R.js +101 -0
  26. package/Build/Workers/chunk-GNBRTX2J.js +3201 -0
  27. package/Build/Workers/chunk-HZPEDSEN.js +837 -0
  28. package/Build/Workers/chunk-IEPZF2WW.js +97 -0
  29. package/Build/Workers/chunk-II6PFINF.js +57 -0
  30. package/Build/Workers/chunk-IKWMQ5ZJ.js +973 -0
  31. package/Build/Workers/chunk-J2Z2B25O.js +398 -0
  32. package/Build/Workers/chunk-JQ4R7MXV.js +2342 -0
  33. package/Build/Workers/chunk-JUGOIC4O.js +1344 -0
  34. package/Build/Workers/chunk-KM53XG2W.js +368 -0
  35. package/Build/Workers/chunk-KNXQKH2U.js +241 -0
  36. package/Build/Workers/chunk-KSMUF4SU.js +1992 -0
  37. package/Build/Workers/chunk-LCDVE7JA.js +682 -0
  38. package/Build/Workers/chunk-LOG5WXZZ.js +1287 -0
  39. package/Build/Workers/chunk-LYKEGFGX.js +124 -0
  40. package/Build/Workers/chunk-M2SRRLKR.js +476 -0
  41. package/Build/Workers/chunk-NIJIKHQM.js +9230 -0
  42. package/Build/Workers/chunk-NW4WWAAK.js +1800 -0
  43. package/Build/Workers/chunk-OCYIF7R3.js +352 -0
  44. package/Build/Workers/chunk-OZTLGNLF.js +387 -0
  45. package/Build/Workers/chunk-P3FP7NAM.js +288 -0
  46. package/Build/Workers/chunk-P5SWEPTI.js +352 -0
  47. package/Build/Workers/chunk-P7VT7DMK.js +454 -0
  48. package/Build/Workers/chunk-PFK34PVF.js +778 -0
  49. package/Build/Workers/chunk-PTESVNMD.js +138 -0
  50. package/Build/Workers/chunk-QS6E23AK.js +693 -0
  51. package/Build/Workers/chunk-SGKTPOWQ.js +171 -0
  52. package/Build/Workers/chunk-SPEMUYE5.js +162 -0
  53. package/Build/Workers/chunk-TA777BGS.js +630 -0
  54. package/Build/Workers/chunk-TCNXYZB6.js +414 -0
  55. package/Build/Workers/chunk-V4D7RZ2P.js +73 -0
  56. package/Build/Workers/chunk-VABCG4VA.js +959 -0
  57. package/Build/Workers/chunk-VCJD4URC.js +754 -0
  58. package/Build/Workers/chunk-WMMER2ET.js +497 -0
  59. package/Build/Workers/chunk-XKFRI4DD.js +301 -0
  60. package/Build/Workers/combineGeometry.js +66 -0
  61. package/Build/Workers/createBoxGeometry.js +58 -0
  62. package/Build/Workers/createBoxOutlineGeometry.js +231 -0
  63. package/Build/Workers/createCircleGeometry.js +201 -0
  64. package/Build/Workers/createCircleOutlineGeometry.js +147 -0
  65. package/Build/Workers/createCoplanarPolygonGeometry.js +505 -0
  66. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +225 -0
  67. package/Build/Workers/createCorridorGeometry.js +1258 -0
  68. package/Build/Workers/createCorridorOutlineGeometry.js +563 -0
  69. package/Build/Workers/createCylinderGeometry.js +60 -0
  70. package/Build/Workers/createCylinderOutlineGeometry.js +231 -0
  71. package/Build/Workers/createEllipseGeometry.js +72 -0
  72. package/Build/Workers/createEllipseOutlineGeometry.js +65 -0
  73. package/Build/Workers/createEllipsoidGeometry.js +59 -0
  74. package/Build/Workers/createEllipsoidOutlineGeometry.js +61 -0
  75. package/Build/Workers/createFrustumGeometry.js +58 -0
  76. package/Build/Workers/createFrustumOutlineGeometry.js +234 -0
  77. package/Build/Workers/createGeometry.js +173 -0
  78. package/Build/Workers/createGroundPolylineGeometry.js +1680 -0
  79. package/Build/Workers/createPlaneGeometry.js +223 -0
  80. package/Build/Workers/createPlaneOutlineGeometry.js +124 -0
  81. package/Build/Workers/createPolygonGeometry.js +1404 -0
  82. package/Build/Workers/createPolygonOutlineGeometry.js +532 -0
  83. package/Build/Workers/createPolylineGeometry.js +491 -0
  84. package/Build/Workers/createPolylineVolumeGeometry.js +374 -0
  85. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +272 -0
  86. package/Build/Workers/createRectangleGeometry.js +1264 -0
  87. package/Build/Workers/createRectangleOutlineGeometry.js +476 -0
  88. package/Build/Workers/createSimplePolylineGeometry.js +397 -0
  89. package/Build/Workers/createSphereGeometry.js +116 -0
  90. package/Build/Workers/createSphereOutlineGeometry.js +116 -0
  91. package/Build/Workers/createTaskProcessorWorker.js +32 -0
  92. package/Build/Workers/createVectorTileClampedPolylines.js +492 -0
  93. package/Build/Workers/createVectorTileGeometries.js +387 -0
  94. package/Build/Workers/createVectorTilePoints.js +114 -0
  95. package/Build/Workers/createVectorTilePolygons.js +386 -0
  96. package/Build/Workers/createVectorTilePolylines.js +262 -0
  97. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +92 -0
  98. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +566 -0
  99. package/Build/Workers/createVerticesFromHeightmap.js +2256 -0
  100. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +500 -0
  101. package/Build/Workers/createWallGeometry.js +487 -0
  102. package/Build/Workers/createWallOutlineGeometry.js +335 -0
  103. package/Build/Workers/decodeDraco.js +369 -0
  104. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2666 -0
  105. package/Build/Workers/decodeI3S.js +1339 -0
  106. package/Build/Workers/gaussianSplatSorter.js +62 -0
  107. package/Build/Workers/gaussianSplatTextureGenerator.js +68 -0
  108. package/Build/Workers/incrementallyBuildTerrainPicker.js +129 -0
  109. package/Build/Workers/transcodeKTX2.js +3466 -0
  110. package/Build/Workers/transferTypedArrayTest.js +41 -0
  111. package/Build/Workers/upsampleQuantizedTerrainMesh.js +821 -0
  112. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +96 -0
  113. package/LICENSE.md +928 -0
  114. package/README.md +76 -0
  115. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  116. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  117. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  118. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  119. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  120. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  121. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  122. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  123. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  124. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  125. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  126. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  127. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  128. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  129. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  130. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  131. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  132. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  133. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  134. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  135. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  136. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  137. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  138. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  139. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  140. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  141. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  142. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  143. package/Source/Assets/Images/bing_maps_credit.png +0 -0
  144. package/Source/Assets/Images/cesium_credit.png +0 -0
  145. package/Source/Assets/Images/google_earth_credit.png +0 -0
  146. package/Source/Assets/Images/ion-credit.png +0 -0
  147. package/Source/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  148. package/Source/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  149. package/Source/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  150. package/Source/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  151. package/Source/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  152. package/Source/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  153. package/Source/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  154. package/Source/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  155. package/Source/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  156. package/Source/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  157. package/Source/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  158. package/Source/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  159. package/Source/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  160. package/Source/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  161. package/Source/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  162. package/Source/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  163. package/Source/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  164. package/Source/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  165. package/Source/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  166. package/Source/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  167. package/Source/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  168. package/Source/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  169. package/Source/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  170. package/Source/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  171. package/Source/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  172. package/Source/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  173. package/Source/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  174. package/Source/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  175. package/Source/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  176. package/Source/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  177. package/Source/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  178. package/Source/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  179. package/Source/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  180. package/Source/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  181. package/Source/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  182. package/Source/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  183. package/Source/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  184. package/Source/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  185. package/Source/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  186. package/Source/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  187. package/Source/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  188. package/Source/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  189. package/Source/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  190. package/Source/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  191. package/Source/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
  192. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  193. package/Source/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  194. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  195. package/Source/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  196. package/Source/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  197. package/Source/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  198. package/Source/Assets/Textures/maki/airfield.png +0 -0
  199. package/Source/Assets/Textures/maki/airport.png +0 -0
  200. package/Source/Assets/Textures/maki/alcohol-shop.png +0 -0
  201. package/Source/Assets/Textures/maki/america-football.png +0 -0
  202. package/Source/Assets/Textures/maki/art-gallery.png +0 -0
  203. package/Source/Assets/Textures/maki/bakery.png +0 -0
  204. package/Source/Assets/Textures/maki/bank.png +0 -0
  205. package/Source/Assets/Textures/maki/bar.png +0 -0
  206. package/Source/Assets/Textures/maki/baseball.png +0 -0
  207. package/Source/Assets/Textures/maki/basketball.png +0 -0
  208. package/Source/Assets/Textures/maki/beer.png +0 -0
  209. package/Source/Assets/Textures/maki/bicycle.png +0 -0
  210. package/Source/Assets/Textures/maki/building.png +0 -0
  211. package/Source/Assets/Textures/maki/bus.png +0 -0
  212. package/Source/Assets/Textures/maki/cafe.png +0 -0
  213. package/Source/Assets/Textures/maki/camera.png +0 -0
  214. package/Source/Assets/Textures/maki/campsite.png +0 -0
  215. package/Source/Assets/Textures/maki/car.png +0 -0
  216. package/Source/Assets/Textures/maki/cemetery.png +0 -0
  217. package/Source/Assets/Textures/maki/cesium.png +0 -0
  218. package/Source/Assets/Textures/maki/chemist.png +0 -0
  219. package/Source/Assets/Textures/maki/cinema.png +0 -0
  220. package/Source/Assets/Textures/maki/circle-stroked.png +0 -0
  221. package/Source/Assets/Textures/maki/circle.png +0 -0
  222. package/Source/Assets/Textures/maki/city.png +0 -0
  223. package/Source/Assets/Textures/maki/clothing-store.png +0 -0
  224. package/Source/Assets/Textures/maki/college.png +0 -0
  225. package/Source/Assets/Textures/maki/commercial.png +0 -0
  226. package/Source/Assets/Textures/maki/cricket.png +0 -0
  227. package/Source/Assets/Textures/maki/cross.png +0 -0
  228. package/Source/Assets/Textures/maki/dam.png +0 -0
  229. package/Source/Assets/Textures/maki/danger.png +0 -0
  230. package/Source/Assets/Textures/maki/disability.png +0 -0
  231. package/Source/Assets/Textures/maki/dog-park.png +0 -0
  232. package/Source/Assets/Textures/maki/embassy.png +0 -0
  233. package/Source/Assets/Textures/maki/emergency-telephone.png +0 -0
  234. package/Source/Assets/Textures/maki/entrance.png +0 -0
  235. package/Source/Assets/Textures/maki/farm.png +0 -0
  236. package/Source/Assets/Textures/maki/fast-food.png +0 -0
  237. package/Source/Assets/Textures/maki/ferry.png +0 -0
  238. package/Source/Assets/Textures/maki/fire-station.png +0 -0
  239. package/Source/Assets/Textures/maki/fuel.png +0 -0
  240. package/Source/Assets/Textures/maki/garden.png +0 -0
  241. package/Source/Assets/Textures/maki/gift.png +0 -0
  242. package/Source/Assets/Textures/maki/golf.png +0 -0
  243. package/Source/Assets/Textures/maki/grocery.png +0 -0
  244. package/Source/Assets/Textures/maki/hairdresser.png +0 -0
  245. package/Source/Assets/Textures/maki/harbor.png +0 -0
  246. package/Source/Assets/Textures/maki/heart.png +0 -0
  247. package/Source/Assets/Textures/maki/heliport.png +0 -0
  248. package/Source/Assets/Textures/maki/hospital.png +0 -0
  249. package/Source/Assets/Textures/maki/ice-cream.png +0 -0
  250. package/Source/Assets/Textures/maki/industrial.png +0 -0
  251. package/Source/Assets/Textures/maki/land-use.png +0 -0
  252. package/Source/Assets/Textures/maki/laundry.png +0 -0
  253. package/Source/Assets/Textures/maki/library.png +0 -0
  254. package/Source/Assets/Textures/maki/lighthouse.png +0 -0
  255. package/Source/Assets/Textures/maki/lodging.png +0 -0
  256. package/Source/Assets/Textures/maki/logging.png +0 -0
  257. package/Source/Assets/Textures/maki/london-underground.png +0 -0
  258. package/Source/Assets/Textures/maki/marker-stroked.png +0 -0
  259. package/Source/Assets/Textures/maki/marker.png +0 -0
  260. package/Source/Assets/Textures/maki/minefield.png +0 -0
  261. package/Source/Assets/Textures/maki/mobilephone.png +0 -0
  262. package/Source/Assets/Textures/maki/monument.png +0 -0
  263. package/Source/Assets/Textures/maki/museum.png +0 -0
  264. package/Source/Assets/Textures/maki/music.png +0 -0
  265. package/Source/Assets/Textures/maki/oil-well.png +0 -0
  266. package/Source/Assets/Textures/maki/park.png +0 -0
  267. package/Source/Assets/Textures/maki/park2.png +0 -0
  268. package/Source/Assets/Textures/maki/parking-garage.png +0 -0
  269. package/Source/Assets/Textures/maki/parking.png +0 -0
  270. package/Source/Assets/Textures/maki/pharmacy.png +0 -0
  271. package/Source/Assets/Textures/maki/pitch.png +0 -0
  272. package/Source/Assets/Textures/maki/place-of-worship.png +0 -0
  273. package/Source/Assets/Textures/maki/playground.png +0 -0
  274. package/Source/Assets/Textures/maki/police.png +0 -0
  275. package/Source/Assets/Textures/maki/polling-place.png +0 -0
  276. package/Source/Assets/Textures/maki/post.png +0 -0
  277. package/Source/Assets/Textures/maki/prison.png +0 -0
  278. package/Source/Assets/Textures/maki/rail-above.png +0 -0
  279. package/Source/Assets/Textures/maki/rail-light.png +0 -0
  280. package/Source/Assets/Textures/maki/rail-metro.png +0 -0
  281. package/Source/Assets/Textures/maki/rail-underground.png +0 -0
  282. package/Source/Assets/Textures/maki/rail.png +0 -0
  283. package/Source/Assets/Textures/maki/religious-christian.png +0 -0
  284. package/Source/Assets/Textures/maki/religious-jewish.png +0 -0
  285. package/Source/Assets/Textures/maki/religious-muslim.png +0 -0
  286. package/Source/Assets/Textures/maki/restaurant.png +0 -0
  287. package/Source/Assets/Textures/maki/roadblock.png +0 -0
  288. package/Source/Assets/Textures/maki/rocket.png +0 -0
  289. package/Source/Assets/Textures/maki/school.png +0 -0
  290. package/Source/Assets/Textures/maki/scooter.png +0 -0
  291. package/Source/Assets/Textures/maki/shop.png +0 -0
  292. package/Source/Assets/Textures/maki/skiing.png +0 -0
  293. package/Source/Assets/Textures/maki/slaughterhouse.png +0 -0
  294. package/Source/Assets/Textures/maki/soccer.png +0 -0
  295. package/Source/Assets/Textures/maki/square-stroked.png +0 -0
  296. package/Source/Assets/Textures/maki/square.png +0 -0
  297. package/Source/Assets/Textures/maki/star-stroked.png +0 -0
  298. package/Source/Assets/Textures/maki/star.png +0 -0
  299. package/Source/Assets/Textures/maki/suitcase.png +0 -0
  300. package/Source/Assets/Textures/maki/swimming.png +0 -0
  301. package/Source/Assets/Textures/maki/telephone.png +0 -0
  302. package/Source/Assets/Textures/maki/tennis.png +0 -0
  303. package/Source/Assets/Textures/maki/theatre.png +0 -0
  304. package/Source/Assets/Textures/maki/toilets.png +0 -0
  305. package/Source/Assets/Textures/maki/town-hall.png +0 -0
  306. package/Source/Assets/Textures/maki/town.png +0 -0
  307. package/Source/Assets/Textures/maki/triangle-stroked.png +0 -0
  308. package/Source/Assets/Textures/maki/triangle.png +0 -0
  309. package/Source/Assets/Textures/maki/village.png +0 -0
  310. package/Source/Assets/Textures/maki/warehouse.png +0 -0
  311. package/Source/Assets/Textures/maki/waste-basket.png +0 -0
  312. package/Source/Assets/Textures/maki/water.png +0 -0
  313. package/Source/Assets/Textures/maki/wetland.png +0 -0
  314. package/Source/Assets/Textures/maki/zoo.png +0 -0
  315. package/Source/Assets/Textures/moonSmall.jpg +0 -0
  316. package/Source/Assets/Textures/pin.svg +1 -0
  317. package/Source/Assets/Textures/waterNormals.jpg +0 -0
  318. package/Source/Assets/Textures/waterNormalsSmall.jpg +0 -0
  319. package/Source/Assets/approximateTerrainHeights.json +1 -0
  320. package/Source/Core/ApproximateTerrainHeights.js +255 -0
  321. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +755 -0
  322. package/Source/Core/ArcType.js +36 -0
  323. package/Source/Core/ArticulationStageType.js +27 -0
  324. package/Source/Core/AssociativeArray.js +133 -0
  325. package/Source/Core/AttributeCompression.js +574 -0
  326. package/Source/Core/AxisAlignedBoundingBox.js +294 -0
  327. package/Source/Core/BingMapsGeocoderService.js +127 -0
  328. package/Source/Core/BoundingRectangle.js +374 -0
  329. package/Source/Core/BoundingSphere.js +1502 -0
  330. package/Source/Core/BoxGeometry.js +893 -0
  331. package/Source/Core/BoxOutlineGeometry.js +312 -0
  332. package/Source/Core/Cartesian2.js +830 -0
  333. package/Source/Core/Cartesian3.js +1222 -0
  334. package/Source/Core/Cartesian4.js +984 -0
  335. package/Source/Core/Cartographic.js +312 -0
  336. package/Source/Core/CartographicGeocoderService.js +73 -0
  337. package/Source/Core/CatmullRomSpline.js +324 -0
  338. package/Source/Core/Cesium3DTilesTerrainData.js +932 -0
  339. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1868 -0
  340. package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
  341. package/Source/Core/CesiumTerrainProvider.js +1408 -0
  342. package/Source/Core/Check.d.ts +131 -0
  343. package/Source/Core/Check.js +212 -0
  344. package/Source/Core/CircleGeometry.js +207 -0
  345. package/Source/Core/CircleOutlineGeometry.js +149 -0
  346. package/Source/Core/Clock.js +316 -0
  347. package/Source/Core/ClockRange.js +44 -0
  348. package/Source/Core/ClockStep.js +43 -0
  349. package/Source/Core/Color.js +2294 -0
  350. package/Source/Core/ColorGeometryInstanceAttribute.js +181 -0
  351. package/Source/Core/ComponentDatatype.js +341 -0
  352. package/Source/Core/CompressedTextureBuffer.js +125 -0
  353. package/Source/Core/ConstantSpline.js +119 -0
  354. package/Source/Core/CoplanarPolygonGeometry.js +600 -0
  355. package/Source/Core/CoplanarPolygonGeometryLibrary.js +132 -0
  356. package/Source/Core/CoplanarPolygonOutlineGeometry.js +237 -0
  357. package/Source/Core/CornerType.js +42 -0
  358. package/Source/Core/CorridorGeometry.js +1411 -0
  359. package/Source/Core/CorridorGeometryLibrary.js +501 -0
  360. package/Source/Core/CorridorOutlineGeometry.js +599 -0
  361. package/Source/Core/Credit.js +169 -0
  362. package/Source/Core/CubicRealPolynomial.js +238 -0
  363. package/Source/Core/CullingVolume.js +216 -0
  364. package/Source/Core/CustomHeightmapTerrainProvider.js +287 -0
  365. package/Source/Core/CylinderGeometry.js +479 -0
  366. package/Source/Core/CylinderGeometryLibrary.js +59 -0
  367. package/Source/Core/CylinderOutlineGeometry.js +269 -0
  368. package/Source/Core/DefaultProxy.js +26 -0
  369. package/Source/Core/DeveloperError.js +76 -0
  370. package/Source/Core/DistanceDisplayCondition.js +171 -0
  371. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +179 -0
  372. package/Source/Core/DoubleEndedPriorityQueue.js +405 -0
  373. package/Source/Core/DoublyLinkedList.js +112 -0
  374. package/Source/Core/EarthOrientationParameters.js +431 -0
  375. package/Source/Core/EarthOrientationParametersSample.js +52 -0
  376. package/Source/Core/EasingFunction.js +257 -0
  377. package/Source/Core/EllipseGeometry.js +1318 -0
  378. package/Source/Core/EllipseGeometryLibrary.js +365 -0
  379. package/Source/Core/EllipseOutlineGeometry.js +451 -0
  380. package/Source/Core/Ellipsoid.js +866 -0
  381. package/Source/Core/EllipsoidGeodesic.js +523 -0
  382. package/Source/Core/EllipsoidGeometry.js +650 -0
  383. package/Source/Core/EllipsoidOutlineGeometry.js +464 -0
  384. package/Source/Core/EllipsoidRhumbLine.js +751 -0
  385. package/Source/Core/EllipsoidTangentPlane.js +382 -0
  386. package/Source/Core/EllipsoidTerrainProvider.js +201 -0
  387. package/Source/Core/EllipsoidalOccluder.js +538 -0
  388. package/Source/Core/EncodedCartesian3.js +170 -0
  389. package/Source/Core/Event.js +205 -0
  390. package/Source/Core/EventHelper.js +74 -0
  391. package/Source/Core/ExtrapolationType.js +39 -0
  392. package/Source/Core/FeatureDetection.js +404 -0
  393. package/Source/Core/Frozen.js +24 -0
  394. package/Source/Core/FrustumGeometry.js +583 -0
  395. package/Source/Core/FrustumOutlineGeometry.js +253 -0
  396. package/Source/Core/Fullscreen.js +249 -0
  397. package/Source/Core/GeocodeType.js +29 -0
  398. package/Source/Core/GeocoderService.js +60 -0
  399. package/Source/Core/GeographicProjection.js +105 -0
  400. package/Source/Core/GeographicTilingScheme.js +226 -0
  401. package/Source/Core/Geometry.js +371 -0
  402. package/Source/Core/GeometryAttribute.js +133 -0
  403. package/Source/Core/GeometryAttributes.js +88 -0
  404. package/Source/Core/GeometryFactory.js +25 -0
  405. package/Source/Core/GeometryInstance.js +118 -0
  406. package/Source/Core/GeometryInstanceAttribute.js +133 -0
  407. package/Source/Core/GeometryOffsetAttribute.js +16 -0
  408. package/Source/Core/GeometryPipeline.js +3291 -0
  409. package/Source/Core/GeometryType.js +16 -0
  410. package/Source/Core/GoogleEarthEnterpriseMetadata.js +584 -0
  411. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +606 -0
  412. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +574 -0
  413. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +136 -0
  414. package/Source/Core/GoogleGeocoderService.js +110 -0
  415. package/Source/Core/GoogleMaps.js +61 -0
  416. package/Source/Core/GregorianDate.js +153 -0
  417. package/Source/Core/GroundPolylineGeometry.js +1693 -0
  418. package/Source/Core/HeadingPitchRange.js +59 -0
  419. package/Source/Core/HeadingPitchRoll.js +235 -0
  420. package/Source/Core/Heap.js +233 -0
  421. package/Source/Core/HeightmapEncoding.js +30 -0
  422. package/Source/Core/HeightmapTerrainData.js +903 -0
  423. package/Source/Core/HeightmapTessellator.js +518 -0
  424. package/Source/Core/HermitePolynomialApproximation.js +341 -0
  425. package/Source/Core/HermiteSpline.js +620 -0
  426. package/Source/Core/HilbertOrder.js +112 -0
  427. package/Source/Core/ITwinPlatform.js +389 -0
  428. package/Source/Core/Iau2000Orientation.js +167 -0
  429. package/Source/Core/Iau2006XysData.js +286 -0
  430. package/Source/Core/Iau2006XysSample.js +32 -0
  431. package/Source/Core/IauOrientationAxes.js +105 -0
  432. package/Source/Core/IauOrientationParameters.js +54 -0
  433. package/Source/Core/IndexDatatype.js +201 -0
  434. package/Source/Core/InterpolationAlgorithm.js +65 -0
  435. package/Source/Core/InterpolationType.js +18 -0
  436. package/Source/Core/Intersect.js +39 -0
  437. package/Source/Core/IntersectionTests.js +1087 -0
  438. package/Source/Core/Intersections2D.js +358 -0
  439. package/Source/Core/Interval.js +23 -0
  440. package/Source/Core/Ion.js +56 -0
  441. package/Source/Core/IonGeocodeProviderType.js +37 -0
  442. package/Source/Core/IonGeocoderService.js +147 -0
  443. package/Source/Core/IonResource.js +321 -0
  444. package/Source/Core/Iso8601.js +54 -0
  445. package/Source/Core/JulianDate.js +1231 -0
  446. package/Source/Core/KTX2Transcoder.js +92 -0
  447. package/Source/Core/KeyboardEventModifier.js +37 -0
  448. package/Source/Core/LagrangePolynomialApproximation.js +71 -0
  449. package/Source/Core/LeapSecond.js +24 -0
  450. package/Source/Core/LinearApproximation.js +83 -0
  451. package/Source/Core/LinearSpline.js +166 -0
  452. package/Source/Core/ManagedArray.js +162 -0
  453. package/Source/Core/MapProjection.js +57 -0
  454. package/Source/Core/Math.js +1125 -0
  455. package/Source/Core/Matrix2.js +1105 -0
  456. package/Source/Core/Matrix3.js +1906 -0
  457. package/Source/Core/Matrix4.js +3264 -0
  458. package/Source/Core/MorphWeightSpline.js +161 -0
  459. package/Source/Core/MortonOrder.js +214 -0
  460. package/Source/Core/NearFarScalar.js +173 -0
  461. package/Source/Core/Occluder.js +727 -0
  462. package/Source/Core/OffsetGeometryInstanceAttribute.js +125 -0
  463. package/Source/Core/OpenCageGeocoderService.js +133 -0
  464. package/Source/Core/OrientedBoundingBox.js +1272 -0
  465. package/Source/Core/OrthographicFrustum.js +351 -0
  466. package/Source/Core/OrthographicOffCenterFrustum.js +463 -0
  467. package/Source/Core/Packable.js +40 -0
  468. package/Source/Core/PackableForInterpolation.js +43 -0
  469. package/Source/Core/PeliasGeocoderService.js +106 -0
  470. package/Source/Core/PerspectiveFrustum.js +459 -0
  471. package/Source/Core/PerspectiveOffCenterFrustum.js +522 -0
  472. package/Source/Core/PinBuilder.js +234 -0
  473. package/Source/Core/PixelFormat.js +605 -0
  474. package/Source/Core/Plane.js +312 -0
  475. package/Source/Core/PlaneGeometry.js +250 -0
  476. package/Source/Core/PlaneOutlineGeometry.js +113 -0
  477. package/Source/Core/PolygonGeometry.js +1580 -0
  478. package/Source/Core/PolygonGeometryLibrary.js +1301 -0
  479. package/Source/Core/PolygonHierarchy.js +25 -0
  480. package/Source/Core/PolygonOutlineGeometry.js +687 -0
  481. package/Source/Core/PolygonPipeline.js +632 -0
  482. package/Source/Core/PolylineGeometry.js +573 -0
  483. package/Source/Core/PolylinePipeline.js +573 -0
  484. package/Source/Core/PolylineVolumeGeometry.js +412 -0
  485. package/Source/Core/PolylineVolumeGeometryLibrary.js +701 -0
  486. package/Source/Core/PolylineVolumeOutlineGeometry.js +294 -0
  487. package/Source/Core/PrimitiveType.js +117 -0
  488. package/Source/Core/Proxy.js +24 -0
  489. package/Source/Core/QuadraticRealPolynomial.js +147 -0
  490. package/Source/Core/QuantizedMeshTerrainData.js +735 -0
  491. package/Source/Core/QuarticRealPolynomial.js +342 -0
  492. package/Source/Core/Quaternion.js +1145 -0
  493. package/Source/Core/QuaternionSpline.js +155 -0
  494. package/Source/Core/Queue.js +126 -0
  495. package/Source/Core/Ray.js +81 -0
  496. package/Source/Core/Rectangle.js +1080 -0
  497. package/Source/Core/RectangleCollisionChecker.js +95 -0
  498. package/Source/Core/RectangleGeometry.js +1480 -0
  499. package/Source/Core/RectangleGeometryLibrary.js +286 -0
  500. package/Source/Core/RectangleOutlineGeometry.js +532 -0
  501. package/Source/Core/ReferenceFrame.js +28 -0
  502. package/Source/Core/Request.js +193 -0
  503. package/Source/Core/RequestErrorEvent.js +58 -0
  504. package/Source/Core/RequestScheduler.js +524 -0
  505. package/Source/Core/RequestState.js +60 -0
  506. package/Source/Core/RequestType.js +44 -0
  507. package/Source/Core/Resource.js +2280 -0
  508. package/Source/Core/RuntimeError.js +65 -0
  509. package/Source/Core/S2Cell.js +734 -0
  510. package/Source/Core/ScreenSpaceEventHandler.js +1136 -0
  511. package/Source/Core/ScreenSpaceEventType.js +132 -0
  512. package/Source/Core/ShowGeometryInstanceAttribute.js +122 -0
  513. package/Source/Core/Simon1994PlanetaryPositions.js +684 -0
  514. package/Source/Core/SimplePolylineGeometry.js +454 -0
  515. package/Source/Core/SphereGeometry.js +117 -0
  516. package/Source/Core/SphereOutlineGeometry.js +119 -0
  517. package/Source/Core/Spherical.js +183 -0
  518. package/Source/Core/Spline.js +188 -0
  519. package/Source/Core/SteppedSpline.js +160 -0
  520. package/Source/Core/Stereographic.js +247 -0
  521. package/Source/Core/TaskProcessor.js +403 -0
  522. package/Source/Core/TerrainData.js +126 -0
  523. package/Source/Core/TerrainEncoding.js +772 -0
  524. package/Source/Core/TerrainMesh.js +373 -0
  525. package/Source/Core/TerrainPicker.js +625 -0
  526. package/Source/Core/TerrainProvider.js +585 -0
  527. package/Source/Core/TerrainQuantization.js +30 -0
  528. package/Source/Core/TexturePacker.js +181 -0
  529. package/Source/Core/TileAvailability.js +564 -0
  530. package/Source/Core/TileEdge.js +14 -0
  531. package/Source/Core/TileProviderError.js +170 -0
  532. package/Source/Core/TilingScheme.js +134 -0
  533. package/Source/Core/TimeConstants.js +88 -0
  534. package/Source/Core/TimeInterval.js +438 -0
  535. package/Source/Core/TimeIntervalCollection.js +1137 -0
  536. package/Source/Core/TimeStandard.js +35 -0
  537. package/Source/Core/Tipsify.js +314 -0
  538. package/Source/Core/TrackingReferenceFrame.js +50 -0
  539. package/Source/Core/Transforms.js +1277 -0
  540. package/Source/Core/TranslationRotationScale.js +57 -0
  541. package/Source/Core/TridiagonalSystemSolver.js +113 -0
  542. package/Source/Core/TrustedServers.js +146 -0
  543. package/Source/Core/VRTheWorldTerrainProvider.js +462 -0
  544. package/Source/Core/VertexFormat.js +311 -0
  545. package/Source/Core/VerticalExaggeration.js +70 -0
  546. package/Source/Core/VideoSynchronizer.js +222 -0
  547. package/Source/Core/Visibility.js +39 -0
  548. package/Source/Core/VulkanConstants.js +291 -0
  549. package/Source/Core/WallGeometry.js +623 -0
  550. package/Source/Core/WallGeometryLibrary.js +212 -0
  551. package/Source/Core/WallOutlineGeometry.js +431 -0
  552. package/Source/Core/WebGLConstants.js +619 -0
  553. package/Source/Core/WebMercatorProjection.js +151 -0
  554. package/Source/Core/WebMercatorTilingScheme.js +295 -0
  555. package/Source/Core/WindingOrder.js +38 -0
  556. package/Source/Core/WireframeIndexGenerator.js +238 -0
  557. package/Source/Core/addAllToArray.js +40 -0
  558. package/Source/Core/appendForwardSlash.js +10 -0
  559. package/Source/Core/arrayRemoveDuplicates.js +129 -0
  560. package/Source/Core/assert.js +27 -0
  561. package/Source/Core/barycentricCoordinates.js +109 -0
  562. package/Source/Core/binarySearch.js +67 -0
  563. package/Source/Core/buildModuleUrl.js +153 -0
  564. package/Source/Core/clone.js +30 -0
  565. package/Source/Core/combine.js +79 -0
  566. package/Source/Core/createGuid.js +22 -0
  567. package/Source/Core/createWorldBathymetryAsync.js +45 -0
  568. package/Source/Core/createWorldTerrainAsync.js +50 -0
  569. package/Source/Core/decodeGoogleEarthEnterpriseData.js +93 -0
  570. package/Source/Core/decodeVectorPolylinePositions.js +51 -0
  571. package/Source/Core/defer.js +44 -0
  572. package/Source/Core/defined.d.ts +11 -0
  573. package/Source/Core/defined.js +17 -0
  574. package/Source/Core/deprecationWarning.js +53 -0
  575. package/Source/Core/destroyObject.js +53 -0
  576. package/Source/Core/formatError.js +30 -0
  577. package/Source/Core/getAbsoluteUri.js +46 -0
  578. package/Source/Core/getBaseUri.js +47 -0
  579. package/Source/Core/getExtensionFromUri.js +38 -0
  580. package/Source/Core/getFilenameFromUri.js +32 -0
  581. package/Source/Core/getImageFromTypedArray.js +24 -0
  582. package/Source/Core/getImagePixels.js +44 -0
  583. package/Source/Core/getJsonFromTypedArray.js +21 -0
  584. package/Source/Core/getMagic.js +14 -0
  585. package/Source/Core/getStringFromTypedArray.js +165 -0
  586. package/Source/Core/getTimestamp.js +26 -0
  587. package/Source/Core/globalTypes.js +20 -0
  588. package/Source/Core/isBitSet.js +7 -0
  589. package/Source/Core/isBlobUri.js +22 -0
  590. package/Source/Core/isCrossOriginUrl.js +30 -0
  591. package/Source/Core/isDataUri.js +22 -0
  592. package/Source/Core/isLeapYear.js +23 -0
  593. package/Source/Core/loadAndExecuteScript.js +27 -0
  594. package/Source/Core/loadImageFromTypedArray.js +66 -0
  595. package/Source/Core/loadKTX2.js +104 -0
  596. package/Source/Core/mergeSort.js +111 -0
  597. package/Source/Core/objectToQuery.js +57 -0
  598. package/Source/Core/oneTimeWarning.js +51 -0
  599. package/Source/Core/parseResponseHeaders.js +37 -0
  600. package/Source/Core/pointInsideTriangle.js +39 -0
  601. package/Source/Core/queryToObject.js +60 -0
  602. package/Source/Core/resizeImageToNextPowerOfTwo.js +31 -0
  603. package/Source/Core/sampleTerrain.js +291 -0
  604. package/Source/Core/sampleTerrainMostDetailed.js +132 -0
  605. package/Source/Core/scaleToGeodeticSurface.js +147 -0
  606. package/Source/Core/srgbToLinear.js +32 -0
  607. package/Source/Core/subdivideArray.js +35 -0
  608. package/Source/Core/webGLConstantToGlslType.js +25 -0
  609. package/Source/Core/wrapFunction.js +26 -0
  610. package/Source/Core/writeTextToCanvas.js +173 -0
  611. package/Source/DataSources/BillboardGraphics.js +419 -0
  612. package/Source/DataSources/BillboardVisualizer.js +351 -0
  613. package/Source/DataSources/BoundingSphereState.js +26 -0
  614. package/Source/DataSources/BoxGeometryUpdater.js +326 -0
  615. package/Source/DataSources/BoxGraphics.js +208 -0
  616. package/Source/DataSources/CallbackPositionProperty.js +172 -0
  617. package/Source/DataSources/CallbackProperty.js +117 -0
  618. package/Source/DataSources/Cesium3DTilesetGraphics.js +111 -0
  619. package/Source/DataSources/Cesium3DTilesetVisualizer.js +261 -0
  620. package/Source/DataSources/CheckerboardMaterialProperty.js +157 -0
  621. package/Source/DataSources/ColorMaterialProperty.js +112 -0
  622. package/Source/DataSources/CompositeEntityCollection.js +591 -0
  623. package/Source/DataSources/CompositeMaterialProperty.js +128 -0
  624. package/Source/DataSources/CompositePositionProperty.js +153 -0
  625. package/Source/DataSources/CompositeProperty.js +154 -0
  626. package/Source/DataSources/ConstantPositionProperty.js +151 -0
  627. package/Source/DataSources/ConstantProperty.js +116 -0
  628. package/Source/DataSources/CorridorGeometryUpdater.js +409 -0
  629. package/Source/DataSources/CorridorGraphics.js +316 -0
  630. package/Source/DataSources/CustomDataSource.js +173 -0
  631. package/Source/DataSources/CylinderGeometryUpdater.js +375 -0
  632. package/Source/DataSources/CylinderGraphics.js +258 -0
  633. package/Source/DataSources/CzmlDataSource.js +5151 -0
  634. package/Source/DataSources/DataSource.js +121 -0
  635. package/Source/DataSources/DataSourceClock.js +164 -0
  636. package/Source/DataSources/DataSourceCollection.js +335 -0
  637. package/Source/DataSources/DataSourceDisplay.js +543 -0
  638. package/Source/DataSources/DynamicGeometryBatch.js +56 -0
  639. package/Source/DataSources/DynamicGeometryUpdater.js +270 -0
  640. package/Source/DataSources/EllipseGeometryUpdater.js +434 -0
  641. package/Source/DataSources/EllipseGraphics.js +343 -0
  642. package/Source/DataSources/EllipsoidGeometryUpdater.js +710 -0
  643. package/Source/DataSources/EllipsoidGraphics.js +312 -0
  644. package/Source/DataSources/Entity.js +789 -0
  645. package/Source/DataSources/EntityCluster.js +1022 -0
  646. package/Source/DataSources/EntityCollection.js +439 -0
  647. package/Source/DataSources/EntityView.js +476 -0
  648. package/Source/DataSources/GeoJsonDataSource.js +1064 -0
  649. package/Source/DataSources/GeometryUpdater.js +538 -0
  650. package/Source/DataSources/GeometryUpdaterSet.js +114 -0
  651. package/Source/DataSources/GeometryVisualizer.js +549 -0
  652. package/Source/DataSources/GpxDataSource.js +1018 -0
  653. package/Source/DataSources/GridMaterialProperty.js +204 -0
  654. package/Source/DataSources/GroundGeometryUpdater.js +234 -0
  655. package/Source/DataSources/ImageMaterialProperty.js +173 -0
  656. package/Source/DataSources/KmlCamera.js +13 -0
  657. package/Source/DataSources/KmlDataSource.js +4249 -0
  658. package/Source/DataSources/KmlLookAt.js +12 -0
  659. package/Source/DataSources/KmlTour.js +165 -0
  660. package/Source/DataSources/KmlTourFlyTo.js +109 -0
  661. package/Source/DataSources/KmlTourWait.js +52 -0
  662. package/Source/DataSources/LabelGraphics.js +401 -0
  663. package/Source/DataSources/LabelVisualizer.js +359 -0
  664. package/Source/DataSources/MaterialProperty.js +111 -0
  665. package/Source/DataSources/ModelGraphics.js +456 -0
  666. package/Source/DataSources/ModelVisualizer.js +560 -0
  667. package/Source/DataSources/NodeTransformationProperty.js +150 -0
  668. package/Source/DataSources/PathGraphics.js +174 -0
  669. package/Source/DataSources/PathVisualizer.js +1135 -0
  670. package/Source/DataSources/PlaneGeometryUpdater.js +385 -0
  671. package/Source/DataSources/PlaneGraphics.js +208 -0
  672. package/Source/DataSources/PointGraphics.js +223 -0
  673. package/Source/DataSources/PointVisualizer.js +438 -0
  674. package/Source/DataSources/PolygonGeometryUpdater.js +591 -0
  675. package/Source/DataSources/PolygonGraphics.js +383 -0
  676. package/Source/DataSources/PolylineArrowMaterialProperty.js +110 -0
  677. package/Source/DataSources/PolylineDashMaterialProperty.js +174 -0
  678. package/Source/DataSources/PolylineGeometryUpdater.js +878 -0
  679. package/Source/DataSources/PolylineGlowMaterialProperty.js +152 -0
  680. package/Source/DataSources/PolylineGraphics.js +241 -0
  681. package/Source/DataSources/PolylineOutlineMaterialProperty.js +158 -0
  682. package/Source/DataSources/PolylineVisualizer.js +409 -0
  683. package/Source/DataSources/PolylineVolumeGeometryUpdater.js +306 -0
  684. package/Source/DataSources/PolylineVolumeGraphics.js +235 -0
  685. package/Source/DataSources/PositionProperty.js +131 -0
  686. package/Source/DataSources/PositionPropertyArray.js +192 -0
  687. package/Source/DataSources/Property.js +137 -0
  688. package/Source/DataSources/PropertyArray.js +147 -0
  689. package/Source/DataSources/PropertyBag.js +275 -0
  690. package/Source/DataSources/RectangleGeometryUpdater.js +427 -0
  691. package/Source/DataSources/RectangleGraphics.js +317 -0
  692. package/Source/DataSources/ReferenceProperty.js +371 -0
  693. package/Source/DataSources/Rotation.js +155 -0
  694. package/Source/DataSources/SampledPositionProperty.js +330 -0
  695. package/Source/DataSources/SampledProperty.js +855 -0
  696. package/Source/DataSources/ScaledPositionProperty.js +103 -0
  697. package/Source/DataSources/StaticGeometryColorBatch.js +575 -0
  698. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +493 -0
  699. package/Source/DataSources/StaticGroundGeometryColorBatch.js +394 -0
  700. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +459 -0
  701. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +437 -0
  702. package/Source/DataSources/StaticOutlineGeometryBatch.js +465 -0
  703. package/Source/DataSources/StripeMaterialProperty.js +193 -0
  704. package/Source/DataSources/StripeOrientation.js +24 -0
  705. package/Source/DataSources/TerrainOffsetProperty.js +243 -0
  706. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +155 -0
  707. package/Source/DataSources/TimeIntervalCollectionProperty.js +136 -0
  708. package/Source/DataSources/VelocityOrientationProperty.js +158 -0
  709. package/Source/DataSources/VelocityVectorProperty.js +213 -0
  710. package/Source/DataSources/Visualizer.js +61 -0
  711. package/Source/DataSources/WallGeometryUpdater.js +275 -0
  712. package/Source/DataSources/WallGraphics.js +236 -0
  713. package/Source/DataSources/createMaterialPropertyDescriptor.js +35 -0
  714. package/Source/DataSources/createPropertyDescriptor.js +71 -0
  715. package/Source/DataSources/createRawPropertyDescriptor.js +13 -0
  716. package/Source/DataSources/exportKml.js +1517 -0
  717. package/Source/DataSources/getElement.js +26 -0
  718. package/Source/DataSources/heightReferenceOnEntityPropertyChanged.js +47 -0
  719. package/Source/Renderer/AutomaticUniforms.js +1857 -0
  720. package/Source/Renderer/Buffer.js +452 -0
  721. package/Source/Renderer/BufferUsage.js +32 -0
  722. package/Source/Renderer/ClearCommand.js +102 -0
  723. package/Source/Renderer/ComputeCommand.js +119 -0
  724. package/Source/Renderer/ComputeEngine.js +135 -0
  725. package/Source/Renderer/Context.js +1726 -0
  726. package/Source/Renderer/ContextLimits.js +332 -0
  727. package/Source/Renderer/CubeMap.js +686 -0
  728. package/Source/Renderer/CubeMapFace.js +415 -0
  729. package/Source/Renderer/DrawCommand.js +676 -0
  730. package/Source/Renderer/Framebuffer.js +447 -0
  731. package/Source/Renderer/FramebufferManager.js +489 -0
  732. package/Source/Renderer/MipmapHint.js +23 -0
  733. package/Source/Renderer/MultisampleFramebuffer.js +136 -0
  734. package/Source/Renderer/Pass.js +35 -0
  735. package/Source/Renderer/PassState.js +57 -0
  736. package/Source/Renderer/PickId.js +44 -0
  737. package/Source/Renderer/PixelDatatype.js +123 -0
  738. package/Source/Renderer/RenderState.js +967 -0
  739. package/Source/Renderer/Renderbuffer.js +105 -0
  740. package/Source/Renderer/RenderbufferFormat.js +46 -0
  741. package/Source/Renderer/Sampler.js +116 -0
  742. package/Source/Renderer/ShaderBuilder.js +597 -0
  743. package/Source/Renderer/ShaderCache.js +287 -0
  744. package/Source/Renderer/ShaderDestination.js +95 -0
  745. package/Source/Renderer/ShaderFunction.js +66 -0
  746. package/Source/Renderer/ShaderProgram.js +619 -0
  747. package/Source/Renderer/ShaderSource.js +525 -0
  748. package/Source/Renderer/ShaderStruct.js +55 -0
  749. package/Source/Renderer/SharedContext.js +186 -0
  750. package/Source/Renderer/Sync.js +104 -0
  751. package/Source/Renderer/Texture.js +1126 -0
  752. package/Source/Renderer/Texture3D.js +737 -0
  753. package/Source/Renderer/TextureAtlas.js +833 -0
  754. package/Source/Renderer/TextureCache.js +81 -0
  755. package/Source/Renderer/TextureMagnificationFilter.js +43 -0
  756. package/Source/Renderer/TextureMinificationFilter.js +96 -0
  757. package/Source/Renderer/TextureWrap.js +23 -0
  758. package/Source/Renderer/UniformState.js +1948 -0
  759. package/Source/Renderer/VertexArray.js +949 -0
  760. package/Source/Renderer/VertexArrayFacade.js +509 -0
  761. package/Source/Renderer/createUniform.js +422 -0
  762. package/Source/Renderer/createUniformArray.js +638 -0
  763. package/Source/Renderer/demodernizeShader.js +84 -0
  764. package/Source/Renderer/freezeRenderState.js +30 -0
  765. package/Source/Renderer/loadCubeMap.js +88 -0
  766. package/Source/Scene/AlphaMode.js +37 -0
  767. package/Source/Scene/Appearance.js +204 -0
  768. package/Source/Scene/ArcGisBaseMapType.js +17 -0
  769. package/Source/Scene/ArcGisMapServerImageryProvider.js +875 -0
  770. package/Source/Scene/ArcGisMapService.js +80 -0
  771. package/Source/Scene/Atmosphere.js +149 -0
  772. package/Source/Scene/AttributeType.js +202 -0
  773. package/Source/Scene/AutoExposure.js +386 -0
  774. package/Source/Scene/Axis.js +118 -0
  775. package/Source/Scene/Azure2DImageryProvider.js +393 -0
  776. package/Source/Scene/B3dmParser.js +173 -0
  777. package/Source/Scene/BatchTable.js +636 -0
  778. package/Source/Scene/BatchTableHierarchy.js +504 -0
  779. package/Source/Scene/BatchTexture.js +574 -0
  780. package/Source/Scene/Billboard.js +1604 -0
  781. package/Source/Scene/BillboardCollection.js +2150 -0
  782. package/Source/Scene/BillboardLoadState.js +44 -0
  783. package/Source/Scene/BillboardTexture.js +400 -0
  784. package/Source/Scene/BingMapsImageryProvider.js +769 -0
  785. package/Source/Scene/BingMapsStyle.js +98 -0
  786. package/Source/Scene/BlendEquation.js +58 -0
  787. package/Source/Scene/BlendFunction.js +134 -0
  788. package/Source/Scene/BlendOption.js +33 -0
  789. package/Source/Scene/BlendingState.js +78 -0
  790. package/Source/Scene/BoundingVolumeSemantics.js +169 -0
  791. package/Source/Scene/BoxEmitter.js +74 -0
  792. package/Source/Scene/BrdfLutGenerator.js +75 -0
  793. package/Source/Scene/BufferLoader.js +130 -0
  794. package/Source/Scene/BufferPoint.js +149 -0
  795. package/Source/Scene/BufferPointCollection.js +141 -0
  796. package/Source/Scene/BufferPointMaterial.js +95 -0
  797. package/Source/Scene/BufferPolygon.js +517 -0
  798. package/Source/Scene/BufferPolygonCollection.js +370 -0
  799. package/Source/Scene/BufferPolygonMaterial.js +41 -0
  800. package/Source/Scene/BufferPolyline.js +186 -0
  801. package/Source/Scene/BufferPolylineCollection.js +138 -0
  802. package/Source/Scene/BufferPolylineMaterial.js +93 -0
  803. package/Source/Scene/BufferPrimitive.js +347 -0
  804. package/Source/Scene/BufferPrimitiveCollection.js +818 -0
  805. package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
  806. package/Source/Scene/Camera.js +3989 -0
  807. package/Source/Scene/CameraEventAggregator.js +619 -0
  808. package/Source/Scene/CameraEventType.js +52 -0
  809. package/Source/Scene/CameraFlightPath.js +576 -0
  810. package/Source/Scene/Cesium3DContentGroup.js +44 -0
  811. package/Source/Scene/Cesium3DTile.js +2475 -0
  812. package/Source/Scene/Cesium3DTileBatchTable.js +1132 -0
  813. package/Source/Scene/Cesium3DTileColorBlendMode.js +57 -0
  814. package/Source/Scene/Cesium3DTileContent.js +415 -0
  815. package/Source/Scene/Cesium3DTileContentFactory.js +127 -0
  816. package/Source/Scene/Cesium3DTileContentState.js +17 -0
  817. package/Source/Scene/Cesium3DTileContentType.js +181 -0
  818. package/Source/Scene/Cesium3DTileFeature.js +427 -0
  819. package/Source/Scene/Cesium3DTileFeatureTable.js +131 -0
  820. package/Source/Scene/Cesium3DTileOptimizationHint.js +18 -0
  821. package/Source/Scene/Cesium3DTileOptimizations.js +115 -0
  822. package/Source/Scene/Cesium3DTilePass.js +83 -0
  823. package/Source/Scene/Cesium3DTilePassState.js +52 -0
  824. package/Source/Scene/Cesium3DTilePointFeature.js +778 -0
  825. package/Source/Scene/Cesium3DTileRefine.js +34 -0
  826. package/Source/Scene/Cesium3DTileStyle.js +1497 -0
  827. package/Source/Scene/Cesium3DTileStyleEngine.js +78 -0
  828. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  829. package/Source/Scene/Cesium3DTilesVoxelProvider.js +760 -0
  830. package/Source/Scene/Cesium3DTileset.js +3933 -0
  831. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +291 -0
  832. package/Source/Scene/Cesium3DTilesetCache.js +80 -0
  833. package/Source/Scene/Cesium3DTilesetHeatmap.js +165 -0
  834. package/Source/Scene/Cesium3DTilesetMetadata.js +199 -0
  835. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +131 -0
  836. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +420 -0
  837. package/Source/Scene/Cesium3DTilesetStatistics.js +195 -0
  838. package/Source/Scene/Cesium3DTilesetTraversal.js +323 -0
  839. package/Source/Scene/CircleEmitter.js +61 -0
  840. package/Source/Scene/ClassificationPrimitive.js +1387 -0
  841. package/Source/Scene/ClassificationType.js +37 -0
  842. package/Source/Scene/ClippingPlane.js +184 -0
  843. package/Source/Scene/ClippingPlaneCollection.js +764 -0
  844. package/Source/Scene/ClippingPolygon.js +300 -0
  845. package/Source/Scene/ClippingPolygonCollection.js +1134 -0
  846. package/Source/Scene/CloudCollection.js +1041 -0
  847. package/Source/Scene/CloudType.js +35 -0
  848. package/Source/Scene/ColorBlendMode.js +36 -0
  849. package/Source/Scene/Composite3DTileContent.js +403 -0
  850. package/Source/Scene/ConditionsExpression.js +219 -0
  851. package/Source/Scene/ConeEmitter.js +61 -0
  852. package/Source/Scene/ContentMetadata.js +184 -0
  853. package/Source/Scene/CreditDisplay.js +654 -0
  854. package/Source/Scene/CubeMapPanorama.js +351 -0
  855. package/Source/Scene/CullFace.js +38 -0
  856. package/Source/Scene/CumulusCloud.js +347 -0
  857. package/Source/Scene/DebugAppearance.js +266 -0
  858. package/Source/Scene/DebugCameraPrimitive.js +257 -0
  859. package/Source/Scene/DebugInspector.js +151 -0
  860. package/Source/Scene/DebugModelMatrixPrimitive.js +220 -0
  861. package/Source/Scene/DepthFunction.js +78 -0
  862. package/Source/Scene/DepthPlane.js +238 -0
  863. package/Source/Scene/DerivedCommand.js +685 -0
  864. package/Source/Scene/DeviceOrientationCameraController.js +120 -0
  865. package/Source/Scene/DirectionalLight.js +49 -0
  866. package/Source/Scene/DiscardEmptyTileImagePolicy.js +54 -0
  867. package/Source/Scene/DiscardMissingTileImagePolicy.js +148 -0
  868. package/Source/Scene/DracoLoader.js +100 -0
  869. package/Source/Scene/DynamicAtmosphereLightingType.js +58 -0
  870. package/Source/Scene/DynamicEnvironmentMapManager.js +1037 -0
  871. package/Source/Scene/EdgeFramebuffer.js +245 -0
  872. package/Source/Scene/EllipsoidPrimitive.js +496 -0
  873. package/Source/Scene/EllipsoidSurfaceAppearance.js +278 -0
  874. package/Source/Scene/Empty3DTileContent.js +164 -0
  875. package/Source/Scene/EquirectangularPanorama.js +265 -0
  876. package/Source/Scene/Expression.js +2233 -0
  877. package/Source/Scene/ExpressionNodeType.js +30 -0
  878. package/Source/Scene/Fog.js +166 -0
  879. package/Source/Scene/FrameRateMonitor.js +375 -0
  880. package/Source/Scene/FrameState.js +484 -0
  881. package/Source/Scene/FrustumCommands.js +29 -0
  882. package/Source/Scene/GaussianSplat3DTileContent.js +820 -0
  883. package/Source/Scene/GaussianSplatPrimitive.js +2147 -0
  884. package/Source/Scene/GaussianSplatRenderResources.js +81 -0
  885. package/Source/Scene/GaussianSplatSorter.js +73 -0
  886. package/Source/Scene/GaussianSplatTextureGenerator.js +64 -0
  887. package/Source/Scene/Geometry3DTileContent.js +534 -0
  888. package/Source/Scene/GetFeatureInfoFormat.js +396 -0
  889. package/Source/Scene/Globe.js +1128 -0
  890. package/Source/Scene/GlobeDepth.js +407 -0
  891. package/Source/Scene/GlobeSurfaceShaderSet.js +489 -0
  892. package/Source/Scene/GlobeSurfaceTile.js +967 -0
  893. package/Source/Scene/GlobeSurfaceTileProvider.js +2910 -0
  894. package/Source/Scene/GlobeTranslucency.js +239 -0
  895. package/Source/Scene/GlobeTranslucencyFramebuffer.js +201 -0
  896. package/Source/Scene/GlobeTranslucencyState.js +1102 -0
  897. package/Source/Scene/GltfBufferViewLoader.js +231 -0
  898. package/Source/Scene/GltfDracoLoader.js +282 -0
  899. package/Source/Scene/GltfImageLoader.js +307 -0
  900. package/Source/Scene/GltfIndexBufferLoader.js +404 -0
  901. package/Source/Scene/GltfJsonLoader.js +303 -0
  902. package/Source/Scene/GltfLoader.js +3176 -0
  903. package/Source/Scene/GltfLoaderUtil.js +198 -0
  904. package/Source/Scene/GltfPipeline/ForEach.js +424 -0
  905. package/Source/Scene/GltfPipeline/addBuffer.js +30 -0
  906. package/Source/Scene/GltfPipeline/addDefaults.js +208 -0
  907. package/Source/Scene/GltfPipeline/addExtensionsRequired.js +24 -0
  908. package/Source/Scene/GltfPipeline/addExtensionsUsed.js +22 -0
  909. package/Source/Scene/GltfPipeline/addPipelineExtras.js +36 -0
  910. package/Source/Scene/GltfPipeline/addToArray.js +25 -0
  911. package/Source/Scene/GltfPipeline/findAccessorMinMax.js +71 -0
  912. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +155 -0
  913. package/Source/Scene/GltfPipeline/getAccessorByteStride.js +29 -0
  914. package/Source/Scene/GltfPipeline/getComponentReader.js +147 -0
  915. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +135 -0
  916. package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +145 -0
  917. package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +29 -0
  918. package/Source/Scene/GltfPipeline/parseGlb.js +118 -0
  919. package/Source/Scene/GltfPipeline/readAccessorPacked.js +54 -0
  920. package/Source/Scene/GltfPipeline/removeExtension.js +64 -0
  921. package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +24 -0
  922. package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +26 -0
  923. package/Source/Scene/GltfPipeline/removePipelineExtras.js +42 -0
  924. package/Source/Scene/GltfPipeline/removeUnusedElements.js +906 -0
  925. package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +53 -0
  926. package/Source/Scene/GltfPipeline/updateVersion.js +1148 -0
  927. package/Source/Scene/GltfPipeline/usesExtension.js +18 -0
  928. package/Source/Scene/GltfSpzLoader.js +324 -0
  929. package/Source/Scene/GltfStructuralMetadataLoader.js +498 -0
  930. package/Source/Scene/GltfTextureLoader.js +383 -0
  931. package/Source/Scene/GltfVertexBufferLoader.js +621 -0
  932. package/Source/Scene/Google2DImageryProvider.js +621 -0
  933. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +548 -0
  934. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +589 -0
  935. package/Source/Scene/GoogleStreetViewCubeMapPanoramaProvider.js +341 -0
  936. package/Source/Scene/GridImageryProvider.js +322 -0
  937. package/Source/Scene/GroundPolylinePrimitive.js +944 -0
  938. package/Source/Scene/GroundPrimitive.js +1000 -0
  939. package/Source/Scene/GroupMetadata.js +203 -0
  940. package/Source/Scene/HeightReference.js +89 -0
  941. package/Source/Scene/HorizontalOrigin.js +46 -0
  942. package/Source/Scene/I3SDataProvider.js +860 -0
  943. package/Source/Scene/I3SDecoder.js +133 -0
  944. package/Source/Scene/I3SFeature.js +61 -0
  945. package/Source/Scene/I3SField.js +360 -0
  946. package/Source/Scene/I3SGeometry.js +477 -0
  947. package/Source/Scene/I3SLayer.js +460 -0
  948. package/Source/Scene/I3SNode.js +927 -0
  949. package/Source/Scene/I3SStatistics.js +94 -0
  950. package/Source/Scene/I3SSublayer.js +175 -0
  951. package/Source/Scene/I3SSymbology.js +336 -0
  952. package/Source/Scene/I3dmParser.js +140 -0
  953. package/Source/Scene/ITwinData.js +284 -0
  954. package/Source/Scene/ImageBasedLighting.js +463 -0
  955. package/Source/Scene/Imagery.js +120 -0
  956. package/Source/Scene/ImageryLayer.js +1747 -0
  957. package/Source/Scene/ImageryLayerCollection.js +645 -0
  958. package/Source/Scene/ImageryLayerFeatureInfo.js +111 -0
  959. package/Source/Scene/ImageryProvider.js +267 -0
  960. package/Source/Scene/ImageryState.js +19 -0
  961. package/Source/Scene/Implicit3DTileContent.js +1206 -0
  962. package/Source/Scene/ImplicitAvailabilityBitstream.js +134 -0
  963. package/Source/Scene/ImplicitMetadataView.js +178 -0
  964. package/Source/Scene/ImplicitSubdivisionScheme.js +50 -0
  965. package/Source/Scene/ImplicitSubtree.js +1161 -0
  966. package/Source/Scene/ImplicitSubtreeCache.js +127 -0
  967. package/Source/Scene/ImplicitSubtreeMetadata.js +191 -0
  968. package/Source/Scene/ImplicitTileCoordinates.js +647 -0
  969. package/Source/Scene/ImplicitTileset.js +269 -0
  970. package/Source/Scene/InstanceAttributeSemantic.js +81 -0
  971. package/Source/Scene/InvertClassification.js +381 -0
  972. package/Source/Scene/IonImageryProvider.js +346 -0
  973. package/Source/Scene/IonImageryProviderFactory.js +194 -0
  974. package/Source/Scene/IonWorldImageryStyle.js +38 -0
  975. package/Source/Scene/JobScheduler.js +199 -0
  976. package/Source/Scene/JobType.js +15 -0
  977. package/Source/Scene/JsonMetadataTable.js +114 -0
  978. package/Source/Scene/KeyframeNode.js +61 -0
  979. package/Source/Scene/Label.js +1652 -0
  980. package/Source/Scene/LabelCollection.js +1091 -0
  981. package/Source/Scene/LabelStyle.js +38 -0
  982. package/Source/Scene/Light.js +34 -0
  983. package/Source/Scene/MapMode2D.js +28 -0
  984. package/Source/Scene/MapboxImageryProvider.js +332 -0
  985. package/Source/Scene/MapboxStyleImageryProvider.js +342 -0
  986. package/Source/Scene/Material.js +1931 -0
  987. package/Source/Scene/MaterialAppearance.js +328 -0
  988. package/Source/Scene/Megatexture.js +483 -0
  989. package/Source/Scene/MetadataClass.js +202 -0
  990. package/Source/Scene/MetadataClassProperty.js +1410 -0
  991. package/Source/Scene/MetadataComponentType.js +598 -0
  992. package/Source/Scene/MetadataEntity.js +425 -0
  993. package/Source/Scene/MetadataEnum.js +219 -0
  994. package/Source/Scene/MetadataEnumValue.js +131 -0
  995. package/Source/Scene/MetadataPicking.js +396 -0
  996. package/Source/Scene/MetadataSchema.js +202 -0
  997. package/Source/Scene/MetadataSchemaLoader.js +126 -0
  998. package/Source/Scene/MetadataSemantic.js +157 -0
  999. package/Source/Scene/MetadataTable.js +371 -0
  1000. package/Source/Scene/MetadataTableProperty.js +854 -0
  1001. package/Source/Scene/MetadataType.js +222 -0
  1002. package/Source/Scene/Model/AlphaPipelineStage.js +51 -0
  1003. package/Source/Scene/Model/AtmospherePipelineStage.js +64 -0
  1004. package/Source/Scene/Model/B3dmLoader.js +357 -0
  1005. package/Source/Scene/Model/BatchTexturePipelineStage.js +71 -0
  1006. package/Source/Scene/Model/CPUStylingPipelineStage.js +77 -0
  1007. package/Source/Scene/Model/CartesianRectangle.js +108 -0
  1008. package/Source/Scene/Model/ClassificationModelDrawCommand.js +534 -0
  1009. package/Source/Scene/Model/ClassificationPipelineStage.js +132 -0
  1010. package/Source/Scene/Model/CustomShader.js +474 -0
  1011. package/Source/Scene/Model/CustomShaderMode.js +42 -0
  1012. package/Source/Scene/Model/CustomShaderPipelineStage.js +784 -0
  1013. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +39 -0
  1014. package/Source/Scene/Model/DequantizationPipelineStage.js +178 -0
  1015. package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
  1016. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +1271 -0
  1017. package/Source/Scene/Model/Extensions/Gpm/AnchorPointDirect.js +61 -0
  1018. package/Source/Scene/Model/Extensions/Gpm/AnchorPointIndirect.js +77 -0
  1019. package/Source/Scene/Model/Extensions/Gpm/CorrelationGroup.js +81 -0
  1020. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +248 -0
  1021. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLocal.js +179 -0
  1022. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +543 -0
  1023. package/Source/Scene/Model/Extensions/Gpm/MeshPrimitiveGpmLocal.js +28 -0
  1024. package/Source/Scene/Model/Extensions/Gpm/PpeMetadata.js +79 -0
  1025. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +79 -0
  1026. package/Source/Scene/Model/Extensions/Gpm/PpeTexture.js +127 -0
  1027. package/Source/Scene/Model/Extensions/Gpm/Spdcf.js +103 -0
  1028. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +34 -0
  1029. package/Source/Scene/Model/FeatureIdPipelineStage.js +523 -0
  1030. package/Source/Scene/Model/GeoJsonLoader.js +687 -0
  1031. package/Source/Scene/Model/GeometryPipelineStage.js +543 -0
  1032. package/Source/Scene/Model/I3dmLoader.js +872 -0
  1033. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +168 -0
  1034. package/Source/Scene/Model/ImageryConfiguration.js +26 -0
  1035. package/Source/Scene/Model/ImageryCoverage.js +488 -0
  1036. package/Source/Scene/Model/ImageryFlags.js +31 -0
  1037. package/Source/Scene/Model/ImageryInput.js +60 -0
  1038. package/Source/Scene/Model/ImageryPipelineStage.js +1046 -0
  1039. package/Source/Scene/Model/InstancingPipelineStage.js +1056 -0
  1040. package/Source/Scene/Model/LightingModel.js +34 -0
  1041. package/Source/Scene/Model/LightingPipelineStage.js +73 -0
  1042. package/Source/Scene/Model/MappedPositions.js +84 -0
  1043. package/Source/Scene/Model/MaterialPipelineStage.js +1214 -0
  1044. package/Source/Scene/Model/MetadataPickingPipelineStage.js +96 -0
  1045. package/Source/Scene/Model/MetadataPipelineStage.js +1073 -0
  1046. package/Source/Scene/Model/Model.js +3340 -0
  1047. package/Source/Scene/Model/Model3DTileContent.js +551 -0
  1048. package/Source/Scene/Model/ModelAlphaOptions.js +26 -0
  1049. package/Source/Scene/Model/ModelAnimation.js +421 -0
  1050. package/Source/Scene/Model/ModelAnimationChannel.js +294 -0
  1051. package/Source/Scene/Model/ModelAnimationCollection.js +553 -0
  1052. package/Source/Scene/Model/ModelArticulation.js +214 -0
  1053. package/Source/Scene/Model/ModelArticulationStage.js +261 -0
  1054. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +126 -0
  1055. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +98 -0
  1056. package/Source/Scene/Model/ModelColorPipelineStage.js +98 -0
  1057. package/Source/Scene/Model/ModelDrawCommand.js +928 -0
  1058. package/Source/Scene/Model/ModelDrawCommands.js +218 -0
  1059. package/Source/Scene/Model/ModelFeature.js +229 -0
  1060. package/Source/Scene/Model/ModelFeatureTable.js +316 -0
  1061. package/Source/Scene/Model/ModelImagery.js +410 -0
  1062. package/Source/Scene/Model/ModelImageryMapping.js +489 -0
  1063. package/Source/Scene/Model/ModelLightingOptions.js +29 -0
  1064. package/Source/Scene/Model/ModelMatrixUpdateStage.js +120 -0
  1065. package/Source/Scene/Model/ModelNode.js +125 -0
  1066. package/Source/Scene/Model/ModelPrimitiveImagery.js +972 -0
  1067. package/Source/Scene/Model/ModelReader.js +1281 -0
  1068. package/Source/Scene/Model/ModelRenderResources.js +119 -0
  1069. package/Source/Scene/Model/ModelRuntimeNode.js +648 -0
  1070. package/Source/Scene/Model/ModelRuntimePrimitive.js +381 -0
  1071. package/Source/Scene/Model/ModelSceneGraph.js +1098 -0
  1072. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +109 -0
  1073. package/Source/Scene/Model/ModelSkin.js +180 -0
  1074. package/Source/Scene/Model/ModelSplitterPipelineStage.js +65 -0
  1075. package/Source/Scene/Model/ModelStatistics.js +225 -0
  1076. package/Source/Scene/Model/ModelType.js +96 -0
  1077. package/Source/Scene/Model/ModelUtility.js +397 -0
  1078. package/Source/Scene/Model/MorphTargetsPipelineStage.js +249 -0
  1079. package/Source/Scene/Model/NodeRenderResources.js +170 -0
  1080. package/Source/Scene/Model/NodeStatisticsPipelineStage.js +75 -0
  1081. package/Source/Scene/Model/PickingPipelineStage.js +218 -0
  1082. package/Source/Scene/Model/PntsLoader.js +706 -0
  1083. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +392 -0
  1084. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +689 -0
  1085. package/Source/Scene/Model/PrimitiveOutlinePipelineStage.js +99 -0
  1086. package/Source/Scene/Model/PrimitiveRenderResources.js +297 -0
  1087. package/Source/Scene/Model/PrimitiveStatisticsPipelineStage.js +253 -0
  1088. package/Source/Scene/Model/SceneMode2DPipelineStage.js +301 -0
  1089. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +180 -0
  1090. package/Source/Scene/Model/SkinningPipelineStage.js +118 -0
  1091. package/Source/Scene/Model/StyleCommandsNeeded.js +31 -0
  1092. package/Source/Scene/Model/TextureManager.js +244 -0
  1093. package/Source/Scene/Model/TextureUniform.js +71 -0
  1094. package/Source/Scene/Model/TilesetPipelineStage.js +73 -0
  1095. package/Source/Scene/Model/UniformType.js +128 -0
  1096. package/Source/Scene/Model/VaryingType.js +65 -0
  1097. package/Source/Scene/Model/VerticalExaggerationPipelineStage.js +58 -0
  1098. package/Source/Scene/Model/WireframePipelineStage.js +118 -0
  1099. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +384 -0
  1100. package/Source/Scene/Model/pickModel.js +220 -0
  1101. package/Source/Scene/ModelAnimationLoop.js +38 -0
  1102. package/Source/Scene/ModelAnimationState.js +14 -0
  1103. package/Source/Scene/ModelComponents.js +1769 -0
  1104. package/Source/Scene/Moon.js +175 -0
  1105. package/Source/Scene/Multiple3DTileContent.js +722 -0
  1106. package/Source/Scene/NeverTileDiscardPolicy.js +28 -0
  1107. package/Source/Scene/OIT.js +946 -0
  1108. package/Source/Scene/OpenStreetMapImageryProvider.js +128 -0
  1109. package/Source/Scene/OrderedGroundPrimitiveCollection.js +218 -0
  1110. package/Source/Scene/Panorama.js +53 -0
  1111. package/Source/Scene/PanoramaProvider.js +43 -0
  1112. package/Source/Scene/Particle.js +149 -0
  1113. package/Source/Scene/ParticleBurst.js +51 -0
  1114. package/Source/Scene/ParticleEmitter.js +36 -0
  1115. package/Source/Scene/ParticleSystem.js +885 -0
  1116. package/Source/Scene/PerInstanceColorAppearance.js +296 -0
  1117. package/Source/Scene/PerformanceDisplay.js +120 -0
  1118. package/Source/Scene/PickDepth.js +125 -0
  1119. package/Source/Scene/PickDepthFramebuffer.js +79 -0
  1120. package/Source/Scene/PickFramebuffer.js +255 -0
  1121. package/Source/Scene/PickedMetadataInfo.js +58 -0
  1122. package/Source/Scene/Picking.js +1683 -0
  1123. package/Source/Scene/PntsParser.js +547 -0
  1124. package/Source/Scene/PointCloud.js +1412 -0
  1125. package/Source/Scene/PointCloudEyeDomeLighting.js +284 -0
  1126. package/Source/Scene/PointCloudShading.js +104 -0
  1127. package/Source/Scene/PointPrimitive.js +690 -0
  1128. package/Source/Scene/PointPrimitiveCollection.js +1215 -0
  1129. package/Source/Scene/Polyline.js +430 -0
  1130. package/Source/Scene/PolylineCollection.js +1947 -0
  1131. package/Source/Scene/PolylineColorAppearance.js +215 -0
  1132. package/Source/Scene/PolylineMaterialAppearance.js +226 -0
  1133. package/Source/Scene/PostProcessStage.js +1000 -0
  1134. package/Source/Scene/PostProcessStageCollection.js +900 -0
  1135. package/Source/Scene/PostProcessStageComposite.js +359 -0
  1136. package/Source/Scene/PostProcessStageLibrary.js +826 -0
  1137. package/Source/Scene/PostProcessStageSampleMode.js +22 -0
  1138. package/Source/Scene/PostProcessStageTextureCache.js +454 -0
  1139. package/Source/Scene/Primitive.js +2504 -0
  1140. package/Source/Scene/PrimitiveCollection.js +532 -0
  1141. package/Source/Scene/PrimitiveLoadPlan.js +303 -0
  1142. package/Source/Scene/PrimitivePipeline.js +854 -0
  1143. package/Source/Scene/PrimitiveState.js +142 -0
  1144. package/Source/Scene/PropertyAttribute.js +160 -0
  1145. package/Source/Scene/PropertyAttributeProperty.js +177 -0
  1146. package/Source/Scene/PropertyTable.js +579 -0
  1147. package/Source/Scene/PropertyTexture.js +162 -0
  1148. package/Source/Scene/PropertyTextureProperty.js +207 -0
  1149. package/Source/Scene/QuadtreeOccluders.js +35 -0
  1150. package/Source/Scene/QuadtreePrimitive.js +1578 -0
  1151. package/Source/Scene/QuadtreeTile.js +735 -0
  1152. package/Source/Scene/QuadtreeTileLoadState.js +44 -0
  1153. package/Source/Scene/QuadtreeTileProvider.js +196 -0
  1154. package/Source/Scene/ResourceCache.js +824 -0
  1155. package/Source/Scene/ResourceCacheKey.js +601 -0
  1156. package/Source/Scene/ResourceCacheStatistics.js +149 -0
  1157. package/Source/Scene/ResourceLoader.js +118 -0
  1158. package/Source/Scene/ResourceLoaderState.js +62 -0
  1159. package/Source/Scene/SDFSettings.js +39 -0
  1160. package/Source/Scene/Scene.js +5292 -0
  1161. package/Source/Scene/SceneFramebuffer.js +106 -0
  1162. package/Source/Scene/SceneMode.js +59 -0
  1163. package/Source/Scene/SceneTransforms.js +463 -0
  1164. package/Source/Scene/SceneTransitioner.js +1111 -0
  1165. package/Source/Scene/ScreenSpaceCameraController.js +3111 -0
  1166. package/Source/Scene/SensorVolumePortionToDisplay.js +69 -0
  1167. package/Source/Scene/ShadowMap.js +1956 -0
  1168. package/Source/Scene/ShadowMapShader.js +395 -0
  1169. package/Source/Scene/ShadowMode.js +80 -0
  1170. package/Source/Scene/ShadowVolumeAppearance.js +936 -0
  1171. package/Source/Scene/SingleTileImageryProvider.js +380 -0
  1172. package/Source/Scene/SkyAtmosphere.js +400 -0
  1173. package/Source/Scene/SkyBox.js +163 -0
  1174. package/Source/Scene/SpatialNode.js +377 -0
  1175. package/Source/Scene/SpecularEnvironmentCubeMap.js +240 -0
  1176. package/Source/Scene/SphereEmitter.js +65 -0
  1177. package/Source/Scene/SplitDirection.js +39 -0
  1178. package/Source/Scene/Splitter.js +49 -0
  1179. package/Source/Scene/StencilConstants.js +37 -0
  1180. package/Source/Scene/StencilFunction.js +78 -0
  1181. package/Source/Scene/StencilOperation.js +78 -0
  1182. package/Source/Scene/StructuralMetadata.js +258 -0
  1183. package/Source/Scene/StyleExpression.js +86 -0
  1184. package/Source/Scene/Sun.js +363 -0
  1185. package/Source/Scene/SunLight.js +31 -0
  1186. package/Source/Scene/SunPostProcess.js +288 -0
  1187. package/Source/Scene/SupportedImageFormats.js +18 -0
  1188. package/Source/Scene/Terrain.js +245 -0
  1189. package/Source/Scene/TerrainFillMesh.js +2222 -0
  1190. package/Source/Scene/TerrainState.js +19 -0
  1191. package/Source/Scene/TileBoundingRegion.js +489 -0
  1192. package/Source/Scene/TileBoundingS2Cell.js +699 -0
  1193. package/Source/Scene/TileBoundingSphere.js +167 -0
  1194. package/Source/Scene/TileBoundingVolume.js +68 -0
  1195. package/Source/Scene/TileCoordinatesImageryProvider.js +269 -0
  1196. package/Source/Scene/TileDiscardPolicy.js +34 -0
  1197. package/Source/Scene/TileImagery.js +126 -0
  1198. package/Source/Scene/TileMapServiceImageryProvider.js +442 -0
  1199. package/Source/Scene/TileMetadata.js +184 -0
  1200. package/Source/Scene/TileOrientedBoundingBox.js +219 -0
  1201. package/Source/Scene/TileReplacementQueue.js +119 -0
  1202. package/Source/Scene/TileSelectionResult.js +80 -0
  1203. package/Source/Scene/TileState.js +16 -0
  1204. package/Source/Scene/Tileset3DTileContent.js +182 -0
  1205. package/Source/Scene/TilesetMetadata.js +186 -0
  1206. package/Source/Scene/TimeDynamicImagery.js +308 -0
  1207. package/Source/Scene/TimeDynamicPointCloud.js +802 -0
  1208. package/Source/Scene/Tonemapper.js +68 -0
  1209. package/Source/Scene/TranslucentTileClassification.js +514 -0
  1210. package/Source/Scene/TweenCollection.js +592 -0
  1211. package/Source/Scene/UrlTemplateImageryProvider.js +989 -0
  1212. package/Source/Scene/Vector3DTileBatch.js +37 -0
  1213. package/Source/Scene/Vector3DTileClampedPolylines.js +779 -0
  1214. package/Source/Scene/Vector3DTileContent.js +770 -0
  1215. package/Source/Scene/Vector3DTileGeometry.js +497 -0
  1216. package/Source/Scene/Vector3DTilePoints.js +548 -0
  1217. package/Source/Scene/Vector3DTilePolygons.js +479 -0
  1218. package/Source/Scene/Vector3DTilePolylines.js +675 -0
  1219. package/Source/Scene/Vector3DTilePrimitive.js +1276 -0
  1220. package/Source/Scene/VectorGltf3DTileContent.js +434 -0
  1221. package/Source/Scene/VertexAttributeSemantic.js +321 -0
  1222. package/Source/Scene/VerticalOrigin.js +54 -0
  1223. package/Source/Scene/View.js +465 -0
  1224. package/Source/Scene/ViewportQuad.js +182 -0
  1225. package/Source/Scene/VoxelBoundsCollection.js +494 -0
  1226. package/Source/Scene/VoxelBoxShape.js +601 -0
  1227. package/Source/Scene/VoxelCell.js +274 -0
  1228. package/Source/Scene/VoxelContent.js +233 -0
  1229. package/Source/Scene/VoxelCylinderShape.js +869 -0
  1230. package/Source/Scene/VoxelEllipsoidShape.js +1124 -0
  1231. package/Source/Scene/VoxelMetadataOrder.js +29 -0
  1232. package/Source/Scene/VoxelPrimitive.js +2152 -0
  1233. package/Source/Scene/VoxelProvider.js +235 -0
  1234. package/Source/Scene/VoxelRenderResources.js +252 -0
  1235. package/Source/Scene/VoxelShape.js +179 -0
  1236. package/Source/Scene/VoxelShapeType.js +107 -0
  1237. package/Source/Scene/VoxelTraversal.js +1219 -0
  1238. package/Source/Scene/WebMapServiceImageryProvider.js +649 -0
  1239. package/Source/Scene/WebMapTileServiceImageryProvider.js +810 -0
  1240. package/Source/Scene/buildVoxelDrawCommands.js +177 -0
  1241. package/Source/Scene/computeFlyToLocationForRectangle.js +74 -0
  1242. package/Source/Scene/createBillboardPointCallback.js +70 -0
  1243. package/Source/Scene/createElevationBandMaterial.js +580 -0
  1244. package/Source/Scene/createGooglePhotorealistic3DTileset.js +116 -0
  1245. package/Source/Scene/createOsmBuildingsAsync.js +79 -0
  1246. package/Source/Scene/createTangentSpaceDebugPrimitive.js +114 -0
  1247. package/Source/Scene/createWorldImageryAsync.js +39 -0
  1248. package/Source/Scene/findContentMetadata.js +51 -0
  1249. package/Source/Scene/findGroupMetadata.js +39 -0
  1250. package/Source/Scene/findTileMetadata.js +53 -0
  1251. package/Source/Scene/getBinaryAccessor.js +56 -0
  1252. package/Source/Scene/getClipAndStyleCode.js +34 -0
  1253. package/Source/Scene/getClippingFunction.js +154 -0
  1254. package/Source/Scene/getMeshPrimitives.js +72 -0
  1255. package/Source/Scene/getMetadataClassProperty.js +43 -0
  1256. package/Source/Scene/getMetadataProperty.js +48 -0
  1257. package/Source/Scene/hasExtension.js +19 -0
  1258. package/Source/Scene/parseBatchTable.js +448 -0
  1259. package/Source/Scene/parseFeatureMetadataLegacy.js +139 -0
  1260. package/Source/Scene/parseStructuralMetadata.js +406 -0
  1261. package/Source/Scene/preprocess3DTileContent.js +102 -0
  1262. package/Source/Scene/processVoxelProperties.js +398 -0
  1263. package/Source/Scene/renderBufferPointCollection.js +285 -0
  1264. package/Source/Scene/renderBufferPolygonCollection.js +339 -0
  1265. package/Source/Scene/renderBufferPolylineCollection.js +478 -0
  1266. package/Source/Shaders/AdjustTranslucentFS.glsl +27 -0
  1267. package/Source/Shaders/AdjustTranslucentFS.js +29 -0
  1268. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +29 -0
  1269. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +31 -0
  1270. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +26 -0
  1271. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +28 -0
  1272. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +23 -0
  1273. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +25 -0
  1274. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +17 -0
  1275. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +19 -0
  1276. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +33 -0
  1277. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +35 -0
  1278. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +19 -0
  1279. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +21 -0
  1280. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +24 -0
  1281. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +26 -0
  1282. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +20 -0
  1283. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +22 -0
  1284. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +6 -0
  1285. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +8 -0
  1286. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +15 -0
  1287. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +17 -0
  1288. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +28 -0
  1289. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +30 -0
  1290. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +33 -0
  1291. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +35 -0
  1292. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +25 -0
  1293. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +27 -0
  1294. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +20 -0
  1295. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +22 -0
  1296. package/Source/Shaders/AtmosphereCommon.glsl +187 -0
  1297. package/Source/Shaders/AtmosphereCommon.js +189 -0
  1298. package/Source/Shaders/BillboardCollectionFS.glsl +212 -0
  1299. package/Source/Shaders/BillboardCollectionFS.js +214 -0
  1300. package/Source/Shaders/BillboardCollectionVS.glsl +378 -0
  1301. package/Source/Shaders/BillboardCollectionVS.js +380 -0
  1302. package/Source/Shaders/BrdfLutGeneratorFS.glsl +100 -0
  1303. package/Source/Shaders/BrdfLutGeneratorFS.js +102 -0
  1304. package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
  1305. package/Source/Shaders/BufferPointMaterialFS.js +29 -0
  1306. package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
  1307. package/Source/Shaders/BufferPointMaterialVS.js +50 -0
  1308. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  1309. package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
  1310. package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
  1311. package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
  1312. package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
  1313. package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
  1314. package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
  1315. package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
  1316. package/Source/Shaders/Builtin/Constants/degreesPerRadian.glsl +16 -0
  1317. package/Source/Shaders/Builtin/Constants/degreesPerRadian.js +18 -0
  1318. package/Source/Shaders/Builtin/Constants/depthRange.glsl +14 -0
  1319. package/Source/Shaders/Builtin/Constants/depthRange.js +16 -0
  1320. package/Source/Shaders/Builtin/Constants/epsilon1.glsl +7 -0
  1321. package/Source/Shaders/Builtin/Constants/epsilon1.js +9 -0
  1322. package/Source/Shaders/Builtin/Constants/epsilon2.glsl +7 -0
  1323. package/Source/Shaders/Builtin/Constants/epsilon2.js +9 -0
  1324. package/Source/Shaders/Builtin/Constants/epsilon3.glsl +7 -0
  1325. package/Source/Shaders/Builtin/Constants/epsilon3.js +9 -0
  1326. package/Source/Shaders/Builtin/Constants/epsilon4.glsl +7 -0
  1327. package/Source/Shaders/Builtin/Constants/epsilon4.js +9 -0
  1328. package/Source/Shaders/Builtin/Constants/epsilon5.glsl +7 -0
  1329. package/Source/Shaders/Builtin/Constants/epsilon5.js +9 -0
  1330. package/Source/Shaders/Builtin/Constants/epsilon6.glsl +7 -0
  1331. package/Source/Shaders/Builtin/Constants/epsilon6.js +9 -0
  1332. package/Source/Shaders/Builtin/Constants/epsilon7.glsl +7 -0
  1333. package/Source/Shaders/Builtin/Constants/epsilon7.js +9 -0
  1334. package/Source/Shaders/Builtin/Constants/infinity.glsl +7 -0
  1335. package/Source/Shaders/Builtin/Constants/infinity.js +9 -0
  1336. package/Source/Shaders/Builtin/Constants/oneOverPi.glsl +16 -0
  1337. package/Source/Shaders/Builtin/Constants/oneOverPi.js +18 -0
  1338. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.glsl +16 -0
  1339. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.js +18 -0
  1340. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +9 -0
  1341. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +11 -0
  1342. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +9 -0
  1343. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +11 -0
  1344. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +9 -0
  1345. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +11 -0
  1346. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
  1347. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
  1348. package/Source/Shaders/Builtin/Constants/passClassification.glsl +9 -0
  1349. package/Source/Shaders/Builtin/Constants/passClassification.js +11 -0
  1350. package/Source/Shaders/Builtin/Constants/passCompute.glsl +9 -0
  1351. package/Source/Shaders/Builtin/Constants/passCompute.js +11 -0
  1352. package/Source/Shaders/Builtin/Constants/passEnvironment.glsl +9 -0
  1353. package/Source/Shaders/Builtin/Constants/passEnvironment.js +11 -0
  1354. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +9 -0
  1355. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +11 -0
  1356. package/Source/Shaders/Builtin/Constants/passGlobe.glsl +9 -0
  1357. package/Source/Shaders/Builtin/Constants/passGlobe.js +11 -0
  1358. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +9 -0
  1359. package/Source/Shaders/Builtin/Constants/passOpaque.js +11 -0
  1360. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +9 -0
  1361. package/Source/Shaders/Builtin/Constants/passOverlay.js +11 -0
  1362. package/Source/Shaders/Builtin/Constants/passTerrainClassification.glsl +9 -0
  1363. package/Source/Shaders/Builtin/Constants/passTerrainClassification.js +11 -0
  1364. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +9 -0
  1365. package/Source/Shaders/Builtin/Constants/passTranslucent.js +11 -0
  1366. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +9 -0
  1367. package/Source/Shaders/Builtin/Constants/passVoxels.js +11 -0
  1368. package/Source/Shaders/Builtin/Constants/pi.glsl +16 -0
  1369. package/Source/Shaders/Builtin/Constants/pi.js +18 -0
  1370. package/Source/Shaders/Builtin/Constants/piOverFour.glsl +16 -0
  1371. package/Source/Shaders/Builtin/Constants/piOverFour.js +18 -0
  1372. package/Source/Shaders/Builtin/Constants/piOverSix.glsl +16 -0
  1373. package/Source/Shaders/Builtin/Constants/piOverSix.js +18 -0
  1374. package/Source/Shaders/Builtin/Constants/piOverThree.glsl +16 -0
  1375. package/Source/Shaders/Builtin/Constants/piOverThree.js +18 -0
  1376. package/Source/Shaders/Builtin/Constants/piOverTwo.glsl +16 -0
  1377. package/Source/Shaders/Builtin/Constants/piOverTwo.js +18 -0
  1378. package/Source/Shaders/Builtin/Constants/radiansPerDegree.glsl +16 -0
  1379. package/Source/Shaders/Builtin/Constants/radiansPerDegree.js +18 -0
  1380. package/Source/Shaders/Builtin/Constants/sceneMode2D.glsl +11 -0
  1381. package/Source/Shaders/Builtin/Constants/sceneMode2D.js +13 -0
  1382. package/Source/Shaders/Builtin/Constants/sceneMode3D.glsl +11 -0
  1383. package/Source/Shaders/Builtin/Constants/sceneMode3D.js +13 -0
  1384. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.glsl +11 -0
  1385. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.js +13 -0
  1386. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.glsl +11 -0
  1387. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.js +13 -0
  1388. package/Source/Shaders/Builtin/Constants/solarRadius.glsl +13 -0
  1389. package/Source/Shaders/Builtin/Constants/solarRadius.js +15 -0
  1390. package/Source/Shaders/Builtin/Constants/threePiOver2.glsl +16 -0
  1391. package/Source/Shaders/Builtin/Constants/threePiOver2.js +18 -0
  1392. package/Source/Shaders/Builtin/Constants/twoPi.glsl +16 -0
  1393. package/Source/Shaders/Builtin/Constants/twoPi.js +18 -0
  1394. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.glsl +16 -0
  1395. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.js +18 -0
  1396. package/Source/Shaders/Builtin/CzmBuiltins.js +286 -0
  1397. package/Source/Shaders/Builtin/Functions/HSBToRGB.glsl +24 -0
  1398. package/Source/Shaders/Builtin/Functions/HSBToRGB.js +26 -0
  1399. package/Source/Shaders/Builtin/Functions/HSLToRGB.glsl +31 -0
  1400. package/Source/Shaders/Builtin/Functions/HSLToRGB.js +33 -0
  1401. package/Source/Shaders/Builtin/Functions/RGBToHSB.glsl +27 -0
  1402. package/Source/Shaders/Builtin/Functions/RGBToHSB.js +29 -0
  1403. package/Source/Shaders/Builtin/Functions/RGBToHSL.glsl +34 -0
  1404. package/Source/Shaders/Builtin/Functions/RGBToHSL.js +36 -0
  1405. package/Source/Shaders/Builtin/Functions/RGBToXYZ.glsl +30 -0
  1406. package/Source/Shaders/Builtin/Functions/RGBToXYZ.js +32 -0
  1407. package/Source/Shaders/Builtin/Functions/XYZToRGB.glsl +30 -0
  1408. package/Source/Shaders/Builtin/Functions/XYZToRGB.js +32 -0
  1409. package/Source/Shaders/Builtin/Functions/acesTonemapping.glsl +16 -0
  1410. package/Source/Shaders/Builtin/Functions/acesTonemapping.js +18 -0
  1411. package/Source/Shaders/Builtin/Functions/alphaWeight.glsl +11 -0
  1412. package/Source/Shaders/Builtin/Functions/alphaWeight.js +13 -0
  1413. package/Source/Shaders/Builtin/Functions/antialias.glsl +39 -0
  1414. package/Source/Shaders/Builtin/Functions/antialias.js +41 -0
  1415. package/Source/Shaders/Builtin/Functions/applyHSBShift.glsl +32 -0
  1416. package/Source/Shaders/Builtin/Functions/applyHSBShift.js +34 -0
  1417. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.glsl +18 -0
  1418. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.js +20 -0
  1419. package/Source/Shaders/Builtin/Functions/approximateTanh.glsl +10 -0
  1420. package/Source/Shaders/Builtin/Functions/approximateTanh.js +12 -0
  1421. package/Source/Shaders/Builtin/Functions/backFacing.glsl +13 -0
  1422. package/Source/Shaders/Builtin/Functions/backFacing.js +15 -0
  1423. package/Source/Shaders/Builtin/Functions/branchFreeTernary.glsl +71 -0
  1424. package/Source/Shaders/Builtin/Functions/branchFreeTernary.js +73 -0
  1425. package/Source/Shaders/Builtin/Functions/cascadeColor.glsl +8 -0
  1426. package/Source/Shaders/Builtin/Functions/cascadeColor.js +10 -0
  1427. package/Source/Shaders/Builtin/Functions/cascadeDistance.glsl +7 -0
  1428. package/Source/Shaders/Builtin/Functions/cascadeDistance.js +9 -0
  1429. package/Source/Shaders/Builtin/Functions/cascadeMatrix.glsl +10 -0
  1430. package/Source/Shaders/Builtin/Functions/cascadeMatrix.js +12 -0
  1431. package/Source/Shaders/Builtin/Functions/cascadeWeights.glsl +10 -0
  1432. package/Source/Shaders/Builtin/Functions/cascadeWeights.js +12 -0
  1433. package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +37 -0
  1434. package/Source/Shaders/Builtin/Functions/clipPolygons.js +39 -0
  1435. package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +19 -0
  1436. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +21 -0
  1437. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.glsl +88 -0
  1438. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.js +90 -0
  1439. package/Source/Shaders/Builtin/Functions/computeGroundAtmosphereScattering.glsl +30 -0
  1440. package/Source/Shaders/Builtin/Functions/computeGroundAtmosphereScattering.js +32 -0
  1441. package/Source/Shaders/Builtin/Functions/computePosition.glsl +22 -0
  1442. package/Source/Shaders/Builtin/Functions/computePosition.js +24 -0
  1443. package/Source/Shaders/Builtin/Functions/computeScattering.glsl +149 -0
  1444. package/Source/Shaders/Builtin/Functions/computeScattering.js +151 -0
  1445. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  1446. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  1447. package/Source/Shaders/Builtin/Functions/cosineAndSine.glsl +211 -0
  1448. package/Source/Shaders/Builtin/Functions/cosineAndSine.js +213 -0
  1449. package/Source/Shaders/Builtin/Functions/decodeRGB8.glsl +22 -0
  1450. package/Source/Shaders/Builtin/Functions/decodeRGB8.js +24 -0
  1451. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.glsl +17 -0
  1452. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.js +19 -0
  1453. package/Source/Shaders/Builtin/Functions/depthClamp.glsl +47 -0
  1454. package/Source/Shaders/Builtin/Functions/depthClamp.js +49 -0
  1455. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.glsl +33 -0
  1456. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.js +35 -0
  1457. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.glsl +12 -0
  1458. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.js +14 -0
  1459. package/Source/Shaders/Builtin/Functions/ellipsoidTextureCoordinates.glsl +10 -0
  1460. package/Source/Shaders/Builtin/Functions/ellipsoidTextureCoordinates.js +12 -0
  1461. package/Source/Shaders/Builtin/Functions/equalsEpsilon.glsl +36 -0
  1462. package/Source/Shaders/Builtin/Functions/equalsEpsilon.js +38 -0
  1463. package/Source/Shaders/Builtin/Functions/eyeOffset.glsl +20 -0
  1464. package/Source/Shaders/Builtin/Functions/eyeOffset.js +22 -0
  1465. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.glsl +32 -0
  1466. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.js +34 -0
  1467. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.glsl +55 -0
  1468. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.js +57 -0
  1469. package/Source/Shaders/Builtin/Functions/fog.glsl +38 -0
  1470. package/Source/Shaders/Builtin/Functions/fog.js +40 -0
  1471. package/Source/Shaders/Builtin/Functions/gammaCorrect.glsl +22 -0
  1472. package/Source/Shaders/Builtin/Functions/gammaCorrect.js +24 -0
  1473. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.glsl +16 -0
  1474. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.js +18 -0
  1475. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.glsl +27 -0
  1476. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.js +29 -0
  1477. package/Source/Shaders/Builtin/Functions/getDynamicAtmosphereLightDirection.glsl +22 -0
  1478. package/Source/Shaders/Builtin/Functions/getDynamicAtmosphereLightDirection.js +24 -0
  1479. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.glsl +22 -0
  1480. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.js +24 -0
  1481. package/Source/Shaders/Builtin/Functions/getSpecular.glsl +29 -0
  1482. package/Source/Shaders/Builtin/Functions/getSpecular.js +31 -0
  1483. package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +37 -0
  1484. package/Source/Shaders/Builtin/Functions/getWaterNoise.js +39 -0
  1485. package/Source/Shaders/Builtin/Functions/hue.glsl +30 -0
  1486. package/Source/Shaders/Builtin/Functions/hue.js +32 -0
  1487. package/Source/Shaders/Builtin/Functions/inverseGamma.glsl +12 -0
  1488. package/Source/Shaders/Builtin/Functions/inverseGamma.js +14 -0
  1489. package/Source/Shaders/Builtin/Functions/isEmpty.glsl +19 -0
  1490. package/Source/Shaders/Builtin/Functions/isEmpty.js +21 -0
  1491. package/Source/Shaders/Builtin/Functions/isFull.glsl +19 -0
  1492. package/Source/Shaders/Builtin/Functions/isFull.js +21 -0
  1493. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.glsl +21 -0
  1494. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.js +23 -0
  1495. package/Source/Shaders/Builtin/Functions/lineDistance.glsl +14 -0
  1496. package/Source/Shaders/Builtin/Functions/lineDistance.js +16 -0
  1497. package/Source/Shaders/Builtin/Functions/linearToSrgb.glsl +16 -0
  1498. package/Source/Shaders/Builtin/Functions/linearToSrgb.js +18 -0
  1499. package/Source/Shaders/Builtin/Functions/luminance.glsl +20 -0
  1500. package/Source/Shaders/Builtin/Functions/luminance.js +22 -0
  1501. package/Source/Shaders/Builtin/Functions/maximumComponent.glsl +21 -0
  1502. package/Source/Shaders/Builtin/Functions/maximumComponent.js +23 -0
  1503. package/Source/Shaders/Builtin/Functions/metersPerPixel.glsl +61 -0
  1504. package/Source/Shaders/Builtin/Functions/metersPerPixel.js +63 -0
  1505. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.glsl +38 -0
  1506. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.js +40 -0
  1507. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.glsl +18 -0
  1508. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.js +20 -0
  1509. package/Source/Shaders/Builtin/Functions/nearFarScalar.glsl +26 -0
  1510. package/Source/Shaders/Builtin/Functions/nearFarScalar.js +28 -0
  1511. package/Source/Shaders/Builtin/Functions/octDecode.glsl +83 -0
  1512. package/Source/Shaders/Builtin/Functions/octDecode.js +85 -0
  1513. package/Source/Shaders/Builtin/Functions/packDepth.glsl +18 -0
  1514. package/Source/Shaders/Builtin/Functions/packDepth.js +20 -0
  1515. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +164 -0
  1516. package/Source/Shaders/Builtin/Functions/pbrLighting.js +166 -0
  1517. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.glsl +23 -0
  1518. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.js +25 -0
  1519. package/Source/Shaders/Builtin/Functions/phong.glsl +63 -0
  1520. package/Source/Shaders/Builtin/Functions/phong.js +65 -0
  1521. package/Source/Shaders/Builtin/Functions/planeDistance.glsl +28 -0
  1522. package/Source/Shaders/Builtin/Functions/planeDistance.js +30 -0
  1523. package/Source/Shaders/Builtin/Functions/pointAlongRay.glsl +19 -0
  1524. package/Source/Shaders/Builtin/Functions/pointAlongRay.js +21 -0
  1525. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.glsl +83 -0
  1526. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.js +85 -0
  1527. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.glsl +36 -0
  1528. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.js +38 -0
  1529. package/Source/Shaders/Builtin/Functions/readDepth.glsl +4 -0
  1530. package/Source/Shaders/Builtin/Functions/readDepth.js +6 -0
  1531. package/Source/Shaders/Builtin/Functions/readNonPerspective.glsl +31 -0
  1532. package/Source/Shaders/Builtin/Functions/readNonPerspective.js +33 -0
  1533. package/Source/Shaders/Builtin/Functions/reverseLogDepth.glsl +11 -0
  1534. package/Source/Shaders/Builtin/Functions/reverseLogDepth.js +13 -0
  1535. package/Source/Shaders/Builtin/Functions/round.glsl +22 -0
  1536. package/Source/Shaders/Builtin/Functions/round.js +24 -0
  1537. package/Source/Shaders/Builtin/Functions/saturation.glsl +22 -0
  1538. package/Source/Shaders/Builtin/Functions/saturation.js +24 -0
  1539. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +24 -0
  1540. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +26 -0
  1541. package/Source/Shaders/Builtin/Functions/shadowVisibility.glsl +66 -0
  1542. package/Source/Shaders/Builtin/Functions/shadowVisibility.js +68 -0
  1543. package/Source/Shaders/Builtin/Functions/signNotZero.glsl +29 -0
  1544. package/Source/Shaders/Builtin/Functions/signNotZero.js +31 -0
  1545. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.glsl +44 -0
  1546. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.js +46 -0
  1547. package/Source/Shaders/Builtin/Functions/srgbToLinear.glsl +16 -0
  1548. package/Source/Shaders/Builtin/Functions/srgbToLinear.js +18 -0
  1549. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +25 -0
  1550. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +27 -0
  1551. package/Source/Shaders/Builtin/Functions/textureCube.glsl +36 -0
  1552. package/Source/Shaders/Builtin/Functions/textureCube.js +37 -0
  1553. package/Source/Shaders/Builtin/Functions/transformPlane.glsl +15 -0
  1554. package/Source/Shaders/Builtin/Functions/transformPlane.js +17 -0
  1555. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +45 -0
  1556. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +47 -0
  1557. package/Source/Shaders/Builtin/Functions/translucentPhong.glsl +27 -0
  1558. package/Source/Shaders/Builtin/Functions/translucentPhong.js +29 -0
  1559. package/Source/Shaders/Builtin/Functions/transpose.glsl +45 -0
  1560. package/Source/Shaders/Builtin/Functions/transpose.js +47 -0
  1561. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +14 -0
  1562. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +15 -0
  1563. package/Source/Shaders/Builtin/Functions/unpackDepth.glsl +16 -0
  1564. package/Source/Shaders/Builtin/Functions/unpackDepth.js +18 -0
  1565. package/Source/Shaders/Builtin/Functions/unpackFloat.glsl +24 -0
  1566. package/Source/Shaders/Builtin/Functions/unpackFloat.js +26 -0
  1567. package/Source/Shaders/Builtin/Functions/unpackTexture.glsl +35 -0
  1568. package/Source/Shaders/Builtin/Functions/unpackTexture.js +37 -0
  1569. package/Source/Shaders/Builtin/Functions/unpackUint.glsl +31 -0
  1570. package/Source/Shaders/Builtin/Functions/unpackUint.js +33 -0
  1571. package/Source/Shaders/Builtin/Functions/valueTransform.glsl +38 -0
  1572. package/Source/Shaders/Builtin/Functions/valueTransform.js +40 -0
  1573. package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +64 -0
  1574. package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +66 -0
  1575. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +110 -0
  1576. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +112 -0
  1577. package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +24 -0
  1578. package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +26 -0
  1579. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +79 -0
  1580. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +81 -0
  1581. package/Source/Shaders/Builtin/Functions/writeNonPerspective.glsl +32 -0
  1582. package/Source/Shaders/Builtin/Functions/writeNonPerspective.js +34 -0
  1583. package/Source/Shaders/Builtin/Structs/depthRangeStruct.glsl +9 -0
  1584. package/Source/Shaders/Builtin/Structs/depthRangeStruct.js +11 -0
  1585. package/Source/Shaders/Builtin/Structs/material.glsl +22 -0
  1586. package/Source/Shaders/Builtin/Structs/material.js +24 -0
  1587. package/Source/Shaders/Builtin/Structs/materialInput.glsl +30 -0
  1588. package/Source/Shaders/Builtin/Structs/materialInput.js +32 -0
  1589. package/Source/Shaders/Builtin/Structs/modelMaterial.glsl +45 -0
  1590. package/Source/Shaders/Builtin/Structs/modelMaterial.js +47 -0
  1591. package/Source/Shaders/Builtin/Structs/modelVertexOutput.glsl +16 -0
  1592. package/Source/Shaders/Builtin/Structs/modelVertexOutput.js +18 -0
  1593. package/Source/Shaders/Builtin/Structs/ray.glsl +11 -0
  1594. package/Source/Shaders/Builtin/Structs/ray.js +13 -0
  1595. package/Source/Shaders/Builtin/Structs/raySegment.glsl +27 -0
  1596. package/Source/Shaders/Builtin/Structs/raySegment.js +29 -0
  1597. package/Source/Shaders/Builtin/Structs/shadowParameters.glsl +15 -0
  1598. package/Source/Shaders/Builtin/Structs/shadowParameters.js +17 -0
  1599. package/Source/Shaders/CloudCollectionFS.glsl +263 -0
  1600. package/Source/Shaders/CloudCollectionFS.js +265 -0
  1601. package/Source/Shaders/CloudCollectionVS.glsl +48 -0
  1602. package/Source/Shaders/CloudCollectionVS.js +50 -0
  1603. package/Source/Shaders/CloudNoiseFS.glsl +92 -0
  1604. package/Source/Shaders/CloudNoiseFS.js +94 -0
  1605. package/Source/Shaders/CloudNoiseVS.glsl +18 -0
  1606. package/Source/Shaders/CloudNoiseVS.js +20 -0
  1607. package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +12 -0
  1608. package/Source/Shaders/CompareAndPackTranslucentDepth.js +14 -0
  1609. package/Source/Shaders/CompositeOITFS.glsl +31 -0
  1610. package/Source/Shaders/CompositeOITFS.js +33 -0
  1611. package/Source/Shaders/ComputeIrradianceFS.glsl +103 -0
  1612. package/Source/Shaders/ComputeIrradianceFS.js +105 -0
  1613. package/Source/Shaders/ComputeRadianceMapFS.glsl +107 -0
  1614. package/Source/Shaders/ComputeRadianceMapFS.js +109 -0
  1615. package/Source/Shaders/ConvolveSpecularMapFS.glsl +70 -0
  1616. package/Source/Shaders/ConvolveSpecularMapFS.js +72 -0
  1617. package/Source/Shaders/ConvolveSpecularMapVS.glsl +24 -0
  1618. package/Source/Shaders/ConvolveSpecularMapVS.js +26 -0
  1619. package/Source/Shaders/CubeMapPanoramaVS.glsl +11 -0
  1620. package/Source/Shaders/CubeMapPanoramaVS.js +13 -0
  1621. package/Source/Shaders/DepthPlaneFS.glsl +36 -0
  1622. package/Source/Shaders/DepthPlaneFS.js +38 -0
  1623. package/Source/Shaders/DepthPlaneVS.glsl +11 -0
  1624. package/Source/Shaders/DepthPlaneVS.js +13 -0
  1625. package/Source/Shaders/EllipsoidFS.glsl +104 -0
  1626. package/Source/Shaders/EllipsoidFS.js +106 -0
  1627. package/Source/Shaders/EllipsoidVS.glsl +28 -0
  1628. package/Source/Shaders/EllipsoidVS.js +30 -0
  1629. package/Source/Shaders/FXAA3_11.glsl +650 -0
  1630. package/Source/Shaders/FXAA3_11.js +680 -0
  1631. package/Source/Shaders/GlobeFS.glsl +692 -0
  1632. package/Source/Shaders/GlobeFS.js +694 -0
  1633. package/Source/Shaders/GlobeVS.glsl +286 -0
  1634. package/Source/Shaders/GlobeVS.js +288 -0
  1635. package/Source/Shaders/GroundAtmosphere.glsl +18 -0
  1636. package/Source/Shaders/GroundAtmosphere.js +20 -0
  1637. package/Source/Shaders/Materials/AspectRampMaterial.glsl +11 -0
  1638. package/Source/Shaders/Materials/AspectRampMaterial.js +13 -0
  1639. package/Source/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  1640. package/Source/Shaders/Materials/BumpMapMaterial.js +31 -0
  1641. package/Source/Shaders/Materials/CheckerboardMaterial.glsl +29 -0
  1642. package/Source/Shaders/Materials/CheckerboardMaterial.js +31 -0
  1643. package/Source/Shaders/Materials/DotMaterial.glsl +18 -0
  1644. package/Source/Shaders/Materials/DotMaterial.js +20 -0
  1645. package/Source/Shaders/Materials/ElevationBandMaterial.glsl +74 -0
  1646. package/Source/Shaders/Materials/ElevationBandMaterial.js +76 -0
  1647. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +26 -0
  1648. package/Source/Shaders/Materials/ElevationContourMaterial.js +28 -0
  1649. package/Source/Shaders/Materials/ElevationRampMaterial.glsl +14 -0
  1650. package/Source/Shaders/Materials/ElevationRampMaterial.js +16 -0
  1651. package/Source/Shaders/Materials/FadeMaterial.glsl +37 -0
  1652. package/Source/Shaders/Materials/FadeMaterial.js +39 -0
  1653. package/Source/Shaders/Materials/GridMaterial.glsl +57 -0
  1654. package/Source/Shaders/Materials/GridMaterial.js +59 -0
  1655. package/Source/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  1656. package/Source/Shaders/Materials/NormalMapMaterial.js +21 -0
  1657. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +63 -0
  1658. package/Source/Shaders/Materials/PolylineArrowMaterial.js +65 -0
  1659. package/Source/Shaders/Materials/PolylineDashMaterial.glsl +39 -0
  1660. package/Source/Shaders/Materials/PolylineDashMaterial.js +41 -0
  1661. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +25 -0
  1662. package/Source/Shaders/Materials/PolylineGlowMaterial.js +27 -0
  1663. package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +29 -0
  1664. package/Source/Shaders/Materials/PolylineOutlineMaterial.js +31 -0
  1665. package/Source/Shaders/Materials/RimLightingMaterial.glsl +21 -0
  1666. package/Source/Shaders/Materials/RimLightingMaterial.js +23 -0
  1667. package/Source/Shaders/Materials/SlopeRampMaterial.glsl +11 -0
  1668. package/Source/Shaders/Materials/SlopeRampMaterial.js +13 -0
  1669. package/Source/Shaders/Materials/StripeMaterial.glsl +24 -0
  1670. package/Source/Shaders/Materials/StripeMaterial.js +26 -0
  1671. package/Source/Shaders/Materials/Water.glsl +58 -0
  1672. package/Source/Shaders/Materials/Water.js +60 -0
  1673. package/Source/Shaders/Materials/WaterMaskMaterial.glsl +15 -0
  1674. package/Source/Shaders/Materials/WaterMaskMaterial.js +17 -0
  1675. package/Source/Shaders/Model/AtmosphereStageFS.glsl +108 -0
  1676. package/Source/Shaders/Model/AtmosphereStageFS.js +110 -0
  1677. package/Source/Shaders/Model/AtmosphereStageVS.glsl +12 -0
  1678. package/Source/Shaders/Model/AtmosphereStageVS.js +14 -0
  1679. package/Source/Shaders/Model/CPUStylingStageFS.glsl +49 -0
  1680. package/Source/Shaders/Model/CPUStylingStageFS.js +51 -0
  1681. package/Source/Shaders/Model/CPUStylingStageVS.glsl +30 -0
  1682. package/Source/Shaders/Model/CPUStylingStageVS.js +32 -0
  1683. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  1684. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  1685. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  1686. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  1687. package/Source/Shaders/Model/CustomShaderStageFS.glsl +18 -0
  1688. package/Source/Shaders/Model/CustomShaderStageFS.js +20 -0
  1689. package/Source/Shaders/Model/CustomShaderStageVS.glsl +19 -0
  1690. package/Source/Shaders/Model/CustomShaderStageVS.js +21 -0
  1691. package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
  1692. package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
  1693. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +69 -0
  1694. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +70 -0
  1695. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
  1696. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
  1697. package/Source/Shaders/Model/FeatureIdStageFS.glsl +4 -0
  1698. package/Source/Shaders/Model/FeatureIdStageFS.js +6 -0
  1699. package/Source/Shaders/Model/FeatureIdStageVS.glsl +6 -0
  1700. package/Source/Shaders/Model/FeatureIdStageVS.js +8 -0
  1701. package/Source/Shaders/Model/GeometryStageFS.glsl +25 -0
  1702. package/Source/Shaders/Model/GeometryStageFS.js +27 -0
  1703. package/Source/Shaders/Model/GeometryStageVS.glsl +42 -0
  1704. package/Source/Shaders/Model/GeometryStageVS.js +44 -0
  1705. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +101 -0
  1706. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +103 -0
  1707. package/Source/Shaders/Model/InstancingStageCommon.glsl +67 -0
  1708. package/Source/Shaders/Model/InstancingStageCommon.js +69 -0
  1709. package/Source/Shaders/Model/InstancingStageVS.glsl +18 -0
  1710. package/Source/Shaders/Model/InstancingStageVS.js +20 -0
  1711. package/Source/Shaders/Model/LegacyInstancingStageVS.glsl +20 -0
  1712. package/Source/Shaders/Model/LegacyInstancingStageVS.js +22 -0
  1713. package/Source/Shaders/Model/LightingStageFS.glsl +120 -0
  1714. package/Source/Shaders/Model/LightingStageFS.js +122 -0
  1715. package/Source/Shaders/Model/MaterialStageFS.glsl +523 -0
  1716. package/Source/Shaders/Model/MaterialStageFS.js +525 -0
  1717. package/Source/Shaders/Model/MetadataStageFS.glsl +10 -0
  1718. package/Source/Shaders/Model/MetadataStageFS.js +12 -0
  1719. package/Source/Shaders/Model/MetadataStageVS.glsl +11 -0
  1720. package/Source/Shaders/Model/MetadataStageVS.js +13 -0
  1721. package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +88 -0
  1722. package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +90 -0
  1723. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +6 -0
  1724. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +8 -0
  1725. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +27 -0
  1726. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +29 -0
  1727. package/Source/Shaders/Model/ModelColorStageFS.glsl +7 -0
  1728. package/Source/Shaders/Model/ModelColorStageFS.js +9 -0
  1729. package/Source/Shaders/Model/ModelFS.glsl +156 -0
  1730. package/Source/Shaders/Model/ModelFS.js +158 -0
  1731. package/Source/Shaders/Model/ModelSilhouetteStageFS.glsl +5 -0
  1732. package/Source/Shaders/Model/ModelSilhouetteStageFS.js +6 -0
  1733. package/Source/Shaders/Model/ModelSilhouetteStageVS.glsl +10 -0
  1734. package/Source/Shaders/Model/ModelSilhouetteStageVS.js +12 -0
  1735. package/Source/Shaders/Model/ModelSplitterStageFS.glsl +9 -0
  1736. package/Source/Shaders/Model/ModelSplitterStageFS.js +11 -0
  1737. package/Source/Shaders/Model/ModelVS.glsl +171 -0
  1738. package/Source/Shaders/Model/ModelVS.js +173 -0
  1739. package/Source/Shaders/Model/MorphTargetsStageVS.glsl +15 -0
  1740. package/Source/Shaders/Model/MorphTargetsStageVS.js +16 -0
  1741. package/Source/Shaders/Model/PointCloudStylingStageVS.glsl +45 -0
  1742. package/Source/Shaders/Model/PointCloudStylingStageVS.js +47 -0
  1743. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +15 -0
  1744. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +17 -0
  1745. package/Source/Shaders/Model/PrimitiveOutlineStageVS.glsl +3 -0
  1746. package/Source/Shaders/Model/PrimitiveOutlineStageVS.js +5 -0
  1747. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +51 -0
  1748. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +53 -0
  1749. package/Source/Shaders/Model/SkinningStageVS.glsl +18 -0
  1750. package/Source/Shaders/Model/SkinningStageVS.js +19 -0
  1751. package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +39 -0
  1752. package/Source/Shaders/Model/VerticalExaggerationStageVS.js +41 -0
  1753. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +47 -0
  1754. package/Source/Shaders/PointPrimitiveCollectionFS.js +49 -0
  1755. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +154 -0
  1756. package/Source/Shaders/PointPrimitiveCollectionVS.js +156 -0
  1757. package/Source/Shaders/PolygonSignedDistanceFS.glsl +131 -0
  1758. package/Source/Shaders/PolygonSignedDistanceFS.js +132 -0
  1759. package/Source/Shaders/PolylineCommon.glsl +176 -0
  1760. package/Source/Shaders/PolylineCommon.js +178 -0
  1761. package/Source/Shaders/PolylineFS.glsl +25 -0
  1762. package/Source/Shaders/PolylineFS.js +27 -0
  1763. package/Source/Shaders/PolylineShadowVolumeFS.glsl +86 -0
  1764. package/Source/Shaders/PolylineShadowVolumeFS.js +88 -0
  1765. package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +45 -0
  1766. package/Source/Shaders/PolylineShadowVolumeMorphFS.js +47 -0
  1767. package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +177 -0
  1768. package/Source/Shaders/PolylineShadowVolumeMorphVS.js +179 -0
  1769. package/Source/Shaders/PolylineShadowVolumeVS.glsl +168 -0
  1770. package/Source/Shaders/PolylineShadowVolumeVS.js +170 -0
  1771. package/Source/Shaders/PolylineVS.glsl +103 -0
  1772. package/Source/Shaders/PolylineVS.js +105 -0
  1773. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +25 -0
  1774. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +27 -0
  1775. package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +17 -0
  1776. package/Source/Shaders/PostProcessStages/AdditiveBlend.js +19 -0
  1777. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +144 -0
  1778. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +146 -0
  1779. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +11 -0
  1780. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +13 -0
  1781. package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +19 -0
  1782. package/Source/Shaders/PostProcessStages/BlackAndWhite.js +21 -0
  1783. package/Source/Shaders/PostProcessStages/BloomComposite.glsl +20 -0
  1784. package/Source/Shaders/PostProcessStages/BloomComposite.js +22 -0
  1785. package/Source/Shaders/PostProcessStages/BrightPass.glsl +30 -0
  1786. package/Source/Shaders/PostProcessStages/BrightPass.js +32 -0
  1787. package/Source/Shaders/PostProcessStages/Brightness.glsl +11 -0
  1788. package/Source/Shaders/PostProcessStages/Brightness.js +13 -0
  1789. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +31 -0
  1790. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +33 -0
  1791. package/Source/Shaders/PostProcessStages/ContrastBias.glsl +17 -0
  1792. package/Source/Shaders/PostProcessStages/ContrastBias.js +19 -0
  1793. package/Source/Shaders/PostProcessStages/DepthOfField.glsl +39 -0
  1794. package/Source/Shaders/PostProcessStages/DepthOfField.js +41 -0
  1795. package/Source/Shaders/PostProcessStages/DepthView.glsl +9 -0
  1796. package/Source/Shaders/PostProcessStages/DepthView.js +11 -0
  1797. package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +14 -0
  1798. package/Source/Shaders/PostProcessStages/DepthViewPacked.js +16 -0
  1799. package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +60 -0
  1800. package/Source/Shaders/PostProcessStages/EdgeDetection.js +62 -0
  1801. package/Source/Shaders/PostProcessStages/FXAA.glsl +21 -0
  1802. package/Source/Shaders/PostProcessStages/FXAA.js +23 -0
  1803. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +40 -0
  1804. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +42 -0
  1805. package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +47 -0
  1806. package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +49 -0
  1807. package/Source/Shaders/PostProcessStages/LensFlare.glsl +153 -0
  1808. package/Source/Shaders/PostProcessStages/LensFlare.js +155 -0
  1809. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +28 -0
  1810. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +30 -0
  1811. package/Source/Shaders/PostProcessStages/NightVision.glsl +16 -0
  1812. package/Source/Shaders/PostProcessStages/NightVision.js +18 -0
  1813. package/Source/Shaders/PostProcessStages/PassThrough.glsl +8 -0
  1814. package/Source/Shaders/PostProcessStages/PassThrough.js +10 -0
  1815. package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +8 -0
  1816. package/Source/Shaders/PostProcessStages/PassThroughDepth.js +10 -0
  1817. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.glsl +25 -0
  1818. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.js +27 -0
  1819. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +61 -0
  1820. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +63 -0
  1821. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +27 -0
  1822. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +29 -0
  1823. package/Source/Shaders/PostProcessStages/Silhouette.glsl +11 -0
  1824. package/Source/Shaders/PostProcessStages/Silhouette.js +13 -0
  1825. package/Source/Shaders/PrimitiveGaussianSplatFS.glsl +18 -0
  1826. package/Source/Shaders/PrimitiveGaussianSplatFS.js +20 -0
  1827. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +196 -0
  1828. package/Source/Shaders/PrimitiveGaussianSplatVS.js +197 -0
  1829. package/Source/Shaders/ReprojectWebMercatorFS.glsl +8 -0
  1830. package/Source/Shaders/ReprojectWebMercatorFS.js +10 -0
  1831. package/Source/Shaders/ReprojectWebMercatorVS.glsl +12 -0
  1832. package/Source/Shaders/ReprojectWebMercatorVS.js +14 -0
  1833. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +153 -0
  1834. package/Source/Shaders/ShadowVolumeAppearanceFS.js +155 -0
  1835. package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +101 -0
  1836. package/Source/Shaders/ShadowVolumeAppearanceVS.js +103 -0
  1837. package/Source/Shaders/ShadowVolumeFS.glsl +13 -0
  1838. package/Source/Shaders/ShadowVolumeFS.js +15 -0
  1839. package/Source/Shaders/SkyAtmosphereCommon.glsl +81 -0
  1840. package/Source/Shaders/SkyAtmosphereCommon.js +83 -0
  1841. package/Source/Shaders/SkyAtmosphereFS.glsl +59 -0
  1842. package/Source/Shaders/SkyAtmosphereFS.js +61 -0
  1843. package/Source/Shaders/SkyAtmosphereVS.glsl +32 -0
  1844. package/Source/Shaders/SkyAtmosphereVS.js +34 -0
  1845. package/Source/Shaders/SkyBoxFS.glsl +9 -0
  1846. package/Source/Shaders/SkyBoxFS.js +11 -0
  1847. package/Source/Shaders/SkyBoxVS.glsl +9 -0
  1848. package/Source/Shaders/SkyBoxVS.js +11 -0
  1849. package/Source/Shaders/SunFS.glsl +9 -0
  1850. package/Source/Shaders/SunFS.js +11 -0
  1851. package/Source/Shaders/SunTextureFS.glsl +55 -0
  1852. package/Source/Shaders/SunTextureFS.js +57 -0
  1853. package/Source/Shaders/SunVS.glsl +28 -0
  1854. package/Source/Shaders/SunVS.js +30 -0
  1855. package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +48 -0
  1856. package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +50 -0
  1857. package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +85 -0
  1858. package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +87 -0
  1859. package/Source/Shaders/Vector3DTilePolylinesVS.glsl +22 -0
  1860. package/Source/Shaders/Vector3DTilePolylinesVS.js +24 -0
  1861. package/Source/Shaders/VectorTileVS.glsl +9 -0
  1862. package/Source/Shaders/VectorTileVS.js +11 -0
  1863. package/Source/Shaders/ViewportQuadFS.glsl +16 -0
  1864. package/Source/Shaders/ViewportQuadFS.js +18 -0
  1865. package/Source/Shaders/ViewportQuadVS.glsl +10 -0
  1866. package/Source/Shaders/ViewportQuadVS.js +12 -0
  1867. package/Source/Shaders/Voxels/IntersectBox.glsl +34 -0
  1868. package/Source/Shaders/Voxels/IntersectBox.js +36 -0
  1869. package/Source/Shaders/Voxels/IntersectCylinder.glsl +142 -0
  1870. package/Source/Shaders/Voxels/IntersectCylinder.js +144 -0
  1871. package/Source/Shaders/Voxels/IntersectDepth.glsl +27 -0
  1872. package/Source/Shaders/Voxels/IntersectDepth.js +29 -0
  1873. package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +330 -0
  1874. package/Source/Shaders/Voxels/IntersectEllipsoid.js +332 -0
  1875. package/Source/Shaders/Voxels/IntersectLongitude.glsl +114 -0
  1876. package/Source/Shaders/Voxels/IntersectLongitude.js +116 -0
  1877. package/Source/Shaders/Voxels/IntersectPlane.glsl +80 -0
  1878. package/Source/Shaders/Voxels/IntersectPlane.js +82 -0
  1879. package/Source/Shaders/Voxels/Intersection.glsl +50 -0
  1880. package/Source/Shaders/Voxels/Intersection.js +52 -0
  1881. package/Source/Shaders/Voxels/IntersectionUtils.glsl +167 -0
  1882. package/Source/Shaders/Voxels/IntersectionUtils.js +169 -0
  1883. package/Source/Shaders/Voxels/Megatexture.glsl +55 -0
  1884. package/Source/Shaders/Voxels/Megatexture.js +57 -0
  1885. package/Source/Shaders/Voxels/Octree.glsl +254 -0
  1886. package/Source/Shaders/Voxels/Octree.js +256 -0
  1887. package/Source/Shaders/Voxels/VoxelFS.glsl +267 -0
  1888. package/Source/Shaders/Voxels/VoxelFS.js +269 -0
  1889. package/Source/Shaders/Voxels/VoxelUtils.glsl +12 -0
  1890. package/Source/Shaders/Voxels/VoxelUtils.js +14 -0
  1891. package/Source/Shaders/Voxels/VoxelVS.glsl +11 -0
  1892. package/Source/Shaders/Voxels/VoxelVS.js +13 -0
  1893. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +29 -0
  1894. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +31 -0
  1895. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +95 -0
  1896. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +97 -0
  1897. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +183 -0
  1898. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +185 -0
  1899. package/Source/ThirdParty/Workers/basis_transcoder.js +21 -0
  1900. package/Source/ThirdParty/Workers/package.json +1 -0
  1901. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -0
  1902. package/Source/ThirdParty/basis_transcoder.wasm +0 -0
  1903. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  1904. package/Source/ThirdParty/google-earth-dbroot-parser.js +8337 -0
  1905. package/Source/ThirdParty/wasm_splats_bg.wasm +0 -0
  1906. package/Source/ThirdParty/zip-module.wasm +0 -0
  1907. package/Source/Widget/CesiumWidget.css +119 -0
  1908. package/Source/Widget/CesiumWidget.js +1613 -0
  1909. package/Source/Widget/lighter.css +14 -0
  1910. package/Source/Workers/combineGeometry.js +13 -0
  1911. package/Source/Workers/createBoxGeometry.js +10 -0
  1912. package/Source/Workers/createBoxOutlineGeometry.js +10 -0
  1913. package/Source/Workers/createCircleGeometry.js +18 -0
  1914. package/Source/Workers/createCircleOutlineGeometry.js +18 -0
  1915. package/Source/Workers/createCoplanarPolygonGeometry.js +10 -0
  1916. package/Source/Workers/createCoplanarPolygonOutlineGeometry.js +15 -0
  1917. package/Source/Workers/createCorridorGeometry.js +12 -0
  1918. package/Source/Workers/createCorridorOutlineGeometry.js +17 -0
  1919. package/Source/Workers/createCylinderGeometry.js +10 -0
  1920. package/Source/Workers/createCylinderOutlineGeometry.js +10 -0
  1921. package/Source/Workers/createEllipseGeometry.js +14 -0
  1922. package/Source/Workers/createEllipseOutlineGeometry.js +14 -0
  1923. package/Source/Workers/createEllipsoidGeometry.js +10 -0
  1924. package/Source/Workers/createEllipsoidOutlineGeometry.js +13 -0
  1925. package/Source/Workers/createFrustumGeometry.js +10 -0
  1926. package/Source/Workers/createFrustumOutlineGeometry.js +10 -0
  1927. package/Source/Workers/createGeometry.js +78 -0
  1928. package/Source/Workers/createGroundPolylineGeometry.js +16 -0
  1929. package/Source/Workers/createPlaneGeometry.js +10 -0
  1930. package/Source/Workers/createPlaneOutlineGeometry.js +10 -0
  1931. package/Source/Workers/createPolygonGeometry.js +12 -0
  1932. package/Source/Workers/createPolygonOutlineGeometry.js +12 -0
  1933. package/Source/Workers/createPolylineGeometry.js +12 -0
  1934. package/Source/Workers/createPolylineVolumeGeometry.js +17 -0
  1935. package/Source/Workers/createPolylineVolumeOutlineGeometry.js +22 -0
  1936. package/Source/Workers/createRectangleGeometry.js +14 -0
  1937. package/Source/Workers/createRectangleOutlineGeometry.js +17 -0
  1938. package/Source/Workers/createSimplePolylineGeometry.js +17 -0
  1939. package/Source/Workers/createSphereGeometry.js +10 -0
  1940. package/Source/Workers/createSphereOutlineGeometry.js +10 -0
  1941. package/Source/Workers/createTaskProcessorWorker.js +113 -0
  1942. package/Source/Workers/createVectorTileClampedPolylines.js +541 -0
  1943. package/Source/Workers/createVectorTileGeometries.js +414 -0
  1944. package/Source/Workers/createVectorTilePoints.js +81 -0
  1945. package/Source/Workers/createVectorTilePolygons.js +412 -0
  1946. package/Source/Workers/createVectorTilePolylines.js +210 -0
  1947. package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
  1948. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +651 -0
  1949. package/Source/Workers/createVerticesFromHeightmap.js +53 -0
  1950. package/Source/Workers/createVerticesFromQuantizedTerrainMesh.js +549 -0
  1951. package/Source/Workers/createWallGeometry.js +12 -0
  1952. package/Source/Workers/createWallOutlineGeometry.js +12 -0
  1953. package/Source/Workers/decodeDraco.js +386 -0
  1954. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +268 -0
  1955. package/Source/Workers/decodeI3S.js +1655 -0
  1956. package/Source/Workers/gaussianSplatSorter.js +34 -0
  1957. package/Source/Workers/gaussianSplatTextureGenerator.js +39 -0
  1958. package/Source/Workers/incrementallyBuildTerrainPicker.js +122 -0
  1959. package/Source/Workers/transcodeKTX2.js +308 -0
  1960. package/Source/Workers/transferTypedArrayTest.js +16 -0
  1961. package/Source/Workers/upsampleQuantizedTerrainMesh.js +681 -0
  1962. package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
  1963. package/index.js +1263 -0
  1964. package/package.json +83 -0
@@ -0,0 +1,2147 @@
1
+ import Frozen from "../Core/Frozen.js";
2
+ import Matrix4 from "../Core/Matrix4.js";
3
+ import Matrix3 from "../Core/Matrix3.js";
4
+ import ModelUtility from "./Model/ModelUtility.js";
5
+ import GaussianSplatSorter from "./GaussianSplatSorter.js";
6
+ import GaussianSplatTextureGenerator from "./GaussianSplatTextureGenerator.js";
7
+ import ComponentDatatype from "../Core/ComponentDatatype.js";
8
+ import PixelDatatype from "../Renderer/PixelDatatype.js";
9
+ import PixelFormat from "../Core/PixelFormat.js";
10
+ import Sampler from "../Renderer/Sampler.js";
11
+ import Texture from "../Renderer/Texture.js";
12
+ import GaussianSplatRenderResources from "./GaussianSplatRenderResources.js";
13
+ import BlendingState from "./BlendingState.js";
14
+ import Pass from "../Renderer/Pass.js";
15
+ import ShaderDestination from "../Renderer/ShaderDestination.js";
16
+ import GaussianSplatVS from "../Shaders/PrimitiveGaussianSplatVS.js";
17
+ import GaussianSplatFS from "../Shaders/PrimitiveGaussianSplatFS.js";
18
+ import PrimitiveType from "../Core/PrimitiveType.js";
19
+ import DrawCommand from "../Renderer/DrawCommand.js";
20
+ import Geometry from "../Core/Geometry.js";
21
+ import GeometryAttribute from "../Core/GeometryAttribute.js";
22
+ import VertexArray from "../Renderer/VertexArray.js";
23
+ import BufferUsage from "../Renderer/BufferUsage.js";
24
+ import RenderState from "../Renderer/RenderState.js";
25
+ import clone from "../Core/clone.js";
26
+ import defined from "../Core/defined.js";
27
+ import DeveloperError from "../Core/DeveloperError.js";
28
+ import VertexAttributeSemantic from "./VertexAttributeSemantic.js";
29
+ import AttributeType from "./AttributeType.js";
30
+ import ModelComponents from "./ModelComponents.js";
31
+ import Axis from "./Axis.js";
32
+ import Cartesian3 from "../Core/Cartesian3.js";
33
+ import Quaternion from "../Core/Quaternion.js";
34
+ import SplitDirection from "./SplitDirection.js";
35
+ import destroyObject from "../Core/destroyObject.js";
36
+ import ContextLimits from "../Renderer/ContextLimits.js";
37
+ import Transforms from "../Core/Transforms.js";
38
+
39
+ const scratchMatrix4A = new Matrix4();
40
+ const scratchMatrix4C = new Matrix4();
41
+ const scratchMatrix4D = new Matrix4();
42
+ const scratchMatrix3 = new Matrix3();
43
+ const scratchTransformQuat = new Quaternion();
44
+ const scratchTransformPosition = new Cartesian3();
45
+ const scratchTransformRotation = new Quaternion();
46
+ const scratchTransformScale = new Cartesian3();
47
+ const TRANSFORM_CACHE_EPSILON = 1e-12;
48
+ const RIGID_TRANSFORM_EPSILON = 1e-5;
49
+ const UNIT_SCALE_FAST_PATH_EPSILON = 1e-7;
50
+
51
+ /**
52
+ * Runtime state machine for steady-state re-sorting of an already committed snapshot.
53
+ *
54
+ * The transition points are in {@link GaussianSplatPrimitive#update}:
55
+ * - IDLE -> WAITING/SORTING when a new steady sort request is scheduled
56
+ * - WAITING -> SORTING when a sorter promise becomes available
57
+ * - SORTING -> SORTED when the active promise resolves with a valid result
58
+ * - SORTED -> IDLE after rebuilding the draw command with fresh indexes
59
+ * - Any state -> ERROR when the active sort promise rejects
60
+ *
61
+ * @private
62
+ */
63
+ const GaussianSplatSortingState = {
64
+ // No steady sort request is in flight. update() may decide to start one.
65
+ IDLE: 0,
66
+ // A steady sort was requested, but sorter capacity was unavailable this frame.
67
+ WAITING: 1,
68
+ // A steady sort promise is in flight and results are pending.
69
+ SORTING: 2,
70
+ // A valid sorted index buffer is available and waiting to be committed to draw command.
71
+ SORTED: 3,
72
+ // The active sort request failed; update() throws the captured error.
73
+ ERROR: 4,
74
+ };
75
+
76
+ /**
77
+ * Snapshot lifecycle for rebuilding aggregated splat data.
78
+ *
79
+ * Transition order:
80
+ * BUILDING -> TEXTURE_PENDING -> TEXTURE_READY -> SORTING -> READY
81
+ *
82
+ * The transition points are split across two functions:
83
+ * - {@link GaussianSplatPrimitive#update} drives BUILDING/SORTING/READY
84
+ * - {@link GaussianSplatPrimitive.generateSplatTexture} drives TEXTURE_PENDING/TEXTURE_READY
85
+ *
86
+ * A snapshot is committed only when it reaches READY, so all GPU resources
87
+ * and sorted indexes swap atomically as one unit.
88
+ *
89
+ * @private
90
+ */
91
+ const SnapshotState = {
92
+ // CPU aggregation is complete and this snapshot is ready to start async texture generation.
93
+ BUILDING: "BUILDING",
94
+ // Async texture generation/upload is in flight for this snapshot.
95
+ TEXTURE_PENDING: "TEXTURE_PENDING",
96
+ // Attribute textures are ready; snapshot can now request index sorting.
97
+ TEXTURE_READY: "TEXTURE_READY",
98
+ // Sort request is in flight for this snapshot generation.
99
+ SORTING: "SORTING",
100
+ // Sorted indexes were validated for this generation and may be committed.
101
+ READY: "READY",
102
+ };
103
+
104
+ /**
105
+ * Aggregated Gaussian splat snapshot data that is built asynchronously and
106
+ * atomically committed once all required resources are ready.
107
+ *
108
+ * @typedef {object} GaussianSplatPrimitive.Snapshot
109
+ * @property {number} generation Monotonic data generation token.
110
+ * @property {Float32Array} positions Packed splat positions (xyz).
111
+ * @property {Float32Array} rotations Packed splat rotations (xyzw).
112
+ * @property {Float32Array} scales Packed splat scales (xyz).
113
+ * @property {Uint8Array} colors Packed splat colors (rgba).
114
+ * @property {Uint32Array|undefined} shData Packed spherical harmonics data.
115
+ * @property {number} sphericalHarmonicsDegree Spherical harmonics degree.
116
+ * @property {number} shCoefficientCount Coefficients per splat.
117
+ * @property {number} numSplats Total splat count in this snapshot.
118
+ * @property {Uint32Array|undefined} indexes Sorted index buffer when READY.
119
+ * @property {Texture|undefined} gaussianSplatTexture Packed splat attribute texture.
120
+ * @property {Texture|undefined} sphericalHarmonicsTexture Packed SH texture.
121
+ * @property {number} lastTextureWidth Last splat texture width.
122
+ * @property {number} lastTextureHeight Last splat texture height.
123
+ * @property {string} state Current snapshot lifecycle state from {@link SnapshotState}.
124
+ * @private
125
+ */
126
+
127
+ /**
128
+ * Packed spherical harmonics texture payload.
129
+ *
130
+ * @typedef {object} GaussianSplatPrimitive.SphericalHarmonicsTextureData
131
+ * @property {number} width Texture width in texels.
132
+ * @property {number} height Texture height in texels.
133
+ * @property {ArrayBufferView} data Packed unsigned integer texture data.
134
+ * @private
135
+ */
136
+
137
+ /**
138
+ * Packed Gaussian splat attribute texture payload.
139
+ *
140
+ * @typedef {object} GaussianSplatPrimitive.AttributeTextureData
141
+ * @property {number} width Texture width in texels.
142
+ * @property {number} height Texture height in texels.
143
+ * @property {ArrayBufferView} data Packed unsigned integer texture data.
144
+ * @private
145
+ */
146
+
147
+ // Two stable frames avoids rebuilding during brief selected-tile jitter.
148
+ const DEFAULT_STABLE_FRAMES = 2;
149
+ // If selection keeps changing, force a rebuild after ~0.5s at 60fps to guarantee progress.
150
+ // Lower values react faster but can thrash on noisy LOD transitions.
151
+ // Higher values reduce rebuild churn but keep stale snapshots visible longer.
152
+ const DEFAULT_MAX_SNAPSHOT_STALL_FRAMES = 30;
153
+ // Minimum delay between steady re-sort requests once the camera is moving.
154
+ const DEFAULT_SORT_MIN_FRAME_INTERVAL = 3;
155
+ // ~0.5 degree camera direction change threshold before triggering steady re-sort.
156
+ const DEFAULT_SORT_MIN_ANGLE_RADIANS = 0.008726646259971648;
157
+ // Minimum camera movement in world units before triggering steady re-sort.
158
+ const DEFAULT_SORT_MIN_POSITION_DELTA = 1.0;
159
+
160
+ /**
161
+ * Determines whether the camera has moved or rotated enough since the last
162
+ * steady sort to justify scheduling a new one.
163
+ *
164
+ * Returns {@code true} when any of the following hold:
165
+ * - No previous steady sort has been recorded yet.
166
+ * - The camera position has moved by at least {@link DEFAULT_SORT_MIN_POSITION_DELTA} world units.
167
+ * - The camera direction has changed by at least {@link DEFAULT_SORT_MIN_ANGLE_RADIANS} radians.
168
+ *
169
+ * A minimum frame interval ({@link DEFAULT_SORT_MIN_FRAME_INTERVAL}) is
170
+ * enforced to prevent re-sorting every single frame.
171
+ *
172
+ * @param {GaussianSplatPrimitive} primitive The splat primitive to check.
173
+ * @param {FrameState} frameState The current frame state.
174
+ * @returns {boolean} Whether a new steady sort should begin.
175
+ * @private
176
+ */
177
+ function shouldStartSteadySort(primitive, frameState) {
178
+ const framesSinceLastSort =
179
+ primitive._lastSteadySortFrameNumber >= 0
180
+ ? frameState.frameNumber - primitive._lastSteadySortFrameNumber
181
+ : Number.POSITIVE_INFINITY;
182
+ if (
183
+ primitive._lastSteadySortFrameNumber >= 0 &&
184
+ framesSinceLastSort < DEFAULT_SORT_MIN_FRAME_INTERVAL
185
+ ) {
186
+ return false;
187
+ }
188
+
189
+ const camera = frameState.camera;
190
+ if (!defined(camera)) {
191
+ return false;
192
+ }
193
+ if (
194
+ !primitive._hasLastSteadySortCameraPosition ||
195
+ !primitive._hasLastSteadySortCameraDirection
196
+ ) {
197
+ return true;
198
+ }
199
+
200
+ const positionDelta = Cartesian3.distance(
201
+ camera.positionWC,
202
+ primitive._lastSteadySortCameraPosition,
203
+ );
204
+ if (positionDelta >= DEFAULT_SORT_MIN_POSITION_DELTA) {
205
+ return true;
206
+ }
207
+
208
+ const angleDelta = Cartesian3.angleBetween(
209
+ camera.directionWC,
210
+ primitive._lastSteadySortCameraDirection,
211
+ );
212
+ return angleDelta >= DEFAULT_SORT_MIN_ANGLE_RADIANS;
213
+ }
214
+
215
+ /**
216
+ * Records the frame number and camera pose at the start of a steady sort so
217
+ * that {@link shouldStartSteadySort} can later compute deltas.
218
+ *
219
+ * @param {GaussianSplatPrimitive} primitive The splat primitive to update.
220
+ * @param {FrameState} frameState The current frame state.
221
+ * @private
222
+ */
223
+ function markSteadySortStart(primitive, frameState) {
224
+ primitive._lastSteadySortFrameNumber = frameState.frameNumber;
225
+ const camera = frameState.camera;
226
+ if (!defined(camera)) {
227
+ return;
228
+ }
229
+ Cartesian3.clone(camera.positionWC, primitive._lastSteadySortCameraPosition);
230
+ primitive._hasLastSteadySortCameraPosition = true;
231
+ Cartesian3.clone(
232
+ camera.directionWC,
233
+ primitive._lastSteadySortCameraDirection,
234
+ );
235
+ primitive._hasLastSteadySortCameraDirection = true;
236
+ }
237
+
238
+ /**
239
+ * Checks whether the set of currently selected tiles differs from the set
240
+ * recorded on the primitive. This is used to detect LOD transitions that
241
+ * require a snapshot rebuild.
242
+ *
243
+ * @param {GaussianSplatPrimitive} primitive The splat primitive.
244
+ * @param {Cesium3DTile[]} selectedTiles The tiles selected this frame.
245
+ * @returns {boolean} {@code true} if the tile set has changed.
246
+ * @private
247
+ */
248
+ function haveSelectedTilesChanged(primitive, selectedTiles) {
249
+ const prevSet = primitive._selectedTileSet;
250
+ if (!defined(prevSet) || prevSet.size !== selectedTiles.length) {
251
+ return true;
252
+ }
253
+
254
+ for (let i = 0; i < selectedTiles.length; i++) {
255
+ if (!prevSet.has(selectedTiles[i])) {
256
+ return true;
257
+ }
258
+ }
259
+
260
+ return false;
261
+ }
262
+
263
+ /**
264
+ * Returns whether the given sort result still matches the primitive's current
265
+ * sort request and data generation, i.e. it has not been superseded.
266
+ *
267
+ * @param {GaussianSplatPrimitive} primitive The splat primitive.
268
+ * @param {object} activeSort The sort result to validate.
269
+ * @returns {boolean} {@code true} if the sort result is still current.
270
+ * @private
271
+ */
272
+ function isActiveSort(primitive, activeSort) {
273
+ return (
274
+ defined(activeSort) &&
275
+ activeSort.requestId === primitive._sortRequestId &&
276
+ activeSort.dataGeneration === primitive._splatDataGeneration
277
+ );
278
+ }
279
+
280
+ /**
281
+ * Destroys the GPU textures owned by a snapshot, if any, and clears the
282
+ * references so they are not used after destruction.
283
+ *
284
+ * @param {GaussianSplatPrimitive.Snapshot|undefined} snapshot The snapshot whose textures should be destroyed.
285
+ * @private
286
+ */
287
+ function destroySnapshotTextures(snapshot) {
288
+ if (!defined(snapshot)) {
289
+ return;
290
+ }
291
+ if (defined(snapshot.gaussianSplatTexture)) {
292
+ snapshot.gaussianSplatTexture.destroy();
293
+ snapshot.gaussianSplatTexture = undefined;
294
+ }
295
+ if (defined(snapshot.sphericalHarmonicsTexture)) {
296
+ snapshot.sphericalHarmonicsTexture.destroy();
297
+ snapshot.sphericalHarmonicsTexture = undefined;
298
+ }
299
+ }
300
+
301
+ /**
302
+ * Schedules a GPU texture for deferred destruction. The texture is kept alive
303
+ * for one additional frame so that any in-flight draw commands that reference
304
+ * it can finish before the underlying GPU resource is released.
305
+ *
306
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
307
+ * @param {Texture|undefined} texture The texture to retire.
308
+ * @param {number} frameNumber The frame number at which the texture was retired.
309
+ * @private
310
+ */
311
+ function retireTexture(primitive, texture, frameNumber) {
312
+ if (!defined(texture)) {
313
+ return;
314
+ }
315
+ const retired = primitive._retiredTextures;
316
+ retired.push({
317
+ texture: texture,
318
+ frameNumber: frameNumber,
319
+ });
320
+ }
321
+
322
+ /**
323
+ * Destroys any retired textures whose grace period (one frame) has elapsed.
324
+ * Called once per frame to reclaim GPU memory from textures that were replaced
325
+ * by a newer snapshot.
326
+ *
327
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
328
+ * @param {number} frameNumber The current frame number.
329
+ * @private
330
+ */
331
+ function releaseRetiredTextures(primitive, frameNumber) {
332
+ const retired = primitive._retiredTextures;
333
+ if (!defined(retired) || retired.length === 0) {
334
+ return;
335
+ }
336
+ const next = [];
337
+ for (let i = 0; i < retired.length; i++) {
338
+ const entry = retired[i];
339
+ if (frameNumber - entry.frameNumber > 0) {
340
+ entry.texture.destroy();
341
+ } else {
342
+ next.push(entry);
343
+ }
344
+ }
345
+ primitive._retiredTextures = next;
346
+ }
347
+
348
+ function getSnapshotArrayBuffer(snapshot, key) {
349
+ const value = snapshot?.[key];
350
+ return defined(value) ? value.buffer : undefined;
351
+ }
352
+
353
+ function acquireAggregateScratchBuffer(
354
+ primitive,
355
+ key,
356
+ componentDatatype,
357
+ requiredLength,
358
+ ) {
359
+ let pool = primitive._aggregateScratchBuffers[key];
360
+ if (!defined(pool)) {
361
+ pool = [];
362
+ primitive._aggregateScratchBuffers[key] = pool;
363
+ }
364
+
365
+ const activeBuffer = getSnapshotArrayBuffer(primitive._snapshot, key);
366
+ for (let i = 0; i < pool.length; i++) {
367
+ const candidate = pool[i];
368
+ if (
369
+ candidate.length >= requiredLength &&
370
+ candidate.buffer !== activeBuffer
371
+ ) {
372
+ return candidate;
373
+ }
374
+ }
375
+
376
+ const created = ComponentDatatype.createTypedArray(
377
+ componentDatatype,
378
+ requiredLength,
379
+ );
380
+ pool.push(created);
381
+ return created;
382
+ }
383
+
384
+ function trimAggregateScratchBuffer(buffer, length) {
385
+ if (buffer.length === length) {
386
+ return buffer;
387
+ }
388
+ return buffer.subarray(0, length);
389
+ }
390
+
391
+ /**
392
+ * Atomically promotes a fully-built snapshot to be the active splat data for
393
+ * the primitive. This includes swapping attribute arrays, GPU textures, and
394
+ * sorted indexes, as well as retiring any previously active textures so they
395
+ * can be safely destroyed after the current frame finishes.
396
+ *
397
+ * The snapshot <b>must</b> be in the {@link SnapshotState.READY} state;
398
+ * otherwise a {@link DeveloperError} is thrown.
399
+ *
400
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
401
+ * @param {GaussianSplatPrimitive.Snapshot} snapshot The snapshot to commit.
402
+ * @param {FrameState} frameState The current frame state.
403
+ * @throws {DeveloperError} If the snapshot is not READY.
404
+ * @private
405
+ */
406
+ function commitSnapshot(primitive, snapshot, frameState) {
407
+ if (!defined(snapshot.indexes) || snapshot.state !== SnapshotState.READY) {
408
+ throw new DeveloperError("Committing snapshot before it is READY.");
409
+ }
410
+
411
+ const frameNumber = frameState.frameNumber;
412
+ const currentSnapshot = primitive._snapshot;
413
+ const splatTexture = defined(currentSnapshot)
414
+ ? currentSnapshot.gaussianSplatTexture
415
+ : primitive.gaussianSplatTexture;
416
+ if (defined(splatTexture) && splatTexture !== snapshot.gaussianSplatTexture) {
417
+ retireTexture(primitive, splatTexture, frameNumber);
418
+ }
419
+
420
+ const sphericalHarmonicsTexture = defined(currentSnapshot)
421
+ ? currentSnapshot.sphericalHarmonicsTexture
422
+ : primitive.sphericalHarmonicsTexture;
423
+ if (
424
+ defined(sphericalHarmonicsTexture) &&
425
+ sphericalHarmonicsTexture !== snapshot.sphericalHarmonicsTexture
426
+ ) {
427
+ retireTexture(primitive, sphericalHarmonicsTexture, frameNumber);
428
+ }
429
+
430
+ primitive._snapshot = snapshot;
431
+ primitive._positions = snapshot.positions;
432
+ primitive._rotations = snapshot.rotations;
433
+ primitive._scales = snapshot.scales;
434
+ primitive._colors = snapshot.colors;
435
+ primitive._shData = snapshot.shData;
436
+ primitive._sphericalHarmonicsDegree = snapshot.sphericalHarmonicsDegree;
437
+ primitive._numSplats = snapshot.numSplats;
438
+ primitive._indexes = snapshot.indexes;
439
+ primitive.gaussianSplatTexture = snapshot.gaussianSplatTexture;
440
+ primitive.sphericalHarmonicsTexture = snapshot.sphericalHarmonicsTexture;
441
+ primitive._lastTextureWidth = snapshot.lastTextureWidth;
442
+ primitive._lastTextureHeight = snapshot.lastTextureHeight;
443
+ // Commit row-addressing params alongside the texture; the shader must
444
+ // always see the mask/shift that matches the active texture layout.
445
+ primitive._splatRowMask = snapshot.splatRowMask;
446
+ primitive._splatRowShift = snapshot.splatRowShift;
447
+ // Above 1.0 when the previous snapshot hit the hard cap; used in
448
+ // _wrappedUpdate to inflate traversal SSE and reduce tile load.
449
+ primitive._splatBudgetSSEScale = snapshot.splatBudgetSSEScale ?? 1.0;
450
+ primitive._hasGaussianSplatTexture = defined(snapshot.gaussianSplatTexture);
451
+ primitive._needsGaussianSplatTexture = false;
452
+ primitive._gaussianSplatTexturePending = false;
453
+
454
+ primitive._vertexArray = undefined;
455
+ primitive._vertexArrayLen = -1;
456
+ primitive._drawCommand = undefined;
457
+ primitive._sorterPromise = undefined;
458
+ primitive._activeSort = undefined;
459
+ primitive._sorterState = GaussianSplatSortingState.IDLE;
460
+ primitive._dirty = false;
461
+ }
462
+
463
+ /**
464
+ * Finalizes async splat texture generation for a snapshot. The resolved data
465
+ * updates or recreates GPU textures, and the snapshot transitions to
466
+ * {@link SnapshotState.TEXTURE_READY} when complete.
467
+ *
468
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
469
+ * @param {FrameState} frameState The current frame state.
470
+ * @param {GaussianSplatPrimitive.Snapshot} snapshot Snapshot being populated.
471
+ * @param {Promise<GaussianSplatPrimitive.AttributeTextureData>} promise Promise that resolves to packed splat texture data.
472
+ * @returns {Promise<void>}
473
+ * @private
474
+ */
475
+ async function processGeneratedSplatTextureData(
476
+ primitive,
477
+ frameState,
478
+ snapshot,
479
+ promise,
480
+ ) {
481
+ try {
482
+ const splatTextureData = await promise;
483
+ const maxTex = ContextLimits.maximumTextureSize;
484
+
485
+ // Use maximumTextureSize as the texture width; splatsPerRow = maxTex / 2
486
+ // (each splat occupies 2 side-by-side texels). The WASM buffer layout is
487
+ // width-independent, so the raw data is reused as-is.
488
+ const optimalWidth = maxTex;
489
+ let optimalHeight = Math.ceil(snapshot.numSplats / (maxTex / 2));
490
+ const splatRowShift = Math.log2(maxTex / 2);
491
+ const splatRowMask = maxTex / 2 - 1;
492
+
493
+ // Hard cap: >maxTex*(maxTex/2) splats cannot fit in any valid texture.
494
+ if (optimalHeight > maxTex) {
495
+ const originalCount = snapshot.numSplats;
496
+ optimalHeight = maxTex;
497
+ const splatsPerRow = optimalWidth / 2;
498
+ snapshot.numSplats = maxTex * splatsPerRow;
499
+ // Truncate CPU attribute arrays to match numSplats.
500
+ snapshot.positions = snapshot.positions.subarray(
501
+ 0,
502
+ snapshot.numSplats * 3,
503
+ );
504
+ snapshot.rotations = snapshot.rotations.subarray(
505
+ 0,
506
+ snapshot.numSplats * 4,
507
+ );
508
+ snapshot.scales = snapshot.scales.subarray(0, snapshot.numSplats * 3);
509
+ snapshot.colors = snapshot.colors.subarray(0, snapshot.numSplats * 4);
510
+ // shData is allocated independently and must be truncated separately.
511
+ if (defined(snapshot.shData)) {
512
+ const shPerSplat = snapshot.shData.length / originalCount;
513
+ snapshot.shData = snapshot.shData.subarray(
514
+ 0,
515
+ Math.floor(snapshot.numSplats * shPerSplat),
516
+ );
517
+ }
518
+ // Scale up SSE next frame so traversal selects fewer tiles.
519
+ snapshot.splatBudgetSSEScale = originalCount / snapshot.numSplats;
520
+ console.warn(
521
+ `[GaussianSplat][HARD CAP] ${originalCount} splats exceed the maximum texture capacity ` +
522
+ `(${maxTex}\u00d7${splatsPerRow} = ${snapshot.numSplats} splats at width=${optimalWidth}). ` +
523
+ `Rendering only the first ${snapshot.numSplats} splats to avoid a WebGL crash. ` +
524
+ `Increasing maximumScreenSpaceError by ${snapshot.splatBudgetSSEScale.toFixed(2)}x next frame.`,
525
+ );
526
+ } else {
527
+ // Within budget; clear any SSE inflation carried over from a previous cap.
528
+ snapshot.splatBudgetSSEScale = 1.0;
529
+ }
530
+
531
+ // Trim or zero-pad the raw WASM buffer to match the chosen dimensions.
532
+ const requiredLen = optimalWidth * optimalHeight * 4;
533
+ let effectiveData;
534
+ if (requiredLen <= splatTextureData.data.length) {
535
+ effectiveData = splatTextureData.data.subarray(0, requiredLen);
536
+ } else {
537
+ effectiveData = new Uint32Array(requiredLen);
538
+ effectiveData.set(splatTextureData.data);
539
+ }
540
+ const effectiveTextureData = {
541
+ width: optimalWidth,
542
+ height: optimalHeight,
543
+ data: effectiveData,
544
+ };
545
+
546
+ snapshot.splatRowMask = splatRowMask;
547
+ snapshot.splatRowShift = splatRowShift;
548
+
549
+ if (primitive._pendingSnapshot !== snapshot) {
550
+ snapshot.state = SnapshotState.BUILDING;
551
+ return;
552
+ }
553
+ if (!defined(snapshot.gaussianSplatTexture)) {
554
+ snapshot.gaussianSplatTexture = createGaussianSplatTexture(
555
+ frameState.context,
556
+ effectiveTextureData,
557
+ );
558
+ } else if (
559
+ snapshot.lastTextureHeight !== effectiveTextureData.height ||
560
+ snapshot.lastTextureWidth !== effectiveTextureData.width
561
+ ) {
562
+ const oldTex = snapshot.gaussianSplatTexture;
563
+ snapshot.gaussianSplatTexture = createGaussianSplatTexture(
564
+ frameState.context,
565
+ effectiveTextureData,
566
+ );
567
+ oldTex.destroy();
568
+ } else {
569
+ snapshot.gaussianSplatTexture.copyFrom({
570
+ source: {
571
+ width: effectiveTextureData.width,
572
+ height: effectiveTextureData.height,
573
+ arrayBufferView: effectiveTextureData.data,
574
+ },
575
+ });
576
+ }
577
+ snapshot.lastTextureHeight = effectiveTextureData.height;
578
+ snapshot.lastTextureWidth = effectiveTextureData.width;
579
+
580
+ if (defined(snapshot.shData) && snapshot.sphericalHarmonicsDegree > 0) {
581
+ const oldTex = snapshot.sphericalHarmonicsTexture;
582
+ const width = ContextLimits.maximumTextureSize;
583
+ const dims = snapshot.shCoefficientCount / 3;
584
+ const splatsPerRow = Math.floor(width / dims);
585
+ const floatsPerRow = splatsPerRow * (dims * 2);
586
+
587
+ const shHeight = Math.ceil(snapshot.numSplats / splatsPerRow);
588
+
589
+ // SH texture width is already maxTex and cannot be widened further.
590
+ // When height would exceed the GPU limit, gracefully disable SH for this
591
+ // snapshot and fall back to base color rendering rather than crashing.
592
+ if (shHeight > width) {
593
+ console.warn(
594
+ `[GaussianSplat][SHTexture] ${snapshot.numSplats} splats require SH height ${shHeight} > maxTex ${width}. ` +
595
+ `Disabling spherical harmonics for this snapshot (color-only fallback).`,
596
+ );
597
+ snapshot.sphericalHarmonicsDegree = 0;
598
+ if (defined(oldTex)) {
599
+ oldTex.destroy();
600
+ }
601
+ snapshot.sphericalHarmonicsTexture = undefined;
602
+ } else {
603
+ const texBuf = new Uint32Array(width * shHeight * 2);
604
+
605
+ let dataIndex = 0;
606
+ for (let i = 0; dataIndex < snapshot.shData.length; i += width * 2) {
607
+ texBuf.set(
608
+ snapshot.shData.subarray(dataIndex, dataIndex + floatsPerRow),
609
+ i,
610
+ );
611
+ dataIndex += floatsPerRow;
612
+ }
613
+ snapshot.sphericalHarmonicsTexture = createSphericalHarmonicsTexture(
614
+ frameState.context,
615
+ {
616
+ data: texBuf,
617
+ width: width,
618
+ height: shHeight,
619
+ },
620
+ );
621
+ if (defined(oldTex)) {
622
+ oldTex.destroy();
623
+ }
624
+ }
625
+ }
626
+
627
+ snapshot.state = SnapshotState.TEXTURE_READY;
628
+ } catch (error) {
629
+ console.error("Error generating Gaussian splat texture:", error);
630
+ snapshot.state = SnapshotState.BUILDING;
631
+ }
632
+ }
633
+
634
+ /**
635
+ * Resolves an in-flight sort for a pending snapshot, validates that the result
636
+ * still matches the active generation/request, and commits the snapshot when
637
+ * valid.
638
+ *
639
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
640
+ * @param {FrameState} frameState The current frame state.
641
+ * @param {object|undefined} pendingSort Pending sort metadata.
642
+ * @param {Promise<Uint32Array>} sortPromise Promise that resolves to sorted indexes.
643
+ * @returns {Promise<void>}
644
+ * @private
645
+ */
646
+ async function resolvePendingSnapshotSort(
647
+ primitive,
648
+ frameState,
649
+ pendingSort,
650
+ sortPromise,
651
+ ) {
652
+ try {
653
+ const sortedData = await sortPromise;
654
+ if (
655
+ !defined(pendingSort) ||
656
+ pendingSort.snapshot !== primitive._pendingSnapshot
657
+ ) {
658
+ return;
659
+ }
660
+ const expectedCount = pendingSort.expectedCount;
661
+ const currentCount = expectedCount;
662
+ const sortedLen = sortedData?.length;
663
+ if (expectedCount !== currentCount || sortedLen !== expectedCount) {
664
+ primitive._pendingSortPromise = undefined;
665
+ primitive._pendingSort = undefined;
666
+ if (pendingSort.snapshot.state === SnapshotState.SORTING) {
667
+ pendingSort.snapshot.state = SnapshotState.TEXTURE_READY;
668
+ }
669
+ return;
670
+ }
671
+
672
+ const pending = pendingSort.snapshot;
673
+ pending.indexes = sortedData;
674
+ pending.state = SnapshotState.READY;
675
+ primitive._pendingSortPromise = undefined;
676
+ primitive._pendingSort = undefined;
677
+ commitSnapshot(primitive, pending, frameState);
678
+ primitive._pendingSnapshot = undefined;
679
+ GaussianSplatPrimitive.buildGSplatDrawCommand(primitive, frameState);
680
+ } catch (err) {
681
+ if (
682
+ !defined(pendingSort) ||
683
+ pendingSort.snapshot !== primitive._pendingSnapshot
684
+ ) {
685
+ return;
686
+ }
687
+ primitive._pendingSortPromise = undefined;
688
+ primitive._pendingSort = undefined;
689
+ if (pendingSort.snapshot.state === SnapshotState.SORTING) {
690
+ pendingSort.snapshot.state = SnapshotState.TEXTURE_READY;
691
+ }
692
+ primitive._sorterState = GaussianSplatSortingState.ERROR;
693
+ primitive._sorterError = err;
694
+ }
695
+ }
696
+
697
+ /**
698
+ * Resolves an in-flight steady-state sort for the current committed snapshot.
699
+ * Results are ignored when superseded; otherwise, they advance sorting state
700
+ * to {@link GaussianSplatSortingState.SORTED}.
701
+ *
702
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
703
+ * @param {object|undefined} activeSort Active sort metadata.
704
+ * @param {Promise<Uint32Array>} sortPromise Promise that resolves to sorted indexes.
705
+ * @returns {Promise<void>}
706
+ * @private
707
+ */
708
+ async function resolveSteadySort(primitive, activeSort, sortPromise) {
709
+ try {
710
+ const sortedData = await sortPromise;
711
+ const isActive = isActiveSort(primitive, activeSort);
712
+ const expectedCount = activeSort?.expectedCount;
713
+ const currentCount = expectedCount;
714
+ const sortedLen = sortedData?.length;
715
+ const isMismatch =
716
+ expectedCount !== currentCount || sortedLen !== expectedCount;
717
+ if (!isActive || isMismatch) {
718
+ if (isActive) {
719
+ primitive._sorterPromise = undefined;
720
+ primitive._sorterState = GaussianSplatSortingState.IDLE;
721
+ }
722
+ return;
723
+ }
724
+ primitive._indexes = sortedData;
725
+ primitive._sorterState = GaussianSplatSortingState.SORTED;
726
+ } catch (err) {
727
+ if (!isActiveSort(primitive, activeSort)) {
728
+ return;
729
+ }
730
+ primitive._sorterState = GaussianSplatSortingState.ERROR;
731
+ primitive._sorterError = err;
732
+ }
733
+ }
734
+
735
+ /**
736
+ * Creates a GPU texture that stores packed spherical harmonics coefficient
737
+ * data for all splats. The texture uses a two-channel unsigned-integer format
738
+ * ({@link PixelFormat.RG_INTEGER}) and nearest-neighbor sampling.
739
+ *
740
+ * @param {Context} context The WebGL context.
741
+ * @param {GaussianSplatPrimitive.SphericalHarmonicsTextureData} shData Packed SH texture payload.
742
+ * @returns {Texture} The created texture.
743
+ * @private
744
+ */
745
+ function createSphericalHarmonicsTexture(context, shData) {
746
+ const texture = new Texture({
747
+ context: context,
748
+ source: {
749
+ width: shData.width,
750
+ height: shData.height,
751
+ arrayBufferView: shData.data,
752
+ },
753
+ preMultiplyAlpha: false,
754
+ skipColorSpaceConversion: true,
755
+ pixelFormat: PixelFormat.RG_INTEGER,
756
+ pixelDatatype: PixelDatatype.UNSIGNED_INT,
757
+ flipY: false,
758
+ sampler: Sampler.NEAREST,
759
+ });
760
+
761
+ return texture;
762
+ }
763
+
764
+ /**
765
+ * Creates a GPU texture that stores the packed Gaussian splat attributes
766
+ * (positions, scales, rotations, colors). The texture uses an RGBA
767
+ * unsigned-integer format ({@link PixelFormat.RGBA_INTEGER}) and
768
+ * nearest-neighbor sampling.
769
+ *
770
+ * @param {Context} context The WebGL context.
771
+ * @param {GaussianSplatPrimitive.AttributeTextureData} splatTextureData Packed splat texture payload.
772
+ * @returns {Texture} The created texture.
773
+ * @private
774
+ */
775
+ function createGaussianSplatTexture(context, splatTextureData) {
776
+ return new Texture({
777
+ context: context,
778
+ source: {
779
+ width: splatTextureData.width,
780
+ height: splatTextureData.height,
781
+ arrayBufferView: splatTextureData.data,
782
+ },
783
+ preMultiplyAlpha: false,
784
+ skipColorSpaceConversion: true,
785
+ pixelFormat: PixelFormat.RGBA_INTEGER,
786
+ pixelDatatype: PixelDatatype.UNSIGNED_INT,
787
+ flipY: false,
788
+ sampler: Sampler.NEAREST,
789
+ });
790
+ }
791
+
792
+ /** A primitive that renders Gaussian splats.
793
+ * <p>
794
+ * This primitive is used to render Gaussian splats in a 3D Tileset.
795
+ * It is designed to work with the KHR_gaussian_splatting and KHR_gaussian_splatting_compression_spz_2 extensions.
796
+ * </p>
797
+ * @alias GaussianSplatPrimitive
798
+ * @constructor
799
+ * @param {object} options An object with the following properties:
800
+ * @param {Cesium3DTileset} options.tileset The tileset that this primitive belongs to.
801
+ * @param {boolean} [options.debugShowBoundingVolume=false] Whether to show the bounding volume of the primitive for debugging purposes.
802
+ * @private
803
+ */
804
+
805
+ function GaussianSplatPrimitive(options) {
806
+ options = options ?? Frozen.EMPTY_OBJECT;
807
+
808
+ /**
809
+ * The positions of the Gaussian splats in the primitive.
810
+ * @type {undefined|Float32Array}
811
+ * @private
812
+ */
813
+ this._positions = undefined;
814
+ /**
815
+ * The rotations of the Gaussian splats in the primitive.
816
+ * @type {undefined|Float32Array}
817
+ * @private
818
+ */
819
+ this._rotations = undefined;
820
+ /**
821
+ * The scales of the Gaussian splats in the primitive.
822
+ * @type {undefined|Float32Array}
823
+ * @private
824
+ */
825
+ this._scales = undefined;
826
+ /**
827
+ * The colors of the Gaussian splats in the primitive.
828
+ * @type {undefined|Uint8Array}
829
+ * @private
830
+ */
831
+ this._colors = undefined;
832
+ /**
833
+ * The indexes of the Gaussian splats in the primitive.
834
+ * Used to index into the splat attribute texture in the vertex shader.
835
+ * @type {undefined|Uint32Array}
836
+ * @private
837
+ */
838
+ this._indexes = undefined;
839
+ /**
840
+ * The number of splats in the primitive.
841
+ * This is the total number of splats across all selected tiles.
842
+ * @type {number}
843
+ * @private
844
+ */
845
+ this._numSplats = 0;
846
+ /**
847
+ * Indicates whether or not the primitive needs a Gaussian splat texture.
848
+ * This is set to true when the primitive is first created or when the splat attributes change.
849
+ * @type {boolean}
850
+ * @private
851
+ */
852
+ this._needsGaussianSplatTexture = true;
853
+ this._snapshot = undefined;
854
+ this._pendingSnapshot = undefined;
855
+ this._retiredTextures = [];
856
+ this._aggregateScratchBuffers = {
857
+ positions: [],
858
+ scales: [],
859
+ rotations: [],
860
+ colors: [],
861
+ };
862
+
863
+ /**
864
+ * Scratch buffer re-used across frames for aggregating packed spherical
865
+ * harmonics data so that a fresh typed-array allocation is avoided on
866
+ * every tile-selection change.
867
+ * @type {undefined|Uint32Array}
868
+ * @private
869
+ */
870
+ this._scratchAggregateShBuffer = undefined;
871
+ this._selectedTilesStableFrames = 0;
872
+ this._needsSnapshotRebuild = false;
873
+ this._snapshotRebuildStallFrames = 0;
874
+
875
+ /**
876
+ * The previous view matrix used to determine if the primitive needs to be updated.
877
+ * This is used to avoid unnecessary updates when the view matrix hasn't changed.
878
+ * @type {Matrix4}
879
+ * @private
880
+ */
881
+ this._prevViewMatrix = new Matrix4();
882
+
883
+ /**
884
+ * Indicates whether or not to show the bounding volume of the primitive for debugging purposes.
885
+ * This is used to visualize the bounding volume of the primitive in the scene.
886
+ * @type {boolean}
887
+ * @private
888
+ */
889
+ this._debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
890
+
891
+ /**
892
+ * The texture used to store the Gaussian splat attributes.
893
+ * This texture is created from the splat attributes (positions, scales, rotations, colors)
894
+ * and is used in the vertex shader to render the splats.
895
+ * @type {undefined|Texture}
896
+ * @private
897
+ * @see {@link GaussianSplatTextureGenerator}
898
+ */
899
+ this.gaussianSplatTexture = undefined;
900
+
901
+ /**
902
+ * The texture used to store the spherical harmonics coefficients for the Gaussian splats.
903
+ * @type {undefined|Texture}
904
+ * @private
905
+ */
906
+ this.sphericalHarmonicsTexture = undefined;
907
+
908
+ /**
909
+ * The last width of the Gaussian splat texture.
910
+ * This is used to track changes in the texture size and update the primitive accordingly.
911
+ * @type {number}
912
+ * @private
913
+ */
914
+ this._lastTextureWidth = 0;
915
+ /**
916
+ * The last height of the Gaussian splat texture.
917
+ * This is used to track changes in the texture size and update the primitive accordingly.
918
+ * @type {number}
919
+ * @private
920
+ */
921
+ this._lastTextureHeight = 0;
922
+ /**
923
+ * The vertex array used to render the Gaussian splats.
924
+ * This vertex array contains the attributes needed to render the splats, such as positions and indexes.
925
+ * @type {undefined|VertexArray}
926
+ * @private
927
+ */
928
+ this._vertexArray = undefined;
929
+ /**
930
+ * The length of the vertex array, used to track changes in the number of splats.
931
+ * This is used to determine if the vertex array needs to be rebuilt.
932
+ * @type {number}
933
+ * @private
934
+ */
935
+ this._vertexArrayLen = -1;
936
+ this._splitDirection = SplitDirection.NONE;
937
+
938
+ /**
939
+ * The dirty flag forces the primitive to render this frame.
940
+ * @type {boolean}
941
+ * @private
942
+ */
943
+ this._dirty = false;
944
+
945
+ this._tileset = options.tileset;
946
+
947
+ this._baseTilesetUpdate = this._tileset.update;
948
+ this._tileset.update = this._wrappedUpdate.bind(this);
949
+
950
+ this._tileset.tileLoad.addEventListener(this.onTileLoad, this);
951
+ this._tileset.tileVisible.addEventListener(this.onTileVisible, this);
952
+
953
+ /**
954
+ * Tracks current count of selected tiles.
955
+ * This is used to determine if the primitive needs to be rebuilt.
956
+ * @type {number}
957
+ * @private
958
+ */
959
+ this.selectedTileLength = 0;
960
+ this._selectedTileSet = new Set();
961
+
962
+ /**
963
+ * Indicates whether or not the primitive is ready for use.
964
+ * @type {boolean}
965
+ * @private
966
+ */
967
+ this._ready = false;
968
+
969
+ /**
970
+ * Indicates whether or not the primitive has a Gaussian splat texture.
971
+ * @type {boolean}
972
+ * @private
973
+ */
974
+ this._hasGaussianSplatTexture = false;
975
+
976
+ /**
977
+ * Indicates whether or not the primitive is currently generating a Gaussian splat texture.
978
+ * @type {boolean}
979
+ * @private
980
+ */
981
+ this._gaussianSplatTexturePending = false;
982
+
983
+ /**
984
+ * The draw command used to render the Gaussian splats.
985
+ * @type {undefined|DrawCommand}
986
+ * @private
987
+ */
988
+ this._drawCommand = undefined;
989
+ this._drawCommandModelMatrix = new Matrix4();
990
+ /**
991
+ * The root transform of the tileset.
992
+ * This is used to transform the splats into world space.
993
+ * @type {undefined|Matrix4}
994
+ * @private
995
+ */
996
+ this._rootTransform = undefined;
997
+
998
+ /**
999
+ * The axis correction matrix to transform the splats from Y-up to Z-up.
1000
+ * @type {Matrix4}
1001
+ * @private
1002
+ */
1003
+ this._axisCorrectionMatrix = ModelUtility.getAxisCorrectionMatrix(
1004
+ Axis.Y,
1005
+ Axis.X,
1006
+ new Matrix4(),
1007
+ );
1008
+
1009
+ /**
1010
+ * Cached inverse rotation for SH evaluation, updated each snapshot rebuild.
1011
+ * Converts a world-space view direction to the original GLB Y-up model space
1012
+ * so that spherical harmonic coefficients are evaluated in the correct frame.
1013
+ * @type {Matrix3}
1014
+ * @private
1015
+ */
1016
+ this._shInverseRotation = new Matrix3();
1017
+
1018
+ /**
1019
+ * Indicates whether or not the primitive has been destroyed.
1020
+ * @type {boolean}
1021
+ * @private
1022
+ */
1023
+ this._isDestroyed = false;
1024
+
1025
+ /**
1026
+ * The state of the Gaussian splat sorting process.
1027
+ * This is used to track the progress of the sorting operation.
1028
+ * @type {GaussianSplatSortingState}
1029
+ * @private
1030
+ */
1031
+ this._sorterState = GaussianSplatSortingState.IDLE;
1032
+ /**
1033
+ * A promise that resolves when the Gaussian splat sorting operation is complete.
1034
+ * This is used to track the progress of the sorting operation.
1035
+ * @type {undefined|Promise}
1036
+ * @private
1037
+ */
1038
+ this._sorterPromise = undefined;
1039
+ this._splatDataGeneration = 0;
1040
+ this._sortRequestId = 0;
1041
+ this._activeSort = undefined;
1042
+ this._pendingSortPromise = undefined;
1043
+ this._pendingSort = undefined;
1044
+ this._lastSteadySortFrameNumber = -1;
1045
+ this._lastSteadySortCameraPosition = new Cartesian3();
1046
+ this._hasLastSteadySortCameraPosition = false;
1047
+ this._lastSteadySortCameraDirection = new Cartesian3();
1048
+ this._hasLastSteadySortCameraDirection = false;
1049
+
1050
+ /**
1051
+ * An error that occurred during the Gaussian splat sorting operation.
1052
+ * Thrown when state is ERROR.
1053
+ * @type {undefined|Error}
1054
+ * @private
1055
+ */
1056
+ this._sorterError = undefined;
1057
+
1058
+ // Splat texture row-addressing params; forwarded to the shader as uniforms.
1059
+ // The texture width is always maximumTextureSize (varies by GPU), so these
1060
+ // are computed per-snapshot and initialized here as safe placeholders.
1061
+ this._splatRowMask = 0; // overwritten on first snapshot commit
1062
+ this._splatRowShift = 0; // overwritten on first snapshot commit
1063
+
1064
+ /**
1065
+ * Multiplier applied to maximumScreenSpaceError during tile traversal when
1066
+ * the previous snapshot exceeded the splat texture budget. A value above 1.0
1067
+ * biases traversal toward coarser LODs, lowering the total splat count.
1068
+ * Resets to 1.0 once the splat count is within budget.
1069
+ * @type {number}
1070
+ * @private
1071
+ */
1072
+ this._splatBudgetSSEScale = 1.0;
1073
+ }
1074
+
1075
+ Object.defineProperties(GaussianSplatPrimitive.prototype, {
1076
+ /**
1077
+ * Indicates whether the primitive is ready for use.
1078
+ * @memberof GaussianSplatPrimitive.prototype
1079
+ * @type {boolean}
1080
+ * @readonly
1081
+ */
1082
+ ready: {
1083
+ get: function () {
1084
+ return this._ready;
1085
+ },
1086
+ },
1087
+
1088
+ /**
1089
+ * Indicates whether the primitive has completed loading and sorting.
1090
+ * @memberof GaussianSplatPrimitive.prototype
1091
+ * @type {boolean}
1092
+ * @private
1093
+ * @readonly
1094
+ */
1095
+ isStable: {
1096
+ get: function () {
1097
+ return (
1098
+ !this._dirty &&
1099
+ (!defined(this._pendingSnapshot) ||
1100
+ this._pendingSnapshot.state === SnapshotState.READY)
1101
+ );
1102
+ },
1103
+ },
1104
+
1105
+ /**
1106
+ * The {@link SplitDirection} to apply to this point.
1107
+ * @memberof GaussianSplatPrimitive.prototype
1108
+ * @type {SplitDirection}
1109
+ * @default {@link SplitDirection.NONE}
1110
+ */
1111
+ splitDirection: {
1112
+ get: function () {
1113
+ return this._splitDirection;
1114
+ },
1115
+ set: function (value) {
1116
+ if (this._splitDirection !== value) {
1117
+ this._splitDirection = value;
1118
+ this._dirty = true;
1119
+ }
1120
+ },
1121
+ },
1122
+ });
1123
+
1124
+ /**
1125
+ * Replaces the tileset's own update function so this primitive is updated
1126
+ * immediately after the tileset traversal, within the same frame. When
1127
+ * _splatBudgetSSEScale is above 1.0, maximumScreenSpaceError is inflated
1128
+ * for the duration of the traversal to reduce the number of tiles selected.
1129
+ * @param {FrameState} frameState
1130
+ * @private
1131
+ */
1132
+ GaussianSplatPrimitive.prototype._wrappedUpdate = function (frameState) {
1133
+ const tileset = this._tileset;
1134
+ if (this._splatBudgetSSEScale !== 1.0) {
1135
+ // Inflate SSE for this traversal only; the original value is restored
1136
+ // immediately so the user-visible tileset property is never permanently changed.
1137
+ const originalSSE = tileset.maximumScreenSpaceError;
1138
+ tileset.maximumScreenSpaceError *= this._splatBudgetSSEScale;
1139
+ this._baseTilesetUpdate.call(tileset, frameState);
1140
+ tileset.maximumScreenSpaceError = originalSSE;
1141
+ } else {
1142
+ this._baseTilesetUpdate.call(tileset, frameState);
1143
+ }
1144
+ this.update(frameState);
1145
+ };
1146
+
1147
+ /**
1148
+ * Destroys the primitive and releases its resources in a deterministic manner.
1149
+ * @private
1150
+ */
1151
+ GaussianSplatPrimitive.prototype.destroy = function () {
1152
+ this._positions = undefined;
1153
+ this._rotations = undefined;
1154
+ this._scales = undefined;
1155
+ this._colors = undefined;
1156
+ this._indexes = undefined;
1157
+ destroySnapshotTextures(this._pendingSnapshot);
1158
+ destroySnapshotTextures(this._snapshot);
1159
+ if (defined(this._retiredTextures)) {
1160
+ for (let i = 0; i < this._retiredTextures.length; i++) {
1161
+ this._retiredTextures[i].texture.destroy();
1162
+ }
1163
+ }
1164
+ this._retiredTextures = [];
1165
+ this._pendingSnapshot = undefined;
1166
+ this._snapshot = undefined;
1167
+ this._aggregateScratchBuffers = undefined;
1168
+ this.gaussianSplatTexture = undefined;
1169
+ this.sphericalHarmonicsTexture = undefined;
1170
+
1171
+ const drawCommand = this._drawCommand;
1172
+ if (defined(drawCommand)) {
1173
+ drawCommand.shaderProgram =
1174
+ drawCommand.shaderProgram && drawCommand.shaderProgram.destroy();
1175
+ }
1176
+
1177
+ if (defined(this._vertexArray)) {
1178
+ this._vertexArray.destroy();
1179
+ this._vertexArray = undefined;
1180
+ }
1181
+
1182
+ this._tileset.update = this._baseTilesetUpdate.bind(this._tileset);
1183
+
1184
+ return destroyObject(this);
1185
+ };
1186
+
1187
+ /**
1188
+ * Returns true if this object was destroyed; otherwise, false.
1189
+ * <br /><br />
1190
+ * If this object was destroyed, it should not be used; calling any function other than
1191
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
1192
+ * @returns {boolean} Returns true if the primitive has been destroyed, otherwise false.
1193
+ * @private
1194
+ */
1195
+ GaussianSplatPrimitive.prototype.isDestroyed = function () {
1196
+ return this._isDestroyed;
1197
+ };
1198
+
1199
+ /**
1200
+ * Event callback for when a tile is loaded.
1201
+ * This method is called when a tile is loaded and the primitive needs to be updated.
1202
+ * It sets the dirty flag to true, indicating that the primitive needs to be rebuilt.
1203
+ * @param {Cesium3DTile} tile
1204
+ * @private
1205
+ */
1206
+ GaussianSplatPrimitive.prototype.onTileLoad = function (tile) {
1207
+ this._dirty = true;
1208
+ };
1209
+
1210
+ /**
1211
+ * Callback for visible tiles.
1212
+ * @param {Cesium3DTile} tile
1213
+ * @private
1214
+ */
1215
+ GaussianSplatPrimitive.prototype.onTileVisible = function (tile) {};
1216
+
1217
+ /**
1218
+ * Transforms the tile's splat primitive attributes into world space.
1219
+ * <br /><br />
1220
+ * This method applies the computed transform of the tile and the tileset's bounding sphere
1221
+ * to the splat primitive's position, rotation, and scale attributes.
1222
+ * It modifies the attributes in place, transforming them from local space to world space.
1223
+ *
1224
+ * @param {Cesium3DTile} tile
1225
+ * @private
1226
+ */
1227
+ GaussianSplatPrimitive.transformTile = function (tile) {
1228
+ const computedTransform = tile.computedTransform;
1229
+ const gltfPrimitive = tile.content.gltfPrimitive;
1230
+ const gaussianSplatPrimitive = tile.tileset.gaussianSplatPrimitive;
1231
+
1232
+ if (gaussianSplatPrimitive._rootTransform === undefined) {
1233
+ gaussianSplatPrimitive._rootTransform = Transforms.eastNorthUpToFixedFrame(
1234
+ tile.tileset.boundingSphere.center,
1235
+ );
1236
+ }
1237
+ const rootTransform = gaussianSplatPrimitive._rootTransform;
1238
+
1239
+ const computedModelMatrix = Matrix4.multiplyTransformation(
1240
+ computedTransform,
1241
+ gaussianSplatPrimitive._axisCorrectionMatrix,
1242
+ scratchMatrix4A,
1243
+ );
1244
+
1245
+ Matrix4.multiplyTransformation(
1246
+ computedModelMatrix,
1247
+ tile.content.worldTransform,
1248
+ computedModelMatrix,
1249
+ );
1250
+
1251
+ // toLocal is inverse(rootTransform) only. tileset.modelMatrix is already
1252
+ // factored into computedModelMatrix via tile.computedTransform, so its effect
1253
+ // is baked directly into the splat values rather than split into the draw
1254
+ // command's modelMatrix. This keeps czm_view * modelMatrix numerically small,
1255
+ // avoiding float32 precision loss at ECEF-scale translations.
1256
+ const toLocal = Matrix4.inverse(rootTransform, scratchMatrix4C);
1257
+ const transform = Matrix4.multiplyTransformation(
1258
+ toLocal,
1259
+ computedModelMatrix,
1260
+ scratchMatrix4A,
1261
+ );
1262
+ const cachedTransform = tile.content._lastSplatTransform;
1263
+ if (
1264
+ tile.content._transformed &&
1265
+ defined(cachedTransform) &&
1266
+ Matrix4.equalsEpsilon(transform, cachedTransform, TRANSFORM_CACHE_EPSILON)
1267
+ ) {
1268
+ return;
1269
+ }
1270
+ const positions = tile.content.positions;
1271
+ const rotations = tile.content.rotations;
1272
+ const scales = tile.content.scales;
1273
+
1274
+ // Extract the rotation quaternion from transform once, before the per-splat
1275
+ // loop. The columns of transform's upper-left 3x3 have magnitude ≈ 1 (rigid
1276
+ // body placement), so normalizing is numerically stable. We cannot decompose
1277
+ // the per-splat combined matrix (transform × TRS_i) instead, because each
1278
+ // splat's scale can be very small, causing catastrophic cancellation when
1279
+ // dividing to recover a pure rotation matrix.
1280
+ const col0Len = Math.sqrt(
1281
+ transform[0] * transform[0] +
1282
+ transform[1] * transform[1] +
1283
+ transform[2] * transform[2],
1284
+ );
1285
+ const col1Len = Math.sqrt(
1286
+ transform[4] * transform[4] +
1287
+ transform[5] * transform[5] +
1288
+ transform[6] * transform[6],
1289
+ );
1290
+ const col2Len = Math.sqrt(
1291
+ transform[8] * transform[8] +
1292
+ transform[9] * transform[9] +
1293
+ transform[10] * transform[10],
1294
+ );
1295
+ scratchMatrix3[0] = transform[0] / col0Len;
1296
+ scratchMatrix3[1] = transform[1] / col0Len;
1297
+ scratchMatrix3[2] = transform[2] / col0Len;
1298
+ scratchMatrix3[3] = transform[4] / col1Len;
1299
+ scratchMatrix3[4] = transform[5] / col1Len;
1300
+ scratchMatrix3[5] = transform[6] / col1Len;
1301
+ scratchMatrix3[6] = transform[8] / col2Len;
1302
+ scratchMatrix3[7] = transform[9] / col2Len;
1303
+ scratchMatrix3[8] = transform[10] / col2Len;
1304
+ const dot01 =
1305
+ scratchMatrix3[0] * scratchMatrix3[3] +
1306
+ scratchMatrix3[1] * scratchMatrix3[4] +
1307
+ scratchMatrix3[2] * scratchMatrix3[5];
1308
+ const dot02 =
1309
+ scratchMatrix3[0] * scratchMatrix3[6] +
1310
+ scratchMatrix3[1] * scratchMatrix3[7] +
1311
+ scratchMatrix3[2] * scratchMatrix3[8];
1312
+ const dot12 =
1313
+ scratchMatrix3[3] * scratchMatrix3[6] +
1314
+ scratchMatrix3[4] * scratchMatrix3[7] +
1315
+ scratchMatrix3[5] * scratchMatrix3[8];
1316
+ const hasUnitScale =
1317
+ Math.abs(col0Len - 1.0) <= UNIT_SCALE_FAST_PATH_EPSILON &&
1318
+ Math.abs(col1Len - 1.0) <= UNIT_SCALE_FAST_PATH_EPSILON &&
1319
+ Math.abs(col2Len - 1.0) <= UNIT_SCALE_FAST_PATH_EPSILON;
1320
+ const isOrthogonal =
1321
+ Math.abs(dot01) <= RIGID_TRANSFORM_EPSILON &&
1322
+ Math.abs(dot02) <= RIGID_TRANSFORM_EPSILON &&
1323
+ Math.abs(dot12) <= RIGID_TRANSFORM_EPSILON;
1324
+ const determinant =
1325
+ scratchMatrix3[0] *
1326
+ (scratchMatrix3[4] * scratchMatrix3[8] -
1327
+ scratchMatrix3[5] * scratchMatrix3[7]) -
1328
+ scratchMatrix3[3] *
1329
+ (scratchMatrix3[1] * scratchMatrix3[8] -
1330
+ scratchMatrix3[2] * scratchMatrix3[7]) +
1331
+ scratchMatrix3[6] *
1332
+ (scratchMatrix3[1] * scratchMatrix3[5] -
1333
+ scratchMatrix3[2] * scratchMatrix3[4]);
1334
+ const useFastPath =
1335
+ hasUnitScale &&
1336
+ isOrthogonal &&
1337
+ Math.abs(determinant - 1.0) <= RIGID_TRANSFORM_EPSILON;
1338
+ Quaternion.fromRotationMatrix(scratchMatrix3, scratchTransformQuat);
1339
+ Quaternion.normalize(scratchTransformQuat, scratchTransformQuat);
1340
+ const attributePositions = ModelUtility.getAttributeBySemantic(
1341
+ gltfPrimitive,
1342
+ VertexAttributeSemantic.POSITION,
1343
+ ).typedArray;
1344
+
1345
+ const attributeRotations = ModelUtility.getAttributeBySemantic(
1346
+ gltfPrimitive,
1347
+ VertexAttributeSemantic.ROTATION,
1348
+ ).typedArray;
1349
+
1350
+ const attributeScales = ModelUtility.getAttributeBySemantic(
1351
+ gltfPrimitive,
1352
+ VertexAttributeSemantic.SCALE,
1353
+ ).typedArray;
1354
+
1355
+ const position = scratchTransformPosition;
1356
+ const rotation = scratchTransformRotation;
1357
+ const scale = scratchTransformScale;
1358
+ for (let i = 0; i < attributePositions.length / 3; ++i) {
1359
+ position.x = attributePositions[i * 3];
1360
+ position.y = attributePositions[i * 3 + 1];
1361
+ position.z = attributePositions[i * 3 + 2];
1362
+
1363
+ rotation.x = attributeRotations[i * 4];
1364
+ rotation.y = attributeRotations[i * 4 + 1];
1365
+ rotation.z = attributeRotations[i * 4 + 2];
1366
+ rotation.w = attributeRotations[i * 4 + 3];
1367
+
1368
+ scale.x = attributeScales[i * 3];
1369
+ scale.y = attributeScales[i * 3 + 1];
1370
+ scale.z = attributeScales[i * 3 + 2];
1371
+
1372
+ if (useFastPath) {
1373
+ Matrix4.multiplyByPoint(transform, position, position);
1374
+ Quaternion.multiply(scratchTransformQuat, rotation, rotation);
1375
+ Quaternion.normalize(rotation, rotation);
1376
+ } else {
1377
+ Matrix4.fromTranslationQuaternionRotationScale(
1378
+ position,
1379
+ rotation,
1380
+ scale,
1381
+ scratchMatrix4D,
1382
+ );
1383
+
1384
+ Matrix4.multiplyTransformation(
1385
+ transform,
1386
+ scratchMatrix4D,
1387
+ scratchMatrix4D,
1388
+ );
1389
+
1390
+ Matrix4.getTranslation(scratchMatrix4D, position);
1391
+ Matrix4.getScale(scratchMatrix4D, scale);
1392
+ // rotation still holds the original splat quaternion from attributeRotations.
1393
+ // Apply the transform's rotation by left-multiplying the transform quaternion.
1394
+ Quaternion.multiply(scratchTransformQuat, rotation, rotation);
1395
+ Quaternion.normalize(rotation, rotation);
1396
+ }
1397
+
1398
+ positions[i * 3] = position.x;
1399
+ positions[i * 3 + 1] = position.y;
1400
+ positions[i * 3 + 2] = position.z;
1401
+
1402
+ rotations[i * 4] = rotation.x;
1403
+ rotations[i * 4 + 1] = rotation.y;
1404
+ rotations[i * 4 + 2] = rotation.z;
1405
+ rotations[i * 4 + 3] = rotation.w;
1406
+
1407
+ scales[i * 3] = scale.x;
1408
+ scales[i * 3 + 1] = scale.y;
1409
+ scales[i * 3 + 2] = scale.z;
1410
+ }
1411
+ tile.content._lastSplatTransform = Matrix4.clone(
1412
+ transform,
1413
+ tile.content._lastSplatTransform,
1414
+ );
1415
+ tile.content._transformed = true;
1416
+ };
1417
+
1418
+ /**
1419
+ * Generates the Gaussian splat texture for the primitive.
1420
+ * This method creates a texture from the splat attributes (positions, scales, rotations, colors)
1421
+ * and updates the primitive's state accordingly.
1422
+ *
1423
+ * @see {@link GaussianSplatTextureGenerator}
1424
+ *
1425
+ * @param {GaussianSplatPrimitive} primitive The owning primitive.
1426
+ * @param {FrameState} frameState The current frame state.
1427
+ * @param {GaussianSplatPrimitive.Snapshot} snapshot Snapshot being populated.
1428
+ * @private
1429
+ */
1430
+ GaussianSplatPrimitive.generateSplatTexture = function (
1431
+ primitive,
1432
+ frameState,
1433
+ snapshot,
1434
+ ) {
1435
+ if (!defined(snapshot) || snapshot.state !== SnapshotState.BUILDING) {
1436
+ return;
1437
+ }
1438
+ snapshot.state = SnapshotState.TEXTURE_PENDING;
1439
+ const promise = GaussianSplatTextureGenerator.generateFromAttributes({
1440
+ attributes: {
1441
+ positions: new Float32Array(snapshot.positions),
1442
+ scales: new Float32Array(snapshot.scales),
1443
+ rotations: new Float32Array(snapshot.rotations),
1444
+ colors: new Uint8Array(snapshot.colors),
1445
+ },
1446
+ count: snapshot.numSplats,
1447
+ });
1448
+ if (!defined(promise)) {
1449
+ snapshot.state = SnapshotState.BUILDING;
1450
+ return;
1451
+ }
1452
+ void processGeneratedSplatTextureData(
1453
+ primitive,
1454
+ frameState,
1455
+ snapshot,
1456
+ promise,
1457
+ );
1458
+ };
1459
+
1460
+ /**
1461
+ * Builds the draw command for the Gaussian splat primitive.
1462
+ * This method sets up the shader program, render state, and vertex array for rendering the Gaussian splats.
1463
+ * It also configures the attributes and uniforms required for rendering.
1464
+ *
1465
+ * @param {GaussianSplatPrimitive} primitive
1466
+ * @param {FrameState} frameState
1467
+ *
1468
+ * @private
1469
+ */
1470
+ GaussianSplatPrimitive.buildGSplatDrawCommand = function (
1471
+ primitive,
1472
+ frameState,
1473
+ ) {
1474
+ const tileset = primitive._tileset;
1475
+ const renderResources = new GaussianSplatRenderResources(primitive);
1476
+ const { shaderBuilder } = renderResources;
1477
+ const renderStateOptions = renderResources.renderStateOptions;
1478
+ renderStateOptions.cull.enabled = false;
1479
+ renderStateOptions.depthMask = false;
1480
+ renderStateOptions.depthTest.enabled = true;
1481
+ renderStateOptions.blending = BlendingState.PRE_MULTIPLIED_ALPHA_BLEND;
1482
+ renderResources.alphaOptions.pass = Pass.GAUSSIAN_SPLATS;
1483
+
1484
+ shaderBuilder.addAttribute("vec2", "a_screenQuadPosition");
1485
+ shaderBuilder.addAttribute("float", "a_splatIndex");
1486
+ shaderBuilder.addVarying("vec4", "v_splatColor");
1487
+ shaderBuilder.addVarying("vec2", "v_vertPos");
1488
+ shaderBuilder.addUniform(
1489
+ "float",
1490
+ "u_splitDirection",
1491
+ ShaderDestination.VERTEX,
1492
+ );
1493
+ shaderBuilder.addVarying("float", "v_splitDirection");
1494
+ shaderBuilder.addUniform(
1495
+ "highp usampler2D",
1496
+ "u_splatAttributeTexture",
1497
+ ShaderDestination.VERTEX,
1498
+ );
1499
+
1500
+ shaderBuilder.addUniform(
1501
+ "float",
1502
+ "u_sphericalHarmonicsDegree",
1503
+ ShaderDestination.VERTEX,
1504
+ );
1505
+
1506
+ shaderBuilder.addUniform("float", "u_splatScale", ShaderDestination.VERTEX);
1507
+
1508
+ shaderBuilder.addUniform(
1509
+ "vec3",
1510
+ "u_cameraPositionWC",
1511
+ ShaderDestination.VERTEX,
1512
+ );
1513
+
1514
+ shaderBuilder.addUniform(
1515
+ "mat3",
1516
+ "u_inverseModelRotation",
1517
+ ShaderDestination.VERTEX,
1518
+ );
1519
+
1520
+ const uniformMap = renderResources.uniformMap;
1521
+
1522
+ // Row-addressing uniforms: read from primitive each draw so they stay in sync
1523
+ // with the texture width chosen for the current snapshot.
1524
+ shaderBuilder.addUniform("int", "u_splatRowMask", ShaderDestination.VERTEX);
1525
+ shaderBuilder.addUniform("int", "u_splatRowShift", ShaderDestination.VERTEX);
1526
+
1527
+ const textureCache = primitive.gaussianSplatTexture;
1528
+ uniformMap.u_splatAttributeTexture = function () {
1529
+ return textureCache;
1530
+ };
1531
+ uniformMap.u_splatRowMask = function () {
1532
+ return primitive._splatRowMask;
1533
+ };
1534
+ uniformMap.u_splatRowShift = function () {
1535
+ return primitive._splatRowShift;
1536
+ };
1537
+
1538
+ if (primitive._sphericalHarmonicsDegree > 0) {
1539
+ shaderBuilder.addDefine(
1540
+ "HAS_SPHERICAL_HARMONICS",
1541
+ "1",
1542
+ ShaderDestination.VERTEX,
1543
+ );
1544
+ shaderBuilder.addUniform(
1545
+ "highp usampler2D",
1546
+ "u_sphericalHarmonicsTexture",
1547
+ ShaderDestination.VERTEX,
1548
+ );
1549
+ uniformMap.u_sphericalHarmonicsTexture = function () {
1550
+ return primitive.sphericalHarmonicsTexture;
1551
+ };
1552
+ }
1553
+ uniformMap.u_sphericalHarmonicsDegree = function () {
1554
+ return primitive._sphericalHarmonicsDegree;
1555
+ };
1556
+
1557
+ uniformMap.u_cameraPositionWC = function () {
1558
+ return Cartesian3.clone(frameState.camera.positionWC);
1559
+ };
1560
+
1561
+ uniformMap.u_inverseModelRotation = function () {
1562
+ // SH coefficients are encoded in the GLB Y-up training space. To evaluate
1563
+ // them the world-space view direction must be rotated by
1564
+ // inverse(computedTransform × axisCorrectionMatrix × worldTransform).
1565
+ // This matrix is pre-computed each snapshot rebuild and stored on the
1566
+ // primitive so the uniform closure just returns the cached value.
1567
+ return primitive._shInverseRotation;
1568
+ };
1569
+
1570
+ uniformMap.u_splitDirection = function () {
1571
+ return primitive.splitDirection;
1572
+ };
1573
+
1574
+ const instanceCount = defined(primitive._indexes)
1575
+ ? primitive._indexes.length
1576
+ : primitive._numSplats;
1577
+ renderResources.instanceCount = instanceCount;
1578
+ renderResources.count = 4;
1579
+ renderResources.primitiveType = PrimitiveType.TRIANGLE_STRIP;
1580
+ shaderBuilder.addVertexLines(GaussianSplatVS);
1581
+ shaderBuilder.addFragmentLines(GaussianSplatFS);
1582
+ const shaderProgram = shaderBuilder.buildShaderProgram(frameState.context);
1583
+ let renderState = clone(
1584
+ RenderState.fromCache(renderResources.renderStateOptions),
1585
+ true,
1586
+ );
1587
+
1588
+ renderState.cull.face = ModelUtility.getCullFace(
1589
+ tileset.modelMatrix,
1590
+ PrimitiveType.TRIANGLE_STRIP,
1591
+ );
1592
+
1593
+ renderState = RenderState.fromCache(renderState);
1594
+ const splatQuadAttrLocations = {
1595
+ screenQuadPosition: 0,
1596
+ splatIndex: 2,
1597
+ };
1598
+
1599
+ const idxAttr = new ModelComponents.Attribute();
1600
+ idxAttr.name = "_SPLAT_INDEXES";
1601
+ idxAttr.typedArray = primitive._indexes;
1602
+ idxAttr.componentDatatype = ComponentDatatype.UNSIGNED_INT;
1603
+ idxAttr.type = AttributeType.SCALAR;
1604
+ idxAttr.normalized = false;
1605
+ idxAttr.count = renderResources.instanceCount;
1606
+ idxAttr.constant = 0;
1607
+ idxAttr.instanceDivisor = 1;
1608
+
1609
+ const needsRebuild =
1610
+ !defined(primitive._vertexArray) ||
1611
+ primitive._indexes.length > primitive._vertexArrayLen;
1612
+ if (needsRebuild) {
1613
+ const geometry = new Geometry({
1614
+ attributes: {
1615
+ screenQuadPosition: new GeometryAttribute({
1616
+ componentDatatype: ComponentDatatype.FLOAT,
1617
+ componentsPerAttribute: 2,
1618
+ values: [-1, -1, 1, -1, 1, 1, -1, 1],
1619
+ name: "_SCREEN_QUAD_POS",
1620
+ variableName: "screenQuadPosition",
1621
+ }),
1622
+ splatIndex: { ...idxAttr, variableName: "splatIndex" },
1623
+ },
1624
+ primitiveType: PrimitiveType.TRIANGLE_STRIP,
1625
+ });
1626
+
1627
+ primitive._vertexArray = VertexArray.fromGeometry({
1628
+ context: frameState.context,
1629
+ geometry: geometry,
1630
+ attributeLocations: splatQuadAttrLocations,
1631
+ bufferUsage: BufferUsage.DYNAMIC_DRAW,
1632
+ interleave: false,
1633
+ });
1634
+ } else {
1635
+ primitive._vertexArray
1636
+ .getAttribute(1)
1637
+ .vertexBuffer.copyFromArrayView(primitive._indexes);
1638
+ }
1639
+
1640
+ primitive._vertexArrayLen = primitive._indexes.length;
1641
+
1642
+ // The draw command uses rootTransform as its modelMatrix. tileset.modelMatrix
1643
+ // is baked into the splat positions by transformTile and must not appear here
1644
+ // as well. This keeps czm_view * modelMatrix numerically small (ENU frame),
1645
+ // avoiding float32 precision loss from ECEF-scale translations.
1646
+ const modelMatrix = Matrix4.clone(
1647
+ primitive._rootTransform,
1648
+ primitive._drawCommandModelMatrix,
1649
+ );
1650
+
1651
+ const vertexArrayCache = primitive._vertexArray;
1652
+ const command = new DrawCommand({
1653
+ boundingVolume: tileset.boundingSphere,
1654
+ modelMatrix: modelMatrix,
1655
+ uniformMap: uniformMap,
1656
+ renderState: renderState,
1657
+ vertexArray: vertexArrayCache,
1658
+ shaderProgram: shaderProgram,
1659
+ cull: renderStateOptions.cull.enabled,
1660
+ pass: Pass.GAUSSIAN_SPLATS,
1661
+ count: renderResources.count,
1662
+ owner: primitive,
1663
+ instanceCount: renderResources.instanceCount,
1664
+ primitiveType: PrimitiveType.TRIANGLE_STRIP,
1665
+ debugShowBoundingVolume: tileset.debugShowBoundingVolume,
1666
+ castShadows: false,
1667
+ receiveShadows: false,
1668
+ });
1669
+
1670
+ primitive._drawCommand = command;
1671
+ };
1672
+
1673
+ /**
1674
+ * Updates the Gaussian splat primitive for the current frame.
1675
+ * This method checks if the primitive needs to be updated based on the current frame state,
1676
+ * and if so, it processes the selected tiles, aggregates their attributes,
1677
+ * and generates the Gaussian splat texture if necessary.
1678
+ * It also handles the sorting of splat indexes and builds the draw command for rendering.
1679
+ *
1680
+ * @param {FrameState} frameState
1681
+ * @private
1682
+ */
1683
+ GaussianSplatPrimitive.prototype.update = function (frameState) {
1684
+ const tileset = this._tileset;
1685
+
1686
+ releaseRetiredTextures(this, frameState.frameNumber);
1687
+
1688
+ if (!tileset.show) {
1689
+ return;
1690
+ }
1691
+
1692
+ if (this._drawCommand) {
1693
+ frameState.commandList.push(this._drawCommand);
1694
+ }
1695
+
1696
+ if (tileset._modelMatrixChanged) {
1697
+ this._dirty = true;
1698
+ return;
1699
+ }
1700
+ const hasRootTransform = defined(this._rootTransform);
1701
+
1702
+ if (frameState.passes.pick === true) {
1703
+ return;
1704
+ }
1705
+
1706
+ if (this.splitDirection !== tileset.splitDirection) {
1707
+ this.splitDirection = tileset.splitDirection;
1708
+ }
1709
+ const camera = frameState.camera;
1710
+ if (!defined(camera)) {
1711
+ return;
1712
+ }
1713
+
1714
+ if (this._sorterState === GaussianSplatSortingState.IDLE) {
1715
+ const selectedTilesChanged =
1716
+ tileset._selectedTiles.length !== 0 &&
1717
+ haveSelectedTilesChanged(this, tileset._selectedTiles);
1718
+ if (tileset._selectedTiles.length === 0) {
1719
+ this._selectedTilesStableFrames = 0;
1720
+ this._needsSnapshotRebuild = false;
1721
+ this._snapshotRebuildStallFrames = 0;
1722
+ } else if (selectedTilesChanged) {
1723
+ this._selectedTilesStableFrames = 0;
1724
+ } else {
1725
+ this._selectedTilesStableFrames++;
1726
+ }
1727
+ if (selectedTilesChanged || this._dirty) {
1728
+ this._needsSnapshotRebuild = true;
1729
+ }
1730
+ const isStable = this._selectedTilesStableFrames >= DEFAULT_STABLE_FRAMES;
1731
+ const isBootstrap =
1732
+ !defined(this._snapshot) &&
1733
+ !defined(this._pendingSnapshot) &&
1734
+ !defined(this._drawCommand);
1735
+ // This prevents an indefinite wait if selected tiles never settle completely.
1736
+ // In practice, this is the upper bound on "wait-for-stability" before forcing
1737
+ // a rebuild to avoid visible starvation.
1738
+ if (this._needsSnapshotRebuild && tileset._selectedTiles.length !== 0) {
1739
+ this._snapshotRebuildStallFrames++;
1740
+ } else {
1741
+ this._snapshotRebuildStallFrames = 0;
1742
+ }
1743
+ const allowRebuild =
1744
+ isStable ||
1745
+ isBootstrap ||
1746
+ this._snapshotRebuildStallFrames >= DEFAULT_MAX_SNAPSHOT_STALL_FRAMES;
1747
+ const hasPendingWork =
1748
+ this._dirty ||
1749
+ this._needsSnapshotRebuild ||
1750
+ selectedTilesChanged ||
1751
+ defined(this._pendingSnapshot) ||
1752
+ defined(this._pendingSortPromise) ||
1753
+ !defined(this._drawCommand);
1754
+ if (
1755
+ !hasPendingWork &&
1756
+ Matrix4.equals(camera.viewMatrix, this._prevViewMatrix)
1757
+ ) {
1758
+ return;
1759
+ }
1760
+
1761
+ if (
1762
+ tileset._selectedTiles.length !== 0 &&
1763
+ this._needsSnapshotRebuild &&
1764
+ allowRebuild
1765
+ ) {
1766
+ this._splatDataGeneration++;
1767
+ this._activeSort = undefined;
1768
+ this._sorterPromise = undefined;
1769
+ this._sorterState = GaussianSplatSortingState.IDLE;
1770
+ this._pendingSortPromise = undefined;
1771
+ this._pendingSort = undefined;
1772
+ if (defined(this._pendingSnapshot)) {
1773
+ destroySnapshotTextures(this._pendingSnapshot);
1774
+ }
1775
+
1776
+ const tiles = tileset._selectedTiles;
1777
+
1778
+ // Rebuild the ENU origin from the current tileset world center so that
1779
+ // baked splat positions remain in a numerically small (meter-scale) local
1780
+ // frame, regardless of the current tileset.modelMatrix value.
1781
+ this._rootTransform = Transforms.eastNorthUpToFixedFrame(
1782
+ tileset.boundingSphere.center,
1783
+ );
1784
+
1785
+ // Compute the SH inverse rotation from the first tile's coordinate frame.
1786
+ // SH coefficients are encoded in the GLB Y-up training space. To evaluate
1787
+ // them correctly the view direction must be transformed by
1788
+ // inverse(computedTransform × axisCorrectionMatrix × worldTransform).
1789
+ // All tiles in a typical GS tileset share the same root coordinate frame,
1790
+ // so using the first tile is sufficient.
1791
+ {
1792
+ const ft = tiles[0];
1793
+ const shFwd = Matrix4.multiplyTransformation(
1794
+ ft.computedTransform,
1795
+ this._axisCorrectionMatrix,
1796
+ scratchMatrix4C,
1797
+ );
1798
+ Matrix4.multiplyTransformation(
1799
+ shFwd,
1800
+ ft.content.worldTransform ?? Matrix4.IDENTITY,
1801
+ shFwd,
1802
+ );
1803
+ Matrix4.getRotation(
1804
+ Matrix4.inverse(shFwd, shFwd),
1805
+ this._shInverseRotation,
1806
+ );
1807
+ }
1808
+
1809
+ for (const tile of tiles) {
1810
+ GaussianSplatPrimitive.transformTile(tile);
1811
+ }
1812
+
1813
+ const totalElements = tiles.reduce(
1814
+ (total, tile) => total + tile.content.pointsLength,
1815
+ 0,
1816
+ );
1817
+ const aggregateAttributeValues = (
1818
+ key,
1819
+ componentDatatype,
1820
+ getAttributeCallback,
1821
+ numberOfComponents,
1822
+ ) => {
1823
+ let aggregate;
1824
+ let offset = 0;
1825
+ let requiredLength = 0;
1826
+ for (const tile of tiles) {
1827
+ const attribute = getAttributeCallback(tile.content);
1828
+ const componentsPerAttribute = defined(numberOfComponents)
1829
+ ? numberOfComponents
1830
+ : AttributeType.getNumberOfComponents(attribute.type);
1831
+ const buffer = defined(attribute.typedArray)
1832
+ ? attribute.typedArray
1833
+ : attribute;
1834
+ requiredLength += buffer.length;
1835
+ if (!defined(aggregate)) {
1836
+ aggregate = acquireAggregateScratchBuffer(
1837
+ this,
1838
+ key,
1839
+ componentDatatype,
1840
+ totalElements * componentsPerAttribute,
1841
+ );
1842
+ }
1843
+ }
1844
+
1845
+ if (!defined(aggregate)) {
1846
+ return ComponentDatatype.createTypedArray(componentDatatype, 0);
1847
+ }
1848
+
1849
+ for (const tile of tiles) {
1850
+ const content = tile.content;
1851
+ const attribute = getAttributeCallback(content);
1852
+ const buffer = defined(attribute.typedArray)
1853
+ ? attribute.typedArray
1854
+ : attribute;
1855
+ aggregate.set(buffer, offset);
1856
+ offset += buffer.length;
1857
+ }
1858
+ return trimAggregateScratchBuffer(aggregate, requiredLength);
1859
+ };
1860
+
1861
+ const aggregateShData = () => {
1862
+ // Determine the SH degree from the first tile with SH data so we can
1863
+ // pre-allocate the aggregate buffer once, outside the tile loop.
1864
+ let coefs = 0;
1865
+ for (const tile of tiles) {
1866
+ if (tile.content.sphericalHarmonicsDegree > 0) {
1867
+ switch (tile.content.sphericalHarmonicsDegree) {
1868
+ case 1:
1869
+ coefs = 9;
1870
+ break;
1871
+ case 2:
1872
+ coefs = 24;
1873
+ break;
1874
+ case 3:
1875
+ coefs = 45;
1876
+ break;
1877
+ }
1878
+ break;
1879
+ }
1880
+ }
1881
+
1882
+ if (coefs === 0) {
1883
+ return undefined;
1884
+ }
1885
+
1886
+ const requiredLength = totalElements * (coefs * (2 / 3));
1887
+
1888
+ // Re-use the class-level scratch buffer when it is already large
1889
+ // enough, avoiding a fresh allocation (and eventual GC) every frame.
1890
+ if (
1891
+ !defined(this._scratchAggregateShBuffer) ||
1892
+ this._scratchAggregateShBuffer.length < requiredLength
1893
+ ) {
1894
+ this._scratchAggregateShBuffer = new Uint32Array(requiredLength);
1895
+ }
1896
+ const aggregate = this._scratchAggregateShBuffer;
1897
+
1898
+ let offset = 0;
1899
+ for (const tile of tiles) {
1900
+ const tileShData = tile.content.packedSphericalHarmonicsData;
1901
+ if (tile.content.sphericalHarmonicsDegree > 0) {
1902
+ aggregate.set(tileShData, offset);
1903
+ offset += tileShData.length;
1904
+ }
1905
+ }
1906
+
1907
+ // Return a correctly-sized view so downstream consumers see the
1908
+ // exact element count they expect.
1909
+ if (offset < aggregate.length) {
1910
+ return aggregate.subarray(0, offset);
1911
+ }
1912
+ return aggregate;
1913
+ };
1914
+
1915
+ const positions = aggregateAttributeValues(
1916
+ "positions",
1917
+ ComponentDatatype.FLOAT,
1918
+ (content) => content.positions,
1919
+ 3,
1920
+ );
1921
+
1922
+ const scales = aggregateAttributeValues(
1923
+ "scales",
1924
+ ComponentDatatype.FLOAT,
1925
+ (content) => content.scales,
1926
+ 3,
1927
+ );
1928
+
1929
+ const rotations = aggregateAttributeValues(
1930
+ "rotations",
1931
+ ComponentDatatype.FLOAT,
1932
+ (content) => content.rotations,
1933
+ 4,
1934
+ );
1935
+
1936
+ const colors = aggregateAttributeValues(
1937
+ "colors",
1938
+ ComponentDatatype.UNSIGNED_BYTE,
1939
+ (content) =>
1940
+ ModelUtility.getAttributeBySemantic(
1941
+ content.gltfPrimitive,
1942
+ VertexAttributeSemantic.COLOR,
1943
+ ),
1944
+ );
1945
+
1946
+ const sphericalHarmonicsDegree =
1947
+ tiles[0].content.sphericalHarmonicsDegree;
1948
+ const shCoefficientCount =
1949
+ sphericalHarmonicsDegree > 0
1950
+ ? tiles[0].content.sphericalHarmonicsCoefficientCount
1951
+ : 0;
1952
+ const shData = aggregateShData();
1953
+
1954
+ this._pendingSnapshot = {
1955
+ generation: this._splatDataGeneration,
1956
+ positions: positions,
1957
+ rotations: rotations,
1958
+ scales: scales,
1959
+ colors: colors,
1960
+ shData: shData,
1961
+ sphericalHarmonicsDegree: sphericalHarmonicsDegree,
1962
+ shCoefficientCount: shCoefficientCount,
1963
+ numSplats: totalElements,
1964
+ indexes: undefined,
1965
+ gaussianSplatTexture: undefined,
1966
+ sphericalHarmonicsTexture: undefined,
1967
+ lastTextureWidth: 0,
1968
+ lastTextureHeight: 0,
1969
+ splatRowMask: 0, // set by processGeneratedSplatTextureData
1970
+ splatRowShift: 0, // set by processGeneratedSplatTextureData
1971
+ state: SnapshotState.BUILDING,
1972
+ };
1973
+
1974
+ this.selectedTileLength = tileset._selectedTiles.length;
1975
+ this._selectedTileSet = new Set(tileset._selectedTiles);
1976
+ this._dirty = false;
1977
+ this._needsSnapshotRebuild = false;
1978
+ this._snapshotRebuildStallFrames = 0;
1979
+ }
1980
+
1981
+ if (defined(this._pendingSnapshot)) {
1982
+ const pending = this._pendingSnapshot;
1983
+ if (pending.state === SnapshotState.BUILDING) {
1984
+ GaussianSplatPrimitive.generateSplatTexture(this, frameState, pending);
1985
+ return;
1986
+ }
1987
+ if (pending.state === SnapshotState.TEXTURE_PENDING) {
1988
+ return;
1989
+ }
1990
+ if (
1991
+ pending.state === SnapshotState.TEXTURE_READY &&
1992
+ !defined(pending.gaussianSplatTexture)
1993
+ ) {
1994
+ return;
1995
+ }
1996
+
1997
+ if (!hasRootTransform) {
1998
+ return;
1999
+ }
2000
+
2001
+ Matrix4.clone(camera.viewMatrix, this._prevViewMatrix);
2002
+ Matrix4.multiply(camera.viewMatrix, this._rootTransform, scratchMatrix4A);
2003
+
2004
+ if (
2005
+ pending.state === SnapshotState.TEXTURE_READY &&
2006
+ !defined(this._pendingSortPromise)
2007
+ ) {
2008
+ const requestId = ++this._sortRequestId;
2009
+ const dataGeneration = this._splatDataGeneration;
2010
+ this._pendingSort = {
2011
+ requestId: requestId,
2012
+ dataGeneration: dataGeneration,
2013
+ expectedCount: pending.numSplats,
2014
+ snapshot: pending,
2015
+ };
2016
+ const sortPromise = GaussianSplatSorter.radixSortIndexes({
2017
+ primitive: {
2018
+ positions: new Float32Array(pending.positions),
2019
+ modelView: Float32Array.from(scratchMatrix4A),
2020
+ count: pending.numSplats,
2021
+ },
2022
+ sortType: "Index",
2023
+ });
2024
+ if (!defined(sortPromise)) {
2025
+ this._pendingSortPromise = undefined;
2026
+ this._pendingSort = undefined;
2027
+ pending.state = SnapshotState.TEXTURE_READY;
2028
+ return;
2029
+ }
2030
+ this._pendingSortPromise = sortPromise;
2031
+ pending.state = SnapshotState.SORTING;
2032
+ const pendingSort = this._pendingSort;
2033
+ void resolvePendingSnapshotSort(
2034
+ this,
2035
+ frameState,
2036
+ pendingSort,
2037
+ sortPromise,
2038
+ );
2039
+ return;
2040
+ }
2041
+
2042
+ if (!defined(this._pendingSortPromise)) {
2043
+ if (pending.state === SnapshotState.SORTING) {
2044
+ pending.state = SnapshotState.TEXTURE_READY;
2045
+ }
2046
+ return;
2047
+ }
2048
+ return;
2049
+ }
2050
+
2051
+ if (this._numSplats === 0) {
2052
+ return;
2053
+ }
2054
+
2055
+ if (!hasRootTransform) {
2056
+ return;
2057
+ }
2058
+
2059
+ Matrix4.clone(camera.viewMatrix, this._prevViewMatrix);
2060
+ Matrix4.multiply(camera.viewMatrix, this._rootTransform, scratchMatrix4A);
2061
+
2062
+ if (!defined(this._sorterPromise)) {
2063
+ if (!shouldStartSteadySort(this, frameState)) {
2064
+ return;
2065
+ }
2066
+ const requestId = ++this._sortRequestId;
2067
+ const dataGeneration = this._splatDataGeneration;
2068
+ const expectedCount = this._numSplats;
2069
+ this._activeSort = {
2070
+ requestId: requestId,
2071
+ dataGeneration: dataGeneration,
2072
+ expectedCount: expectedCount,
2073
+ };
2074
+ const rawPromise = GaussianSplatSorter.radixSortIndexes({
2075
+ primitive: {
2076
+ positions: new Float32Array(this._positions),
2077
+ modelView: Float32Array.from(scratchMatrix4A),
2078
+ count: this._numSplats,
2079
+ },
2080
+ sortType: "Index",
2081
+ });
2082
+ this._sorterPromise = rawPromise;
2083
+ if (defined(rawPromise)) {
2084
+ markSteadySortStart(this, frameState);
2085
+ const activeSort = this._activeSort;
2086
+ this._sorterState = GaussianSplatSortingState.SORTING;
2087
+ void resolveSteadySort(this, activeSort, rawPromise);
2088
+ return;
2089
+ }
2090
+ }
2091
+
2092
+ if (!defined(this._sorterPromise)) {
2093
+ this._sorterState = GaussianSplatSortingState.WAITING;
2094
+ return;
2095
+ }
2096
+ this._sorterState = GaussianSplatSortingState.SORTING;
2097
+ return;
2098
+ } else if (this._sorterState === GaussianSplatSortingState.WAITING) {
2099
+ if (!defined(this._sorterPromise)) {
2100
+ const requestId = ++this._sortRequestId;
2101
+ const dataGeneration = this._splatDataGeneration;
2102
+ const expectedCount = this._numSplats;
2103
+ this._activeSort = {
2104
+ requestId: requestId,
2105
+ dataGeneration: dataGeneration,
2106
+ expectedCount: expectedCount,
2107
+ };
2108
+ const rawPromise = GaussianSplatSorter.radixSortIndexes({
2109
+ primitive: {
2110
+ positions: new Float32Array(this._positions),
2111
+ modelView: Float32Array.from(scratchMatrix4A),
2112
+ count: this._numSplats,
2113
+ },
2114
+ sortType: "Index",
2115
+ });
2116
+ this._sorterPromise = rawPromise;
2117
+ if (defined(rawPromise)) {
2118
+ markSteadySortStart(this, frameState);
2119
+ const activeSort = this._activeSort;
2120
+ this._sorterState = GaussianSplatSortingState.SORTING;
2121
+ void resolveSteadySort(this, activeSort, rawPromise);
2122
+ return;
2123
+ }
2124
+ }
2125
+ if (!defined(this._sorterPromise)) {
2126
+ this._sorterState = GaussianSplatSortingState.WAITING;
2127
+ return;
2128
+ }
2129
+ this._sorterState = GaussianSplatSortingState.SORTING;
2130
+ return;
2131
+ } else if (this._sorterState === GaussianSplatSortingState.SORTING) {
2132
+ return; //still sorting, wait for next frame
2133
+ } else if (this._sorterState === GaussianSplatSortingState.SORTED) {
2134
+ //update the draw command if sorted
2135
+ GaussianSplatPrimitive.buildGSplatDrawCommand(this, frameState);
2136
+ this._sorterState = GaussianSplatSortingState.IDLE; //reset state for next frame
2137
+ this._dirty = false;
2138
+ this._sorterPromise = undefined; //reset promise for next frame
2139
+ this._activeSort = undefined;
2140
+ } else if (this._sorterState === GaussianSplatSortingState.ERROR) {
2141
+ throw this._sorterError;
2142
+ }
2143
+
2144
+ this._dirty = false;
2145
+ };
2146
+
2147
+ export default GaussianSplatPrimitive;