@cesium/engine 0.1.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 (1731) hide show
  1. package/Build/ThirdParty/Workers/basis_transcoder.js +2233 -0
  2. package/Build/ThirdParty/Workers/draco_decoder_nodejs.js +1872 -0
  3. package/Build/ThirdParty/Workers/package.json +1 -0
  4. package/Build/ThirdParty/Workers/pako_deflate.min.js +589 -0
  5. package/Build/ThirdParty/Workers/pako_inflate.min.js +798 -0
  6. package/Build/ThirdParty/Workers/z-worker-pako.js +503 -0
  7. package/Build/ThirdParty/basis_transcoder.wasm +0 -0
  8. package/Build/ThirdParty/draco_decoder.wasm +0 -0
  9. package/Build/ThirdParty/google-earth-dbroot-parser.js +8019 -0
  10. package/Build/Widget/CesiumWidget.css +120 -0
  11. package/Build/Widget/lighter.css +13 -0
  12. package/Build/Workers/ArcType-ce2e50ab.js +37 -0
  13. package/Build/Workers/AttributeCompression-4589338a.js +716 -0
  14. package/Build/Workers/AxisAlignedBoundingBox-bfb1234f.js +258 -0
  15. package/Build/Workers/BoundingRectangle-7ffc2153.js +369 -0
  16. package/Build/Workers/BoxGeometry-93f344a3.js +884 -0
  17. package/Build/Workers/Check-666ab1a0.js +290 -0
  18. package/Build/Workers/Color-0c5aaf47.js +2262 -0
  19. package/Build/Workers/ComponentDatatype-f7b11d02.js +341 -0
  20. package/Build/Workers/CoplanarPolygonGeometryLibrary-6597982a.js +132 -0
  21. package/Build/Workers/CorridorGeometryLibrary-2119580e.js +498 -0
  22. package/Build/Workers/CylinderGeometry-f9503c6d.js +467 -0
  23. package/Build/Workers/CylinderGeometryLibrary-372c07d8.js +63 -0
  24. package/Build/Workers/EllipseGeometry-fedf72d5.js +1304 -0
  25. package/Build/Workers/EllipseGeometryLibrary-4ea68687.js +366 -0
  26. package/Build/Workers/EllipseOutlineGeometry-e2ae6a35.js +443 -0
  27. package/Build/Workers/EllipsoidGeodesic-16de63ea.js +520 -0
  28. package/Build/Workers/EllipsoidGeometry-95c0330e.js +637 -0
  29. package/Build/Workers/EllipsoidOutlineGeometry-d6d2ceec.js +454 -0
  30. package/Build/Workers/EllipsoidRhumbLine-ae5e65e0.js +741 -0
  31. package/Build/Workers/EllipsoidTangentPlane-bfc674bf.js +373 -0
  32. package/Build/Workers/EncodedCartesian3-f473ea18.js +171 -0
  33. package/Build/Workers/FrustumGeometry-3bf2e4eb.js +2512 -0
  34. package/Build/Workers/GeometryAttribute-df5f473e.js +619 -0
  35. package/Build/Workers/GeometryAttributes-f06a2792.js +91 -0
  36. package/Build/Workers/GeometryInstance-aa75b4cf.js +121 -0
  37. package/Build/Workers/GeometryOffsetAttribute-04332ce7.js +16 -0
  38. package/Build/Workers/GeometryPipeline-f0e46c42.js +3690 -0
  39. package/Build/Workers/IndexDatatype-a55ceaa1.js +200 -0
  40. package/Build/Workers/IntersectionTests-9de29d51.js +1836 -0
  41. package/Build/Workers/Math-2dbd6b93.js +1330 -0
  42. package/Build/Workers/Matrix2-ce637455.js +7084 -0
  43. package/Build/Workers/Matrix3-4f4df527.js +4282 -0
  44. package/Build/Workers/OrientedBoundingBox-d3ff3d4d.js +1257 -0
  45. package/Build/Workers/Plane-b81241c2.js +309 -0
  46. package/Build/Workers/PolygonGeometryLibrary-6f4937bb.js +1074 -0
  47. package/Build/Workers/PolygonPipeline-774a8aaf.js +1341 -0
  48. package/Build/Workers/PolylinePipeline-2e2b015c.js +573 -0
  49. package/Build/Workers/PolylineVolumeGeometryLibrary-7ee1d449.js +781 -0
  50. package/Build/Workers/PrimitivePipeline-a9b7aae0.js +966 -0
  51. package/Build/Workers/RectangleGeometryLibrary-9aa6c8f6.js +280 -0
  52. package/Build/Workers/RuntimeError-06c93819.js +68 -0
  53. package/Build/Workers/TerrainEncoding-b52dcfc5.js +1227 -0
  54. package/Build/Workers/Transforms-2f755df8.js +14683 -0
  55. package/Build/Workers/VertexFormat-6b480673.js +312 -0
  56. package/Build/Workers/WallGeometryLibrary-ab19a93d.js +211 -0
  57. package/Build/Workers/WebGLConstants-a8cc3e8c.js +620 -0
  58. package/Build/Workers/WebMercatorProjection-9f25de49.js +151 -0
  59. package/Build/Workers/arrayRemoveDuplicates-c2038105.js +129 -0
  60. package/Build/Workers/cesiumWorkerBootstrapper.js +1273 -0
  61. package/Build/Workers/combine-ca22a614.js +82 -0
  62. package/Build/Workers/combineGeometry.js +17 -0
  63. package/Build/Workers/createBoxGeometry.js +12 -0
  64. package/Build/Workers/createBoxOutlineGeometry.js +313 -0
  65. package/Build/Workers/createCircleGeometry.js +213 -0
  66. package/Build/Workers/createCircleOutlineGeometry.js +160 -0
  67. package/Build/Workers/createCoplanarPolygonGeometry.js +586 -0
  68. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +236 -0
  69. package/Build/Workers/createCorridorGeometry.js +1407 -0
  70. package/Build/Workers/createCorridorOutlineGeometry.js +603 -0
  71. package/Build/Workers/createCylinderGeometry.js +12 -0
  72. package/Build/Workers/createCylinderOutlineGeometry.js +265 -0
  73. package/Build/Workers/createEllipseGeometry.js +14 -0
  74. package/Build/Workers/createEllipseOutlineGeometry.js +14 -0
  75. package/Build/Workers/createEllipsoidGeometry.js +12 -0
  76. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -0
  77. package/Build/Workers/createFrustumGeometry.js +12 -0
  78. package/Build/Workers/createFrustumOutlineGeometry.js +251 -0
  79. package/Build/Workers/createGeometry.js +55 -0
  80. package/Build/Workers/createGroundPolylineGeometry.js +2134 -0
  81. package/Build/Workers/createPlaneGeometry.js +250 -0
  82. package/Build/Workers/createPlaneOutlineGeometry.js +115 -0
  83. package/Build/Workers/createPolygonGeometry.js +1420 -0
  84. package/Build/Workers/createPolygonOutlineGeometry.js +683 -0
  85. package/Build/Workers/createPolylineGeometry.js +571 -0
  86. package/Build/Workers/createPolylineVolumeGeometry.js +411 -0
  87. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +301 -0
  88. package/Build/Workers/createRectangleGeometry.js +1476 -0
  89. package/Build/Workers/createRectangleOutlineGeometry.js +535 -0
  90. package/Build/Workers/createSimplePolylineGeometry.js +458 -0
  91. package/Build/Workers/createSphereGeometry.js +123 -0
  92. package/Build/Workers/createSphereOutlineGeometry.js +126 -0
  93. package/Build/Workers/createTaskProcessorWorker.js +127 -0
  94. package/Build/Workers/createVectorTileClampedPolylines.js +535 -0
  95. package/Build/Workers/createVectorTileGeometries.js +445 -0
  96. package/Build/Workers/createVectorTilePoints.js +79 -0
  97. package/Build/Workers/createVectorTilePolygons.js +406 -0
  98. package/Build/Workers/createVectorTilePolylines.js +254 -0
  99. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +640 -0
  100. package/Build/Workers/createVerticesFromHeightmap.js +2707 -0
  101. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +994 -0
  102. package/Build/Workers/createWallGeometry.js +623 -0
  103. package/Build/Workers/createWallOutlineGeometry.js +432 -0
  104. package/Build/Workers/decodeDraco.js +381 -0
  105. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +3668 -0
  106. package/Build/Workers/decodeI3S.js +1040 -0
  107. package/Build/Workers/defaultValue-0a909f67.js +51 -0
  108. package/Build/Workers/package.js +2 -0
  109. package/Build/Workers/transcodeKTX2.js +1516 -0
  110. package/Build/Workers/transferTypedArrayTest.js +18 -0
  111. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1023 -0
  112. package/LICENSE.md +933 -0
  113. package/README.md +58 -0
  114. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  115. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  116. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  117. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  118. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  119. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  120. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  121. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  122. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  123. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  124. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  125. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  126. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  127. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  128. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  129. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  130. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  131. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  132. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  133. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  134. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  135. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  136. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  137. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  138. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  139. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  140. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  141. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  142. package/Source/Assets/Images/bing_maps_credit.png +0 -0
  143. package/Source/Assets/Images/cesium_credit.png +0 -0
  144. package/Source/Assets/Images/google_earth_credit.png +0 -0
  145. package/Source/Assets/Images/ion-credit.png +0 -0
  146. package/Source/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  147. package/Source/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  148. package/Source/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  149. package/Source/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  150. package/Source/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  151. package/Source/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  152. package/Source/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  153. package/Source/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  154. package/Source/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  155. package/Source/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  156. package/Source/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  157. package/Source/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  158. package/Source/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  159. package/Source/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  160. package/Source/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  161. package/Source/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  162. package/Source/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  163. package/Source/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  164. package/Source/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  165. package/Source/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  166. package/Source/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  167. package/Source/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  168. package/Source/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  169. package/Source/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  170. package/Source/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  171. package/Source/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  172. package/Source/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  173. package/Source/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  174. package/Source/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  175. package/Source/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  176. package/Source/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  177. package/Source/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  178. package/Source/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  179. package/Source/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  180. package/Source/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  181. package/Source/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  182. package/Source/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  183. package/Source/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  184. package/Source/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  185. package/Source/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  186. package/Source/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  187. package/Source/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  188. package/Source/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  189. package/Source/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  190. package/Source/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
  191. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  192. package/Source/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  193. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  194. package/Source/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  195. package/Source/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  196. package/Source/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  197. package/Source/Assets/Textures/maki/airfield.png +0 -0
  198. package/Source/Assets/Textures/maki/airport.png +0 -0
  199. package/Source/Assets/Textures/maki/alcohol-shop.png +0 -0
  200. package/Source/Assets/Textures/maki/america-football.png +0 -0
  201. package/Source/Assets/Textures/maki/art-gallery.png +0 -0
  202. package/Source/Assets/Textures/maki/bakery.png +0 -0
  203. package/Source/Assets/Textures/maki/bank.png +0 -0
  204. package/Source/Assets/Textures/maki/bar.png +0 -0
  205. package/Source/Assets/Textures/maki/baseball.png +0 -0
  206. package/Source/Assets/Textures/maki/basketball.png +0 -0
  207. package/Source/Assets/Textures/maki/beer.png +0 -0
  208. package/Source/Assets/Textures/maki/bicycle.png +0 -0
  209. package/Source/Assets/Textures/maki/building.png +0 -0
  210. package/Source/Assets/Textures/maki/bus.png +0 -0
  211. package/Source/Assets/Textures/maki/cafe.png +0 -0
  212. package/Source/Assets/Textures/maki/camera.png +0 -0
  213. package/Source/Assets/Textures/maki/campsite.png +0 -0
  214. package/Source/Assets/Textures/maki/car.png +0 -0
  215. package/Source/Assets/Textures/maki/cemetery.png +0 -0
  216. package/Source/Assets/Textures/maki/cesium.png +0 -0
  217. package/Source/Assets/Textures/maki/chemist.png +0 -0
  218. package/Source/Assets/Textures/maki/cinema.png +0 -0
  219. package/Source/Assets/Textures/maki/circle-stroked.png +0 -0
  220. package/Source/Assets/Textures/maki/circle.png +0 -0
  221. package/Source/Assets/Textures/maki/city.png +0 -0
  222. package/Source/Assets/Textures/maki/clothing-store.png +0 -0
  223. package/Source/Assets/Textures/maki/college.png +0 -0
  224. package/Source/Assets/Textures/maki/commercial.png +0 -0
  225. package/Source/Assets/Textures/maki/cricket.png +0 -0
  226. package/Source/Assets/Textures/maki/cross.png +0 -0
  227. package/Source/Assets/Textures/maki/dam.png +0 -0
  228. package/Source/Assets/Textures/maki/danger.png +0 -0
  229. package/Source/Assets/Textures/maki/disability.png +0 -0
  230. package/Source/Assets/Textures/maki/dog-park.png +0 -0
  231. package/Source/Assets/Textures/maki/embassy.png +0 -0
  232. package/Source/Assets/Textures/maki/emergency-telephone.png +0 -0
  233. package/Source/Assets/Textures/maki/entrance.png +0 -0
  234. package/Source/Assets/Textures/maki/farm.png +0 -0
  235. package/Source/Assets/Textures/maki/fast-food.png +0 -0
  236. package/Source/Assets/Textures/maki/ferry.png +0 -0
  237. package/Source/Assets/Textures/maki/fire-station.png +0 -0
  238. package/Source/Assets/Textures/maki/fuel.png +0 -0
  239. package/Source/Assets/Textures/maki/garden.png +0 -0
  240. package/Source/Assets/Textures/maki/gift.png +0 -0
  241. package/Source/Assets/Textures/maki/golf.png +0 -0
  242. package/Source/Assets/Textures/maki/grocery.png +0 -0
  243. package/Source/Assets/Textures/maki/hairdresser.png +0 -0
  244. package/Source/Assets/Textures/maki/harbor.png +0 -0
  245. package/Source/Assets/Textures/maki/heart.png +0 -0
  246. package/Source/Assets/Textures/maki/heliport.png +0 -0
  247. package/Source/Assets/Textures/maki/hospital.png +0 -0
  248. package/Source/Assets/Textures/maki/ice-cream.png +0 -0
  249. package/Source/Assets/Textures/maki/industrial.png +0 -0
  250. package/Source/Assets/Textures/maki/land-use.png +0 -0
  251. package/Source/Assets/Textures/maki/laundry.png +0 -0
  252. package/Source/Assets/Textures/maki/library.png +0 -0
  253. package/Source/Assets/Textures/maki/lighthouse.png +0 -0
  254. package/Source/Assets/Textures/maki/lodging.png +0 -0
  255. package/Source/Assets/Textures/maki/logging.png +0 -0
  256. package/Source/Assets/Textures/maki/london-underground.png +0 -0
  257. package/Source/Assets/Textures/maki/marker-stroked.png +0 -0
  258. package/Source/Assets/Textures/maki/marker.png +0 -0
  259. package/Source/Assets/Textures/maki/minefield.png +0 -0
  260. package/Source/Assets/Textures/maki/mobilephone.png +0 -0
  261. package/Source/Assets/Textures/maki/monument.png +0 -0
  262. package/Source/Assets/Textures/maki/museum.png +0 -0
  263. package/Source/Assets/Textures/maki/music.png +0 -0
  264. package/Source/Assets/Textures/maki/oil-well.png +0 -0
  265. package/Source/Assets/Textures/maki/park.png +0 -0
  266. package/Source/Assets/Textures/maki/park2.png +0 -0
  267. package/Source/Assets/Textures/maki/parking-garage.png +0 -0
  268. package/Source/Assets/Textures/maki/parking.png +0 -0
  269. package/Source/Assets/Textures/maki/pharmacy.png +0 -0
  270. package/Source/Assets/Textures/maki/pitch.png +0 -0
  271. package/Source/Assets/Textures/maki/place-of-worship.png +0 -0
  272. package/Source/Assets/Textures/maki/playground.png +0 -0
  273. package/Source/Assets/Textures/maki/police.png +0 -0
  274. package/Source/Assets/Textures/maki/polling-place.png +0 -0
  275. package/Source/Assets/Textures/maki/post.png +0 -0
  276. package/Source/Assets/Textures/maki/prison.png +0 -0
  277. package/Source/Assets/Textures/maki/rail-above.png +0 -0
  278. package/Source/Assets/Textures/maki/rail-light.png +0 -0
  279. package/Source/Assets/Textures/maki/rail-metro.png +0 -0
  280. package/Source/Assets/Textures/maki/rail-underground.png +0 -0
  281. package/Source/Assets/Textures/maki/rail.png +0 -0
  282. package/Source/Assets/Textures/maki/religious-christian.png +0 -0
  283. package/Source/Assets/Textures/maki/religious-jewish.png +0 -0
  284. package/Source/Assets/Textures/maki/religious-muslim.png +0 -0
  285. package/Source/Assets/Textures/maki/restaurant.png +0 -0
  286. package/Source/Assets/Textures/maki/roadblock.png +0 -0
  287. package/Source/Assets/Textures/maki/rocket.png +0 -0
  288. package/Source/Assets/Textures/maki/school.png +0 -0
  289. package/Source/Assets/Textures/maki/scooter.png +0 -0
  290. package/Source/Assets/Textures/maki/shop.png +0 -0
  291. package/Source/Assets/Textures/maki/skiing.png +0 -0
  292. package/Source/Assets/Textures/maki/slaughterhouse.png +0 -0
  293. package/Source/Assets/Textures/maki/soccer.png +0 -0
  294. package/Source/Assets/Textures/maki/square-stroked.png +0 -0
  295. package/Source/Assets/Textures/maki/square.png +0 -0
  296. package/Source/Assets/Textures/maki/star-stroked.png +0 -0
  297. package/Source/Assets/Textures/maki/star.png +0 -0
  298. package/Source/Assets/Textures/maki/suitcase.png +0 -0
  299. package/Source/Assets/Textures/maki/swimming.png +0 -0
  300. package/Source/Assets/Textures/maki/telephone.png +0 -0
  301. package/Source/Assets/Textures/maki/tennis.png +0 -0
  302. package/Source/Assets/Textures/maki/theatre.png +0 -0
  303. package/Source/Assets/Textures/maki/toilets.png +0 -0
  304. package/Source/Assets/Textures/maki/town-hall.png +0 -0
  305. package/Source/Assets/Textures/maki/town.png +0 -0
  306. package/Source/Assets/Textures/maki/triangle-stroked.png +0 -0
  307. package/Source/Assets/Textures/maki/triangle.png +0 -0
  308. package/Source/Assets/Textures/maki/village.png +0 -0
  309. package/Source/Assets/Textures/maki/warehouse.png +0 -0
  310. package/Source/Assets/Textures/maki/waste-basket.png +0 -0
  311. package/Source/Assets/Textures/maki/water.png +0 -0
  312. package/Source/Assets/Textures/maki/wetland.png +0 -0
  313. package/Source/Assets/Textures/maki/zoo.png +0 -0
  314. package/Source/Assets/Textures/moonSmall.jpg +0 -0
  315. package/Source/Assets/Textures/pin.svg +1 -0
  316. package/Source/Assets/Textures/waterNormals.jpg +0 -0
  317. package/Source/Assets/Textures/waterNormalsSmall.jpg +0 -0
  318. package/Source/Assets/approximateTerrainHeights.json +1 -0
  319. package/Source/Core/ApproximateTerrainHeights.js +256 -0
  320. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +728 -0
  321. package/Source/Core/ArcType.js +31 -0
  322. package/Source/Core/ArticulationStageType.js +23 -0
  323. package/Source/Core/AssociativeArray.js +127 -0
  324. package/Source/Core/AttributeCompression.js +527 -0
  325. package/Source/Core/AxisAlignedBoundingBox.js +259 -0
  326. package/Source/Core/BingMapsGeocoderService.js +107 -0
  327. package/Source/Core/BoundingRectangle.js +373 -0
  328. package/Source/Core/BoundingSphere.js +1505 -0
  329. package/Source/Core/BoxGeometry.js +893 -0
  330. package/Source/Core/BoxOutlineGeometry.js +314 -0
  331. package/Source/Core/Cartesian2.js +824 -0
  332. package/Source/Core/Cartesian3.js +1218 -0
  333. package/Source/Core/Cartesian4.js +980 -0
  334. package/Source/Core/Cartographic.js +302 -0
  335. package/Source/Core/CartographicGeocoderService.js +58 -0
  336. package/Source/Core/CatmullRomSpline.js +324 -0
  337. package/Source/Core/CesiumTerrainProvider.js +1318 -0
  338. package/Source/Core/Check.js +213 -0
  339. package/Source/Core/CircleGeometry.js +203 -0
  340. package/Source/Core/CircleOutlineGeometry.js +149 -0
  341. package/Source/Core/Clock.js +319 -0
  342. package/Source/Core/ClockRange.js +39 -0
  343. package/Source/Core/ClockStep.js +38 -0
  344. package/Source/Core/Color.js +2263 -0
  345. package/Source/Core/ColorGeometryInstanceAttribute.js +182 -0
  346. package/Source/Core/ComponentDatatype.js +340 -0
  347. package/Source/Core/CompressedTextureBuffer.js +114 -0
  348. package/Source/Core/ConstantSpline.js +119 -0
  349. package/Source/Core/CoplanarPolygonGeometry.js +599 -0
  350. package/Source/Core/CoplanarPolygonGeometryLibrary.js +132 -0
  351. package/Source/Core/CoplanarPolygonOutlineGeometry.js +237 -0
  352. package/Source/Core/CornerType.js +37 -0
  353. package/Source/Core/CorridorGeometry.js +1416 -0
  354. package/Source/Core/CorridorGeometryLibrary.js +501 -0
  355. package/Source/Core/CorridorOutlineGeometry.js +604 -0
  356. package/Source/Core/Credit.js +166 -0
  357. package/Source/Core/CubicRealPolynomial.js +238 -0
  358. package/Source/Core/CullingVolume.js +217 -0
  359. package/Source/Core/CustomHeightmapTerrainProvider.js +299 -0
  360. package/Source/Core/CylinderGeometry.js +479 -0
  361. package/Source/Core/CylinderGeometryLibrary.js +59 -0
  362. package/Source/Core/CylinderOutlineGeometry.js +269 -0
  363. package/Source/Core/DefaultProxy.js +26 -0
  364. package/Source/Core/DeveloperError.js +75 -0
  365. package/Source/Core/DistanceDisplayCondition.js +172 -0
  366. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +181 -0
  367. package/Source/Core/DoubleEndedPriorityQueue.js +405 -0
  368. package/Source/Core/DoublyLinkedList.js +112 -0
  369. package/Source/Core/EarthOrientationParameters.js +431 -0
  370. package/Source/Core/EarthOrientationParametersSample.js +52 -0
  371. package/Source/Core/EasingFunction.js +257 -0
  372. package/Source/Core/EllipseGeometry.js +1325 -0
  373. package/Source/Core/EllipseGeometryLibrary.js +365 -0
  374. package/Source/Core/EllipseOutlineGeometry.js +454 -0
  375. package/Source/Core/Ellipsoid.js +804 -0
  376. package/Source/Core/EllipsoidGeodesic.js +523 -0
  377. package/Source/Core/EllipsoidGeometry.js +649 -0
  378. package/Source/Core/EllipsoidOutlineGeometry.js +464 -0
  379. package/Source/Core/EllipsoidRhumbLine.js +745 -0
  380. package/Source/Core/EllipsoidTangentPlane.js +383 -0
  381. package/Source/Core/EllipsoidTerrainProvider.js +230 -0
  382. package/Source/Core/EllipsoidalOccluder.js +559 -0
  383. package/Source/Core/EncodedCartesian3.js +170 -0
  384. package/Source/Core/Event.js +164 -0
  385. package/Source/Core/EventHelper.js +74 -0
  386. package/Source/Core/ExtrapolationType.js +34 -0
  387. package/Source/Core/FeatureDetection.js +411 -0
  388. package/Source/Core/FrustumGeometry.js +583 -0
  389. package/Source/Core/FrustumOutlineGeometry.js +254 -0
  390. package/Source/Core/Fullscreen.js +249 -0
  391. package/Source/Core/GeocodeType.js +24 -0
  392. package/Source/Core/GeocoderService.js +29 -0
  393. package/Source/Core/GeographicProjection.js +105 -0
  394. package/Source/Core/GeographicTilingScheme.js +251 -0
  395. package/Source/Core/Geometry.js +376 -0
  396. package/Source/Core/GeometryAttribute.js +138 -0
  397. package/Source/Core/GeometryAttributes.js +88 -0
  398. package/Source/Core/GeometryFactory.js +25 -0
  399. package/Source/Core/GeometryInstance.js +121 -0
  400. package/Source/Core/GeometryInstanceAttribute.js +138 -0
  401. package/Source/Core/GeometryOffsetAttribute.js +10 -0
  402. package/Source/Core/GeometryPipeline.js +3296 -0
  403. package/Source/Core/GeometryType.js +10 -0
  404. package/Source/Core/GoogleEarthEnterpriseMetadata.js +597 -0
  405. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +607 -0
  406. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +641 -0
  407. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +136 -0
  408. package/Source/Core/GregorianDate.js +69 -0
  409. package/Source/Core/GroundPolylineGeometry.js +1658 -0
  410. package/Source/Core/HeadingPitchRange.js +60 -0
  411. package/Source/Core/HeadingPitchRoll.js +236 -0
  412. package/Source/Core/Heap.js +234 -0
  413. package/Source/Core/HeightmapEncoding.js +25 -0
  414. package/Source/Core/HeightmapTerrainData.js +925 -0
  415. package/Source/Core/HeightmapTessellator.js +535 -0
  416. package/Source/Core/HermitePolynomialApproximation.js +342 -0
  417. package/Source/Core/HermiteSpline.js +620 -0
  418. package/Source/Core/HilbertOrder.js +118 -0
  419. package/Source/Core/Iau2000Orientation.js +167 -0
  420. package/Source/Core/Iau2006XysData.js +277 -0
  421. package/Source/Core/Iau2006XysSample.js +32 -0
  422. package/Source/Core/IauOrientationAxes.js +105 -0
  423. package/Source/Core/IauOrientationParameters.js +54 -0
  424. package/Source/Core/IndexDatatype.js +199 -0
  425. package/Source/Core/InterpolationAlgorithm.js +65 -0
  426. package/Source/Core/InterpolationType.js +14 -0
  427. package/Source/Core/Intersect.js +34 -0
  428. package/Source/Core/IntersectionTests.js +1047 -0
  429. package/Source/Core/Intersections2D.js +358 -0
  430. package/Source/Core/Interval.js +25 -0
  431. package/Source/Core/Ion.js +57 -0
  432. package/Source/Core/IonGeocoderService.js +64 -0
  433. package/Source/Core/IonResource.js +270 -0
  434. package/Source/Core/Iso8601.js +54 -0
  435. package/Source/Core/JulianDate.js +1233 -0
  436. package/Source/Core/KTX2Transcoder.js +95 -0
  437. package/Source/Core/KeyboardEventModifier.js +32 -0
  438. package/Source/Core/LagrangePolynomialApproximation.js +71 -0
  439. package/Source/Core/LeapSecond.js +24 -0
  440. package/Source/Core/LinearApproximation.js +83 -0
  441. package/Source/Core/LinearSpline.js +166 -0
  442. package/Source/Core/ManagedArray.js +163 -0
  443. package/Source/Core/MapProjection.js +62 -0
  444. package/Source/Core/Math.js +1119 -0
  445. package/Source/Core/Matrix2.js +1092 -0
  446. package/Source/Core/Matrix3.js +1838 -0
  447. package/Source/Core/Matrix4.js +3232 -0
  448. package/Source/Core/MorphWeightSpline.js +161 -0
  449. package/Source/Core/MortonOrder.js +214 -0
  450. package/Source/Core/NearFarScalar.js +174 -0
  451. package/Source/Core/Occluder.js +732 -0
  452. package/Source/Core/OffsetGeometryInstanceAttribute.js +126 -0
  453. package/Source/Core/OpenCageGeocoderService.js +118 -0
  454. package/Source/Core/OrientedBoundingBox.js +1270 -0
  455. package/Source/Core/OrthographicFrustum.js +338 -0
  456. package/Source/Core/OrthographicOffCenterFrustum.js +463 -0
  457. package/Source/Core/Packable.js +40 -0
  458. package/Source/Core/PackableForInterpolation.js +43 -0
  459. package/Source/Core/PeliasGeocoderService.js +93 -0
  460. package/Source/Core/PerspectiveFrustum.js +439 -0
  461. package/Source/Core/PerspectiveOffCenterFrustum.js +523 -0
  462. package/Source/Core/PinBuilder.js +234 -0
  463. package/Source/Core/PixelFormat.js +493 -0
  464. package/Source/Core/Plane.js +312 -0
  465. package/Source/Core/PlaneGeometry.js +250 -0
  466. package/Source/Core/PlaneOutlineGeometry.js +113 -0
  467. package/Source/Core/PolygonGeometry.js +1436 -0
  468. package/Source/Core/PolygonGeometryLibrary.js +981 -0
  469. package/Source/Core/PolygonHierarchy.js +25 -0
  470. package/Source/Core/PolygonOutlineGeometry.js +692 -0
  471. package/Source/Core/PolygonPipeline.js +633 -0
  472. package/Source/Core/PolylineGeometry.js +578 -0
  473. package/Source/Core/PolylinePipeline.js +580 -0
  474. package/Source/Core/PolylineVolumeGeometry.js +417 -0
  475. package/Source/Core/PolylineVolumeGeometryLibrary.js +701 -0
  476. package/Source/Core/PolylineVolumeOutlineGeometry.js +299 -0
  477. package/Source/Core/PrimitiveType.js +107 -0
  478. package/Source/Core/Proxy.js +24 -0
  479. package/Source/Core/QuadraticRealPolynomial.js +147 -0
  480. package/Source/Core/QuantizedMeshTerrainData.js +772 -0
  481. package/Source/Core/QuarticRealPolynomial.js +342 -0
  482. package/Source/Core/Quaternion.js +1142 -0
  483. package/Source/Core/QuaternionSpline.js +155 -0
  484. package/Source/Core/Queue.js +126 -0
  485. package/Source/Core/Ray.js +80 -0
  486. package/Source/Core/Rectangle.js +982 -0
  487. package/Source/Core/RectangleCollisionChecker.js +95 -0
  488. package/Source/Core/RectangleGeometry.js +1489 -0
  489. package/Source/Core/RectangleGeometryLibrary.js +283 -0
  490. package/Source/Core/RectangleOutlineGeometry.js +537 -0
  491. package/Source/Core/ReferenceFrame.js +23 -0
  492. package/Source/Core/Request.js +192 -0
  493. package/Source/Core/RequestErrorEvent.js +58 -0
  494. package/Source/Core/RequestScheduler.js +520 -0
  495. package/Source/Core/RequestState.js +55 -0
  496. package/Source/Core/RequestType.js +39 -0
  497. package/Source/Core/Resource.js +2307 -0
  498. package/Source/Core/RuntimeError.js +65 -0
  499. package/Source/Core/S2Cell.js +811 -0
  500. package/Source/Core/ScreenSpaceEventHandler.js +1140 -0
  501. package/Source/Core/ScreenSpaceEventType.js +127 -0
  502. package/Source/Core/ShowGeometryInstanceAttribute.js +123 -0
  503. package/Source/Core/Simon1994PlanetaryPositions.js +682 -0
  504. package/Source/Core/SimplePolylineGeometry.js +457 -0
  505. package/Source/Core/SphereGeometry.js +118 -0
  506. package/Source/Core/SphereOutlineGeometry.js +120 -0
  507. package/Source/Core/Spherical.js +184 -0
  508. package/Source/Core/Spline.js +189 -0
  509. package/Source/Core/SteppedSpline.js +160 -0
  510. package/Source/Core/TaskProcessor.js +377 -0
  511. package/Source/Core/TerrainData.js +125 -0
  512. package/Source/Core/TerrainEncoding.js +607 -0
  513. package/Source/Core/TerrainExaggeration.js +49 -0
  514. package/Source/Core/TerrainMesh.js +156 -0
  515. package/Source/Core/TerrainProvider.js +461 -0
  516. package/Source/Core/TerrainQuantization.js +25 -0
  517. package/Source/Core/TileAvailability.js +564 -0
  518. package/Source/Core/TileEdge.js +14 -0
  519. package/Source/Core/TileProviderError.js +171 -0
  520. package/Source/Core/TilingScheme.js +132 -0
  521. package/Source/Core/TimeConstants.js +83 -0
  522. package/Source/Core/TimeInterval.js +438 -0
  523. package/Source/Core/TimeIntervalCollection.js +1136 -0
  524. package/Source/Core/TimeStandard.js +30 -0
  525. package/Source/Core/Tipsify.js +314 -0
  526. package/Source/Core/Transforms.js +1132 -0
  527. package/Source/Core/TranslationRotationScale.js +60 -0
  528. package/Source/Core/TridiagonalSystemSolver.js +113 -0
  529. package/Source/Core/TrustedServers.js +146 -0
  530. package/Source/Core/VRTheWorldTerrainProvider.js +450 -0
  531. package/Source/Core/VertexFormat.js +311 -0
  532. package/Source/Core/VideoSynchronizer.js +222 -0
  533. package/Source/Core/Visibility.js +34 -0
  534. package/Source/Core/VulkanConstants.js +286 -0
  535. package/Source/Core/WallGeometry.js +626 -0
  536. package/Source/Core/WallGeometryLibrary.js +212 -0
  537. package/Source/Core/WallOutlineGeometry.js +434 -0
  538. package/Source/Core/WebGLConstants.js +614 -0
  539. package/Source/Core/WebMercatorProjection.js +154 -0
  540. package/Source/Core/WebMercatorTilingScheme.js +297 -0
  541. package/Source/Core/WindingOrder.js +36 -0
  542. package/Source/Core/WireframeIndexGenerator.js +238 -0
  543. package/Source/Core/appendForwardSlash.js +10 -0
  544. package/Source/Core/arrayRemoveDuplicates.js +130 -0
  545. package/Source/Core/barycentricCoordinates.js +109 -0
  546. package/Source/Core/binarySearch.js +67 -0
  547. package/Source/Core/buildModuleUrl.js +151 -0
  548. package/Source/Core/cancelAnimationFrame.js +53 -0
  549. package/Source/Core/clone.js +32 -0
  550. package/Source/Core/combine.js +80 -0
  551. package/Source/Core/createGuid.js +22 -0
  552. package/Source/Core/createWorldTerrain.js +42 -0
  553. package/Source/Core/decodeGoogleEarthEnterpriseData.js +93 -0
  554. package/Source/Core/decodeVectorPolylinePositions.js +51 -0
  555. package/Source/Core/defaultValue.js +29 -0
  556. package/Source/Core/defer.js +44 -0
  557. package/Source/Core/defined.js +17 -0
  558. package/Source/Core/deprecationWarning.js +53 -0
  559. package/Source/Core/destroyObject.js +57 -0
  560. package/Source/Core/formatError.js +30 -0
  561. package/Source/Core/getAbsoluteUri.js +47 -0
  562. package/Source/Core/getBaseUri.js +47 -0
  563. package/Source/Core/getExtensionFromUri.js +38 -0
  564. package/Source/Core/getFilenameFromUri.js +32 -0
  565. package/Source/Core/getImageFromTypedArray.js +24 -0
  566. package/Source/Core/getImagePixels.js +43 -0
  567. package/Source/Core/getJsonFromTypedArray.js +21 -0
  568. package/Source/Core/getMagic.js +15 -0
  569. package/Source/Core/getStringFromTypedArray.js +166 -0
  570. package/Source/Core/getTimestamp.js +26 -0
  571. package/Source/Core/isBitSet.js +7 -0
  572. package/Source/Core/isBlobUri.js +22 -0
  573. package/Source/Core/isCrossOriginUrl.js +30 -0
  574. package/Source/Core/isDataUri.js +22 -0
  575. package/Source/Core/isLeapYear.js +23 -0
  576. package/Source/Core/loadAndExecuteScript.js +27 -0
  577. package/Source/Core/loadImageFromTypedArray.js +64 -0
  578. package/Source/Core/loadKTX2.js +104 -0
  579. package/Source/Core/mergeSort.js +111 -0
  580. package/Source/Core/objectToQuery.js +57 -0
  581. package/Source/Core/oneTimeWarning.js +52 -0
  582. package/Source/Core/parseResponseHeaders.js +37 -0
  583. package/Source/Core/pointInsideTriangle.js +39 -0
  584. package/Source/Core/queryToObject.js +60 -0
  585. package/Source/Core/requestAnimationFrame.js +83 -0
  586. package/Source/Core/resizeImageToNextPowerOfTwo.js +31 -0
  587. package/Source/Core/sampleTerrain.js +257 -0
  588. package/Source/Core/sampleTerrainMostDetailed.js +117 -0
  589. package/Source/Core/scaleToGeodeticSurface.js +147 -0
  590. package/Source/Core/subdivideArray.js +35 -0
  591. package/Source/Core/webGLConstantToGlslType.js +25 -0
  592. package/Source/Core/wrapFunction.js +26 -0
  593. package/Source/Core/writeTextToCanvas.js +222 -0
  594. package/Source/DataSources/BillboardGraphics.js +429 -0
  595. package/Source/DataSources/BillboardVisualizer.js +341 -0
  596. package/Source/DataSources/BoundingSphereState.js +26 -0
  597. package/Source/DataSources/BoxGeometryUpdater.js +325 -0
  598. package/Source/DataSources/BoxGraphics.js +213 -0
  599. package/Source/DataSources/CallbackProperty.js +111 -0
  600. package/Source/DataSources/Cesium3DTilesetGraphics.js +113 -0
  601. package/Source/DataSources/Cesium3DTilesetVisualizer.js +249 -0
  602. package/Source/DataSources/CheckerboardMaterialProperty.js +151 -0
  603. package/Source/DataSources/ColorMaterialProperty.js +106 -0
  604. package/Source/DataSources/CompositeEntityCollection.js +592 -0
  605. package/Source/DataSources/CompositeMaterialProperty.js +129 -0
  606. package/Source/DataSources/CompositePositionProperty.js +149 -0
  607. package/Source/DataSources/CompositeProperty.js +154 -0
  608. package/Source/DataSources/ConstantPositionProperty.js +146 -0
  609. package/Source/DataSources/ConstantProperty.js +116 -0
  610. package/Source/DataSources/CorridorGeometryUpdater.js +404 -0
  611. package/Source/DataSources/CorridorGraphics.js +328 -0
  612. package/Source/DataSources/CustomDataSource.js +173 -0
  613. package/Source/DataSources/CylinderGeometryUpdater.js +373 -0
  614. package/Source/DataSources/CylinderGraphics.js +265 -0
  615. package/Source/DataSources/CzmlDataSource.js +5141 -0
  616. package/Source/DataSources/DataSource.js +121 -0
  617. package/Source/DataSources/DataSourceClock.js +165 -0
  618. package/Source/DataSources/DataSourceCollection.js +336 -0
  619. package/Source/DataSources/DataSourceDisplay.js +510 -0
  620. package/Source/DataSources/DynamicGeometryBatch.js +56 -0
  621. package/Source/DataSources/DynamicGeometryUpdater.js +274 -0
  622. package/Source/DataSources/EllipseGeometryUpdater.js +430 -0
  623. package/Source/DataSources/EllipseGraphics.js +357 -0
  624. package/Source/DataSources/EllipsoidGeometryUpdater.js +710 -0
  625. package/Source/DataSources/EllipsoidGraphics.js +323 -0
  626. package/Source/DataSources/Entity.js +752 -0
  627. package/Source/DataSources/EntityCluster.js +997 -0
  628. package/Source/DataSources/EntityCollection.js +440 -0
  629. package/Source/DataSources/EntityView.js +426 -0
  630. package/Source/DataSources/GeoJsonDataSource.js +1064 -0
  631. package/Source/DataSources/GeometryUpdater.js +545 -0
  632. package/Source/DataSources/GeometryVisualizer.js +620 -0
  633. package/Source/DataSources/GpxDataSource.js +1023 -0
  634. package/Source/DataSources/GridMaterialProperty.js +198 -0
  635. package/Source/DataSources/GroundGeometryUpdater.js +232 -0
  636. package/Source/DataSources/ImageMaterialProperty.js +166 -0
  637. package/Source/DataSources/KmlCamera.js +13 -0
  638. package/Source/DataSources/KmlDataSource.js +4326 -0
  639. package/Source/DataSources/KmlLookAt.js +12 -0
  640. package/Source/DataSources/KmlTour.js +176 -0
  641. package/Source/DataSources/KmlTourFlyTo.js +109 -0
  642. package/Source/DataSources/KmlTourWait.js +52 -0
  643. package/Source/DataSources/LabelGraphics.js +430 -0
  644. package/Source/DataSources/LabelVisualizer.js +360 -0
  645. package/Source/DataSources/MaterialProperty.js +105 -0
  646. package/Source/DataSources/ModelGraphics.js +447 -0
  647. package/Source/DataSources/ModelVisualizer.js +548 -0
  648. package/Source/DataSources/NodeTransformationProperty.js +144 -0
  649. package/Source/DataSources/PathGraphics.js +163 -0
  650. package/Source/DataSources/PathVisualizer.js +759 -0
  651. package/Source/DataSources/PlaneGeometryUpdater.js +384 -0
  652. package/Source/DataSources/PlaneGraphics.js +210 -0
  653. package/Source/DataSources/PointGraphics.js +221 -0
  654. package/Source/DataSources/PointVisualizer.js +426 -0
  655. package/Source/DataSources/PolygonGeometryUpdater.js +575 -0
  656. package/Source/DataSources/PolygonGraphics.js +400 -0
  657. package/Source/DataSources/PolylineArrowMaterialProperty.js +104 -0
  658. package/Source/DataSources/PolylineDashMaterialProperty.js +168 -0
  659. package/Source/DataSources/PolylineGeometryUpdater.js +886 -0
  660. package/Source/DataSources/PolylineGlowMaterialProperty.js +146 -0
  661. package/Source/DataSources/PolylineGraphics.js +248 -0
  662. package/Source/DataSources/PolylineOutlineMaterialProperty.js +152 -0
  663. package/Source/DataSources/PolylineVisualizer.js +414 -0
  664. package/Source/DataSources/PolylineVolumeGeometryUpdater.js +304 -0
  665. package/Source/DataSources/PolylineVolumeGraphics.js +237 -0
  666. package/Source/DataSources/PositionProperty.js +133 -0
  667. package/Source/DataSources/PositionPropertyArray.js +187 -0
  668. package/Source/DataSources/Property.js +138 -0
  669. package/Source/DataSources/PropertyArray.js +147 -0
  670. package/Source/DataSources/PropertyBag.js +275 -0
  671. package/Source/DataSources/RectangleGeometryUpdater.js +422 -0
  672. package/Source/DataSources/RectangleGraphics.js +329 -0
  673. package/Source/DataSources/ReferenceProperty.js +365 -0
  674. package/Source/DataSources/Rotation.js +156 -0
  675. package/Source/DataSources/SampledPositionProperty.js +325 -0
  676. package/Source/DataSources/SampledProperty.js +834 -0
  677. package/Source/DataSources/ScaledPositionProperty.js +97 -0
  678. package/Source/DataSources/StaticGeometryColorBatch.js +570 -0
  679. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +488 -0
  680. package/Source/DataSources/StaticGroundGeometryColorBatch.js +395 -0
  681. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +426 -0
  682. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +434 -0
  683. package/Source/DataSources/StaticOutlineGeometryBatch.js +466 -0
  684. package/Source/DataSources/StripeMaterialProperty.js +187 -0
  685. package/Source/DataSources/StripeOrientation.js +19 -0
  686. package/Source/DataSources/TerrainOffsetProperty.js +246 -0
  687. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +152 -0
  688. package/Source/DataSources/TimeIntervalCollectionProperty.js +136 -0
  689. package/Source/DataSources/VelocityOrientationProperty.js +154 -0
  690. package/Source/DataSources/VelocityVectorProperty.js +216 -0
  691. package/Source/DataSources/Visualizer.js +61 -0
  692. package/Source/DataSources/WallGeometryUpdater.js +275 -0
  693. package/Source/DataSources/WallGraphics.js +244 -0
  694. package/Source/DataSources/createMaterialPropertyDescriptor.js +35 -0
  695. package/Source/DataSources/createPropertyDescriptor.js +72 -0
  696. package/Source/DataSources/createRawPropertyDescriptor.js +13 -0
  697. package/Source/DataSources/exportKml.js +1519 -0
  698. package/Source/DataSources/getElement.js +26 -0
  699. package/Source/DataSources/heightReferenceOnEntityPropertyChanged.js +47 -0
  700. package/Source/Renderer/AutomaticUniforms.js +1625 -0
  701. package/Source/Renderer/Buffer.js +420 -0
  702. package/Source/Renderer/BufferUsage.js +19 -0
  703. package/Source/Renderer/ClearCommand.js +102 -0
  704. package/Source/Renderer/ComputeCommand.js +119 -0
  705. package/Source/Renderer/ComputeEngine.js +135 -0
  706. package/Source/Renderer/Context.js +1601 -0
  707. package/Source/Renderer/ContextLimits.js +297 -0
  708. package/Source/Renderer/CubeMap.js +631 -0
  709. package/Source/Renderer/CubeMapFace.js +361 -0
  710. package/Source/Renderer/DrawCommand.js +610 -0
  711. package/Source/Renderer/Framebuffer.js +448 -0
  712. package/Source/Renderer/FramebufferManager.js +497 -0
  713. package/Source/Renderer/MipmapHint.js +19 -0
  714. package/Source/Renderer/MultisampleFramebuffer.js +115 -0
  715. package/Source/Renderer/Pass.js +26 -0
  716. package/Source/Renderer/PassState.js +57 -0
  717. package/Source/Renderer/PixelDatatype.js +98 -0
  718. package/Source/Renderer/RenderState.js +996 -0
  719. package/Source/Renderer/Renderbuffer.js +103 -0
  720. package/Source/Renderer/RenderbufferFormat.js +42 -0
  721. package/Source/Renderer/Sampler.js +109 -0
  722. package/Source/Renderer/ShaderBuilder.js +593 -0
  723. package/Source/Renderer/ShaderCache.js +291 -0
  724. package/Source/Renderer/ShaderDestination.js +51 -0
  725. package/Source/Renderer/ShaderFunction.js +66 -0
  726. package/Source/Renderer/ShaderProgram.js +612 -0
  727. package/Source/Renderer/ShaderSource.js +519 -0
  728. package/Source/Renderer/ShaderStruct.js +55 -0
  729. package/Source/Renderer/Texture.js +1035 -0
  730. package/Source/Renderer/TextureCache.js +81 -0
  731. package/Source/Renderer/TextureMagnificationFilter.js +41 -0
  732. package/Source/Renderer/TextureMinificationFilter.js +94 -0
  733. package/Source/Renderer/TextureWrap.js +19 -0
  734. package/Source/Renderer/UniformState.js +1710 -0
  735. package/Source/Renderer/VertexArray.js +853 -0
  736. package/Source/Renderer/VertexArrayFacade.js +514 -0
  737. package/Source/Renderer/createUniform.js +419 -0
  738. package/Source/Renderer/createUniformArray.js +637 -0
  739. package/Source/Renderer/freezeRenderState.js +30 -0
  740. package/Source/Renderer/loadCubeMap.js +93 -0
  741. package/Source/Renderer/modernizeShader.js +242 -0
  742. package/Source/Scene/AlphaMode.js +33 -0
  743. package/Source/Scene/Appearance.js +204 -0
  744. package/Source/Scene/ArcGisMapServerImageryProvider.js +905 -0
  745. package/Source/Scene/AttributeType.js +200 -0
  746. package/Source/Scene/AutoExposure.js +387 -0
  747. package/Source/Scene/Axis.js +111 -0
  748. package/Source/Scene/B3dmParser.js +174 -0
  749. package/Source/Scene/BatchTable.js +636 -0
  750. package/Source/Scene/BatchTableHierarchy.js +556 -0
  751. package/Source/Scene/BatchTexture.js +574 -0
  752. package/Source/Scene/Billboard.js +1552 -0
  753. package/Source/Scene/BillboardCollection.js +2417 -0
  754. package/Source/Scene/BingMapsImageryProvider.js +855 -0
  755. package/Source/Scene/BingMapsStyle.js +93 -0
  756. package/Source/Scene/BlendEquation.js +53 -0
  757. package/Source/Scene/BlendFunction.js +129 -0
  758. package/Source/Scene/BlendOption.js +28 -0
  759. package/Source/Scene/BlendingState.js +73 -0
  760. package/Source/Scene/BoxEmitter.js +75 -0
  761. package/Source/Scene/BrdfLutGenerator.js +75 -0
  762. package/Source/Scene/BufferLoader.js +146 -0
  763. package/Source/Scene/Camera.js +3951 -0
  764. package/Source/Scene/CameraEventAggregator.js +565 -0
  765. package/Source/Scene/CameraEventType.js +47 -0
  766. package/Source/Scene/CameraFlightPath.js +576 -0
  767. package/Source/Scene/Cesium3DContentGroup.js +44 -0
  768. package/Source/Scene/Cesium3DTile.js +2115 -0
  769. package/Source/Scene/Cesium3DTileBatchTable.js +1176 -0
  770. package/Source/Scene/Cesium3DTileColorBlendMode.js +52 -0
  771. package/Source/Scene/Cesium3DTileContent.js +397 -0
  772. package/Source/Scene/Cesium3DTileContentFactory.js +104 -0
  773. package/Source/Scene/Cesium3DTileContentState.js +12 -0
  774. package/Source/Scene/Cesium3DTileContentType.js +160 -0
  775. package/Source/Scene/Cesium3DTileFeature.js +444 -0
  776. package/Source/Scene/Cesium3DTileFeatureTable.js +132 -0
  777. package/Source/Scene/Cesium3DTileOptimizationHint.js +13 -0
  778. package/Source/Scene/Cesium3DTileOptimizations.js +115 -0
  779. package/Source/Scene/Cesium3DTilePass.js +82 -0
  780. package/Source/Scene/Cesium3DTilePassState.js +52 -0
  781. package/Source/Scene/Cesium3DTilePointFeature.js +864 -0
  782. package/Source/Scene/Cesium3DTileRefine.js +29 -0
  783. package/Source/Scene/Cesium3DTileStyle.js +1475 -0
  784. package/Source/Scene/Cesium3DTileStyleEngine.js +78 -0
  785. package/Source/Scene/Cesium3DTileset.js +3158 -0
  786. package/Source/Scene/Cesium3DTilesetCache.js +82 -0
  787. package/Source/Scene/Cesium3DTilesetHeatmap.js +165 -0
  788. package/Source/Scene/Cesium3DTilesetMetadata.js +199 -0
  789. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +144 -0
  790. package/Source/Scene/Cesium3DTilesetStatistics.js +129 -0
  791. package/Source/Scene/Cesium3DTilesetTraversal.js +773 -0
  792. package/Source/Scene/CircleEmitter.js +62 -0
  793. package/Source/Scene/ClassificationPrimitive.js +1433 -0
  794. package/Source/Scene/ClassificationType.js +35 -0
  795. package/Source/Scene/ClippingPlane.js +184 -0
  796. package/Source/Scene/ClippingPlaneCollection.js +771 -0
  797. package/Source/Scene/CloudCollection.js +1050 -0
  798. package/Source/Scene/CloudType.js +33 -0
  799. package/Source/Scene/ColorBlendMode.js +33 -0
  800. package/Source/Scene/Composite3DTileContent.js +346 -0
  801. package/Source/Scene/ConditionsExpression.js +218 -0
  802. package/Source/Scene/ConeEmitter.js +62 -0
  803. package/Source/Scene/ContentMetadata.js +184 -0
  804. package/Source/Scene/CreditDisplay.js +610 -0
  805. package/Source/Scene/CullFace.js +33 -0
  806. package/Source/Scene/CumulusCloud.js +353 -0
  807. package/Source/Scene/DebugAppearance.js +268 -0
  808. package/Source/Scene/DebugCameraPrimitive.js +257 -0
  809. package/Source/Scene/DebugInspector.js +151 -0
  810. package/Source/Scene/DebugModelMatrixPrimitive.js +222 -0
  811. package/Source/Scene/DepthFunction.js +73 -0
  812. package/Source/Scene/DepthPlane.js +245 -0
  813. package/Source/Scene/DerivedCommand.js +433 -0
  814. package/Source/Scene/DeviceOrientationCameraController.js +120 -0
  815. package/Source/Scene/DirectionalLight.js +50 -0
  816. package/Source/Scene/DiscardEmptyTileImagePolicy.js +54 -0
  817. package/Source/Scene/DiscardMissingTileImagePolicy.js +148 -0
  818. package/Source/Scene/DracoLoader.js +76 -0
  819. package/Source/Scene/EllipsoidPrimitive.js +511 -0
  820. package/Source/Scene/EllipsoidSurfaceAppearance.js +282 -0
  821. package/Source/Scene/Empty3DTileContent.js +151 -0
  822. package/Source/Scene/Expression.js +2232 -0
  823. package/Source/Scene/ExpressionNodeType.js +25 -0
  824. package/Source/Scene/Fog.js +205 -0
  825. package/Source/Scene/FrameRateMonitor.js +384 -0
  826. package/Source/Scene/FrameState.js +419 -0
  827. package/Source/Scene/FrustumCommands.js +30 -0
  828. package/Source/Scene/Geometry3DTileContent.js +526 -0
  829. package/Source/Scene/GetFeatureInfoFormat.js +395 -0
  830. package/Source/Scene/Globe.js +1121 -0
  831. package/Source/Scene/GlobeDepth.js +378 -0
  832. package/Source/Scene/GlobeSurfaceShaderSet.js +413 -0
  833. package/Source/Scene/GlobeSurfaceTile.js +997 -0
  834. package/Source/Scene/GlobeSurfaceTileProvider.js +2818 -0
  835. package/Source/Scene/GlobeTranslucency.js +239 -0
  836. package/Source/Scene/GlobeTranslucencyFramebuffer.js +201 -0
  837. package/Source/Scene/GlobeTranslucencyState.js +1117 -0
  838. package/Source/Scene/GltfBufferViewLoader.js +268 -0
  839. package/Source/Scene/GltfDracoLoader.js +250 -0
  840. package/Source/Scene/GltfImageLoader.js +327 -0
  841. package/Source/Scene/GltfIndexBufferLoader.js +429 -0
  842. package/Source/Scene/GltfJsonLoader.js +301 -0
  843. package/Source/Scene/GltfLoader.js +2663 -0
  844. package/Source/Scene/GltfLoaderUtil.js +201 -0
  845. package/Source/Scene/GltfPipeline/ForEach.js +424 -0
  846. package/Source/Scene/GltfPipeline/addBuffer.js +30 -0
  847. package/Source/Scene/GltfPipeline/addDefaults.js +236 -0
  848. package/Source/Scene/GltfPipeline/addExtensionsRequired.js +24 -0
  849. package/Source/Scene/GltfPipeline/addExtensionsUsed.js +22 -0
  850. package/Source/Scene/GltfPipeline/addPipelineExtras.js +36 -0
  851. package/Source/Scene/GltfPipeline/addToArray.js +25 -0
  852. package/Source/Scene/GltfPipeline/findAccessorMinMax.js +71 -0
  853. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +139 -0
  854. package/Source/Scene/GltfPipeline/getAccessorByteStride.js +29 -0
  855. package/Source/Scene/GltfPipeline/getComponentReader.js +147 -0
  856. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +138 -0
  857. package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +145 -0
  858. package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +29 -0
  859. package/Source/Scene/GltfPipeline/parseGlb.js +122 -0
  860. package/Source/Scene/GltfPipeline/readAccessorPacked.js +54 -0
  861. package/Source/Scene/GltfPipeline/removeExtension.js +64 -0
  862. package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +24 -0
  863. package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +26 -0
  864. package/Source/Scene/GltfPipeline/removePipelineExtras.js +42 -0
  865. package/Source/Scene/GltfPipeline/removeUnusedElements.js +881 -0
  866. package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +53 -0
  867. package/Source/Scene/GltfPipeline/updateVersion.js +1151 -0
  868. package/Source/Scene/GltfPipeline/usesExtension.js +18 -0
  869. package/Source/Scene/GltfStructuralMetadataLoader.js +504 -0
  870. package/Source/Scene/GltfTextureLoader.js +383 -0
  871. package/Source/Scene/GltfVertexBufferLoader.js +470 -0
  872. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +758 -0
  873. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +756 -0
  874. package/Source/Scene/GridImageryProvider.js +436 -0
  875. package/Source/Scene/GroundPolylinePrimitive.js +926 -0
  876. package/Source/Scene/GroundPrimitive.js +1040 -0
  877. package/Source/Scene/GroupMetadata.js +203 -0
  878. package/Source/Scene/HeightReference.js +28 -0
  879. package/Source/Scene/HorizontalOrigin.js +41 -0
  880. package/Source/Scene/I3SDataProvider.js +668 -0
  881. package/Source/Scene/I3SFeature.js +63 -0
  882. package/Source/Scene/I3SField.js +255 -0
  883. package/Source/Scene/I3SGeometry.js +409 -0
  884. package/Source/Scene/I3SLayer.js +365 -0
  885. package/Source/Scene/I3SNode.js +816 -0
  886. package/Source/Scene/I3dmParser.js +141 -0
  887. package/Source/Scene/ImageBasedLighting.js +510 -0
  888. package/Source/Scene/Imagery.js +120 -0
  889. package/Source/Scene/ImageryLayer.js +1541 -0
  890. package/Source/Scene/ImageryLayerCollection.js +621 -0
  891. package/Source/Scene/ImageryLayerFeatureInfo.js +112 -0
  892. package/Source/Scene/ImageryProvider.js +387 -0
  893. package/Source/Scene/ImageryState.js +14 -0
  894. package/Source/Scene/Implicit3DTileContent.js +1154 -0
  895. package/Source/Scene/ImplicitAvailabilityBitstream.js +137 -0
  896. package/Source/Scene/ImplicitMetadataView.js +178 -0
  897. package/Source/Scene/ImplicitSubdivisionScheme.js +48 -0
  898. package/Source/Scene/ImplicitSubtree.js +1146 -0
  899. package/Source/Scene/ImplicitSubtreeMetadata.js +191 -0
  900. package/Source/Scene/ImplicitTileCoordinates.js +647 -0
  901. package/Source/Scene/ImplicitTileset.js +263 -0
  902. package/Source/Scene/InstanceAttributeSemantic.js +79 -0
  903. package/Source/Scene/InvertClassification.js +382 -0
  904. package/Source/Scene/IonImageryProvider.js +555 -0
  905. package/Source/Scene/IonWorldImageryStyle.js +33 -0
  906. package/Source/Scene/JobScheduler.js +199 -0
  907. package/Source/Scene/JobType.js +10 -0
  908. package/Source/Scene/JsonMetadataTable.js +114 -0
  909. package/Source/Scene/Label.js +1588 -0
  910. package/Source/Scene/LabelCollection.js +994 -0
  911. package/Source/Scene/LabelStyle.js +33 -0
  912. package/Source/Scene/Light.js +34 -0
  913. package/Source/Scene/MapMode2D.js +23 -0
  914. package/Source/Scene/MapboxImageryProvider.js +448 -0
  915. package/Source/Scene/MapboxStyleImageryProvider.js +457 -0
  916. package/Source/Scene/Material.js +1742 -0
  917. package/Source/Scene/MaterialAppearance.js +334 -0
  918. package/Source/Scene/MetadataClass.js +167 -0
  919. package/Source/Scene/MetadataClassProperty.js +1104 -0
  920. package/Source/Scene/MetadataComponentType.js +448 -0
  921. package/Source/Scene/MetadataEntity.js +425 -0
  922. package/Source/Scene/MetadataEnum.js +186 -0
  923. package/Source/Scene/MetadataEnumValue.js +97 -0
  924. package/Source/Scene/MetadataSchema.js +173 -0
  925. package/Source/Scene/MetadataSchemaLoader.js +145 -0
  926. package/Source/Scene/MetadataSemantic.js +145 -0
  927. package/Source/Scene/MetadataTable.js +357 -0
  928. package/Source/Scene/MetadataTableProperty.js +859 -0
  929. package/Source/Scene/MetadataType.js +208 -0
  930. package/Source/Scene/Model/AlphaPipelineStage.js +52 -0
  931. package/Source/Scene/Model/B3dmLoader.js +379 -0
  932. package/Source/Scene/Model/BatchTexturePipelineStage.js +72 -0
  933. package/Source/Scene/Model/CPUStylingPipelineStage.js +77 -0
  934. package/Source/Scene/Model/ClassificationModelDrawCommand.js +533 -0
  935. package/Source/Scene/Model/ClassificationPipelineStage.js +132 -0
  936. package/Source/Scene/Model/CustomShader.js +473 -0
  937. package/Source/Scene/Model/CustomShaderMode.js +40 -0
  938. package/Source/Scene/Model/CustomShaderPipelineStage.js +654 -0
  939. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +35 -0
  940. package/Source/Scene/Model/DequantizationPipelineStage.js +178 -0
  941. package/Source/Scene/Model/FeatureIdPipelineStage.js +504 -0
  942. package/Source/Scene/Model/GeoJsonLoader.js +722 -0
  943. package/Source/Scene/Model/GeometryPipelineStage.js +558 -0
  944. package/Source/Scene/Model/I3dmLoader.js +909 -0
  945. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +147 -0
  946. package/Source/Scene/Model/InstancingPipelineStage.js +1043 -0
  947. package/Source/Scene/Model/LightingModel.js +30 -0
  948. package/Source/Scene/Model/LightingPipelineStage.js +75 -0
  949. package/Source/Scene/Model/MaterialPipelineStage.js +510 -0
  950. package/Source/Scene/Model/MetadataPipelineStage.js +638 -0
  951. package/Source/Scene/Model/Model.js +2847 -0
  952. package/Source/Scene/Model/Model3DTileContent.js +451 -0
  953. package/Source/Scene/Model/ModelAlphaOptions.js +26 -0
  954. package/Source/Scene/Model/ModelAnimation.js +422 -0
  955. package/Source/Scene/Model/ModelAnimationChannel.js +293 -0
  956. package/Source/Scene/Model/ModelAnimationCollection.js +553 -0
  957. package/Source/Scene/Model/ModelArticulation.js +214 -0
  958. package/Source/Scene/Model/ModelArticulationStage.js +261 -0
  959. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +126 -0
  960. package/Source/Scene/Model/ModelColorPipelineStage.js +99 -0
  961. package/Source/Scene/Model/ModelDrawCommand.js +864 -0
  962. package/Source/Scene/Model/ModelFeature.js +229 -0
  963. package/Source/Scene/Model/ModelFeatureTable.js +322 -0
  964. package/Source/Scene/Model/ModelLightingOptions.js +29 -0
  965. package/Source/Scene/Model/ModelMatrixUpdateStage.js +108 -0
  966. package/Source/Scene/Model/ModelNode.js +125 -0
  967. package/Source/Scene/Model/ModelRenderResources.js +106 -0
  968. package/Source/Scene/Model/ModelRuntimeNode.js +648 -0
  969. package/Source/Scene/Model/ModelRuntimePrimitive.js +340 -0
  970. package/Source/Scene/Model/ModelSceneGraph.js +968 -0
  971. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +109 -0
  972. package/Source/Scene/Model/ModelSkin.js +180 -0
  973. package/Source/Scene/Model/ModelSplitterPipelineStage.js +66 -0
  974. package/Source/Scene/Model/ModelStatistics.js +197 -0
  975. package/Source/Scene/Model/ModelType.js +94 -0
  976. package/Source/Scene/Model/ModelUtility.js +386 -0
  977. package/Source/Scene/Model/MorphTargetsPipelineStage.js +249 -0
  978. package/Source/Scene/Model/NodeRenderResources.js +160 -0
  979. package/Source/Scene/Model/NodeStatisticsPipelineStage.js +75 -0
  980. package/Source/Scene/Model/PickingPipelineStage.js +219 -0
  981. package/Source/Scene/Model/PntsLoader.js +717 -0
  982. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +396 -0
  983. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +689 -0
  984. package/Source/Scene/Model/PrimitiveOutlinePipelineStage.js +99 -0
  985. package/Source/Scene/Model/PrimitiveRenderResources.js +297 -0
  986. package/Source/Scene/Model/PrimitiveStatisticsPipelineStage.js +253 -0
  987. package/Source/Scene/Model/SceneMode2DPipelineStage.js +301 -0
  988. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +185 -0
  989. package/Source/Scene/Model/SkinningPipelineStage.js +118 -0
  990. package/Source/Scene/Model/StyleCommandsNeeded.js +29 -0
  991. package/Source/Scene/Model/TextureManager.js +244 -0
  992. package/Source/Scene/Model/TextureUniform.js +74 -0
  993. package/Source/Scene/Model/TilesetPipelineStage.js +73 -0
  994. package/Source/Scene/Model/UniformType.js +124 -0
  995. package/Source/Scene/Model/VaryingType.js +61 -0
  996. package/Source/Scene/Model/WireframePipelineStage.js +118 -0
  997. package/Source/Scene/Model/buildDrawCommand.js +153 -0
  998. package/Source/Scene/ModelAnimationLoop.js +33 -0
  999. package/Source/Scene/ModelAnimationState.js +9 -0
  1000. package/Source/Scene/ModelComponents.js +1466 -0
  1001. package/Source/Scene/Moon.js +174 -0
  1002. package/Source/Scene/Multiple3DTileContent.js +674 -0
  1003. package/Source/Scene/NeverTileDiscardPolicy.js +28 -0
  1004. package/Source/Scene/OIT.js +893 -0
  1005. package/Source/Scene/OctahedralProjectedCubeMap.js +456 -0
  1006. package/Source/Scene/OpenStreetMapImageryProvider.js +124 -0
  1007. package/Source/Scene/OrderedGroundPrimitiveCollection.js +219 -0
  1008. package/Source/Scene/Particle.js +155 -0
  1009. package/Source/Scene/ParticleBurst.js +51 -0
  1010. package/Source/Scene/ParticleEmitter.js +36 -0
  1011. package/Source/Scene/ParticleSystem.js +910 -0
  1012. package/Source/Scene/PerInstanceColorAppearance.js +296 -0
  1013. package/Source/Scene/PerformanceDisplay.js +120 -0
  1014. package/Source/Scene/PickDepth.js +105 -0
  1015. package/Source/Scene/PickDepthFramebuffer.js +79 -0
  1016. package/Source/Scene/PickFramebuffer.js +125 -0
  1017. package/Source/Scene/Picking.js +1316 -0
  1018. package/Source/Scene/PntsParser.js +480 -0
  1019. package/Source/Scene/PointCloud.js +1425 -0
  1020. package/Source/Scene/PointCloudEyeDomeLighting.js +279 -0
  1021. package/Source/Scene/PointCloudShading.js +113 -0
  1022. package/Source/Scene/PointPrimitive.js +668 -0
  1023. package/Source/Scene/PointPrimitiveCollection.js +1217 -0
  1024. package/Source/Scene/Polyline.js +431 -0
  1025. package/Source/Scene/PolylineCollection.js +1962 -0
  1026. package/Source/Scene/PolylineColorAppearance.js +224 -0
  1027. package/Source/Scene/PolylineMaterialAppearance.js +236 -0
  1028. package/Source/Scene/PostProcessStage.js +1023 -0
  1029. package/Source/Scene/PostProcessStageCollection.js +888 -0
  1030. package/Source/Scene/PostProcessStageComposite.js +362 -0
  1031. package/Source/Scene/PostProcessStageLibrary.js +838 -0
  1032. package/Source/Scene/PostProcessStageSampleMode.js +22 -0
  1033. package/Source/Scene/PostProcessStageTextureCache.js +454 -0
  1034. package/Source/Scene/Primitive.js +2536 -0
  1035. package/Source/Scene/PrimitiveCollection.js +467 -0
  1036. package/Source/Scene/PrimitiveLoadPlan.js +280 -0
  1037. package/Source/Scene/PrimitivePipeline.js +855 -0
  1038. package/Source/Scene/PrimitiveState.js +13 -0
  1039. package/Source/Scene/PropertyAttribute.js +160 -0
  1040. package/Source/Scene/PropertyAttributeProperty.js +165 -0
  1041. package/Source/Scene/PropertyTable.js +541 -0
  1042. package/Source/Scene/PropertyTexture.js +162 -0
  1043. package/Source/Scene/PropertyTextureProperty.js +263 -0
  1044. package/Source/Scene/QuadtreeOccluders.js +30 -0
  1045. package/Source/Scene/QuadtreePrimitive.js +1546 -0
  1046. package/Source/Scene/QuadtreeTile.js +539 -0
  1047. package/Source/Scene/QuadtreeTileLoadState.js +39 -0
  1048. package/Source/Scene/QuadtreeTileProvider.js +226 -0
  1049. package/Source/Scene/ResourceCache.js +810 -0
  1050. package/Source/Scene/ResourceCacheKey.js +567 -0
  1051. package/Source/Scene/ResourceCacheStatistics.js +183 -0
  1052. package/Source/Scene/ResourceLoader.js +139 -0
  1053. package/Source/Scene/ResourceLoaderState.js +48 -0
  1054. package/Source/Scene/SDFSettings.js +39 -0
  1055. package/Source/Scene/Scene.js +4498 -0
  1056. package/Source/Scene/SceneFramebuffer.js +106 -0
  1057. package/Source/Scene/SceneMode.js +56 -0
  1058. package/Source/Scene/SceneTransforms.js +466 -0
  1059. package/Source/Scene/SceneTransitioner.js +1111 -0
  1060. package/Source/Scene/ScreenSpaceCameraController.js +2933 -0
  1061. package/Source/Scene/ShadowMap.js +1958 -0
  1062. package/Source/Scene/ShadowMapShader.js +395 -0
  1063. package/Source/Scene/ShadowMode.js +78 -0
  1064. package/Source/Scene/ShadowVolumeAppearance.js +937 -0
  1065. package/Source/Scene/SingleTileImageryProvider.js +501 -0
  1066. package/Source/Scene/SkyAtmosphere.js +402 -0
  1067. package/Source/Scene/SkyBox.js +252 -0
  1068. package/Source/Scene/SphereEmitter.js +66 -0
  1069. package/Source/Scene/SplitDirection.js +34 -0
  1070. package/Source/Scene/Splitter.js +49 -0
  1071. package/Source/Scene/StencilConstants.js +37 -0
  1072. package/Source/Scene/StencilFunction.js +73 -0
  1073. package/Source/Scene/StencilOperation.js +73 -0
  1074. package/Source/Scene/StructuralMetadata.js +243 -0
  1075. package/Source/Scene/StyleExpression.js +86 -0
  1076. package/Source/Scene/Sun.js +359 -0
  1077. package/Source/Scene/SunLight.js +31 -0
  1078. package/Source/Scene/SunPostProcess.js +288 -0
  1079. package/Source/Scene/SupportedImageFormats.js +18 -0
  1080. package/Source/Scene/TerrainFillMesh.js +2220 -0
  1081. package/Source/Scene/TerrainState.js +13 -0
  1082. package/Source/Scene/TextureAtlas.js +556 -0
  1083. package/Source/Scene/TileBoundingRegion.js +490 -0
  1084. package/Source/Scene/TileBoundingS2Cell.js +703 -0
  1085. package/Source/Scene/TileBoundingSphere.js +167 -0
  1086. package/Source/Scene/TileBoundingVolume.js +68 -0
  1087. package/Source/Scene/TileCoordinatesImageryProvider.js +379 -0
  1088. package/Source/Scene/TileDiscardPolicy.js +34 -0
  1089. package/Source/Scene/TileImagery.js +130 -0
  1090. package/Source/Scene/TileMapServiceImageryProvider.js +403 -0
  1091. package/Source/Scene/TileMetadata.js +184 -0
  1092. package/Source/Scene/TileOrientedBoundingBox.js +219 -0
  1093. package/Source/Scene/TileReplacementQueue.js +119 -0
  1094. package/Source/Scene/TileSelectionResult.js +80 -0
  1095. package/Source/Scene/TileState.js +10 -0
  1096. package/Source/Scene/Tileset3DTileContent.js +158 -0
  1097. package/Source/Scene/TilesetMetadata.js +186 -0
  1098. package/Source/Scene/TimeDynamicImagery.js +308 -0
  1099. package/Source/Scene/TimeDynamicPointCloud.js +819 -0
  1100. package/Source/Scene/Tonemapper.js +52 -0
  1101. package/Source/Scene/TranslucentTileClassification.js +524 -0
  1102. package/Source/Scene/TweenCollection.js +588 -0
  1103. package/Source/Scene/UrlTemplateImageryProvider.js +1240 -0
  1104. package/Source/Scene/Vector3DTileBatch.js +37 -0
  1105. package/Source/Scene/Vector3DTileClampedPolylines.js +772 -0
  1106. package/Source/Scene/Vector3DTileContent.js +774 -0
  1107. package/Source/Scene/Vector3DTileGeometry.js +490 -0
  1108. package/Source/Scene/Vector3DTilePoints.js +529 -0
  1109. package/Source/Scene/Vector3DTilePolygons.js +479 -0
  1110. package/Source/Scene/Vector3DTilePolylines.js +676 -0
  1111. package/Source/Scene/Vector3DTilePrimitive.js +1282 -0
  1112. package/Source/Scene/VertexAttributeSemantic.js +273 -0
  1113. package/Source/Scene/VerticalOrigin.js +49 -0
  1114. package/Source/Scene/View.js +431 -0
  1115. package/Source/Scene/ViewportQuad.js +182 -0
  1116. package/Source/Scene/WebMapServiceImageryProvider.js +768 -0
  1117. package/Source/Scene/WebMapTileServiceImageryProvider.js +711 -0
  1118. package/Source/Scene/computeFlyToLocationForRectangle.js +69 -0
  1119. package/Source/Scene/createBillboardPointCallback.js +70 -0
  1120. package/Source/Scene/createElevationBandMaterial.js +585 -0
  1121. package/Source/Scene/createOsmBuildings.js +75 -0
  1122. package/Source/Scene/createTangentSpaceDebugPrimitive.js +116 -0
  1123. package/Source/Scene/createWorldImagery.js +38 -0
  1124. package/Source/Scene/findContentMetadata.js +54 -0
  1125. package/Source/Scene/findGroupMetadata.js +39 -0
  1126. package/Source/Scene/findTileMetadata.js +56 -0
  1127. package/Source/Scene/getBinaryAccessor.js +56 -0
  1128. package/Source/Scene/getClipAndStyleCode.js +34 -0
  1129. package/Source/Scene/getClippingFunction.js +163 -0
  1130. package/Source/Scene/hasExtension.js +19 -0
  1131. package/Source/Scene/parseBatchTable.js +439 -0
  1132. package/Source/Scene/parseBoundingVolumeSemantics.js +121 -0
  1133. package/Source/Scene/parseFeatureMetadataLegacy.js +139 -0
  1134. package/Source/Scene/parseStructuralMetadata.js +102 -0
  1135. package/Source/Scene/preprocess3DTileContent.js +94 -0
  1136. package/Source/Shaders/AdjustTranslucentFS.glsl +24 -0
  1137. package/Source/Shaders/AdjustTranslucentFS.js +26 -0
  1138. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +29 -0
  1139. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +31 -0
  1140. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +26 -0
  1141. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +28 -0
  1142. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +23 -0
  1143. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +25 -0
  1144. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +17 -0
  1145. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +19 -0
  1146. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +33 -0
  1147. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +35 -0
  1148. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +19 -0
  1149. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +21 -0
  1150. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +24 -0
  1151. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +26 -0
  1152. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +20 -0
  1153. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +22 -0
  1154. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +6 -0
  1155. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +8 -0
  1156. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +15 -0
  1157. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +17 -0
  1158. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +28 -0
  1159. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +30 -0
  1160. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +33 -0
  1161. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +35 -0
  1162. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +25 -0
  1163. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +27 -0
  1164. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +20 -0
  1165. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +22 -0
  1166. package/Source/Shaders/AtmosphereCommon.glsl +152 -0
  1167. package/Source/Shaders/AtmosphereCommon.js +154 -0
  1168. package/Source/Shaders/BillboardCollectionFS.glsl +208 -0
  1169. package/Source/Shaders/BillboardCollectionFS.js +210 -0
  1170. package/Source/Shaders/BillboardCollectionVS.glsl +434 -0
  1171. package/Source/Shaders/BillboardCollectionVS.js +436 -0
  1172. package/Source/Shaders/BrdfLutGeneratorFS.glsl +83 -0
  1173. package/Source/Shaders/BrdfLutGeneratorFS.js +85 -0
  1174. package/Source/Shaders/Builtin/Constants/degreesPerRadian.glsl +16 -0
  1175. package/Source/Shaders/Builtin/Constants/degreesPerRadian.js +18 -0
  1176. package/Source/Shaders/Builtin/Constants/depthRange.glsl +14 -0
  1177. package/Source/Shaders/Builtin/Constants/depthRange.js +16 -0
  1178. package/Source/Shaders/Builtin/Constants/epsilon1.glsl +7 -0
  1179. package/Source/Shaders/Builtin/Constants/epsilon1.js +9 -0
  1180. package/Source/Shaders/Builtin/Constants/epsilon2.glsl +7 -0
  1181. package/Source/Shaders/Builtin/Constants/epsilon2.js +9 -0
  1182. package/Source/Shaders/Builtin/Constants/epsilon3.glsl +7 -0
  1183. package/Source/Shaders/Builtin/Constants/epsilon3.js +9 -0
  1184. package/Source/Shaders/Builtin/Constants/epsilon4.glsl +7 -0
  1185. package/Source/Shaders/Builtin/Constants/epsilon4.js +9 -0
  1186. package/Source/Shaders/Builtin/Constants/epsilon5.glsl +7 -0
  1187. package/Source/Shaders/Builtin/Constants/epsilon5.js +9 -0
  1188. package/Source/Shaders/Builtin/Constants/epsilon6.glsl +7 -0
  1189. package/Source/Shaders/Builtin/Constants/epsilon6.js +9 -0
  1190. package/Source/Shaders/Builtin/Constants/epsilon7.glsl +7 -0
  1191. package/Source/Shaders/Builtin/Constants/epsilon7.js +9 -0
  1192. package/Source/Shaders/Builtin/Constants/infinity.glsl +7 -0
  1193. package/Source/Shaders/Builtin/Constants/infinity.js +9 -0
  1194. package/Source/Shaders/Builtin/Constants/oneOverPi.glsl +16 -0
  1195. package/Source/Shaders/Builtin/Constants/oneOverPi.js +18 -0
  1196. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.glsl +16 -0
  1197. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.js +18 -0
  1198. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +9 -0
  1199. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +11 -0
  1200. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +9 -0
  1201. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +11 -0
  1202. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +9 -0
  1203. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +11 -0
  1204. package/Source/Shaders/Builtin/Constants/passClassification.glsl +9 -0
  1205. package/Source/Shaders/Builtin/Constants/passClassification.js +11 -0
  1206. package/Source/Shaders/Builtin/Constants/passCompute.glsl +9 -0
  1207. package/Source/Shaders/Builtin/Constants/passCompute.js +11 -0
  1208. package/Source/Shaders/Builtin/Constants/passEnvironment.glsl +9 -0
  1209. package/Source/Shaders/Builtin/Constants/passEnvironment.js +11 -0
  1210. package/Source/Shaders/Builtin/Constants/passGlobe.glsl +9 -0
  1211. package/Source/Shaders/Builtin/Constants/passGlobe.js +11 -0
  1212. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +9 -0
  1213. package/Source/Shaders/Builtin/Constants/passOpaque.js +11 -0
  1214. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +9 -0
  1215. package/Source/Shaders/Builtin/Constants/passOverlay.js +11 -0
  1216. package/Source/Shaders/Builtin/Constants/passTerrainClassification.glsl +9 -0
  1217. package/Source/Shaders/Builtin/Constants/passTerrainClassification.js +11 -0
  1218. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +9 -0
  1219. package/Source/Shaders/Builtin/Constants/passTranslucent.js +11 -0
  1220. package/Source/Shaders/Builtin/Constants/pi.glsl +16 -0
  1221. package/Source/Shaders/Builtin/Constants/pi.js +18 -0
  1222. package/Source/Shaders/Builtin/Constants/piOverFour.glsl +16 -0
  1223. package/Source/Shaders/Builtin/Constants/piOverFour.js +18 -0
  1224. package/Source/Shaders/Builtin/Constants/piOverSix.glsl +16 -0
  1225. package/Source/Shaders/Builtin/Constants/piOverSix.js +18 -0
  1226. package/Source/Shaders/Builtin/Constants/piOverThree.glsl +16 -0
  1227. package/Source/Shaders/Builtin/Constants/piOverThree.js +18 -0
  1228. package/Source/Shaders/Builtin/Constants/piOverTwo.glsl +16 -0
  1229. package/Source/Shaders/Builtin/Constants/piOverTwo.js +18 -0
  1230. package/Source/Shaders/Builtin/Constants/radiansPerDegree.glsl +16 -0
  1231. package/Source/Shaders/Builtin/Constants/radiansPerDegree.js +18 -0
  1232. package/Source/Shaders/Builtin/Constants/sceneMode2D.glsl +11 -0
  1233. package/Source/Shaders/Builtin/Constants/sceneMode2D.js +13 -0
  1234. package/Source/Shaders/Builtin/Constants/sceneMode3D.glsl +11 -0
  1235. package/Source/Shaders/Builtin/Constants/sceneMode3D.js +13 -0
  1236. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.glsl +11 -0
  1237. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.js +13 -0
  1238. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.glsl +11 -0
  1239. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.js +13 -0
  1240. package/Source/Shaders/Builtin/Constants/solarRadius.glsl +13 -0
  1241. package/Source/Shaders/Builtin/Constants/solarRadius.js +15 -0
  1242. package/Source/Shaders/Builtin/Constants/threePiOver2.glsl +16 -0
  1243. package/Source/Shaders/Builtin/Constants/threePiOver2.js +18 -0
  1244. package/Source/Shaders/Builtin/Constants/twoPi.glsl +16 -0
  1245. package/Source/Shaders/Builtin/Constants/twoPi.js +18 -0
  1246. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.glsl +16 -0
  1247. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.js +18 -0
  1248. package/Source/Shaders/Builtin/CzmBuiltins.js +262 -0
  1249. package/Source/Shaders/Builtin/Functions/HSBToRGB.glsl +24 -0
  1250. package/Source/Shaders/Builtin/Functions/HSBToRGB.js +26 -0
  1251. package/Source/Shaders/Builtin/Functions/HSLToRGB.glsl +31 -0
  1252. package/Source/Shaders/Builtin/Functions/HSLToRGB.js +33 -0
  1253. package/Source/Shaders/Builtin/Functions/RGBToHSB.glsl +27 -0
  1254. package/Source/Shaders/Builtin/Functions/RGBToHSB.js +29 -0
  1255. package/Source/Shaders/Builtin/Functions/RGBToHSL.glsl +34 -0
  1256. package/Source/Shaders/Builtin/Functions/RGBToHSL.js +36 -0
  1257. package/Source/Shaders/Builtin/Functions/RGBToXYZ.glsl +30 -0
  1258. package/Source/Shaders/Builtin/Functions/RGBToXYZ.js +32 -0
  1259. package/Source/Shaders/Builtin/Functions/XYZToRGB.glsl +30 -0
  1260. package/Source/Shaders/Builtin/Functions/XYZToRGB.js +32 -0
  1261. package/Source/Shaders/Builtin/Functions/acesTonemapping.glsl +16 -0
  1262. package/Source/Shaders/Builtin/Functions/acesTonemapping.js +18 -0
  1263. package/Source/Shaders/Builtin/Functions/alphaWeight.glsl +11 -0
  1264. package/Source/Shaders/Builtin/Functions/alphaWeight.js +13 -0
  1265. package/Source/Shaders/Builtin/Functions/antialias.glsl +39 -0
  1266. package/Source/Shaders/Builtin/Functions/antialias.js +41 -0
  1267. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.glsl +18 -0
  1268. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.js +20 -0
  1269. package/Source/Shaders/Builtin/Functions/backFacing.glsl +13 -0
  1270. package/Source/Shaders/Builtin/Functions/backFacing.js +15 -0
  1271. package/Source/Shaders/Builtin/Functions/branchFreeTernary.glsl +71 -0
  1272. package/Source/Shaders/Builtin/Functions/branchFreeTernary.js +73 -0
  1273. package/Source/Shaders/Builtin/Functions/cascadeColor.glsl +8 -0
  1274. package/Source/Shaders/Builtin/Functions/cascadeColor.js +10 -0
  1275. package/Source/Shaders/Builtin/Functions/cascadeDistance.glsl +7 -0
  1276. package/Source/Shaders/Builtin/Functions/cascadeDistance.js +9 -0
  1277. package/Source/Shaders/Builtin/Functions/cascadeMatrix.glsl +10 -0
  1278. package/Source/Shaders/Builtin/Functions/cascadeMatrix.js +12 -0
  1279. package/Source/Shaders/Builtin/Functions/cascadeWeights.glsl +10 -0
  1280. package/Source/Shaders/Builtin/Functions/cascadeWeights.js +12 -0
  1281. package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +12 -0
  1282. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +14 -0
  1283. package/Source/Shaders/Builtin/Functions/computePosition.glsl +22 -0
  1284. package/Source/Shaders/Builtin/Functions/computePosition.js +24 -0
  1285. package/Source/Shaders/Builtin/Functions/cosineAndSine.glsl +211 -0
  1286. package/Source/Shaders/Builtin/Functions/cosineAndSine.js +213 -0
  1287. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.glsl +17 -0
  1288. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.js +19 -0
  1289. package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.glsl +16 -0
  1290. package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.js +18 -0
  1291. package/Source/Shaders/Builtin/Functions/depthClamp.glsl +47 -0
  1292. package/Source/Shaders/Builtin/Functions/depthClamp.js +49 -0
  1293. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.glsl +33 -0
  1294. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.js +35 -0
  1295. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.glsl +12 -0
  1296. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.js +14 -0
  1297. package/Source/Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates.glsl +10 -0
  1298. package/Source/Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates.js +12 -0
  1299. package/Source/Shaders/Builtin/Functions/equalsEpsilon.glsl +36 -0
  1300. package/Source/Shaders/Builtin/Functions/equalsEpsilon.js +38 -0
  1301. package/Source/Shaders/Builtin/Functions/eyeOffset.glsl +20 -0
  1302. package/Source/Shaders/Builtin/Functions/eyeOffset.js +22 -0
  1303. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.glsl +32 -0
  1304. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.js +34 -0
  1305. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.glsl +55 -0
  1306. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.js +57 -0
  1307. package/Source/Shaders/Builtin/Functions/fog.glsl +38 -0
  1308. package/Source/Shaders/Builtin/Functions/fog.js +40 -0
  1309. package/Source/Shaders/Builtin/Functions/gammaCorrect.glsl +22 -0
  1310. package/Source/Shaders/Builtin/Functions/gammaCorrect.js +24 -0
  1311. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.glsl +16 -0
  1312. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.js +18 -0
  1313. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.glsl +27 -0
  1314. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.js +29 -0
  1315. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.glsl +22 -0
  1316. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.js +24 -0
  1317. package/Source/Shaders/Builtin/Functions/getSpecular.glsl +29 -0
  1318. package/Source/Shaders/Builtin/Functions/getSpecular.js +31 -0
  1319. package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +37 -0
  1320. package/Source/Shaders/Builtin/Functions/getWaterNoise.js +39 -0
  1321. package/Source/Shaders/Builtin/Functions/hue.glsl +30 -0
  1322. package/Source/Shaders/Builtin/Functions/hue.js +32 -0
  1323. package/Source/Shaders/Builtin/Functions/inverseGamma.glsl +12 -0
  1324. package/Source/Shaders/Builtin/Functions/inverseGamma.js +14 -0
  1325. package/Source/Shaders/Builtin/Functions/isEmpty.glsl +19 -0
  1326. package/Source/Shaders/Builtin/Functions/isEmpty.js +21 -0
  1327. package/Source/Shaders/Builtin/Functions/isFull.glsl +19 -0
  1328. package/Source/Shaders/Builtin/Functions/isFull.js +21 -0
  1329. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.glsl +21 -0
  1330. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.js +23 -0
  1331. package/Source/Shaders/Builtin/Functions/lineDistance.glsl +14 -0
  1332. package/Source/Shaders/Builtin/Functions/lineDistance.js +16 -0
  1333. package/Source/Shaders/Builtin/Functions/linearToSrgb.glsl +16 -0
  1334. package/Source/Shaders/Builtin/Functions/linearToSrgb.js +18 -0
  1335. package/Source/Shaders/Builtin/Functions/luminance.glsl +20 -0
  1336. package/Source/Shaders/Builtin/Functions/luminance.js +22 -0
  1337. package/Source/Shaders/Builtin/Functions/metersPerPixel.glsl +61 -0
  1338. package/Source/Shaders/Builtin/Functions/metersPerPixel.js +63 -0
  1339. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.glsl +37 -0
  1340. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.js +39 -0
  1341. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.glsl +18 -0
  1342. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.js +20 -0
  1343. package/Source/Shaders/Builtin/Functions/nearFarScalar.glsl +26 -0
  1344. package/Source/Shaders/Builtin/Functions/nearFarScalar.js +28 -0
  1345. package/Source/Shaders/Builtin/Functions/octDecode.glsl +83 -0
  1346. package/Source/Shaders/Builtin/Functions/octDecode.js +85 -0
  1347. package/Source/Shaders/Builtin/Functions/packDepth.glsl +18 -0
  1348. package/Source/Shaders/Builtin/Functions/packDepth.js +20 -0
  1349. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +99 -0
  1350. package/Source/Shaders/Builtin/Functions/pbrLighting.js +101 -0
  1351. package/Source/Shaders/Builtin/Functions/pbrMetallicRoughnessMaterial.glsl +37 -0
  1352. package/Source/Shaders/Builtin/Functions/pbrMetallicRoughnessMaterial.js +39 -0
  1353. package/Source/Shaders/Builtin/Functions/pbrSpecularGlossinessMaterial.glsl +30 -0
  1354. package/Source/Shaders/Builtin/Functions/pbrSpecularGlossinessMaterial.js +32 -0
  1355. package/Source/Shaders/Builtin/Functions/phong.glsl +63 -0
  1356. package/Source/Shaders/Builtin/Functions/phong.js +65 -0
  1357. package/Source/Shaders/Builtin/Functions/planeDistance.glsl +28 -0
  1358. package/Source/Shaders/Builtin/Functions/planeDistance.js +30 -0
  1359. package/Source/Shaders/Builtin/Functions/pointAlongRay.glsl +19 -0
  1360. package/Source/Shaders/Builtin/Functions/pointAlongRay.js +21 -0
  1361. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.glsl +83 -0
  1362. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.js +85 -0
  1363. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.glsl +36 -0
  1364. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.js +38 -0
  1365. package/Source/Shaders/Builtin/Functions/readDepth.glsl +4 -0
  1366. package/Source/Shaders/Builtin/Functions/readDepth.js +6 -0
  1367. package/Source/Shaders/Builtin/Functions/readNonPerspective.glsl +31 -0
  1368. package/Source/Shaders/Builtin/Functions/readNonPerspective.js +33 -0
  1369. package/Source/Shaders/Builtin/Functions/reverseLogDepth.glsl +11 -0
  1370. package/Source/Shaders/Builtin/Functions/reverseLogDepth.js +13 -0
  1371. package/Source/Shaders/Builtin/Functions/round.glsl +22 -0
  1372. package/Source/Shaders/Builtin/Functions/round.js +24 -0
  1373. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +78 -0
  1374. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +80 -0
  1375. package/Source/Shaders/Builtin/Functions/saturation.glsl +22 -0
  1376. package/Source/Shaders/Builtin/Functions/saturation.js +24 -0
  1377. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +24 -0
  1378. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +26 -0
  1379. package/Source/Shaders/Builtin/Functions/shadowVisibility.glsl +66 -0
  1380. package/Source/Shaders/Builtin/Functions/shadowVisibility.js +68 -0
  1381. package/Source/Shaders/Builtin/Functions/signNotZero.glsl +29 -0
  1382. package/Source/Shaders/Builtin/Functions/signNotZero.js +31 -0
  1383. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.glsl +42 -0
  1384. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.js +44 -0
  1385. package/Source/Shaders/Builtin/Functions/srgbToLinear.glsl +16 -0
  1386. package/Source/Shaders/Builtin/Functions/srgbToLinear.js +18 -0
  1387. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +25 -0
  1388. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +27 -0
  1389. package/Source/Shaders/Builtin/Functions/transformPlane.glsl +15 -0
  1390. package/Source/Shaders/Builtin/Functions/transformPlane.js +17 -0
  1391. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +40 -0
  1392. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +42 -0
  1393. package/Source/Shaders/Builtin/Functions/translucentPhong.glsl +27 -0
  1394. package/Source/Shaders/Builtin/Functions/translucentPhong.js +29 -0
  1395. package/Source/Shaders/Builtin/Functions/transpose.glsl +45 -0
  1396. package/Source/Shaders/Builtin/Functions/transpose.js +47 -0
  1397. package/Source/Shaders/Builtin/Functions/unpackDepth.glsl +16 -0
  1398. package/Source/Shaders/Builtin/Functions/unpackDepth.js +18 -0
  1399. package/Source/Shaders/Builtin/Functions/unpackFloat.glsl +24 -0
  1400. package/Source/Shaders/Builtin/Functions/unpackFloat.js +26 -0
  1401. package/Source/Shaders/Builtin/Functions/unpackUint.glsl +31 -0
  1402. package/Source/Shaders/Builtin/Functions/unpackUint.js +33 -0
  1403. package/Source/Shaders/Builtin/Functions/valueTransform.glsl +38 -0
  1404. package/Source/Shaders/Builtin/Functions/valueTransform.js +40 -0
  1405. package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +64 -0
  1406. package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +66 -0
  1407. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +99 -0
  1408. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +101 -0
  1409. package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +27 -0
  1410. package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +29 -0
  1411. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +82 -0
  1412. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +84 -0
  1413. package/Source/Shaders/Builtin/Functions/writeNonPerspective.glsl +32 -0
  1414. package/Source/Shaders/Builtin/Functions/writeNonPerspective.js +34 -0
  1415. package/Source/Shaders/Builtin/Structs/depthRangeStruct.glsl +9 -0
  1416. package/Source/Shaders/Builtin/Structs/depthRangeStruct.js +11 -0
  1417. package/Source/Shaders/Builtin/Structs/material.glsl +22 -0
  1418. package/Source/Shaders/Builtin/Structs/material.js +24 -0
  1419. package/Source/Shaders/Builtin/Structs/materialInput.glsl +28 -0
  1420. package/Source/Shaders/Builtin/Structs/materialInput.js +30 -0
  1421. package/Source/Shaders/Builtin/Structs/modelMaterial.glsl +29 -0
  1422. package/Source/Shaders/Builtin/Structs/modelMaterial.js +31 -0
  1423. package/Source/Shaders/Builtin/Structs/modelVertexOutput.glsl +16 -0
  1424. package/Source/Shaders/Builtin/Structs/modelVertexOutput.js +18 -0
  1425. package/Source/Shaders/Builtin/Structs/pbrParameters.glsl +16 -0
  1426. package/Source/Shaders/Builtin/Structs/pbrParameters.js +18 -0
  1427. package/Source/Shaders/Builtin/Structs/ray.glsl +11 -0
  1428. package/Source/Shaders/Builtin/Structs/ray.js +13 -0
  1429. package/Source/Shaders/Builtin/Structs/raySegment.glsl +27 -0
  1430. package/Source/Shaders/Builtin/Structs/raySegment.js +29 -0
  1431. package/Source/Shaders/Builtin/Structs/shadowParameters.glsl +15 -0
  1432. package/Source/Shaders/Builtin/Structs/shadowParameters.js +17 -0
  1433. package/Source/Shaders/CloudCollectionFS.glsl +263 -0
  1434. package/Source/Shaders/CloudCollectionFS.js +265 -0
  1435. package/Source/Shaders/CloudCollectionVS.glsl +48 -0
  1436. package/Source/Shaders/CloudCollectionVS.js +50 -0
  1437. package/Source/Shaders/CloudNoiseFS.glsl +92 -0
  1438. package/Source/Shaders/CloudNoiseFS.js +94 -0
  1439. package/Source/Shaders/CloudNoiseVS.glsl +18 -0
  1440. package/Source/Shaders/CloudNoiseVS.js +20 -0
  1441. package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +12 -0
  1442. package/Source/Shaders/CompareAndPackTranslucentDepth.js +14 -0
  1443. package/Source/Shaders/CompositeOITFS.glsl +31 -0
  1444. package/Source/Shaders/CompositeOITFS.js +33 -0
  1445. package/Source/Shaders/DepthPlaneFS.glsl +36 -0
  1446. package/Source/Shaders/DepthPlaneFS.js +38 -0
  1447. package/Source/Shaders/DepthPlaneVS.glsl +11 -0
  1448. package/Source/Shaders/DepthPlaneVS.js +13 -0
  1449. package/Source/Shaders/EllipsoidFS.glsl +112 -0
  1450. package/Source/Shaders/EllipsoidFS.js +114 -0
  1451. package/Source/Shaders/EllipsoidVS.glsl +28 -0
  1452. package/Source/Shaders/EllipsoidVS.js +30 -0
  1453. package/Source/Shaders/FXAA3_11.glsl +648 -0
  1454. package/Source/Shaders/FXAA3_11.js +678 -0
  1455. package/Source/Shaders/GlobeFS.glsl +652 -0
  1456. package/Source/Shaders/GlobeFS.js +654 -0
  1457. package/Source/Shaders/GlobeVS.glsl +253 -0
  1458. package/Source/Shaders/GlobeVS.js +255 -0
  1459. package/Source/Shaders/GroundAtmosphere.glsl +18 -0
  1460. package/Source/Shaders/GroundAtmosphere.js +20 -0
  1461. package/Source/Shaders/Materials/AspectRampMaterial.glsl +11 -0
  1462. package/Source/Shaders/Materials/AspectRampMaterial.js +13 -0
  1463. package/Source/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  1464. package/Source/Shaders/Materials/BumpMapMaterial.js +31 -0
  1465. package/Source/Shaders/Materials/CheckerboardMaterial.glsl +29 -0
  1466. package/Source/Shaders/Materials/CheckerboardMaterial.js +31 -0
  1467. package/Source/Shaders/Materials/DotMaterial.glsl +18 -0
  1468. package/Source/Shaders/Materials/DotMaterial.js +20 -0
  1469. package/Source/Shaders/Materials/ElevationBandMaterial.glsl +74 -0
  1470. package/Source/Shaders/Materials/ElevationBandMaterial.js +76 -0
  1471. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +29 -0
  1472. package/Source/Shaders/Materials/ElevationContourMaterial.js +31 -0
  1473. package/Source/Shaders/Materials/ElevationRampMaterial.glsl +14 -0
  1474. package/Source/Shaders/Materials/ElevationRampMaterial.js +16 -0
  1475. package/Source/Shaders/Materials/FadeMaterial.glsl +37 -0
  1476. package/Source/Shaders/Materials/FadeMaterial.js +39 -0
  1477. package/Source/Shaders/Materials/GridMaterial.glsl +60 -0
  1478. package/Source/Shaders/Materials/GridMaterial.js +62 -0
  1479. package/Source/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  1480. package/Source/Shaders/Materials/NormalMapMaterial.js +21 -0
  1481. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +66 -0
  1482. package/Source/Shaders/Materials/PolylineArrowMaterial.js +68 -0
  1483. package/Source/Shaders/Materials/PolylineDashMaterial.glsl +39 -0
  1484. package/Source/Shaders/Materials/PolylineDashMaterial.js +41 -0
  1485. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +25 -0
  1486. package/Source/Shaders/Materials/PolylineGlowMaterial.js +27 -0
  1487. package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +29 -0
  1488. package/Source/Shaders/Materials/PolylineOutlineMaterial.js +31 -0
  1489. package/Source/Shaders/Materials/RimLightingMaterial.glsl +21 -0
  1490. package/Source/Shaders/Materials/RimLightingMaterial.js +23 -0
  1491. package/Source/Shaders/Materials/SlopeRampMaterial.glsl +11 -0
  1492. package/Source/Shaders/Materials/SlopeRampMaterial.js +13 -0
  1493. package/Source/Shaders/Materials/StripeMaterial.glsl +24 -0
  1494. package/Source/Shaders/Materials/StripeMaterial.js +26 -0
  1495. package/Source/Shaders/Materials/Water.glsl +58 -0
  1496. package/Source/Shaders/Materials/Water.js +60 -0
  1497. package/Source/Shaders/Model/CPUStylingStageFS.glsl +49 -0
  1498. package/Source/Shaders/Model/CPUStylingStageFS.js +51 -0
  1499. package/Source/Shaders/Model/CPUStylingStageVS.glsl +30 -0
  1500. package/Source/Shaders/Model/CPUStylingStageVS.js +32 -0
  1501. package/Source/Shaders/Model/CustomShaderStageFS.glsl +18 -0
  1502. package/Source/Shaders/Model/CustomShaderStageFS.js +20 -0
  1503. package/Source/Shaders/Model/CustomShaderStageVS.glsl +19 -0
  1504. package/Source/Shaders/Model/CustomShaderStageVS.js +21 -0
  1505. package/Source/Shaders/Model/FeatureIdStageFS.glsl +4 -0
  1506. package/Source/Shaders/Model/FeatureIdStageFS.js +6 -0
  1507. package/Source/Shaders/Model/FeatureIdStageVS.glsl +6 -0
  1508. package/Source/Shaders/Model/FeatureIdStageVS.js +8 -0
  1509. package/Source/Shaders/Model/GeometryStageFS.glsl +25 -0
  1510. package/Source/Shaders/Model/GeometryStageFS.js +27 -0
  1511. package/Source/Shaders/Model/GeometryStageVS.glsl +42 -0
  1512. package/Source/Shaders/Model/GeometryStageVS.js +44 -0
  1513. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +165 -0
  1514. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +166 -0
  1515. package/Source/Shaders/Model/InstancingStageCommon.glsl +67 -0
  1516. package/Source/Shaders/Model/InstancingStageCommon.js +69 -0
  1517. package/Source/Shaders/Model/InstancingStageVS.glsl +18 -0
  1518. package/Source/Shaders/Model/InstancingStageVS.js +20 -0
  1519. package/Source/Shaders/Model/LegacyInstancingStageVS.glsl +20 -0
  1520. package/Source/Shaders/Model/LegacyInstancingStageVS.js +22 -0
  1521. package/Source/Shaders/Model/LightingStageFS.glsl +73 -0
  1522. package/Source/Shaders/Model/LightingStageFS.js +75 -0
  1523. package/Source/Shaders/Model/MaterialStageFS.glsl +226 -0
  1524. package/Source/Shaders/Model/MaterialStageFS.js +228 -0
  1525. package/Source/Shaders/Model/MetadataStageFS.glsl +9 -0
  1526. package/Source/Shaders/Model/MetadataStageFS.js +11 -0
  1527. package/Source/Shaders/Model/MetadataStageVS.glsl +10 -0
  1528. package/Source/Shaders/Model/MetadataStageVS.js +12 -0
  1529. package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +88 -0
  1530. package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +90 -0
  1531. package/Source/Shaders/Model/ModelColorStageFS.glsl +7 -0
  1532. package/Source/Shaders/Model/ModelColorStageFS.js +8 -0
  1533. package/Source/Shaders/Model/ModelFS.glsl +89 -0
  1534. package/Source/Shaders/Model/ModelFS.js +91 -0
  1535. package/Source/Shaders/Model/ModelSilhouetteStageFS.glsl +5 -0
  1536. package/Source/Shaders/Model/ModelSilhouetteStageFS.js +6 -0
  1537. package/Source/Shaders/Model/ModelSilhouetteStageVS.glsl +10 -0
  1538. package/Source/Shaders/Model/ModelSilhouetteStageVS.js +12 -0
  1539. package/Source/Shaders/Model/ModelSplitterStageFS.glsl +9 -0
  1540. package/Source/Shaders/Model/ModelSplitterStageFS.js +11 -0
  1541. package/Source/Shaders/Model/ModelVS.glsl +136 -0
  1542. package/Source/Shaders/Model/ModelVS.js +138 -0
  1543. package/Source/Shaders/Model/MorphTargetsStageVS.glsl +15 -0
  1544. package/Source/Shaders/Model/MorphTargetsStageVS.js +16 -0
  1545. package/Source/Shaders/Model/PointCloudStylingStageVS.glsl +45 -0
  1546. package/Source/Shaders/Model/PointCloudStylingStageVS.js +46 -0
  1547. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +16 -0
  1548. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +18 -0
  1549. package/Source/Shaders/Model/PrimitiveOutlineStageVS.glsl +3 -0
  1550. package/Source/Shaders/Model/PrimitiveOutlineStageVS.js +5 -0
  1551. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +51 -0
  1552. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +53 -0
  1553. package/Source/Shaders/Model/SkinningStageVS.glsl +18 -0
  1554. package/Source/Shaders/Model/SkinningStageVS.js +19 -0
  1555. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +89 -0
  1556. package/Source/Shaders/OctahedralProjectionAtlasFS.js +91 -0
  1557. package/Source/Shaders/OctahedralProjectionFS.glsl +14 -0
  1558. package/Source/Shaders/OctahedralProjectionFS.js +16 -0
  1559. package/Source/Shaders/OctahedralProjectionVS.glsl +10 -0
  1560. package/Source/Shaders/OctahedralProjectionVS.js +12 -0
  1561. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +43 -0
  1562. package/Source/Shaders/PointPrimitiveCollectionFS.js +45 -0
  1563. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +180 -0
  1564. package/Source/Shaders/PointPrimitiveCollectionVS.js +182 -0
  1565. package/Source/Shaders/PolylineCommon.glsl +176 -0
  1566. package/Source/Shaders/PolylineCommon.js +178 -0
  1567. package/Source/Shaders/PolylineFS.glsl +25 -0
  1568. package/Source/Shaders/PolylineFS.js +27 -0
  1569. package/Source/Shaders/PolylineShadowVolumeFS.glsl +90 -0
  1570. package/Source/Shaders/PolylineShadowVolumeFS.js +92 -0
  1571. package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +45 -0
  1572. package/Source/Shaders/PolylineShadowVolumeMorphFS.js +47 -0
  1573. package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +177 -0
  1574. package/Source/Shaders/PolylineShadowVolumeMorphVS.js +179 -0
  1575. package/Source/Shaders/PolylineShadowVolumeVS.glsl +168 -0
  1576. package/Source/Shaders/PolylineShadowVolumeVS.js +170 -0
  1577. package/Source/Shaders/PolylineVS.glsl +103 -0
  1578. package/Source/Shaders/PolylineVS.js +105 -0
  1579. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +21 -0
  1580. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +23 -0
  1581. package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +17 -0
  1582. package/Source/Shaders/PostProcessStages/AdditiveBlend.js +19 -0
  1583. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +115 -0
  1584. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +117 -0
  1585. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +11 -0
  1586. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +13 -0
  1587. package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +19 -0
  1588. package/Source/Shaders/PostProcessStages/BlackAndWhite.js +21 -0
  1589. package/Source/Shaders/PostProcessStages/BloomComposite.glsl +20 -0
  1590. package/Source/Shaders/PostProcessStages/BloomComposite.js +22 -0
  1591. package/Source/Shaders/PostProcessStages/BrightPass.glsl +30 -0
  1592. package/Source/Shaders/PostProcessStages/BrightPass.js +32 -0
  1593. package/Source/Shaders/PostProcessStages/Brightness.glsl +11 -0
  1594. package/Source/Shaders/PostProcessStages/Brightness.js +13 -0
  1595. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +31 -0
  1596. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +33 -0
  1597. package/Source/Shaders/PostProcessStages/ContrastBias.glsl +17 -0
  1598. package/Source/Shaders/PostProcessStages/ContrastBias.js +19 -0
  1599. package/Source/Shaders/PostProcessStages/DepthOfField.glsl +39 -0
  1600. package/Source/Shaders/PostProcessStages/DepthOfField.js +41 -0
  1601. package/Source/Shaders/PostProcessStages/DepthView.glsl +9 -0
  1602. package/Source/Shaders/PostProcessStages/DepthView.js +11 -0
  1603. package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +14 -0
  1604. package/Source/Shaders/PostProcessStages/DepthViewPacked.js +16 -0
  1605. package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +60 -0
  1606. package/Source/Shaders/PostProcessStages/EdgeDetection.js +62 -0
  1607. package/Source/Shaders/PostProcessStages/FXAA.glsl +21 -0
  1608. package/Source/Shaders/PostProcessStages/FXAA.js +23 -0
  1609. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +36 -0
  1610. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +38 -0
  1611. package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +47 -0
  1612. package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +49 -0
  1613. package/Source/Shaders/PostProcessStages/LensFlare.glsl +153 -0
  1614. package/Source/Shaders/PostProcessStages/LensFlare.js +155 -0
  1615. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +24 -0
  1616. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +26 -0
  1617. package/Source/Shaders/PostProcessStages/NightVision.glsl +16 -0
  1618. package/Source/Shaders/PostProcessStages/NightVision.js +18 -0
  1619. package/Source/Shaders/PostProcessStages/PassThrough.glsl +8 -0
  1620. package/Source/Shaders/PostProcessStages/PassThrough.js +10 -0
  1621. package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +8 -0
  1622. package/Source/Shaders/PostProcessStages/PassThroughDepth.js +10 -0
  1623. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +63 -0
  1624. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +65 -0
  1625. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +23 -0
  1626. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +25 -0
  1627. package/Source/Shaders/PostProcessStages/Silhouette.glsl +11 -0
  1628. package/Source/Shaders/PostProcessStages/Silhouette.js +13 -0
  1629. package/Source/Shaders/ReprojectWebMercatorFS.glsl +8 -0
  1630. package/Source/Shaders/ReprojectWebMercatorFS.js +10 -0
  1631. package/Source/Shaders/ReprojectWebMercatorVS.glsl +12 -0
  1632. package/Source/Shaders/ReprojectWebMercatorVS.js +14 -0
  1633. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +165 -0
  1634. package/Source/Shaders/ShadowVolumeAppearanceFS.js +167 -0
  1635. package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +101 -0
  1636. package/Source/Shaders/ShadowVolumeAppearanceVS.js +103 -0
  1637. package/Source/Shaders/ShadowVolumeFS.glsl +17 -0
  1638. package/Source/Shaders/ShadowVolumeFS.js +19 -0
  1639. package/Source/Shaders/SkyAtmosphereCommon.glsl +91 -0
  1640. package/Source/Shaders/SkyAtmosphereCommon.js +93 -0
  1641. package/Source/Shaders/SkyAtmosphereFS.glsl +64 -0
  1642. package/Source/Shaders/SkyAtmosphereFS.js +66 -0
  1643. package/Source/Shaders/SkyAtmosphereVS.glsl +30 -0
  1644. package/Source/Shaders/SkyAtmosphereVS.js +32 -0
  1645. package/Source/Shaders/SkyBoxFS.glsl +9 -0
  1646. package/Source/Shaders/SkyBoxFS.js +11 -0
  1647. package/Source/Shaders/SkyBoxVS.glsl +10 -0
  1648. package/Source/Shaders/SkyBoxVS.js +12 -0
  1649. package/Source/Shaders/SunFS.glsl +9 -0
  1650. package/Source/Shaders/SunFS.js +11 -0
  1651. package/Source/Shaders/SunTextureFS.glsl +55 -0
  1652. package/Source/Shaders/SunTextureFS.js +57 -0
  1653. package/Source/Shaders/SunVS.glsl +28 -0
  1654. package/Source/Shaders/SunVS.js +30 -0
  1655. package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +52 -0
  1656. package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +54 -0
  1657. package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +85 -0
  1658. package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +87 -0
  1659. package/Source/Shaders/Vector3DTilePolylinesVS.glsl +22 -0
  1660. package/Source/Shaders/Vector3DTilePolylinesVS.js +24 -0
  1661. package/Source/Shaders/VectorTileVS.glsl +9 -0
  1662. package/Source/Shaders/VectorTileVS.js +11 -0
  1663. package/Source/Shaders/ViewportQuadFS.glsl +16 -0
  1664. package/Source/Shaders/ViewportQuadFS.js +18 -0
  1665. package/Source/Shaders/ViewportQuadVS.glsl +10 -0
  1666. package/Source/Shaders/ViewportQuadVS.js +12 -0
  1667. package/Source/ThirdParty/Workers/basis_transcoder.js +21 -0
  1668. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +118 -0
  1669. package/Source/ThirdParty/Workers/package.json +1 -0
  1670. package/Source/ThirdParty/Workers/pako_deflate.min.js +2 -0
  1671. package/Source/ThirdParty/Workers/pako_inflate.min.js +2 -0
  1672. package/Source/ThirdParty/Workers/z-worker-pako.js +1 -0
  1673. package/Source/ThirdParty/basis_transcoder.wasm +0 -0
  1674. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  1675. package/Source/ThirdParty/google-earth-dbroot-parser.js +8337 -0
  1676. package/Source/Widget/CesiumWidget.css +124 -0
  1677. package/Source/Widget/CesiumWidget.js +807 -0
  1678. package/Source/Widget/lighter.css +14 -0
  1679. package/Source/Workers/cesiumWorkerBootstrapper.js +2290 -0
  1680. package/Source/Workers/package.json +1 -0
  1681. package/Source/Workers/transferTypedArrayTest.js +22 -0
  1682. package/Source/WorkersES6/combineGeometry.js +14 -0
  1683. package/Source/WorkersES6/createBoxGeometry.js +10 -0
  1684. package/Source/WorkersES6/createBoxOutlineGeometry.js +10 -0
  1685. package/Source/WorkersES6/createCircleGeometry.js +18 -0
  1686. package/Source/WorkersES6/createCircleOutlineGeometry.js +18 -0
  1687. package/Source/WorkersES6/createCoplanarPolygonGeometry.js +10 -0
  1688. package/Source/WorkersES6/createCoplanarPolygonOutlineGeometry.js +15 -0
  1689. package/Source/WorkersES6/createCorridorGeometry.js +12 -0
  1690. package/Source/WorkersES6/createCorridorOutlineGeometry.js +17 -0
  1691. package/Source/WorkersES6/createCylinderGeometry.js +10 -0
  1692. package/Source/WorkersES6/createCylinderOutlineGeometry.js +10 -0
  1693. package/Source/WorkersES6/createEllipseGeometry.js +14 -0
  1694. package/Source/WorkersES6/createEllipseOutlineGeometry.js +14 -0
  1695. package/Source/WorkersES6/createEllipsoidGeometry.js +10 -0
  1696. package/Source/WorkersES6/createEllipsoidOutlineGeometry.js +13 -0
  1697. package/Source/WorkersES6/createFrustumGeometry.js +10 -0
  1698. package/Source/WorkersES6/createFrustumOutlineGeometry.js +10 -0
  1699. package/Source/WorkersES6/createGeometry.js +52 -0
  1700. package/Source/WorkersES6/createGroundPolylineGeometry.js +16 -0
  1701. package/Source/WorkersES6/createPlaneGeometry.js +10 -0
  1702. package/Source/WorkersES6/createPlaneOutlineGeometry.js +10 -0
  1703. package/Source/WorkersES6/createPolygonGeometry.js +12 -0
  1704. package/Source/WorkersES6/createPolygonOutlineGeometry.js +12 -0
  1705. package/Source/WorkersES6/createPolylineGeometry.js +12 -0
  1706. package/Source/WorkersES6/createPolylineVolumeGeometry.js +17 -0
  1707. package/Source/WorkersES6/createPolylineVolumeOutlineGeometry.js +22 -0
  1708. package/Source/WorkersES6/createRectangleGeometry.js +14 -0
  1709. package/Source/WorkersES6/createRectangleOutlineGeometry.js +17 -0
  1710. package/Source/WorkersES6/createSimplePolylineGeometry.js +17 -0
  1711. package/Source/WorkersES6/createSphereGeometry.js +10 -0
  1712. package/Source/WorkersES6/createSphereOutlineGeometry.js +10 -0
  1713. package/Source/WorkersES6/createTaskProcessorWorker.js +129 -0
  1714. package/Source/WorkersES6/createVectorTileClampedPolylines.js +541 -0
  1715. package/Source/WorkersES6/createVectorTileGeometries.js +414 -0
  1716. package/Source/WorkersES6/createVectorTilePoints.js +81 -0
  1717. package/Source/WorkersES6/createVectorTilePolygons.js +412 -0
  1718. package/Source/WorkersES6/createVectorTilePolylines.js +210 -0
  1719. package/Source/WorkersES6/createVerticesFromGoogleEarthEnterpriseBuffer.js +653 -0
  1720. package/Source/WorkersES6/createVerticesFromHeightmap.js +53 -0
  1721. package/Source/WorkersES6/createVerticesFromQuantizedTerrainMesh.js +549 -0
  1722. package/Source/WorkersES6/createWallGeometry.js +12 -0
  1723. package/Source/WorkersES6/createWallOutlineGeometry.js +12 -0
  1724. package/Source/WorkersES6/decodeDraco.js +381 -0
  1725. package/Source/WorkersES6/decodeGoogleEarthEnterprisePacket.js +268 -0
  1726. package/Source/WorkersES6/decodeI3S.js +1044 -0
  1727. package/Source/WorkersES6/transcodeKTX2.js +316 -0
  1728. package/Source/WorkersES6/upsampleQuantizedTerrainMesh.js +680 -0
  1729. package/index.d.ts +41767 -0
  1730. package/index.js +1085 -0
  1731. package/package.json +73 -0
@@ -0,0 +1,3296 @@
1
+ import AttributeCompression from "./AttributeCompression.js";
2
+ import barycentricCoordinates from "./barycentricCoordinates.js";
3
+ import BoundingSphere from "./BoundingSphere.js";
4
+ import Cartesian2 from "./Cartesian2.js";
5
+ import Cartesian3 from "./Cartesian3.js";
6
+ import Cartesian4 from "./Cartesian4.js";
7
+ import Cartographic from "./Cartographic.js";
8
+ import ComponentDatatype from "./ComponentDatatype.js";
9
+ import defaultValue from "./defaultValue.js";
10
+ import defined from "./defined.js";
11
+ import DeveloperError from "./DeveloperError.js";
12
+ import EncodedCartesian3 from "./EncodedCartesian3.js";
13
+ import GeographicProjection from "./GeographicProjection.js";
14
+ import Geometry from "./Geometry.js";
15
+ import GeometryAttribute from "./GeometryAttribute.js";
16
+ import GeometryType from "./GeometryType.js";
17
+ import IndexDatatype from "./IndexDatatype.js";
18
+ import Intersect from "./Intersect.js";
19
+ import IntersectionTests from "./IntersectionTests.js";
20
+ import CesiumMath from "./Math.js";
21
+ import Matrix3 from "./Matrix3.js";
22
+ import Matrix4 from "./Matrix4.js";
23
+ import Plane from "./Plane.js";
24
+ import PrimitiveType from "./PrimitiveType.js";
25
+ import Tipsify from "./Tipsify.js";
26
+
27
+ /**
28
+ * Content pipeline functions for geometries.
29
+ *
30
+ * @namespace GeometryPipeline
31
+ *
32
+ * @see Geometry
33
+ */
34
+ const GeometryPipeline = {};
35
+
36
+ function addTriangle(lines, index, i0, i1, i2) {
37
+ lines[index++] = i0;
38
+ lines[index++] = i1;
39
+
40
+ lines[index++] = i1;
41
+ lines[index++] = i2;
42
+
43
+ lines[index++] = i2;
44
+ lines[index] = i0;
45
+ }
46
+
47
+ function trianglesToLines(triangles) {
48
+ const count = triangles.length;
49
+ const size = (count / 3) * 6;
50
+ const lines = IndexDatatype.createTypedArray(count, size);
51
+
52
+ let index = 0;
53
+ for (let i = 0; i < count; i += 3, index += 6) {
54
+ addTriangle(lines, index, triangles[i], triangles[i + 1], triangles[i + 2]);
55
+ }
56
+
57
+ return lines;
58
+ }
59
+
60
+ function triangleStripToLines(triangles) {
61
+ const count = triangles.length;
62
+ if (count >= 3) {
63
+ const size = (count - 2) * 6;
64
+ const lines = IndexDatatype.createTypedArray(count, size);
65
+
66
+ addTriangle(lines, 0, triangles[0], triangles[1], triangles[2]);
67
+ let index = 6;
68
+
69
+ for (let i = 3; i < count; ++i, index += 6) {
70
+ addTriangle(
71
+ lines,
72
+ index,
73
+ triangles[i - 1],
74
+ triangles[i],
75
+ triangles[i - 2]
76
+ );
77
+ }
78
+
79
+ return lines;
80
+ }
81
+
82
+ return new Uint16Array();
83
+ }
84
+
85
+ function triangleFanToLines(triangles) {
86
+ if (triangles.length > 0) {
87
+ const count = triangles.length - 1;
88
+ const size = (count - 1) * 6;
89
+ const lines = IndexDatatype.createTypedArray(count, size);
90
+
91
+ const base = triangles[0];
92
+ let index = 0;
93
+ for (let i = 1; i < count; ++i, index += 6) {
94
+ addTriangle(lines, index, base, triangles[i], triangles[i + 1]);
95
+ }
96
+
97
+ return lines;
98
+ }
99
+
100
+ return new Uint16Array();
101
+ }
102
+
103
+ /**
104
+ * Converts a geometry's triangle indices to line indices. If the geometry has an <code>indices</code>
105
+ * and its <code>primitiveType</code> is <code>TRIANGLES</code>, <code>TRIANGLE_STRIP</code>,
106
+ * <code>TRIANGLE_FAN</code>, it is converted to <code>LINES</code>; otherwise, the geometry is not changed.
107
+ * <p>
108
+ * This is commonly used to create a wireframe geometry for visual debugging.
109
+ * </p>
110
+ *
111
+ * @param {Geometry} geometry The geometry to modify.
112
+ * @returns {Geometry} The modified <code>geometry</code> argument, with its triangle indices converted to lines.
113
+ *
114
+ * @exception {DeveloperError} geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.
115
+ *
116
+ * @example
117
+ * geometry = Cesium.GeometryPipeline.toWireframe(geometry);
118
+ */
119
+ GeometryPipeline.toWireframe = function (geometry) {
120
+ //>>includeStart('debug', pragmas.debug);
121
+ if (!defined(geometry)) {
122
+ throw new DeveloperError("geometry is required.");
123
+ }
124
+ //>>includeEnd('debug');
125
+
126
+ const indices = geometry.indices;
127
+ if (defined(indices)) {
128
+ switch (geometry.primitiveType) {
129
+ case PrimitiveType.TRIANGLES:
130
+ geometry.indices = trianglesToLines(indices);
131
+ break;
132
+ case PrimitiveType.TRIANGLE_STRIP:
133
+ geometry.indices = triangleStripToLines(indices);
134
+ break;
135
+ case PrimitiveType.TRIANGLE_FAN:
136
+ geometry.indices = triangleFanToLines(indices);
137
+ break;
138
+ //>>includeStart('debug', pragmas.debug);
139
+ default:
140
+ throw new DeveloperError(
141
+ "geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN."
142
+ );
143
+ //>>includeEnd('debug');
144
+ }
145
+
146
+ geometry.primitiveType = PrimitiveType.LINES;
147
+ }
148
+
149
+ return geometry;
150
+ };
151
+
152
+ /**
153
+ * Creates a new {@link Geometry} with <code>LINES</code> representing the provided
154
+ * attribute (<code>attributeName</code>) for the provided geometry. This is used to
155
+ * visualize vector attributes like normals, tangents, and bitangents.
156
+ *
157
+ * @param {Geometry} geometry The <code>Geometry</code> instance with the attribute.
158
+ * @param {String} [attributeName='normal'] The name of the attribute.
159
+ * @param {Number} [length=10000.0] The length of each line segment in meters. This can be negative to point the vector in the opposite direction.
160
+ * @returns {Geometry} A new <code>Geometry</code> instance with line segments for the vector.
161
+ *
162
+ * @exception {DeveloperError} geometry.attributes must have an attribute with the same name as the attributeName parameter.
163
+ *
164
+ * @example
165
+ * const geometry = Cesium.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'bitangent', 100000.0);
166
+ */
167
+ GeometryPipeline.createLineSegmentsForVectors = function (
168
+ geometry,
169
+ attributeName,
170
+ length
171
+ ) {
172
+ attributeName = defaultValue(attributeName, "normal");
173
+
174
+ //>>includeStart('debug', pragmas.debug);
175
+ if (!defined(geometry)) {
176
+ throw new DeveloperError("geometry is required.");
177
+ }
178
+ if (!defined(geometry.attributes.position)) {
179
+ throw new DeveloperError("geometry.attributes.position is required.");
180
+ }
181
+ if (!defined(geometry.attributes[attributeName])) {
182
+ throw new DeveloperError(
183
+ `geometry.attributes must have an attribute with the same name as the attributeName parameter, ${attributeName}.`
184
+ );
185
+ }
186
+ //>>includeEnd('debug');
187
+
188
+ length = defaultValue(length, 10000.0);
189
+
190
+ const positions = geometry.attributes.position.values;
191
+ const vectors = geometry.attributes[attributeName].values;
192
+ const positionsLength = positions.length;
193
+
194
+ const newPositions = new Float64Array(2 * positionsLength);
195
+
196
+ let j = 0;
197
+ for (let i = 0; i < positionsLength; i += 3) {
198
+ newPositions[j++] = positions[i];
199
+ newPositions[j++] = positions[i + 1];
200
+ newPositions[j++] = positions[i + 2];
201
+
202
+ newPositions[j++] = positions[i] + vectors[i] * length;
203
+ newPositions[j++] = positions[i + 1] + vectors[i + 1] * length;
204
+ newPositions[j++] = positions[i + 2] + vectors[i + 2] * length;
205
+ }
206
+
207
+ let newBoundingSphere;
208
+ const bs = geometry.boundingSphere;
209
+ if (defined(bs)) {
210
+ newBoundingSphere = new BoundingSphere(bs.center, bs.radius + length);
211
+ }
212
+
213
+ return new Geometry({
214
+ attributes: {
215
+ position: new GeometryAttribute({
216
+ componentDatatype: ComponentDatatype.DOUBLE,
217
+ componentsPerAttribute: 3,
218
+ values: newPositions,
219
+ }),
220
+ },
221
+ primitiveType: PrimitiveType.LINES,
222
+ boundingSphere: newBoundingSphere,
223
+ });
224
+ };
225
+
226
+ /**
227
+ * Creates an object that maps attribute names to unique locations (indices)
228
+ * for matching vertex attributes and shader programs.
229
+ *
230
+ * @param {Geometry} geometry The geometry, which is not modified, to create the object for.
231
+ * @returns {Object} An object with attribute name / index pairs.
232
+ *
233
+ * @example
234
+ * const attributeLocations = Cesium.GeometryPipeline.createAttributeLocations(geometry);
235
+ * // Example output
236
+ * // {
237
+ * // 'position' : 0,
238
+ * // 'normal' : 1
239
+ * // }
240
+ */
241
+ GeometryPipeline.createAttributeLocations = function (geometry) {
242
+ //>>includeStart('debug', pragmas.debug);
243
+ if (!defined(geometry)) {
244
+ throw new DeveloperError("geometry is required.");
245
+ }
246
+ //>>includeEnd('debug')
247
+
248
+ // There can be a WebGL performance hit when attribute 0 is disabled, so
249
+ // assign attribute locations to well-known attributes.
250
+ const semantics = [
251
+ "position",
252
+ "positionHigh",
253
+ "positionLow",
254
+
255
+ // From VertexFormat.position - after 2D projection and high-precision encoding
256
+ "position3DHigh",
257
+ "position3DLow",
258
+ "position2DHigh",
259
+ "position2DLow",
260
+
261
+ // From Primitive
262
+ "pickColor",
263
+
264
+ // From VertexFormat
265
+ "normal",
266
+ "st",
267
+ "tangent",
268
+ "bitangent",
269
+
270
+ // For shadow volumes
271
+ "extrudeDirection",
272
+
273
+ // From compressing texture coordinates and normals
274
+ "compressedAttributes",
275
+ ];
276
+
277
+ const attributes = geometry.attributes;
278
+ const indices = {};
279
+ let j = 0;
280
+ let i;
281
+ const len = semantics.length;
282
+
283
+ // Attribute locations for well-known attributes
284
+ for (i = 0; i < len; ++i) {
285
+ const semantic = semantics[i];
286
+
287
+ if (defined(attributes[semantic])) {
288
+ indices[semantic] = j++;
289
+ }
290
+ }
291
+
292
+ // Locations for custom attributes
293
+ for (const name in attributes) {
294
+ if (attributes.hasOwnProperty(name) && !defined(indices[name])) {
295
+ indices[name] = j++;
296
+ }
297
+ }
298
+
299
+ return indices;
300
+ };
301
+
302
+ /**
303
+ * Reorders a geometry's attributes and <code>indices</code> to achieve better performance from the GPU's pre-vertex-shader cache.
304
+ *
305
+ * @param {Geometry} geometry The geometry to modify.
306
+ * @returns {Geometry} The modified <code>geometry</code> argument, with its attributes and indices reordered for the GPU's pre-vertex-shader cache.
307
+ *
308
+ * @exception {DeveloperError} Each attribute array in geometry.attributes must have the same number of attributes.
309
+ *
310
+ *
311
+ * @example
312
+ * geometry = Cesium.GeometryPipeline.reorderForPreVertexCache(geometry);
313
+ *
314
+ * @see GeometryPipeline.reorderForPostVertexCache
315
+ */
316
+ GeometryPipeline.reorderForPreVertexCache = function (geometry) {
317
+ //>>includeStart('debug', pragmas.debug);
318
+ if (!defined(geometry)) {
319
+ throw new DeveloperError("geometry is required.");
320
+ }
321
+ //>>includeEnd('debug');
322
+
323
+ const numVertices = Geometry.computeNumberOfVertices(geometry);
324
+
325
+ const indices = geometry.indices;
326
+ if (defined(indices)) {
327
+ const indexCrossReferenceOldToNew = new Int32Array(numVertices);
328
+ for (let i = 0; i < numVertices; i++) {
329
+ indexCrossReferenceOldToNew[i] = -1;
330
+ }
331
+
332
+ // Construct cross reference and reorder indices
333
+ const indicesIn = indices;
334
+ const numIndices = indicesIn.length;
335
+ const indicesOut = IndexDatatype.createTypedArray(numVertices, numIndices);
336
+
337
+ let intoIndicesIn = 0;
338
+ let intoIndicesOut = 0;
339
+ let nextIndex = 0;
340
+ let tempIndex;
341
+ while (intoIndicesIn < numIndices) {
342
+ tempIndex = indexCrossReferenceOldToNew[indicesIn[intoIndicesIn]];
343
+ if (tempIndex !== -1) {
344
+ indicesOut[intoIndicesOut] = tempIndex;
345
+ } else {
346
+ tempIndex = indicesIn[intoIndicesIn];
347
+ indexCrossReferenceOldToNew[tempIndex] = nextIndex;
348
+
349
+ indicesOut[intoIndicesOut] = nextIndex;
350
+ ++nextIndex;
351
+ }
352
+ ++intoIndicesIn;
353
+ ++intoIndicesOut;
354
+ }
355
+ geometry.indices = indicesOut;
356
+
357
+ // Reorder attributes
358
+ const attributes = geometry.attributes;
359
+ for (const property in attributes) {
360
+ if (
361
+ attributes.hasOwnProperty(property) &&
362
+ defined(attributes[property]) &&
363
+ defined(attributes[property].values)
364
+ ) {
365
+ const attribute = attributes[property];
366
+ const elementsIn = attribute.values;
367
+ let intoElementsIn = 0;
368
+ const numComponents = attribute.componentsPerAttribute;
369
+ const elementsOut = ComponentDatatype.createTypedArray(
370
+ attribute.componentDatatype,
371
+ nextIndex * numComponents
372
+ );
373
+ while (intoElementsIn < numVertices) {
374
+ const temp = indexCrossReferenceOldToNew[intoElementsIn];
375
+ if (temp !== -1) {
376
+ for (let j = 0; j < numComponents; j++) {
377
+ elementsOut[numComponents * temp + j] =
378
+ elementsIn[numComponents * intoElementsIn + j];
379
+ }
380
+ }
381
+ ++intoElementsIn;
382
+ }
383
+ attribute.values = elementsOut;
384
+ }
385
+ }
386
+ }
387
+
388
+ return geometry;
389
+ };
390
+
391
+ /**
392
+ * Reorders a geometry's <code>indices</code> to achieve better performance from the GPU's
393
+ * post vertex-shader cache by using the Tipsify algorithm. If the geometry <code>primitiveType</code>
394
+ * is not <code>TRIANGLES</code> or the geometry does not have an <code>indices</code>, this function has no effect.
395
+ *
396
+ * @param {Geometry} geometry The geometry to modify.
397
+ * @param {Number} [cacheCapacity=24] The number of vertices that can be held in the GPU's vertex cache.
398
+ * @returns {Geometry} The modified <code>geometry</code> argument, with its indices reordered for the post-vertex-shader cache.
399
+ *
400
+ * @exception {DeveloperError} cacheCapacity must be greater than two.
401
+ *
402
+ *
403
+ * @example
404
+ * geometry = Cesium.GeometryPipeline.reorderForPostVertexCache(geometry);
405
+ *
406
+ * @see GeometryPipeline.reorderForPreVertexCache
407
+ * @see {@link http://gfx.cs.princ0eton.edu/pubs/Sander_2007_%3ETR/tipsy.pdf|Fast Triangle Reordering for Vertex Locality and Reduced Overdraw}
408
+ * by Sander, Nehab, and Barczak
409
+ */
410
+ GeometryPipeline.reorderForPostVertexCache = function (
411
+ geometry,
412
+ cacheCapacity
413
+ ) {
414
+ //>>includeStart('debug', pragmas.debug);
415
+ if (!defined(geometry)) {
416
+ throw new DeveloperError("geometry is required.");
417
+ }
418
+ //>>includeEnd('debug');
419
+
420
+ const indices = geometry.indices;
421
+ if (geometry.primitiveType === PrimitiveType.TRIANGLES && defined(indices)) {
422
+ const numIndices = indices.length;
423
+ let maximumIndex = 0;
424
+ for (let j = 0; j < numIndices; j++) {
425
+ if (indices[j] > maximumIndex) {
426
+ maximumIndex = indices[j];
427
+ }
428
+ }
429
+ geometry.indices = Tipsify.tipsify({
430
+ indices: indices,
431
+ maximumIndex: maximumIndex,
432
+ cacheSize: cacheCapacity,
433
+ });
434
+ }
435
+
436
+ return geometry;
437
+ };
438
+
439
+ function copyAttributesDescriptions(attributes) {
440
+ const newAttributes = {};
441
+
442
+ for (const attribute in attributes) {
443
+ if (
444
+ attributes.hasOwnProperty(attribute) &&
445
+ defined(attributes[attribute]) &&
446
+ defined(attributes[attribute].values)
447
+ ) {
448
+ const attr = attributes[attribute];
449
+ newAttributes[attribute] = new GeometryAttribute({
450
+ componentDatatype: attr.componentDatatype,
451
+ componentsPerAttribute: attr.componentsPerAttribute,
452
+ normalize: attr.normalize,
453
+ values: [],
454
+ });
455
+ }
456
+ }
457
+
458
+ return newAttributes;
459
+ }
460
+
461
+ function copyVertex(destinationAttributes, sourceAttributes, index) {
462
+ for (const attribute in sourceAttributes) {
463
+ if (
464
+ sourceAttributes.hasOwnProperty(attribute) &&
465
+ defined(sourceAttributes[attribute]) &&
466
+ defined(sourceAttributes[attribute].values)
467
+ ) {
468
+ const attr = sourceAttributes[attribute];
469
+
470
+ for (let k = 0; k < attr.componentsPerAttribute; ++k) {
471
+ destinationAttributes[attribute].values.push(
472
+ attr.values[index * attr.componentsPerAttribute + k]
473
+ );
474
+ }
475
+ }
476
+ }
477
+ }
478
+
479
+ /**
480
+ * Splits a geometry into multiple geometries, if necessary, to ensure that indices in the
481
+ * <code>indices</code> fit into unsigned shorts. This is used to meet the WebGL requirements
482
+ * when unsigned int indices are not supported.
483
+ * <p>
484
+ * If the geometry does not have any <code>indices</code>, this function has no effect.
485
+ * </p>
486
+ *
487
+ * @param {Geometry} geometry The geometry to be split into multiple geometries.
488
+ * @returns {Geometry[]} An array of geometries, each with indices that fit into unsigned shorts.
489
+ *
490
+ * @exception {DeveloperError} geometry.primitiveType must equal to PrimitiveType.TRIANGLES, PrimitiveType.LINES, or PrimitiveType.POINTS
491
+ * @exception {DeveloperError} All geometry attribute lists must have the same number of attributes.
492
+ *
493
+ * @example
494
+ * const geometries = Cesium.GeometryPipeline.fitToUnsignedShortIndices(geometry);
495
+ */
496
+ GeometryPipeline.fitToUnsignedShortIndices = function (geometry) {
497
+ //>>includeStart('debug', pragmas.debug);
498
+ if (!defined(geometry)) {
499
+ throw new DeveloperError("geometry is required.");
500
+ }
501
+ if (
502
+ defined(geometry.indices) &&
503
+ geometry.primitiveType !== PrimitiveType.TRIANGLES &&
504
+ geometry.primitiveType !== PrimitiveType.LINES &&
505
+ geometry.primitiveType !== PrimitiveType.POINTS
506
+ ) {
507
+ throw new DeveloperError(
508
+ "geometry.primitiveType must equal to PrimitiveType.TRIANGLES, PrimitiveType.LINES, or PrimitiveType.POINTS."
509
+ );
510
+ }
511
+ //>>includeEnd('debug');
512
+
513
+ const geometries = [];
514
+
515
+ // If there's an index list and more than 64K attributes, it is possible that
516
+ // some indices are outside the range of unsigned short [0, 64K - 1]
517
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
518
+ if (
519
+ defined(geometry.indices) &&
520
+ numberOfVertices >= CesiumMath.SIXTY_FOUR_KILOBYTES
521
+ ) {
522
+ let oldToNewIndex = [];
523
+ let newIndices = [];
524
+ let currentIndex = 0;
525
+ let newAttributes = copyAttributesDescriptions(geometry.attributes);
526
+
527
+ const originalIndices = geometry.indices;
528
+ const numberOfIndices = originalIndices.length;
529
+
530
+ let indicesPerPrimitive;
531
+
532
+ if (geometry.primitiveType === PrimitiveType.TRIANGLES) {
533
+ indicesPerPrimitive = 3;
534
+ } else if (geometry.primitiveType === PrimitiveType.LINES) {
535
+ indicesPerPrimitive = 2;
536
+ } else if (geometry.primitiveType === PrimitiveType.POINTS) {
537
+ indicesPerPrimitive = 1;
538
+ }
539
+
540
+ for (let j = 0; j < numberOfIndices; j += indicesPerPrimitive) {
541
+ for (let k = 0; k < indicesPerPrimitive; ++k) {
542
+ const x = originalIndices[j + k];
543
+ let i = oldToNewIndex[x];
544
+ if (!defined(i)) {
545
+ i = currentIndex++;
546
+ oldToNewIndex[x] = i;
547
+ copyVertex(newAttributes, geometry.attributes, x);
548
+ }
549
+ newIndices.push(i);
550
+ }
551
+
552
+ if (
553
+ currentIndex + indicesPerPrimitive >=
554
+ CesiumMath.SIXTY_FOUR_KILOBYTES
555
+ ) {
556
+ geometries.push(
557
+ new Geometry({
558
+ attributes: newAttributes,
559
+ indices: newIndices,
560
+ primitiveType: geometry.primitiveType,
561
+ boundingSphere: geometry.boundingSphere,
562
+ boundingSphereCV: geometry.boundingSphereCV,
563
+ })
564
+ );
565
+
566
+ // Reset for next vertex-array
567
+ oldToNewIndex = [];
568
+ newIndices = [];
569
+ currentIndex = 0;
570
+ newAttributes = copyAttributesDescriptions(geometry.attributes);
571
+ }
572
+ }
573
+
574
+ if (newIndices.length !== 0) {
575
+ geometries.push(
576
+ new Geometry({
577
+ attributes: newAttributes,
578
+ indices: newIndices,
579
+ primitiveType: geometry.primitiveType,
580
+ boundingSphere: geometry.boundingSphere,
581
+ boundingSphereCV: geometry.boundingSphereCV,
582
+ })
583
+ );
584
+ }
585
+ } else {
586
+ // No need to split into multiple geometries
587
+ geometries.push(geometry);
588
+ }
589
+
590
+ return geometries;
591
+ };
592
+
593
+ const scratchProjectTo2DCartesian3 = new Cartesian3();
594
+ const scratchProjectTo2DCartographic = new Cartographic();
595
+
596
+ /**
597
+ * Projects a geometry's 3D <code>position</code> attribute to 2D, replacing the <code>position</code>
598
+ * attribute with separate <code>position3D</code> and <code>position2D</code> attributes.
599
+ * <p>
600
+ * If the geometry does not have a <code>position</code>, this function has no effect.
601
+ * </p>
602
+ *
603
+ * @param {Geometry} geometry The geometry to modify.
604
+ * @param {String} attributeName The name of the attribute.
605
+ * @param {String} attributeName3D The name of the attribute in 3D.
606
+ * @param {String} attributeName2D The name of the attribute in 2D.
607
+ * @param {Object} [projection=new GeographicProjection()] The projection to use.
608
+ * @returns {Geometry} The modified <code>geometry</code> argument with <code>position3D</code> and <code>position2D</code> attributes.
609
+ *
610
+ * @exception {DeveloperError} geometry must have attribute matching the attributeName argument.
611
+ * @exception {DeveloperError} The attribute componentDatatype must be ComponentDatatype.DOUBLE.
612
+ * @exception {DeveloperError} Could not project a point to 2D.
613
+ *
614
+ * @example
615
+ * geometry = Cesium.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
616
+ */
617
+ GeometryPipeline.projectTo2D = function (
618
+ geometry,
619
+ attributeName,
620
+ attributeName3D,
621
+ attributeName2D,
622
+ projection
623
+ ) {
624
+ //>>includeStart('debug', pragmas.debug);
625
+ if (!defined(geometry)) {
626
+ throw new DeveloperError("geometry is required.");
627
+ }
628
+ if (!defined(attributeName)) {
629
+ throw new DeveloperError("attributeName is required.");
630
+ }
631
+ if (!defined(attributeName3D)) {
632
+ throw new DeveloperError("attributeName3D is required.");
633
+ }
634
+ if (!defined(attributeName2D)) {
635
+ throw new DeveloperError("attributeName2D is required.");
636
+ }
637
+ if (!defined(geometry.attributes[attributeName])) {
638
+ throw new DeveloperError(
639
+ `geometry must have attribute matching the attributeName argument: ${attributeName}.`
640
+ );
641
+ }
642
+ if (
643
+ geometry.attributes[attributeName].componentDatatype !==
644
+ ComponentDatatype.DOUBLE
645
+ ) {
646
+ throw new DeveloperError(
647
+ "The attribute componentDatatype must be ComponentDatatype.DOUBLE."
648
+ );
649
+ }
650
+ //>>includeEnd('debug');
651
+
652
+ const attribute = geometry.attributes[attributeName];
653
+ projection = defined(projection) ? projection : new GeographicProjection();
654
+ const ellipsoid = projection.ellipsoid;
655
+
656
+ // Project original values to 2D.
657
+ const values3D = attribute.values;
658
+ const projectedValues = new Float64Array(values3D.length);
659
+ let index = 0;
660
+
661
+ for (let i = 0; i < values3D.length; i += 3) {
662
+ const value = Cartesian3.fromArray(
663
+ values3D,
664
+ i,
665
+ scratchProjectTo2DCartesian3
666
+ );
667
+
668
+ const lonLat = ellipsoid.cartesianToCartographic(
669
+ value,
670
+ scratchProjectTo2DCartographic
671
+ );
672
+ //>>includeStart('debug', pragmas.debug);
673
+ if (!defined(lonLat)) {
674
+ throw new DeveloperError(
675
+ `Could not project point (${value.x}, ${value.y}, ${value.z}) to 2D.`
676
+ );
677
+ }
678
+ //>>includeEnd('debug');
679
+
680
+ const projectedLonLat = projection.project(
681
+ lonLat,
682
+ scratchProjectTo2DCartesian3
683
+ );
684
+
685
+ projectedValues[index++] = projectedLonLat.x;
686
+ projectedValues[index++] = projectedLonLat.y;
687
+ projectedValues[index++] = projectedLonLat.z;
688
+ }
689
+
690
+ // Rename original cartesians to WGS84 cartesians.
691
+ geometry.attributes[attributeName3D] = attribute;
692
+
693
+ // Replace original cartesians with 2D projected cartesians
694
+ geometry.attributes[attributeName2D] = new GeometryAttribute({
695
+ componentDatatype: ComponentDatatype.DOUBLE,
696
+ componentsPerAttribute: 3,
697
+ values: projectedValues,
698
+ });
699
+ delete geometry.attributes[attributeName];
700
+
701
+ return geometry;
702
+ };
703
+
704
+ const encodedResult = {
705
+ high: 0.0,
706
+ low: 0.0,
707
+ };
708
+
709
+ /**
710
+ * Encodes floating-point geometry attribute values as two separate attributes to improve
711
+ * rendering precision.
712
+ * <p>
713
+ * This is commonly used to create high-precision position vertex attributes.
714
+ * </p>
715
+ *
716
+ * @param {Geometry} geometry The geometry to modify.
717
+ * @param {String} attributeName The name of the attribute.
718
+ * @param {String} attributeHighName The name of the attribute for the encoded high bits.
719
+ * @param {String} attributeLowName The name of the attribute for the encoded low bits.
720
+ * @returns {Geometry} The modified <code>geometry</code> argument, with its encoded attribute.
721
+ *
722
+ * @exception {DeveloperError} geometry must have attribute matching the attributeName argument.
723
+ * @exception {DeveloperError} The attribute componentDatatype must be ComponentDatatype.DOUBLE.
724
+ *
725
+ * @example
726
+ * geometry = Cesium.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
727
+ */
728
+ GeometryPipeline.encodeAttribute = function (
729
+ geometry,
730
+ attributeName,
731
+ attributeHighName,
732
+ attributeLowName
733
+ ) {
734
+ //>>includeStart('debug', pragmas.debug);
735
+ if (!defined(geometry)) {
736
+ throw new DeveloperError("geometry is required.");
737
+ }
738
+ if (!defined(attributeName)) {
739
+ throw new DeveloperError("attributeName is required.");
740
+ }
741
+ if (!defined(attributeHighName)) {
742
+ throw new DeveloperError("attributeHighName is required.");
743
+ }
744
+ if (!defined(attributeLowName)) {
745
+ throw new DeveloperError("attributeLowName is required.");
746
+ }
747
+ if (!defined(geometry.attributes[attributeName])) {
748
+ throw new DeveloperError(
749
+ `geometry must have attribute matching the attributeName argument: ${attributeName}.`
750
+ );
751
+ }
752
+ if (
753
+ geometry.attributes[attributeName].componentDatatype !==
754
+ ComponentDatatype.DOUBLE
755
+ ) {
756
+ throw new DeveloperError(
757
+ "The attribute componentDatatype must be ComponentDatatype.DOUBLE."
758
+ );
759
+ }
760
+ //>>includeEnd('debug');
761
+
762
+ const attribute = geometry.attributes[attributeName];
763
+ const values = attribute.values;
764
+ const length = values.length;
765
+ const highValues = new Float32Array(length);
766
+ const lowValues = new Float32Array(length);
767
+
768
+ for (let i = 0; i < length; ++i) {
769
+ EncodedCartesian3.encode(values[i], encodedResult);
770
+ highValues[i] = encodedResult.high;
771
+ lowValues[i] = encodedResult.low;
772
+ }
773
+
774
+ const componentsPerAttribute = attribute.componentsPerAttribute;
775
+
776
+ geometry.attributes[attributeHighName] = new GeometryAttribute({
777
+ componentDatatype: ComponentDatatype.FLOAT,
778
+ componentsPerAttribute: componentsPerAttribute,
779
+ values: highValues,
780
+ });
781
+ geometry.attributes[attributeLowName] = new GeometryAttribute({
782
+ componentDatatype: ComponentDatatype.FLOAT,
783
+ componentsPerAttribute: componentsPerAttribute,
784
+ values: lowValues,
785
+ });
786
+ delete geometry.attributes[attributeName];
787
+
788
+ return geometry;
789
+ };
790
+
791
+ let scratchCartesian3 = new Cartesian3();
792
+
793
+ function transformPoint(matrix, attribute) {
794
+ if (defined(attribute)) {
795
+ const values = attribute.values;
796
+ const length = values.length;
797
+ for (let i = 0; i < length; i += 3) {
798
+ Cartesian3.unpack(values, i, scratchCartesian3);
799
+ Matrix4.multiplyByPoint(matrix, scratchCartesian3, scratchCartesian3);
800
+ Cartesian3.pack(scratchCartesian3, values, i);
801
+ }
802
+ }
803
+ }
804
+
805
+ function transformVector(matrix, attribute) {
806
+ if (defined(attribute)) {
807
+ const values = attribute.values;
808
+ const length = values.length;
809
+ for (let i = 0; i < length; i += 3) {
810
+ Cartesian3.unpack(values, i, scratchCartesian3);
811
+ Matrix3.multiplyByVector(matrix, scratchCartesian3, scratchCartesian3);
812
+ scratchCartesian3 = Cartesian3.normalize(
813
+ scratchCartesian3,
814
+ scratchCartesian3
815
+ );
816
+ Cartesian3.pack(scratchCartesian3, values, i);
817
+ }
818
+ }
819
+ }
820
+
821
+ const inverseTranspose = new Matrix4();
822
+ const normalMatrix = new Matrix3();
823
+
824
+ /**
825
+ * Transforms a geometry instance to world coordinates. This changes
826
+ * the instance's <code>modelMatrix</code> to {@link Matrix4.IDENTITY} and transforms the
827
+ * following attributes if they are present: <code>position</code>, <code>normal</code>,
828
+ * <code>tangent</code>, and <code>bitangent</code>.
829
+ *
830
+ * @param {GeometryInstance} instance The geometry instance to modify.
831
+ * @returns {GeometryInstance} The modified <code>instance</code> argument, with its attributes transforms to world coordinates.
832
+ *
833
+ * @example
834
+ * Cesium.GeometryPipeline.transformToWorldCoordinates(instance);
835
+ */
836
+ GeometryPipeline.transformToWorldCoordinates = function (instance) {
837
+ //>>includeStart('debug', pragmas.debug);
838
+ if (!defined(instance)) {
839
+ throw new DeveloperError("instance is required.");
840
+ }
841
+ //>>includeEnd('debug');
842
+
843
+ const modelMatrix = instance.modelMatrix;
844
+
845
+ if (Matrix4.equals(modelMatrix, Matrix4.IDENTITY)) {
846
+ // Already in world coordinates
847
+ return instance;
848
+ }
849
+
850
+ const attributes = instance.geometry.attributes;
851
+
852
+ // Transform attributes in known vertex formats
853
+ transformPoint(modelMatrix, attributes.position);
854
+ transformPoint(modelMatrix, attributes.prevPosition);
855
+ transformPoint(modelMatrix, attributes.nextPosition);
856
+
857
+ if (
858
+ defined(attributes.normal) ||
859
+ defined(attributes.tangent) ||
860
+ defined(attributes.bitangent)
861
+ ) {
862
+ Matrix4.inverse(modelMatrix, inverseTranspose);
863
+ Matrix4.transpose(inverseTranspose, inverseTranspose);
864
+ Matrix4.getMatrix3(inverseTranspose, normalMatrix);
865
+
866
+ transformVector(normalMatrix, attributes.normal);
867
+ transformVector(normalMatrix, attributes.tangent);
868
+ transformVector(normalMatrix, attributes.bitangent);
869
+ }
870
+
871
+ const boundingSphere = instance.geometry.boundingSphere;
872
+ if (defined(boundingSphere)) {
873
+ instance.geometry.boundingSphere = BoundingSphere.transform(
874
+ boundingSphere,
875
+ modelMatrix,
876
+ boundingSphere
877
+ );
878
+ }
879
+
880
+ instance.modelMatrix = Matrix4.clone(Matrix4.IDENTITY);
881
+
882
+ return instance;
883
+ };
884
+
885
+ function findAttributesInAllGeometries(instances, propertyName) {
886
+ const length = instances.length;
887
+
888
+ const attributesInAllGeometries = {};
889
+
890
+ const attributes0 = instances[0][propertyName].attributes;
891
+ let name;
892
+
893
+ for (name in attributes0) {
894
+ if (
895
+ attributes0.hasOwnProperty(name) &&
896
+ defined(attributes0[name]) &&
897
+ defined(attributes0[name].values)
898
+ ) {
899
+ const attribute = attributes0[name];
900
+ let numberOfComponents = attribute.values.length;
901
+ let inAllGeometries = true;
902
+
903
+ // Does this same attribute exist in all geometries?
904
+ for (let i = 1; i < length; ++i) {
905
+ const otherAttribute = instances[i][propertyName].attributes[name];
906
+
907
+ if (
908
+ !defined(otherAttribute) ||
909
+ attribute.componentDatatype !== otherAttribute.componentDatatype ||
910
+ attribute.componentsPerAttribute !==
911
+ otherAttribute.componentsPerAttribute ||
912
+ attribute.normalize !== otherAttribute.normalize
913
+ ) {
914
+ inAllGeometries = false;
915
+ break;
916
+ }
917
+
918
+ numberOfComponents += otherAttribute.values.length;
919
+ }
920
+
921
+ if (inAllGeometries) {
922
+ attributesInAllGeometries[name] = new GeometryAttribute({
923
+ componentDatatype: attribute.componentDatatype,
924
+ componentsPerAttribute: attribute.componentsPerAttribute,
925
+ normalize: attribute.normalize,
926
+ values: ComponentDatatype.createTypedArray(
927
+ attribute.componentDatatype,
928
+ numberOfComponents
929
+ ),
930
+ });
931
+ }
932
+ }
933
+ }
934
+
935
+ return attributesInAllGeometries;
936
+ }
937
+
938
+ const tempScratch = new Cartesian3();
939
+
940
+ function combineGeometries(instances, propertyName) {
941
+ const length = instances.length;
942
+
943
+ let name;
944
+ let i;
945
+ let j;
946
+ let k;
947
+
948
+ const m = instances[0].modelMatrix;
949
+ const haveIndices = defined(instances[0][propertyName].indices);
950
+ const primitiveType = instances[0][propertyName].primitiveType;
951
+
952
+ //>>includeStart('debug', pragmas.debug);
953
+ for (i = 1; i < length; ++i) {
954
+ if (!Matrix4.equals(instances[i].modelMatrix, m)) {
955
+ throw new DeveloperError("All instances must have the same modelMatrix.");
956
+ }
957
+ if (defined(instances[i][propertyName].indices) !== haveIndices) {
958
+ throw new DeveloperError(
959
+ "All instance geometries must have an indices or not have one."
960
+ );
961
+ }
962
+ if (instances[i][propertyName].primitiveType !== primitiveType) {
963
+ throw new DeveloperError(
964
+ "All instance geometries must have the same primitiveType."
965
+ );
966
+ }
967
+ }
968
+ //>>includeEnd('debug');
969
+
970
+ // Find subset of attributes in all geometries
971
+ const attributes = findAttributesInAllGeometries(instances, propertyName);
972
+ let values;
973
+ let sourceValues;
974
+ let sourceValuesLength;
975
+
976
+ // Combine attributes from each geometry into a single typed array
977
+ for (name in attributes) {
978
+ if (attributes.hasOwnProperty(name)) {
979
+ values = attributes[name].values;
980
+
981
+ k = 0;
982
+ for (i = 0; i < length; ++i) {
983
+ sourceValues = instances[i][propertyName].attributes[name].values;
984
+ sourceValuesLength = sourceValues.length;
985
+
986
+ for (j = 0; j < sourceValuesLength; ++j) {
987
+ values[k++] = sourceValues[j];
988
+ }
989
+ }
990
+ }
991
+ }
992
+
993
+ // Combine index lists
994
+ let indices;
995
+
996
+ if (haveIndices) {
997
+ let numberOfIndices = 0;
998
+ for (i = 0; i < length; ++i) {
999
+ numberOfIndices += instances[i][propertyName].indices.length;
1000
+ }
1001
+
1002
+ const numberOfVertices = Geometry.computeNumberOfVertices(
1003
+ new Geometry({
1004
+ attributes: attributes,
1005
+ primitiveType: PrimitiveType.POINTS,
1006
+ })
1007
+ );
1008
+ const destIndices = IndexDatatype.createTypedArray(
1009
+ numberOfVertices,
1010
+ numberOfIndices
1011
+ );
1012
+
1013
+ let destOffset = 0;
1014
+ let offset = 0;
1015
+
1016
+ for (i = 0; i < length; ++i) {
1017
+ const sourceIndices = instances[i][propertyName].indices;
1018
+ const sourceIndicesLen = sourceIndices.length;
1019
+
1020
+ for (k = 0; k < sourceIndicesLen; ++k) {
1021
+ destIndices[destOffset++] = offset + sourceIndices[k];
1022
+ }
1023
+
1024
+ offset += Geometry.computeNumberOfVertices(instances[i][propertyName]);
1025
+ }
1026
+
1027
+ indices = destIndices;
1028
+ }
1029
+
1030
+ // Create bounding sphere that includes all instances
1031
+ let center = new Cartesian3();
1032
+ let radius = 0.0;
1033
+ let bs;
1034
+
1035
+ for (i = 0; i < length; ++i) {
1036
+ bs = instances[i][propertyName].boundingSphere;
1037
+ if (!defined(bs)) {
1038
+ // If any geometries have an undefined bounding sphere, then so does the combined geometry
1039
+ center = undefined;
1040
+ break;
1041
+ }
1042
+
1043
+ Cartesian3.add(bs.center, center, center);
1044
+ }
1045
+
1046
+ if (defined(center)) {
1047
+ Cartesian3.divideByScalar(center, length, center);
1048
+
1049
+ for (i = 0; i < length; ++i) {
1050
+ bs = instances[i][propertyName].boundingSphere;
1051
+ const tempRadius =
1052
+ Cartesian3.magnitude(
1053
+ Cartesian3.subtract(bs.center, center, tempScratch)
1054
+ ) + bs.radius;
1055
+
1056
+ if (tempRadius > radius) {
1057
+ radius = tempRadius;
1058
+ }
1059
+ }
1060
+ }
1061
+
1062
+ return new Geometry({
1063
+ attributes: attributes,
1064
+ indices: indices,
1065
+ primitiveType: primitiveType,
1066
+ boundingSphere: defined(center)
1067
+ ? new BoundingSphere(center, radius)
1068
+ : undefined,
1069
+ });
1070
+ }
1071
+
1072
+ /**
1073
+ * Combines geometry from several {@link GeometryInstance} objects into one geometry.
1074
+ * This concatenates the attributes, concatenates and adjusts the indices, and creates
1075
+ * a bounding sphere encompassing all instances.
1076
+ * <p>
1077
+ * If the instances do not have the same attributes, a subset of attributes common
1078
+ * to all instances is used, and the others are ignored.
1079
+ * </p>
1080
+ * <p>
1081
+ * This is used by {@link Primitive} to efficiently render a large amount of static data.
1082
+ * </p>
1083
+ *
1084
+ * @private
1085
+ *
1086
+ * @param {GeometryInstance[]} [instances] The array of {@link GeometryInstance} objects whose geometry will be combined.
1087
+ * @returns {Geometry} A single geometry created from the provided geometry instances.
1088
+ *
1089
+ * @exception {DeveloperError} All instances must have the same modelMatrix.
1090
+ * @exception {DeveloperError} All instance geometries must have an indices or not have one.
1091
+ * @exception {DeveloperError} All instance geometries must have the same primitiveType.
1092
+ *
1093
+ *
1094
+ * @example
1095
+ * for (let i = 0; i < instances.length; ++i) {
1096
+ * Cesium.GeometryPipeline.transformToWorldCoordinates(instances[i]);
1097
+ * }
1098
+ * const geometries = Cesium.GeometryPipeline.combineInstances(instances);
1099
+ *
1100
+ * @see GeometryPipeline.transformToWorldCoordinates
1101
+ */
1102
+ GeometryPipeline.combineInstances = function (instances) {
1103
+ //>>includeStart('debug', pragmas.debug);
1104
+ if (!defined(instances) || instances.length < 1) {
1105
+ throw new DeveloperError(
1106
+ "instances is required and must have length greater than zero."
1107
+ );
1108
+ }
1109
+ //>>includeEnd('debug');
1110
+
1111
+ const instanceGeometry = [];
1112
+ const instanceSplitGeometry = [];
1113
+ const length = instances.length;
1114
+ for (let i = 0; i < length; ++i) {
1115
+ const instance = instances[i];
1116
+
1117
+ if (defined(instance.geometry)) {
1118
+ instanceGeometry.push(instance);
1119
+ } else if (
1120
+ defined(instance.westHemisphereGeometry) &&
1121
+ defined(instance.eastHemisphereGeometry)
1122
+ ) {
1123
+ instanceSplitGeometry.push(instance);
1124
+ }
1125
+ }
1126
+
1127
+ const geometries = [];
1128
+ if (instanceGeometry.length > 0) {
1129
+ geometries.push(combineGeometries(instanceGeometry, "geometry"));
1130
+ }
1131
+
1132
+ if (instanceSplitGeometry.length > 0) {
1133
+ geometries.push(
1134
+ combineGeometries(instanceSplitGeometry, "westHemisphereGeometry")
1135
+ );
1136
+ geometries.push(
1137
+ combineGeometries(instanceSplitGeometry, "eastHemisphereGeometry")
1138
+ );
1139
+ }
1140
+
1141
+ return geometries;
1142
+ };
1143
+
1144
+ const normal = new Cartesian3();
1145
+ const v0 = new Cartesian3();
1146
+ const v1 = new Cartesian3();
1147
+ const v2 = new Cartesian3();
1148
+
1149
+ /**
1150
+ * Computes per-vertex normals for a geometry containing <code>TRIANGLES</code> by averaging the normals of
1151
+ * all triangles incident to the vertex. The result is a new <code>normal</code> attribute added to the geometry.
1152
+ * This assumes a counter-clockwise winding order.
1153
+ *
1154
+ * @param {Geometry} geometry The geometry to modify.
1155
+ * @returns {Geometry} The modified <code>geometry</code> argument with the computed <code>normal</code> attribute.
1156
+ *
1157
+ * @exception {DeveloperError} geometry.indices length must be greater than 0 and be a multiple of 3.
1158
+ * @exception {DeveloperError} geometry.primitiveType must be {@link PrimitiveType.TRIANGLES}.
1159
+ *
1160
+ * @example
1161
+ * Cesium.GeometryPipeline.computeNormal(geometry);
1162
+ */
1163
+ GeometryPipeline.computeNormal = function (geometry) {
1164
+ //>>includeStart('debug', pragmas.debug);
1165
+ if (!defined(geometry)) {
1166
+ throw new DeveloperError("geometry is required.");
1167
+ }
1168
+ if (
1169
+ !defined(geometry.attributes.position) ||
1170
+ !defined(geometry.attributes.position.values)
1171
+ ) {
1172
+ throw new DeveloperError(
1173
+ "geometry.attributes.position.values is required."
1174
+ );
1175
+ }
1176
+ if (!defined(geometry.indices)) {
1177
+ throw new DeveloperError("geometry.indices is required.");
1178
+ }
1179
+ if (geometry.indices.length < 2 || geometry.indices.length % 3 !== 0) {
1180
+ throw new DeveloperError(
1181
+ "geometry.indices length must be greater than 0 and be a multiple of 3."
1182
+ );
1183
+ }
1184
+ if (geometry.primitiveType !== PrimitiveType.TRIANGLES) {
1185
+ throw new DeveloperError(
1186
+ "geometry.primitiveType must be PrimitiveType.TRIANGLES."
1187
+ );
1188
+ }
1189
+ //>>includeEnd('debug');
1190
+
1191
+ const indices = geometry.indices;
1192
+ const attributes = geometry.attributes;
1193
+ const vertices = attributes.position.values;
1194
+ const numVertices = attributes.position.values.length / 3;
1195
+ const numIndices = indices.length;
1196
+ const normalsPerVertex = new Array(numVertices);
1197
+ const normalsPerTriangle = new Array(numIndices / 3);
1198
+ const normalIndices = new Array(numIndices);
1199
+ let i;
1200
+ for (i = 0; i < numVertices; i++) {
1201
+ normalsPerVertex[i] = {
1202
+ indexOffset: 0,
1203
+ count: 0,
1204
+ currentCount: 0,
1205
+ };
1206
+ }
1207
+
1208
+ let j = 0;
1209
+ for (i = 0; i < numIndices; i += 3) {
1210
+ const i0 = indices[i];
1211
+ const i1 = indices[i + 1];
1212
+ const i2 = indices[i + 2];
1213
+ const i03 = i0 * 3;
1214
+ const i13 = i1 * 3;
1215
+ const i23 = i2 * 3;
1216
+
1217
+ v0.x = vertices[i03];
1218
+ v0.y = vertices[i03 + 1];
1219
+ v0.z = vertices[i03 + 2];
1220
+ v1.x = vertices[i13];
1221
+ v1.y = vertices[i13 + 1];
1222
+ v1.z = vertices[i13 + 2];
1223
+ v2.x = vertices[i23];
1224
+ v2.y = vertices[i23 + 1];
1225
+ v2.z = vertices[i23 + 2];
1226
+
1227
+ normalsPerVertex[i0].count++;
1228
+ normalsPerVertex[i1].count++;
1229
+ normalsPerVertex[i2].count++;
1230
+
1231
+ Cartesian3.subtract(v1, v0, v1);
1232
+ Cartesian3.subtract(v2, v0, v2);
1233
+ normalsPerTriangle[j] = Cartesian3.cross(v1, v2, new Cartesian3());
1234
+ j++;
1235
+ }
1236
+
1237
+ let indexOffset = 0;
1238
+ for (i = 0; i < numVertices; i++) {
1239
+ normalsPerVertex[i].indexOffset += indexOffset;
1240
+ indexOffset += normalsPerVertex[i].count;
1241
+ }
1242
+
1243
+ j = 0;
1244
+ let vertexNormalData;
1245
+ for (i = 0; i < numIndices; i += 3) {
1246
+ vertexNormalData = normalsPerVertex[indices[i]];
1247
+ let index = vertexNormalData.indexOffset + vertexNormalData.currentCount;
1248
+ normalIndices[index] = j;
1249
+ vertexNormalData.currentCount++;
1250
+
1251
+ vertexNormalData = normalsPerVertex[indices[i + 1]];
1252
+ index = vertexNormalData.indexOffset + vertexNormalData.currentCount;
1253
+ normalIndices[index] = j;
1254
+ vertexNormalData.currentCount++;
1255
+
1256
+ vertexNormalData = normalsPerVertex[indices[i + 2]];
1257
+ index = vertexNormalData.indexOffset + vertexNormalData.currentCount;
1258
+ normalIndices[index] = j;
1259
+ vertexNormalData.currentCount++;
1260
+
1261
+ j++;
1262
+ }
1263
+
1264
+ const normalValues = new Float32Array(numVertices * 3);
1265
+ for (i = 0; i < numVertices; i++) {
1266
+ const i3 = i * 3;
1267
+ vertexNormalData = normalsPerVertex[i];
1268
+ Cartesian3.clone(Cartesian3.ZERO, normal);
1269
+ if (vertexNormalData.count > 0) {
1270
+ for (j = 0; j < vertexNormalData.count; j++) {
1271
+ Cartesian3.add(
1272
+ normal,
1273
+ normalsPerTriangle[normalIndices[vertexNormalData.indexOffset + j]],
1274
+ normal
1275
+ );
1276
+ }
1277
+
1278
+ // We can run into an issue where a vertex is used with 2 primitives that have opposite winding order.
1279
+ if (
1280
+ Cartesian3.equalsEpsilon(Cartesian3.ZERO, normal, CesiumMath.EPSILON10)
1281
+ ) {
1282
+ Cartesian3.clone(
1283
+ normalsPerTriangle[normalIndices[vertexNormalData.indexOffset]],
1284
+ normal
1285
+ );
1286
+ }
1287
+ }
1288
+
1289
+ // We end up with a zero vector probably because of a degenerate triangle
1290
+ if (
1291
+ Cartesian3.equalsEpsilon(Cartesian3.ZERO, normal, CesiumMath.EPSILON10)
1292
+ ) {
1293
+ // Default to (0,0,1)
1294
+ normal.z = 1.0;
1295
+ }
1296
+
1297
+ Cartesian3.normalize(normal, normal);
1298
+ normalValues[i3] = normal.x;
1299
+ normalValues[i3 + 1] = normal.y;
1300
+ normalValues[i3 + 2] = normal.z;
1301
+ }
1302
+
1303
+ geometry.attributes.normal = new GeometryAttribute({
1304
+ componentDatatype: ComponentDatatype.FLOAT,
1305
+ componentsPerAttribute: 3,
1306
+ values: normalValues,
1307
+ });
1308
+
1309
+ return geometry;
1310
+ };
1311
+
1312
+ const normalScratch = new Cartesian3();
1313
+ const normalScale = new Cartesian3();
1314
+ const tScratch = new Cartesian3();
1315
+
1316
+ /**
1317
+ * Computes per-vertex tangents and bitangents for a geometry containing <code>TRIANGLES</code>.
1318
+ * The result is new <code>tangent</code> and <code>bitangent</code> attributes added to the geometry.
1319
+ * This assumes a counter-clockwise winding order.
1320
+ * <p>
1321
+ * Based on <a href="http://www.terathon.com/code/tangent.html">Computing Tangent Space Basis Vectors
1322
+ * for an Arbitrary Mesh</a> by Eric Lengyel.
1323
+ * </p>
1324
+ *
1325
+ * @param {Geometry} geometry The geometry to modify.
1326
+ * @returns {Geometry} The modified <code>geometry</code> argument with the computed <code>tangent</code> and <code>bitangent</code> attributes.
1327
+ *
1328
+ * @exception {DeveloperError} geometry.indices length must be greater than 0 and be a multiple of 3.
1329
+ * @exception {DeveloperError} geometry.primitiveType must be {@link PrimitiveType.TRIANGLES}.
1330
+ *
1331
+ * @example
1332
+ * Cesium.GeometryPipeline.computeTangentAndBiTangent(geometry);
1333
+ */
1334
+ GeometryPipeline.computeTangentAndBitangent = function (geometry) {
1335
+ //>>includeStart('debug', pragmas.debug);
1336
+ if (!defined(geometry)) {
1337
+ throw new DeveloperError("geometry is required.");
1338
+ }
1339
+ //>>includeEnd('debug');
1340
+
1341
+ const attributes = geometry.attributes;
1342
+ const indices = geometry.indices;
1343
+
1344
+ //>>includeStart('debug', pragmas.debug);
1345
+ if (!defined(attributes.position) || !defined(attributes.position.values)) {
1346
+ throw new DeveloperError(
1347
+ "geometry.attributes.position.values is required."
1348
+ );
1349
+ }
1350
+ if (!defined(attributes.normal) || !defined(attributes.normal.values)) {
1351
+ throw new DeveloperError("geometry.attributes.normal.values is required.");
1352
+ }
1353
+ if (!defined(attributes.st) || !defined(attributes.st.values)) {
1354
+ throw new DeveloperError("geometry.attributes.st.values is required.");
1355
+ }
1356
+ if (!defined(indices)) {
1357
+ throw new DeveloperError("geometry.indices is required.");
1358
+ }
1359
+ if (indices.length < 2 || indices.length % 3 !== 0) {
1360
+ throw new DeveloperError(
1361
+ "geometry.indices length must be greater than 0 and be a multiple of 3."
1362
+ );
1363
+ }
1364
+ if (geometry.primitiveType !== PrimitiveType.TRIANGLES) {
1365
+ throw new DeveloperError(
1366
+ "geometry.primitiveType must be PrimitiveType.TRIANGLES."
1367
+ );
1368
+ }
1369
+ //>>includeEnd('debug');
1370
+
1371
+ const vertices = geometry.attributes.position.values;
1372
+ const normals = geometry.attributes.normal.values;
1373
+ const st = geometry.attributes.st.values;
1374
+
1375
+ const numVertices = geometry.attributes.position.values.length / 3;
1376
+ const numIndices = indices.length;
1377
+ const tan1 = new Array(numVertices * 3);
1378
+
1379
+ let i;
1380
+ for (i = 0; i < tan1.length; i++) {
1381
+ tan1[i] = 0;
1382
+ }
1383
+
1384
+ let i03;
1385
+ let i13;
1386
+ let i23;
1387
+ for (i = 0; i < numIndices; i += 3) {
1388
+ const i0 = indices[i];
1389
+ const i1 = indices[i + 1];
1390
+ const i2 = indices[i + 2];
1391
+ i03 = i0 * 3;
1392
+ i13 = i1 * 3;
1393
+ i23 = i2 * 3;
1394
+ const i02 = i0 * 2;
1395
+ const i12 = i1 * 2;
1396
+ const i22 = i2 * 2;
1397
+
1398
+ const ux = vertices[i03];
1399
+ const uy = vertices[i03 + 1];
1400
+ const uz = vertices[i03 + 2];
1401
+
1402
+ const wx = st[i02];
1403
+ const wy = st[i02 + 1];
1404
+ const t1 = st[i12 + 1] - wy;
1405
+ const t2 = st[i22 + 1] - wy;
1406
+
1407
+ const r = 1.0 / ((st[i12] - wx) * t2 - (st[i22] - wx) * t1);
1408
+ const sdirx = (t2 * (vertices[i13] - ux) - t1 * (vertices[i23] - ux)) * r;
1409
+ const sdiry =
1410
+ (t2 * (vertices[i13 + 1] - uy) - t1 * (vertices[i23 + 1] - uy)) * r;
1411
+ const sdirz =
1412
+ (t2 * (vertices[i13 + 2] - uz) - t1 * (vertices[i23 + 2] - uz)) * r;
1413
+
1414
+ tan1[i03] += sdirx;
1415
+ tan1[i03 + 1] += sdiry;
1416
+ tan1[i03 + 2] += sdirz;
1417
+
1418
+ tan1[i13] += sdirx;
1419
+ tan1[i13 + 1] += sdiry;
1420
+ tan1[i13 + 2] += sdirz;
1421
+
1422
+ tan1[i23] += sdirx;
1423
+ tan1[i23 + 1] += sdiry;
1424
+ tan1[i23 + 2] += sdirz;
1425
+ }
1426
+
1427
+ const tangentValues = new Float32Array(numVertices * 3);
1428
+ const bitangentValues = new Float32Array(numVertices * 3);
1429
+
1430
+ for (i = 0; i < numVertices; i++) {
1431
+ i03 = i * 3;
1432
+ i13 = i03 + 1;
1433
+ i23 = i03 + 2;
1434
+
1435
+ const n = Cartesian3.fromArray(normals, i03, normalScratch);
1436
+ const t = Cartesian3.fromArray(tan1, i03, tScratch);
1437
+ const scalar = Cartesian3.dot(n, t);
1438
+ Cartesian3.multiplyByScalar(n, scalar, normalScale);
1439
+ Cartesian3.normalize(Cartesian3.subtract(t, normalScale, t), t);
1440
+
1441
+ tangentValues[i03] = t.x;
1442
+ tangentValues[i13] = t.y;
1443
+ tangentValues[i23] = t.z;
1444
+
1445
+ Cartesian3.normalize(Cartesian3.cross(n, t, t), t);
1446
+
1447
+ bitangentValues[i03] = t.x;
1448
+ bitangentValues[i13] = t.y;
1449
+ bitangentValues[i23] = t.z;
1450
+ }
1451
+
1452
+ geometry.attributes.tangent = new GeometryAttribute({
1453
+ componentDatatype: ComponentDatatype.FLOAT,
1454
+ componentsPerAttribute: 3,
1455
+ values: tangentValues,
1456
+ });
1457
+
1458
+ geometry.attributes.bitangent = new GeometryAttribute({
1459
+ componentDatatype: ComponentDatatype.FLOAT,
1460
+ componentsPerAttribute: 3,
1461
+ values: bitangentValues,
1462
+ });
1463
+
1464
+ return geometry;
1465
+ };
1466
+
1467
+ const scratchCartesian2 = new Cartesian2();
1468
+ const toEncode1 = new Cartesian3();
1469
+ const toEncode2 = new Cartesian3();
1470
+ const toEncode3 = new Cartesian3();
1471
+ let encodeResult2 = new Cartesian2();
1472
+ /**
1473
+ * Compresses and packs geometry normal attribute values to save memory.
1474
+ *
1475
+ * @param {Geometry} geometry The geometry to modify.
1476
+ * @returns {Geometry} The modified <code>geometry</code> argument, with its normals compressed and packed.
1477
+ *
1478
+ * @example
1479
+ * geometry = Cesium.GeometryPipeline.compressVertices(geometry);
1480
+ */
1481
+ GeometryPipeline.compressVertices = function (geometry) {
1482
+ //>>includeStart('debug', pragmas.debug);
1483
+ if (!defined(geometry)) {
1484
+ throw new DeveloperError("geometry is required.");
1485
+ }
1486
+ //>>includeEnd('debug');
1487
+
1488
+ const extrudeAttribute = geometry.attributes.extrudeDirection;
1489
+ let i;
1490
+ let numVertices;
1491
+ if (defined(extrudeAttribute)) {
1492
+ //only shadow volumes use extrudeDirection, and shadow volumes use vertexFormat: POSITION_ONLY so we don't need to check other attributes
1493
+ const extrudeDirections = extrudeAttribute.values;
1494
+ numVertices = extrudeDirections.length / 3.0;
1495
+ const compressedDirections = new Float32Array(numVertices * 2);
1496
+
1497
+ let i2 = 0;
1498
+ for (i = 0; i < numVertices; ++i) {
1499
+ Cartesian3.fromArray(extrudeDirections, i * 3.0, toEncode1);
1500
+ if (Cartesian3.equals(toEncode1, Cartesian3.ZERO)) {
1501
+ i2 += 2;
1502
+ continue;
1503
+ }
1504
+ encodeResult2 = AttributeCompression.octEncodeInRange(
1505
+ toEncode1,
1506
+ 65535,
1507
+ encodeResult2
1508
+ );
1509
+ compressedDirections[i2++] = encodeResult2.x;
1510
+ compressedDirections[i2++] = encodeResult2.y;
1511
+ }
1512
+
1513
+ geometry.attributes.compressedAttributes = new GeometryAttribute({
1514
+ componentDatatype: ComponentDatatype.FLOAT,
1515
+ componentsPerAttribute: 2,
1516
+ values: compressedDirections,
1517
+ });
1518
+ delete geometry.attributes.extrudeDirection;
1519
+ return geometry;
1520
+ }
1521
+
1522
+ const normalAttribute = geometry.attributes.normal;
1523
+ const stAttribute = geometry.attributes.st;
1524
+
1525
+ const hasNormal = defined(normalAttribute);
1526
+ const hasSt = defined(stAttribute);
1527
+ if (!hasNormal && !hasSt) {
1528
+ return geometry;
1529
+ }
1530
+
1531
+ const tangentAttribute = geometry.attributes.tangent;
1532
+ const bitangentAttribute = geometry.attributes.bitangent;
1533
+
1534
+ const hasTangent = defined(tangentAttribute);
1535
+ const hasBitangent = defined(bitangentAttribute);
1536
+
1537
+ let normals;
1538
+ let st;
1539
+ let tangents;
1540
+ let bitangents;
1541
+
1542
+ if (hasNormal) {
1543
+ normals = normalAttribute.values;
1544
+ }
1545
+ if (hasSt) {
1546
+ st = stAttribute.values;
1547
+ }
1548
+ if (hasTangent) {
1549
+ tangents = tangentAttribute.values;
1550
+ }
1551
+ if (hasBitangent) {
1552
+ bitangents = bitangentAttribute.values;
1553
+ }
1554
+
1555
+ const length = hasNormal ? normals.length : st.length;
1556
+ const numComponents = hasNormal ? 3.0 : 2.0;
1557
+ numVertices = length / numComponents;
1558
+
1559
+ let compressedLength = numVertices;
1560
+ let numCompressedComponents = hasSt && hasNormal ? 2.0 : 1.0;
1561
+ numCompressedComponents += hasTangent || hasBitangent ? 1.0 : 0.0;
1562
+ compressedLength *= numCompressedComponents;
1563
+
1564
+ const compressedAttributes = new Float32Array(compressedLength);
1565
+
1566
+ let normalIndex = 0;
1567
+ for (i = 0; i < numVertices; ++i) {
1568
+ if (hasSt) {
1569
+ Cartesian2.fromArray(st, i * 2.0, scratchCartesian2);
1570
+ compressedAttributes[
1571
+ normalIndex++
1572
+ ] = AttributeCompression.compressTextureCoordinates(scratchCartesian2);
1573
+ }
1574
+
1575
+ const index = i * 3.0;
1576
+ if (hasNormal && defined(tangents) && defined(bitangents)) {
1577
+ Cartesian3.fromArray(normals, index, toEncode1);
1578
+ Cartesian3.fromArray(tangents, index, toEncode2);
1579
+ Cartesian3.fromArray(bitangents, index, toEncode3);
1580
+
1581
+ AttributeCompression.octPack(
1582
+ toEncode1,
1583
+ toEncode2,
1584
+ toEncode3,
1585
+ scratchCartesian2
1586
+ );
1587
+ compressedAttributes[normalIndex++] = scratchCartesian2.x;
1588
+ compressedAttributes[normalIndex++] = scratchCartesian2.y;
1589
+ } else {
1590
+ if (hasNormal) {
1591
+ Cartesian3.fromArray(normals, index, toEncode1);
1592
+ compressedAttributes[
1593
+ normalIndex++
1594
+ ] = AttributeCompression.octEncodeFloat(toEncode1);
1595
+ }
1596
+
1597
+ if (hasTangent) {
1598
+ Cartesian3.fromArray(tangents, index, toEncode1);
1599
+ compressedAttributes[
1600
+ normalIndex++
1601
+ ] = AttributeCompression.octEncodeFloat(toEncode1);
1602
+ }
1603
+
1604
+ if (hasBitangent) {
1605
+ Cartesian3.fromArray(bitangents, index, toEncode1);
1606
+ compressedAttributes[
1607
+ normalIndex++
1608
+ ] = AttributeCompression.octEncodeFloat(toEncode1);
1609
+ }
1610
+ }
1611
+ }
1612
+
1613
+ geometry.attributes.compressedAttributes = new GeometryAttribute({
1614
+ componentDatatype: ComponentDatatype.FLOAT,
1615
+ componentsPerAttribute: numCompressedComponents,
1616
+ values: compressedAttributes,
1617
+ });
1618
+
1619
+ if (hasNormal) {
1620
+ delete geometry.attributes.normal;
1621
+ }
1622
+ if (hasSt) {
1623
+ delete geometry.attributes.st;
1624
+ }
1625
+ if (hasBitangent) {
1626
+ delete geometry.attributes.bitangent;
1627
+ }
1628
+ if (hasTangent) {
1629
+ delete geometry.attributes.tangent;
1630
+ }
1631
+
1632
+ return geometry;
1633
+ };
1634
+
1635
+ function indexTriangles(geometry) {
1636
+ if (defined(geometry.indices)) {
1637
+ return geometry;
1638
+ }
1639
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
1640
+
1641
+ //>>includeStart('debug', pragmas.debug);
1642
+ if (numberOfVertices < 3) {
1643
+ throw new DeveloperError("The number of vertices must be at least three.");
1644
+ }
1645
+ if (numberOfVertices % 3 !== 0) {
1646
+ throw new DeveloperError(
1647
+ "The number of vertices must be a multiple of three."
1648
+ );
1649
+ }
1650
+ //>>includeEnd('debug');
1651
+
1652
+ const indices = IndexDatatype.createTypedArray(
1653
+ numberOfVertices,
1654
+ numberOfVertices
1655
+ );
1656
+ for (let i = 0; i < numberOfVertices; ++i) {
1657
+ indices[i] = i;
1658
+ }
1659
+
1660
+ geometry.indices = indices;
1661
+ return geometry;
1662
+ }
1663
+
1664
+ function indexTriangleFan(geometry) {
1665
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
1666
+
1667
+ //>>includeStart('debug', pragmas.debug);
1668
+ if (numberOfVertices < 3) {
1669
+ throw new DeveloperError("The number of vertices must be at least three.");
1670
+ }
1671
+ //>>includeEnd('debug');
1672
+
1673
+ const indices = IndexDatatype.createTypedArray(
1674
+ numberOfVertices,
1675
+ (numberOfVertices - 2) * 3
1676
+ );
1677
+ indices[0] = 1;
1678
+ indices[1] = 0;
1679
+ indices[2] = 2;
1680
+
1681
+ let indicesIndex = 3;
1682
+ for (let i = 3; i < numberOfVertices; ++i) {
1683
+ indices[indicesIndex++] = i - 1;
1684
+ indices[indicesIndex++] = 0;
1685
+ indices[indicesIndex++] = i;
1686
+ }
1687
+
1688
+ geometry.indices = indices;
1689
+ geometry.primitiveType = PrimitiveType.TRIANGLES;
1690
+ return geometry;
1691
+ }
1692
+
1693
+ function indexTriangleStrip(geometry) {
1694
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
1695
+
1696
+ //>>includeStart('debug', pragmas.debug);
1697
+ if (numberOfVertices < 3) {
1698
+ throw new DeveloperError("The number of vertices must be at least 3.");
1699
+ }
1700
+ //>>includeEnd('debug');
1701
+
1702
+ const indices = IndexDatatype.createTypedArray(
1703
+ numberOfVertices,
1704
+ (numberOfVertices - 2) * 3
1705
+ );
1706
+ indices[0] = 0;
1707
+ indices[1] = 1;
1708
+ indices[2] = 2;
1709
+
1710
+ if (numberOfVertices > 3) {
1711
+ indices[3] = 0;
1712
+ indices[4] = 2;
1713
+ indices[5] = 3;
1714
+ }
1715
+
1716
+ let indicesIndex = 6;
1717
+ for (let i = 3; i < numberOfVertices - 1; i += 2) {
1718
+ indices[indicesIndex++] = i;
1719
+ indices[indicesIndex++] = i - 1;
1720
+ indices[indicesIndex++] = i + 1;
1721
+
1722
+ if (i + 2 < numberOfVertices) {
1723
+ indices[indicesIndex++] = i;
1724
+ indices[indicesIndex++] = i + 1;
1725
+ indices[indicesIndex++] = i + 2;
1726
+ }
1727
+ }
1728
+
1729
+ geometry.indices = indices;
1730
+ geometry.primitiveType = PrimitiveType.TRIANGLES;
1731
+ return geometry;
1732
+ }
1733
+
1734
+ function indexLines(geometry) {
1735
+ if (defined(geometry.indices)) {
1736
+ return geometry;
1737
+ }
1738
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
1739
+
1740
+ //>>includeStart('debug', pragmas.debug);
1741
+ if (numberOfVertices < 2) {
1742
+ throw new DeveloperError("The number of vertices must be at least two.");
1743
+ }
1744
+ if (numberOfVertices % 2 !== 0) {
1745
+ throw new DeveloperError("The number of vertices must be a multiple of 2.");
1746
+ }
1747
+ //>>includeEnd('debug');
1748
+
1749
+ const indices = IndexDatatype.createTypedArray(
1750
+ numberOfVertices,
1751
+ numberOfVertices
1752
+ );
1753
+ for (let i = 0; i < numberOfVertices; ++i) {
1754
+ indices[i] = i;
1755
+ }
1756
+
1757
+ geometry.indices = indices;
1758
+ return geometry;
1759
+ }
1760
+
1761
+ function indexLineStrip(geometry) {
1762
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
1763
+
1764
+ //>>includeStart('debug', pragmas.debug);
1765
+ if (numberOfVertices < 2) {
1766
+ throw new DeveloperError("The number of vertices must be at least two.");
1767
+ }
1768
+ //>>includeEnd('debug');
1769
+
1770
+ const indices = IndexDatatype.createTypedArray(
1771
+ numberOfVertices,
1772
+ (numberOfVertices - 1) * 2
1773
+ );
1774
+ indices[0] = 0;
1775
+ indices[1] = 1;
1776
+ let indicesIndex = 2;
1777
+ for (let i = 2; i < numberOfVertices; ++i) {
1778
+ indices[indicesIndex++] = i - 1;
1779
+ indices[indicesIndex++] = i;
1780
+ }
1781
+
1782
+ geometry.indices = indices;
1783
+ geometry.primitiveType = PrimitiveType.LINES;
1784
+ return geometry;
1785
+ }
1786
+
1787
+ function indexLineLoop(geometry) {
1788
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
1789
+
1790
+ //>>includeStart('debug', pragmas.debug);
1791
+ if (numberOfVertices < 2) {
1792
+ throw new DeveloperError("The number of vertices must be at least two.");
1793
+ }
1794
+ //>>includeEnd('debug');
1795
+
1796
+ const indices = IndexDatatype.createTypedArray(
1797
+ numberOfVertices,
1798
+ numberOfVertices * 2
1799
+ );
1800
+
1801
+ indices[0] = 0;
1802
+ indices[1] = 1;
1803
+
1804
+ let indicesIndex = 2;
1805
+ for (let i = 2; i < numberOfVertices; ++i) {
1806
+ indices[indicesIndex++] = i - 1;
1807
+ indices[indicesIndex++] = i;
1808
+ }
1809
+
1810
+ indices[indicesIndex++] = numberOfVertices - 1;
1811
+ indices[indicesIndex] = 0;
1812
+
1813
+ geometry.indices = indices;
1814
+ geometry.primitiveType = PrimitiveType.LINES;
1815
+ return geometry;
1816
+ }
1817
+
1818
+ function indexPrimitive(geometry) {
1819
+ switch (geometry.primitiveType) {
1820
+ case PrimitiveType.TRIANGLE_FAN:
1821
+ return indexTriangleFan(geometry);
1822
+ case PrimitiveType.TRIANGLE_STRIP:
1823
+ return indexTriangleStrip(geometry);
1824
+ case PrimitiveType.TRIANGLES:
1825
+ return indexTriangles(geometry);
1826
+ case PrimitiveType.LINE_STRIP:
1827
+ return indexLineStrip(geometry);
1828
+ case PrimitiveType.LINE_LOOP:
1829
+ return indexLineLoop(geometry);
1830
+ case PrimitiveType.LINES:
1831
+ return indexLines(geometry);
1832
+ }
1833
+
1834
+ return geometry;
1835
+ }
1836
+
1837
+ function offsetPointFromXZPlane(p, isBehind) {
1838
+ if (Math.abs(p.y) < CesiumMath.EPSILON6) {
1839
+ if (isBehind) {
1840
+ p.y = -CesiumMath.EPSILON6;
1841
+ } else {
1842
+ p.y = CesiumMath.EPSILON6;
1843
+ }
1844
+ }
1845
+ }
1846
+
1847
+ function offsetTriangleFromXZPlane(p0, p1, p2) {
1848
+ if (p0.y !== 0.0 && p1.y !== 0.0 && p2.y !== 0.0) {
1849
+ offsetPointFromXZPlane(p0, p0.y < 0.0);
1850
+ offsetPointFromXZPlane(p1, p1.y < 0.0);
1851
+ offsetPointFromXZPlane(p2, p2.y < 0.0);
1852
+ return;
1853
+ }
1854
+
1855
+ const p0y = Math.abs(p0.y);
1856
+ const p1y = Math.abs(p1.y);
1857
+ const p2y = Math.abs(p2.y);
1858
+
1859
+ let sign;
1860
+ if (p0y > p1y) {
1861
+ if (p0y > p2y) {
1862
+ sign = CesiumMath.sign(p0.y);
1863
+ } else {
1864
+ sign = CesiumMath.sign(p2.y);
1865
+ }
1866
+ } else if (p1y > p2y) {
1867
+ sign = CesiumMath.sign(p1.y);
1868
+ } else {
1869
+ sign = CesiumMath.sign(p2.y);
1870
+ }
1871
+
1872
+ const isBehind = sign < 0.0;
1873
+ offsetPointFromXZPlane(p0, isBehind);
1874
+ offsetPointFromXZPlane(p1, isBehind);
1875
+ offsetPointFromXZPlane(p2, isBehind);
1876
+ }
1877
+
1878
+ const c3 = new Cartesian3();
1879
+ function getXZIntersectionOffsetPoints(p, p1, u1, v1) {
1880
+ Cartesian3.add(
1881
+ p,
1882
+ Cartesian3.multiplyByScalar(
1883
+ Cartesian3.subtract(p1, p, c3),
1884
+ p.y / (p.y - p1.y),
1885
+ c3
1886
+ ),
1887
+ u1
1888
+ );
1889
+ Cartesian3.clone(u1, v1);
1890
+ offsetPointFromXZPlane(u1, true);
1891
+ offsetPointFromXZPlane(v1, false);
1892
+ }
1893
+
1894
+ const u1 = new Cartesian3();
1895
+ const u2 = new Cartesian3();
1896
+ const q1 = new Cartesian3();
1897
+ const q2 = new Cartesian3();
1898
+
1899
+ const splitTriangleResult = {
1900
+ positions: new Array(7),
1901
+ indices: new Array(3 * 3),
1902
+ };
1903
+
1904
+ function splitTriangle(p0, p1, p2) {
1905
+ // In WGS84 coordinates, for a triangle approximately on the
1906
+ // ellipsoid to cross the IDL, first it needs to be on the
1907
+ // negative side of the plane x = 0.
1908
+ if (p0.x >= 0.0 || p1.x >= 0.0 || p2.x >= 0.0) {
1909
+ return undefined;
1910
+ }
1911
+
1912
+ offsetTriangleFromXZPlane(p0, p1, p2);
1913
+
1914
+ const p0Behind = p0.y < 0.0;
1915
+ const p1Behind = p1.y < 0.0;
1916
+ const p2Behind = p2.y < 0.0;
1917
+
1918
+ let numBehind = 0;
1919
+ numBehind += p0Behind ? 1 : 0;
1920
+ numBehind += p1Behind ? 1 : 0;
1921
+ numBehind += p2Behind ? 1 : 0;
1922
+
1923
+ const indices = splitTriangleResult.indices;
1924
+
1925
+ if (numBehind === 1) {
1926
+ indices[1] = 3;
1927
+ indices[2] = 4;
1928
+ indices[5] = 6;
1929
+ indices[7] = 6;
1930
+ indices[8] = 5;
1931
+
1932
+ if (p0Behind) {
1933
+ getXZIntersectionOffsetPoints(p0, p1, u1, q1);
1934
+ getXZIntersectionOffsetPoints(p0, p2, u2, q2);
1935
+
1936
+ indices[0] = 0;
1937
+ indices[3] = 1;
1938
+ indices[4] = 2;
1939
+ indices[6] = 1;
1940
+ } else if (p1Behind) {
1941
+ getXZIntersectionOffsetPoints(p1, p2, u1, q1);
1942
+ getXZIntersectionOffsetPoints(p1, p0, u2, q2);
1943
+
1944
+ indices[0] = 1;
1945
+ indices[3] = 2;
1946
+ indices[4] = 0;
1947
+ indices[6] = 2;
1948
+ } else if (p2Behind) {
1949
+ getXZIntersectionOffsetPoints(p2, p0, u1, q1);
1950
+ getXZIntersectionOffsetPoints(p2, p1, u2, q2);
1951
+
1952
+ indices[0] = 2;
1953
+ indices[3] = 0;
1954
+ indices[4] = 1;
1955
+ indices[6] = 0;
1956
+ }
1957
+ } else if (numBehind === 2) {
1958
+ indices[2] = 4;
1959
+ indices[4] = 4;
1960
+ indices[5] = 3;
1961
+ indices[7] = 5;
1962
+ indices[8] = 6;
1963
+
1964
+ if (!p0Behind) {
1965
+ getXZIntersectionOffsetPoints(p0, p1, u1, q1);
1966
+ getXZIntersectionOffsetPoints(p0, p2, u2, q2);
1967
+
1968
+ indices[0] = 1;
1969
+ indices[1] = 2;
1970
+ indices[3] = 1;
1971
+ indices[6] = 0;
1972
+ } else if (!p1Behind) {
1973
+ getXZIntersectionOffsetPoints(p1, p2, u1, q1);
1974
+ getXZIntersectionOffsetPoints(p1, p0, u2, q2);
1975
+
1976
+ indices[0] = 2;
1977
+ indices[1] = 0;
1978
+ indices[3] = 2;
1979
+ indices[6] = 1;
1980
+ } else if (!p2Behind) {
1981
+ getXZIntersectionOffsetPoints(p2, p0, u1, q1);
1982
+ getXZIntersectionOffsetPoints(p2, p1, u2, q2);
1983
+
1984
+ indices[0] = 0;
1985
+ indices[1] = 1;
1986
+ indices[3] = 0;
1987
+ indices[6] = 2;
1988
+ }
1989
+ }
1990
+
1991
+ const positions = splitTriangleResult.positions;
1992
+ positions[0] = p0;
1993
+ positions[1] = p1;
1994
+ positions[2] = p2;
1995
+ positions.length = 3;
1996
+
1997
+ if (numBehind === 1 || numBehind === 2) {
1998
+ positions[3] = u1;
1999
+ positions[4] = u2;
2000
+ positions[5] = q1;
2001
+ positions[6] = q2;
2002
+ positions.length = 7;
2003
+ }
2004
+
2005
+ return splitTriangleResult;
2006
+ }
2007
+
2008
+ function updateGeometryAfterSplit(geometry, computeBoundingSphere) {
2009
+ const attributes = geometry.attributes;
2010
+
2011
+ if (attributes.position.values.length === 0) {
2012
+ return undefined;
2013
+ }
2014
+
2015
+ for (const property in attributes) {
2016
+ if (
2017
+ attributes.hasOwnProperty(property) &&
2018
+ defined(attributes[property]) &&
2019
+ defined(attributes[property].values)
2020
+ ) {
2021
+ const attribute = attributes[property];
2022
+ attribute.values = ComponentDatatype.createTypedArray(
2023
+ attribute.componentDatatype,
2024
+ attribute.values
2025
+ );
2026
+ }
2027
+ }
2028
+
2029
+ const numberOfVertices = Geometry.computeNumberOfVertices(geometry);
2030
+ geometry.indices = IndexDatatype.createTypedArray(
2031
+ numberOfVertices,
2032
+ geometry.indices
2033
+ );
2034
+
2035
+ if (computeBoundingSphere) {
2036
+ geometry.boundingSphere = BoundingSphere.fromVertices(
2037
+ attributes.position.values
2038
+ );
2039
+ }
2040
+
2041
+ return geometry;
2042
+ }
2043
+
2044
+ function copyGeometryForSplit(geometry) {
2045
+ const attributes = geometry.attributes;
2046
+ const copiedAttributes = {};
2047
+
2048
+ for (const property in attributes) {
2049
+ if (
2050
+ attributes.hasOwnProperty(property) &&
2051
+ defined(attributes[property]) &&
2052
+ defined(attributes[property].values)
2053
+ ) {
2054
+ const attribute = attributes[property];
2055
+ copiedAttributes[property] = new GeometryAttribute({
2056
+ componentDatatype: attribute.componentDatatype,
2057
+ componentsPerAttribute: attribute.componentsPerAttribute,
2058
+ normalize: attribute.normalize,
2059
+ values: [],
2060
+ });
2061
+ }
2062
+ }
2063
+
2064
+ return new Geometry({
2065
+ attributes: copiedAttributes,
2066
+ indices: [],
2067
+ primitiveType: geometry.primitiveType,
2068
+ });
2069
+ }
2070
+
2071
+ function updateInstanceAfterSplit(instance, westGeometry, eastGeometry) {
2072
+ const computeBoundingSphere = defined(instance.geometry.boundingSphere);
2073
+
2074
+ westGeometry = updateGeometryAfterSplit(westGeometry, computeBoundingSphere);
2075
+ eastGeometry = updateGeometryAfterSplit(eastGeometry, computeBoundingSphere);
2076
+
2077
+ if (defined(eastGeometry) && !defined(westGeometry)) {
2078
+ instance.geometry = eastGeometry;
2079
+ } else if (!defined(eastGeometry) && defined(westGeometry)) {
2080
+ instance.geometry = westGeometry;
2081
+ } else {
2082
+ instance.westHemisphereGeometry = westGeometry;
2083
+ instance.eastHemisphereGeometry = eastGeometry;
2084
+ instance.geometry = undefined;
2085
+ }
2086
+ }
2087
+
2088
+ function generateBarycentricInterpolateFunction(
2089
+ CartesianType,
2090
+ numberOfComponents
2091
+ ) {
2092
+ const v0Scratch = new CartesianType();
2093
+ const v1Scratch = new CartesianType();
2094
+ const v2Scratch = new CartesianType();
2095
+
2096
+ return function (
2097
+ i0,
2098
+ i1,
2099
+ i2,
2100
+ coords,
2101
+ sourceValues,
2102
+ currentValues,
2103
+ insertedIndex,
2104
+ normalize
2105
+ ) {
2106
+ const v0 = CartesianType.fromArray(
2107
+ sourceValues,
2108
+ i0 * numberOfComponents,
2109
+ v0Scratch
2110
+ );
2111
+ const v1 = CartesianType.fromArray(
2112
+ sourceValues,
2113
+ i1 * numberOfComponents,
2114
+ v1Scratch
2115
+ );
2116
+ const v2 = CartesianType.fromArray(
2117
+ sourceValues,
2118
+ i2 * numberOfComponents,
2119
+ v2Scratch
2120
+ );
2121
+
2122
+ CartesianType.multiplyByScalar(v0, coords.x, v0);
2123
+ CartesianType.multiplyByScalar(v1, coords.y, v1);
2124
+ CartesianType.multiplyByScalar(v2, coords.z, v2);
2125
+
2126
+ const value = CartesianType.add(v0, v1, v0);
2127
+ CartesianType.add(value, v2, value);
2128
+
2129
+ if (normalize) {
2130
+ CartesianType.normalize(value, value);
2131
+ }
2132
+
2133
+ CartesianType.pack(
2134
+ value,
2135
+ currentValues,
2136
+ insertedIndex * numberOfComponents
2137
+ );
2138
+ };
2139
+ }
2140
+
2141
+ const interpolateAndPackCartesian4 = generateBarycentricInterpolateFunction(
2142
+ Cartesian4,
2143
+ 4
2144
+ );
2145
+ const interpolateAndPackCartesian3 = generateBarycentricInterpolateFunction(
2146
+ Cartesian3,
2147
+ 3
2148
+ );
2149
+ const interpolateAndPackCartesian2 = generateBarycentricInterpolateFunction(
2150
+ Cartesian2,
2151
+ 2
2152
+ );
2153
+ const interpolateAndPackBoolean = function (
2154
+ i0,
2155
+ i1,
2156
+ i2,
2157
+ coords,
2158
+ sourceValues,
2159
+ currentValues,
2160
+ insertedIndex
2161
+ ) {
2162
+ const v1 = sourceValues[i0] * coords.x;
2163
+ const v2 = sourceValues[i1] * coords.y;
2164
+ const v3 = sourceValues[i2] * coords.z;
2165
+ currentValues[insertedIndex] = v1 + v2 + v3 > CesiumMath.EPSILON6 ? 1 : 0;
2166
+ };
2167
+
2168
+ const p0Scratch = new Cartesian3();
2169
+ const p1Scratch = new Cartesian3();
2170
+ const p2Scratch = new Cartesian3();
2171
+ const barycentricScratch = new Cartesian3();
2172
+
2173
+ function computeTriangleAttributes(
2174
+ i0,
2175
+ i1,
2176
+ i2,
2177
+ point,
2178
+ positions,
2179
+ normals,
2180
+ tangents,
2181
+ bitangents,
2182
+ texCoords,
2183
+ extrudeDirections,
2184
+ applyOffset,
2185
+ currentAttributes,
2186
+ customAttributeNames,
2187
+ customAttributesLength,
2188
+ allAttributes,
2189
+ insertedIndex
2190
+ ) {
2191
+ if (
2192
+ !defined(normals) &&
2193
+ !defined(tangents) &&
2194
+ !defined(bitangents) &&
2195
+ !defined(texCoords) &&
2196
+ !defined(extrudeDirections) &&
2197
+ customAttributesLength === 0
2198
+ ) {
2199
+ return;
2200
+ }
2201
+
2202
+ const p0 = Cartesian3.fromArray(positions, i0 * 3, p0Scratch);
2203
+ const p1 = Cartesian3.fromArray(positions, i1 * 3, p1Scratch);
2204
+ const p2 = Cartesian3.fromArray(positions, i2 * 3, p2Scratch);
2205
+ const coords = barycentricCoordinates(point, p0, p1, p2, barycentricScratch);
2206
+ if (!defined(coords)) {
2207
+ return;
2208
+ }
2209
+
2210
+ if (defined(normals)) {
2211
+ interpolateAndPackCartesian3(
2212
+ i0,
2213
+ i1,
2214
+ i2,
2215
+ coords,
2216
+ normals,
2217
+ currentAttributes.normal.values,
2218
+ insertedIndex,
2219
+ true
2220
+ );
2221
+ }
2222
+
2223
+ if (defined(extrudeDirections)) {
2224
+ const d0 = Cartesian3.fromArray(extrudeDirections, i0 * 3, p0Scratch);
2225
+ const d1 = Cartesian3.fromArray(extrudeDirections, i1 * 3, p1Scratch);
2226
+ const d2 = Cartesian3.fromArray(extrudeDirections, i2 * 3, p2Scratch);
2227
+
2228
+ Cartesian3.multiplyByScalar(d0, coords.x, d0);
2229
+ Cartesian3.multiplyByScalar(d1, coords.y, d1);
2230
+ Cartesian3.multiplyByScalar(d2, coords.z, d2);
2231
+
2232
+ let direction;
2233
+ if (
2234
+ !Cartesian3.equals(d0, Cartesian3.ZERO) ||
2235
+ !Cartesian3.equals(d1, Cartesian3.ZERO) ||
2236
+ !Cartesian3.equals(d2, Cartesian3.ZERO)
2237
+ ) {
2238
+ direction = Cartesian3.add(d0, d1, d0);
2239
+ Cartesian3.add(direction, d2, direction);
2240
+ Cartesian3.normalize(direction, direction);
2241
+ } else {
2242
+ direction = p0Scratch;
2243
+ direction.x = 0;
2244
+ direction.y = 0;
2245
+ direction.z = 0;
2246
+ }
2247
+ Cartesian3.pack(
2248
+ direction,
2249
+ currentAttributes.extrudeDirection.values,
2250
+ insertedIndex * 3
2251
+ );
2252
+ }
2253
+
2254
+ if (defined(applyOffset)) {
2255
+ interpolateAndPackBoolean(
2256
+ i0,
2257
+ i1,
2258
+ i2,
2259
+ coords,
2260
+ applyOffset,
2261
+ currentAttributes.applyOffset.values,
2262
+ insertedIndex
2263
+ );
2264
+ }
2265
+
2266
+ if (defined(tangents)) {
2267
+ interpolateAndPackCartesian3(
2268
+ i0,
2269
+ i1,
2270
+ i2,
2271
+ coords,
2272
+ tangents,
2273
+ currentAttributes.tangent.values,
2274
+ insertedIndex,
2275
+ true
2276
+ );
2277
+ }
2278
+
2279
+ if (defined(bitangents)) {
2280
+ interpolateAndPackCartesian3(
2281
+ i0,
2282
+ i1,
2283
+ i2,
2284
+ coords,
2285
+ bitangents,
2286
+ currentAttributes.bitangent.values,
2287
+ insertedIndex,
2288
+ true
2289
+ );
2290
+ }
2291
+
2292
+ if (defined(texCoords)) {
2293
+ interpolateAndPackCartesian2(
2294
+ i0,
2295
+ i1,
2296
+ i2,
2297
+ coords,
2298
+ texCoords,
2299
+ currentAttributes.st.values,
2300
+ insertedIndex
2301
+ );
2302
+ }
2303
+
2304
+ if (customAttributesLength > 0) {
2305
+ for (let i = 0; i < customAttributesLength; i++) {
2306
+ const attributeName = customAttributeNames[i];
2307
+ genericInterpolate(
2308
+ i0,
2309
+ i1,
2310
+ i2,
2311
+ coords,
2312
+ insertedIndex,
2313
+ allAttributes[attributeName],
2314
+ currentAttributes[attributeName]
2315
+ );
2316
+ }
2317
+ }
2318
+ }
2319
+
2320
+ function genericInterpolate(
2321
+ i0,
2322
+ i1,
2323
+ i2,
2324
+ coords,
2325
+ insertedIndex,
2326
+ sourceAttribute,
2327
+ currentAttribute
2328
+ ) {
2329
+ const componentsPerAttribute = sourceAttribute.componentsPerAttribute;
2330
+ const sourceValues = sourceAttribute.values;
2331
+ const currentValues = currentAttribute.values;
2332
+ switch (componentsPerAttribute) {
2333
+ case 4:
2334
+ interpolateAndPackCartesian4(
2335
+ i0,
2336
+ i1,
2337
+ i2,
2338
+ coords,
2339
+ sourceValues,
2340
+ currentValues,
2341
+ insertedIndex,
2342
+ false
2343
+ );
2344
+ break;
2345
+ case 3:
2346
+ interpolateAndPackCartesian3(
2347
+ i0,
2348
+ i1,
2349
+ i2,
2350
+ coords,
2351
+ sourceValues,
2352
+ currentValues,
2353
+ insertedIndex,
2354
+ false
2355
+ );
2356
+ break;
2357
+ case 2:
2358
+ interpolateAndPackCartesian2(
2359
+ i0,
2360
+ i1,
2361
+ i2,
2362
+ coords,
2363
+ sourceValues,
2364
+ currentValues,
2365
+ insertedIndex,
2366
+ false
2367
+ );
2368
+ break;
2369
+ default:
2370
+ currentValues[insertedIndex] =
2371
+ sourceValues[i0] * coords.x +
2372
+ sourceValues[i1] * coords.y +
2373
+ sourceValues[i2] * coords.z;
2374
+ }
2375
+ }
2376
+
2377
+ function insertSplitPoint(
2378
+ currentAttributes,
2379
+ currentIndices,
2380
+ currentIndexMap,
2381
+ indices,
2382
+ currentIndex,
2383
+ point
2384
+ ) {
2385
+ const insertIndex = currentAttributes.position.values.length / 3;
2386
+
2387
+ if (currentIndex !== -1) {
2388
+ const prevIndex = indices[currentIndex];
2389
+ const newIndex = currentIndexMap[prevIndex];
2390
+
2391
+ if (newIndex === -1) {
2392
+ currentIndexMap[prevIndex] = insertIndex;
2393
+ currentAttributes.position.values.push(point.x, point.y, point.z);
2394
+ currentIndices.push(insertIndex);
2395
+ return insertIndex;
2396
+ }
2397
+
2398
+ currentIndices.push(newIndex);
2399
+ return newIndex;
2400
+ }
2401
+
2402
+ currentAttributes.position.values.push(point.x, point.y, point.z);
2403
+ currentIndices.push(insertIndex);
2404
+ return insertIndex;
2405
+ }
2406
+
2407
+ const NAMED_ATTRIBUTES = {
2408
+ position: true,
2409
+ normal: true,
2410
+ bitangent: true,
2411
+ tangent: true,
2412
+ st: true,
2413
+ extrudeDirection: true,
2414
+ applyOffset: true,
2415
+ };
2416
+ function splitLongitudeTriangles(instance) {
2417
+ const geometry = instance.geometry;
2418
+ const attributes = geometry.attributes;
2419
+ const positions = attributes.position.values;
2420
+ const normals = defined(attributes.normal)
2421
+ ? attributes.normal.values
2422
+ : undefined;
2423
+ const bitangents = defined(attributes.bitangent)
2424
+ ? attributes.bitangent.values
2425
+ : undefined;
2426
+ const tangents = defined(attributes.tangent)
2427
+ ? attributes.tangent.values
2428
+ : undefined;
2429
+ const texCoords = defined(attributes.st) ? attributes.st.values : undefined;
2430
+ const extrudeDirections = defined(attributes.extrudeDirection)
2431
+ ? attributes.extrudeDirection.values
2432
+ : undefined;
2433
+ const applyOffset = defined(attributes.applyOffset)
2434
+ ? attributes.applyOffset.values
2435
+ : undefined;
2436
+ const indices = geometry.indices;
2437
+
2438
+ const customAttributeNames = [];
2439
+ for (const attributeName in attributes) {
2440
+ if (
2441
+ attributes.hasOwnProperty(attributeName) &&
2442
+ !NAMED_ATTRIBUTES[attributeName] &&
2443
+ defined(attributes[attributeName])
2444
+ ) {
2445
+ customAttributeNames.push(attributeName);
2446
+ }
2447
+ }
2448
+ const customAttributesLength = customAttributeNames.length;
2449
+
2450
+ const eastGeometry = copyGeometryForSplit(geometry);
2451
+ const westGeometry = copyGeometryForSplit(geometry);
2452
+
2453
+ let currentAttributes;
2454
+ let currentIndices;
2455
+ let currentIndexMap;
2456
+ let insertedIndex;
2457
+ let i;
2458
+
2459
+ const westGeometryIndexMap = [];
2460
+ westGeometryIndexMap.length = positions.length / 3;
2461
+
2462
+ const eastGeometryIndexMap = [];
2463
+ eastGeometryIndexMap.length = positions.length / 3;
2464
+
2465
+ for (i = 0; i < westGeometryIndexMap.length; ++i) {
2466
+ westGeometryIndexMap[i] = -1;
2467
+ eastGeometryIndexMap[i] = -1;
2468
+ }
2469
+
2470
+ const len = indices.length;
2471
+ for (i = 0; i < len; i += 3) {
2472
+ const i0 = indices[i];
2473
+ const i1 = indices[i + 1];
2474
+ const i2 = indices[i + 2];
2475
+
2476
+ let p0 = Cartesian3.fromArray(positions, i0 * 3);
2477
+ let p1 = Cartesian3.fromArray(positions, i1 * 3);
2478
+ let p2 = Cartesian3.fromArray(positions, i2 * 3);
2479
+
2480
+ const result = splitTriangle(p0, p1, p2);
2481
+ if (defined(result) && result.positions.length > 3) {
2482
+ const resultPositions = result.positions;
2483
+ const resultIndices = result.indices;
2484
+ const resultLength = resultIndices.length;
2485
+
2486
+ for (let j = 0; j < resultLength; ++j) {
2487
+ const resultIndex = resultIndices[j];
2488
+ const point = resultPositions[resultIndex];
2489
+
2490
+ if (point.y < 0.0) {
2491
+ currentAttributes = westGeometry.attributes;
2492
+ currentIndices = westGeometry.indices;
2493
+ currentIndexMap = westGeometryIndexMap;
2494
+ } else {
2495
+ currentAttributes = eastGeometry.attributes;
2496
+ currentIndices = eastGeometry.indices;
2497
+ currentIndexMap = eastGeometryIndexMap;
2498
+ }
2499
+
2500
+ insertedIndex = insertSplitPoint(
2501
+ currentAttributes,
2502
+ currentIndices,
2503
+ currentIndexMap,
2504
+ indices,
2505
+ resultIndex < 3 ? i + resultIndex : -1,
2506
+ point
2507
+ );
2508
+ computeTriangleAttributes(
2509
+ i0,
2510
+ i1,
2511
+ i2,
2512
+ point,
2513
+ positions,
2514
+ normals,
2515
+ tangents,
2516
+ bitangents,
2517
+ texCoords,
2518
+ extrudeDirections,
2519
+ applyOffset,
2520
+ currentAttributes,
2521
+ customAttributeNames,
2522
+ customAttributesLength,
2523
+ attributes,
2524
+ insertedIndex
2525
+ );
2526
+ }
2527
+ } else {
2528
+ if (defined(result)) {
2529
+ p0 = result.positions[0];
2530
+ p1 = result.positions[1];
2531
+ p2 = result.positions[2];
2532
+ }
2533
+
2534
+ if (p0.y < 0.0) {
2535
+ currentAttributes = westGeometry.attributes;
2536
+ currentIndices = westGeometry.indices;
2537
+ currentIndexMap = westGeometryIndexMap;
2538
+ } else {
2539
+ currentAttributes = eastGeometry.attributes;
2540
+ currentIndices = eastGeometry.indices;
2541
+ currentIndexMap = eastGeometryIndexMap;
2542
+ }
2543
+
2544
+ insertedIndex = insertSplitPoint(
2545
+ currentAttributes,
2546
+ currentIndices,
2547
+ currentIndexMap,
2548
+ indices,
2549
+ i,
2550
+ p0
2551
+ );
2552
+ computeTriangleAttributes(
2553
+ i0,
2554
+ i1,
2555
+ i2,
2556
+ p0,
2557
+ positions,
2558
+ normals,
2559
+ tangents,
2560
+ bitangents,
2561
+ texCoords,
2562
+ extrudeDirections,
2563
+ applyOffset,
2564
+ currentAttributes,
2565
+ customAttributeNames,
2566
+ customAttributesLength,
2567
+ attributes,
2568
+ insertedIndex
2569
+ );
2570
+
2571
+ insertedIndex = insertSplitPoint(
2572
+ currentAttributes,
2573
+ currentIndices,
2574
+ currentIndexMap,
2575
+ indices,
2576
+ i + 1,
2577
+ p1
2578
+ );
2579
+ computeTriangleAttributes(
2580
+ i0,
2581
+ i1,
2582
+ i2,
2583
+ p1,
2584
+ positions,
2585
+ normals,
2586
+ tangents,
2587
+ bitangents,
2588
+ texCoords,
2589
+ extrudeDirections,
2590
+ applyOffset,
2591
+ currentAttributes,
2592
+ customAttributeNames,
2593
+ customAttributesLength,
2594
+ attributes,
2595
+ insertedIndex
2596
+ );
2597
+
2598
+ insertedIndex = insertSplitPoint(
2599
+ currentAttributes,
2600
+ currentIndices,
2601
+ currentIndexMap,
2602
+ indices,
2603
+ i + 2,
2604
+ p2
2605
+ );
2606
+ computeTriangleAttributes(
2607
+ i0,
2608
+ i1,
2609
+ i2,
2610
+ p2,
2611
+ positions,
2612
+ normals,
2613
+ tangents,
2614
+ bitangents,
2615
+ texCoords,
2616
+ extrudeDirections,
2617
+ applyOffset,
2618
+ currentAttributes,
2619
+ customAttributeNames,
2620
+ customAttributesLength,
2621
+ attributes,
2622
+ insertedIndex
2623
+ );
2624
+ }
2625
+ }
2626
+
2627
+ updateInstanceAfterSplit(instance, westGeometry, eastGeometry);
2628
+ }
2629
+
2630
+ const xzPlane = Plane.fromPointNormal(Cartesian3.ZERO, Cartesian3.UNIT_Y);
2631
+
2632
+ const offsetScratch = new Cartesian3();
2633
+ const offsetPointScratch = new Cartesian3();
2634
+
2635
+ function computeLineAttributes(
2636
+ i0,
2637
+ i1,
2638
+ point,
2639
+ positions,
2640
+ insertIndex,
2641
+ currentAttributes,
2642
+ applyOffset
2643
+ ) {
2644
+ if (!defined(applyOffset)) {
2645
+ return;
2646
+ }
2647
+
2648
+ const p0 = Cartesian3.fromArray(positions, i0 * 3, p0Scratch);
2649
+ if (Cartesian3.equalsEpsilon(p0, point, CesiumMath.EPSILON10)) {
2650
+ currentAttributes.applyOffset.values[insertIndex] = applyOffset[i0];
2651
+ } else {
2652
+ currentAttributes.applyOffset.values[insertIndex] = applyOffset[i1];
2653
+ }
2654
+ }
2655
+
2656
+ function splitLongitudeLines(instance) {
2657
+ const geometry = instance.geometry;
2658
+ const attributes = geometry.attributes;
2659
+ const positions = attributes.position.values;
2660
+ const applyOffset = defined(attributes.applyOffset)
2661
+ ? attributes.applyOffset.values
2662
+ : undefined;
2663
+ const indices = geometry.indices;
2664
+
2665
+ const eastGeometry = copyGeometryForSplit(geometry);
2666
+ const westGeometry = copyGeometryForSplit(geometry);
2667
+
2668
+ let i;
2669
+ const length = indices.length;
2670
+
2671
+ const westGeometryIndexMap = [];
2672
+ westGeometryIndexMap.length = positions.length / 3;
2673
+
2674
+ const eastGeometryIndexMap = [];
2675
+ eastGeometryIndexMap.length = positions.length / 3;
2676
+
2677
+ for (i = 0; i < westGeometryIndexMap.length; ++i) {
2678
+ westGeometryIndexMap[i] = -1;
2679
+ eastGeometryIndexMap[i] = -1;
2680
+ }
2681
+
2682
+ for (i = 0; i < length; i += 2) {
2683
+ const i0 = indices[i];
2684
+ const i1 = indices[i + 1];
2685
+
2686
+ const p0 = Cartesian3.fromArray(positions, i0 * 3, p0Scratch);
2687
+ const p1 = Cartesian3.fromArray(positions, i1 * 3, p1Scratch);
2688
+ let insertIndex;
2689
+
2690
+ if (Math.abs(p0.y) < CesiumMath.EPSILON6) {
2691
+ if (p0.y < 0.0) {
2692
+ p0.y = -CesiumMath.EPSILON6;
2693
+ } else {
2694
+ p0.y = CesiumMath.EPSILON6;
2695
+ }
2696
+ }
2697
+
2698
+ if (Math.abs(p1.y) < CesiumMath.EPSILON6) {
2699
+ if (p1.y < 0.0) {
2700
+ p1.y = -CesiumMath.EPSILON6;
2701
+ } else {
2702
+ p1.y = CesiumMath.EPSILON6;
2703
+ }
2704
+ }
2705
+
2706
+ let p0Attributes = eastGeometry.attributes;
2707
+ let p0Indices = eastGeometry.indices;
2708
+ let p0IndexMap = eastGeometryIndexMap;
2709
+ let p1Attributes = westGeometry.attributes;
2710
+ let p1Indices = westGeometry.indices;
2711
+ let p1IndexMap = westGeometryIndexMap;
2712
+
2713
+ const intersection = IntersectionTests.lineSegmentPlane(
2714
+ p0,
2715
+ p1,
2716
+ xzPlane,
2717
+ p2Scratch
2718
+ );
2719
+ if (defined(intersection)) {
2720
+ // move point on the xz-plane slightly away from the plane
2721
+ const offset = Cartesian3.multiplyByScalar(
2722
+ Cartesian3.UNIT_Y,
2723
+ 5.0 * CesiumMath.EPSILON9,
2724
+ offsetScratch
2725
+ );
2726
+ if (p0.y < 0.0) {
2727
+ Cartesian3.negate(offset, offset);
2728
+
2729
+ p0Attributes = westGeometry.attributes;
2730
+ p0Indices = westGeometry.indices;
2731
+ p0IndexMap = westGeometryIndexMap;
2732
+ p1Attributes = eastGeometry.attributes;
2733
+ p1Indices = eastGeometry.indices;
2734
+ p1IndexMap = eastGeometryIndexMap;
2735
+ }
2736
+
2737
+ const offsetPoint = Cartesian3.add(
2738
+ intersection,
2739
+ offset,
2740
+ offsetPointScratch
2741
+ );
2742
+
2743
+ insertIndex = insertSplitPoint(
2744
+ p0Attributes,
2745
+ p0Indices,
2746
+ p0IndexMap,
2747
+ indices,
2748
+ i,
2749
+ p0
2750
+ );
2751
+ computeLineAttributes(
2752
+ i0,
2753
+ i1,
2754
+ p0,
2755
+ positions,
2756
+ insertIndex,
2757
+ p0Attributes,
2758
+ applyOffset
2759
+ );
2760
+
2761
+ insertIndex = insertSplitPoint(
2762
+ p0Attributes,
2763
+ p0Indices,
2764
+ p0IndexMap,
2765
+ indices,
2766
+ -1,
2767
+ offsetPoint
2768
+ );
2769
+ computeLineAttributes(
2770
+ i0,
2771
+ i1,
2772
+ offsetPoint,
2773
+ positions,
2774
+ insertIndex,
2775
+ p0Attributes,
2776
+ applyOffset
2777
+ );
2778
+
2779
+ Cartesian3.negate(offset, offset);
2780
+ Cartesian3.add(intersection, offset, offsetPoint);
2781
+ insertIndex = insertSplitPoint(
2782
+ p1Attributes,
2783
+ p1Indices,
2784
+ p1IndexMap,
2785
+ indices,
2786
+ -1,
2787
+ offsetPoint
2788
+ );
2789
+ computeLineAttributes(
2790
+ i0,
2791
+ i1,
2792
+ offsetPoint,
2793
+ positions,
2794
+ insertIndex,
2795
+ p1Attributes,
2796
+ applyOffset
2797
+ );
2798
+
2799
+ insertIndex = insertSplitPoint(
2800
+ p1Attributes,
2801
+ p1Indices,
2802
+ p1IndexMap,
2803
+ indices,
2804
+ i + 1,
2805
+ p1
2806
+ );
2807
+ computeLineAttributes(
2808
+ i0,
2809
+ i1,
2810
+ p1,
2811
+ positions,
2812
+ insertIndex,
2813
+ p1Attributes,
2814
+ applyOffset
2815
+ );
2816
+ } else {
2817
+ let currentAttributes;
2818
+ let currentIndices;
2819
+ let currentIndexMap;
2820
+
2821
+ if (p0.y < 0.0) {
2822
+ currentAttributes = westGeometry.attributes;
2823
+ currentIndices = westGeometry.indices;
2824
+ currentIndexMap = westGeometryIndexMap;
2825
+ } else {
2826
+ currentAttributes = eastGeometry.attributes;
2827
+ currentIndices = eastGeometry.indices;
2828
+ currentIndexMap = eastGeometryIndexMap;
2829
+ }
2830
+
2831
+ insertIndex = insertSplitPoint(
2832
+ currentAttributes,
2833
+ currentIndices,
2834
+ currentIndexMap,
2835
+ indices,
2836
+ i,
2837
+ p0
2838
+ );
2839
+ computeLineAttributes(
2840
+ i0,
2841
+ i1,
2842
+ p0,
2843
+ positions,
2844
+ insertIndex,
2845
+ currentAttributes,
2846
+ applyOffset
2847
+ );
2848
+
2849
+ insertIndex = insertSplitPoint(
2850
+ currentAttributes,
2851
+ currentIndices,
2852
+ currentIndexMap,
2853
+ indices,
2854
+ i + 1,
2855
+ p1
2856
+ );
2857
+ computeLineAttributes(
2858
+ i0,
2859
+ i1,
2860
+ p1,
2861
+ positions,
2862
+ insertIndex,
2863
+ currentAttributes,
2864
+ applyOffset
2865
+ );
2866
+ }
2867
+ }
2868
+
2869
+ updateInstanceAfterSplit(instance, westGeometry, eastGeometry);
2870
+ }
2871
+
2872
+ const cartesian2Scratch0 = new Cartesian2();
2873
+ const cartesian2Scratch1 = new Cartesian2();
2874
+
2875
+ const cartesian3Scratch0 = new Cartesian3();
2876
+ const cartesian3Scratch2 = new Cartesian3();
2877
+ const cartesian3Scratch3 = new Cartesian3();
2878
+ const cartesian3Scratch4 = new Cartesian3();
2879
+ const cartesian3Scratch5 = new Cartesian3();
2880
+ const cartesian3Scratch6 = new Cartesian3();
2881
+
2882
+ const cartesian4Scratch0 = new Cartesian4();
2883
+
2884
+ function updateAdjacencyAfterSplit(geometry) {
2885
+ const attributes = geometry.attributes;
2886
+ const positions = attributes.position.values;
2887
+ const prevPositions = attributes.prevPosition.values;
2888
+ const nextPositions = attributes.nextPosition.values;
2889
+
2890
+ const length = positions.length;
2891
+ for (let j = 0; j < length; j += 3) {
2892
+ const position = Cartesian3.unpack(positions, j, cartesian3Scratch0);
2893
+ if (position.x > 0.0) {
2894
+ continue;
2895
+ }
2896
+
2897
+ const prevPosition = Cartesian3.unpack(
2898
+ prevPositions,
2899
+ j,
2900
+ cartesian3Scratch2
2901
+ );
2902
+ if (
2903
+ (position.y < 0.0 && prevPosition.y > 0.0) ||
2904
+ (position.y > 0.0 && prevPosition.y < 0.0)
2905
+ ) {
2906
+ if (j - 3 > 0) {
2907
+ prevPositions[j] = positions[j - 3];
2908
+ prevPositions[j + 1] = positions[j - 2];
2909
+ prevPositions[j + 2] = positions[j - 1];
2910
+ } else {
2911
+ Cartesian3.pack(position, prevPositions, j);
2912
+ }
2913
+ }
2914
+
2915
+ const nextPosition = Cartesian3.unpack(
2916
+ nextPositions,
2917
+ j,
2918
+ cartesian3Scratch3
2919
+ );
2920
+ if (
2921
+ (position.y < 0.0 && nextPosition.y > 0.0) ||
2922
+ (position.y > 0.0 && nextPosition.y < 0.0)
2923
+ ) {
2924
+ if (j + 3 < length) {
2925
+ nextPositions[j] = positions[j + 3];
2926
+ nextPositions[j + 1] = positions[j + 4];
2927
+ nextPositions[j + 2] = positions[j + 5];
2928
+ } else {
2929
+ Cartesian3.pack(position, nextPositions, j);
2930
+ }
2931
+ }
2932
+ }
2933
+ }
2934
+
2935
+ const offsetScalar = 5.0 * CesiumMath.EPSILON9;
2936
+ const coplanarOffset = CesiumMath.EPSILON6;
2937
+
2938
+ function splitLongitudePolyline(instance) {
2939
+ const geometry = instance.geometry;
2940
+ const attributes = geometry.attributes;
2941
+ const positions = attributes.position.values;
2942
+ const prevPositions = attributes.prevPosition.values;
2943
+ const nextPositions = attributes.nextPosition.values;
2944
+ const expandAndWidths = attributes.expandAndWidth.values;
2945
+
2946
+ const texCoords = defined(attributes.st) ? attributes.st.values : undefined;
2947
+ const colors = defined(attributes.color)
2948
+ ? attributes.color.values
2949
+ : undefined;
2950
+
2951
+ const eastGeometry = copyGeometryForSplit(geometry);
2952
+ const westGeometry = copyGeometryForSplit(geometry);
2953
+
2954
+ let i;
2955
+ let j;
2956
+ let index;
2957
+
2958
+ let intersectionFound = false;
2959
+
2960
+ const length = positions.length / 3;
2961
+ for (i = 0; i < length; i += 4) {
2962
+ const i0 = i;
2963
+ const i2 = i + 2;
2964
+
2965
+ const p0 = Cartesian3.fromArray(positions, i0 * 3, cartesian3Scratch0);
2966
+ const p2 = Cartesian3.fromArray(positions, i2 * 3, cartesian3Scratch2);
2967
+
2968
+ // Offset points that are close to the 180 longitude and change the previous/next point
2969
+ // to be the same offset point so it can be projected to 2D. There is special handling in the
2970
+ // shader for when position == prevPosition || position == nextPosition.
2971
+ if (Math.abs(p0.y) < coplanarOffset) {
2972
+ p0.y = coplanarOffset * (p2.y < 0.0 ? -1.0 : 1.0);
2973
+ positions[i * 3 + 1] = p0.y;
2974
+ positions[(i + 1) * 3 + 1] = p0.y;
2975
+
2976
+ for (j = i0 * 3; j < i0 * 3 + 4 * 3; j += 3) {
2977
+ prevPositions[j] = positions[i * 3];
2978
+ prevPositions[j + 1] = positions[i * 3 + 1];
2979
+ prevPositions[j + 2] = positions[i * 3 + 2];
2980
+ }
2981
+ }
2982
+
2983
+ // Do the same but for when the line crosses 180 longitude in the opposite direction.
2984
+ if (Math.abs(p2.y) < coplanarOffset) {
2985
+ p2.y = coplanarOffset * (p0.y < 0.0 ? -1.0 : 1.0);
2986
+ positions[(i + 2) * 3 + 1] = p2.y;
2987
+ positions[(i + 3) * 3 + 1] = p2.y;
2988
+
2989
+ for (j = i0 * 3; j < i0 * 3 + 4 * 3; j += 3) {
2990
+ nextPositions[j] = positions[(i + 2) * 3];
2991
+ nextPositions[j + 1] = positions[(i + 2) * 3 + 1];
2992
+ nextPositions[j + 2] = positions[(i + 2) * 3 + 2];
2993
+ }
2994
+ }
2995
+
2996
+ let p0Attributes = eastGeometry.attributes;
2997
+ let p0Indices = eastGeometry.indices;
2998
+ let p2Attributes = westGeometry.attributes;
2999
+ let p2Indices = westGeometry.indices;
3000
+
3001
+ const intersection = IntersectionTests.lineSegmentPlane(
3002
+ p0,
3003
+ p2,
3004
+ xzPlane,
3005
+ cartesian3Scratch4
3006
+ );
3007
+ if (defined(intersection)) {
3008
+ intersectionFound = true;
3009
+
3010
+ // move point on the xz-plane slightly away from the plane
3011
+ const offset = Cartesian3.multiplyByScalar(
3012
+ Cartesian3.UNIT_Y,
3013
+ offsetScalar,
3014
+ cartesian3Scratch5
3015
+ );
3016
+ if (p0.y < 0.0) {
3017
+ Cartesian3.negate(offset, offset);
3018
+ p0Attributes = westGeometry.attributes;
3019
+ p0Indices = westGeometry.indices;
3020
+ p2Attributes = eastGeometry.attributes;
3021
+ p2Indices = eastGeometry.indices;
3022
+ }
3023
+
3024
+ const offsetPoint = Cartesian3.add(
3025
+ intersection,
3026
+ offset,
3027
+ cartesian3Scratch6
3028
+ );
3029
+ p0Attributes.position.values.push(p0.x, p0.y, p0.z, p0.x, p0.y, p0.z);
3030
+ p0Attributes.position.values.push(
3031
+ offsetPoint.x,
3032
+ offsetPoint.y,
3033
+ offsetPoint.z
3034
+ );
3035
+ p0Attributes.position.values.push(
3036
+ offsetPoint.x,
3037
+ offsetPoint.y,
3038
+ offsetPoint.z
3039
+ );
3040
+
3041
+ p0Attributes.prevPosition.values.push(
3042
+ prevPositions[i0 * 3],
3043
+ prevPositions[i0 * 3 + 1],
3044
+ prevPositions[i0 * 3 + 2]
3045
+ );
3046
+ p0Attributes.prevPosition.values.push(
3047
+ prevPositions[i0 * 3 + 3],
3048
+ prevPositions[i0 * 3 + 4],
3049
+ prevPositions[i0 * 3 + 5]
3050
+ );
3051
+ p0Attributes.prevPosition.values.push(p0.x, p0.y, p0.z, p0.x, p0.y, p0.z);
3052
+
3053
+ p0Attributes.nextPosition.values.push(
3054
+ offsetPoint.x,
3055
+ offsetPoint.y,
3056
+ offsetPoint.z
3057
+ );
3058
+ p0Attributes.nextPosition.values.push(
3059
+ offsetPoint.x,
3060
+ offsetPoint.y,
3061
+ offsetPoint.z
3062
+ );
3063
+ p0Attributes.nextPosition.values.push(
3064
+ offsetPoint.x,
3065
+ offsetPoint.y,
3066
+ offsetPoint.z
3067
+ );
3068
+ p0Attributes.nextPosition.values.push(
3069
+ offsetPoint.x,
3070
+ offsetPoint.y,
3071
+ offsetPoint.z
3072
+ );
3073
+
3074
+ Cartesian3.negate(offset, offset);
3075
+ Cartesian3.add(intersection, offset, offsetPoint);
3076
+ p2Attributes.position.values.push(
3077
+ offsetPoint.x,
3078
+ offsetPoint.y,
3079
+ offsetPoint.z
3080
+ );
3081
+ p2Attributes.position.values.push(
3082
+ offsetPoint.x,
3083
+ offsetPoint.y,
3084
+ offsetPoint.z
3085
+ );
3086
+ p2Attributes.position.values.push(p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
3087
+
3088
+ p2Attributes.prevPosition.values.push(
3089
+ offsetPoint.x,
3090
+ offsetPoint.y,
3091
+ offsetPoint.z
3092
+ );
3093
+ p2Attributes.prevPosition.values.push(
3094
+ offsetPoint.x,
3095
+ offsetPoint.y,
3096
+ offsetPoint.z
3097
+ );
3098
+ p2Attributes.prevPosition.values.push(
3099
+ offsetPoint.x,
3100
+ offsetPoint.y,
3101
+ offsetPoint.z
3102
+ );
3103
+ p2Attributes.prevPosition.values.push(
3104
+ offsetPoint.x,
3105
+ offsetPoint.y,
3106
+ offsetPoint.z
3107
+ );
3108
+
3109
+ p2Attributes.nextPosition.values.push(p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
3110
+ p2Attributes.nextPosition.values.push(
3111
+ nextPositions[i2 * 3],
3112
+ nextPositions[i2 * 3 + 1],
3113
+ nextPositions[i2 * 3 + 2]
3114
+ );
3115
+ p2Attributes.nextPosition.values.push(
3116
+ nextPositions[i2 * 3 + 3],
3117
+ nextPositions[i2 * 3 + 4],
3118
+ nextPositions[i2 * 3 + 5]
3119
+ );
3120
+
3121
+ const ew0 = Cartesian2.fromArray(
3122
+ expandAndWidths,
3123
+ i0 * 2,
3124
+ cartesian2Scratch0
3125
+ );
3126
+ const width = Math.abs(ew0.y);
3127
+
3128
+ p0Attributes.expandAndWidth.values.push(-1, width, 1, width);
3129
+ p0Attributes.expandAndWidth.values.push(-1, -width, 1, -width);
3130
+ p2Attributes.expandAndWidth.values.push(-1, width, 1, width);
3131
+ p2Attributes.expandAndWidth.values.push(-1, -width, 1, -width);
3132
+
3133
+ let t = Cartesian3.magnitudeSquared(
3134
+ Cartesian3.subtract(intersection, p0, cartesian3Scratch3)
3135
+ );
3136
+ t /= Cartesian3.magnitudeSquared(
3137
+ Cartesian3.subtract(p2, p0, cartesian3Scratch3)
3138
+ );
3139
+
3140
+ if (defined(colors)) {
3141
+ const c0 = Cartesian4.fromArray(colors, i0 * 4, cartesian4Scratch0);
3142
+ const c2 = Cartesian4.fromArray(colors, i2 * 4, cartesian4Scratch0);
3143
+
3144
+ const r = CesiumMath.lerp(c0.x, c2.x, t);
3145
+ const g = CesiumMath.lerp(c0.y, c2.y, t);
3146
+ const b = CesiumMath.lerp(c0.z, c2.z, t);
3147
+ const a = CesiumMath.lerp(c0.w, c2.w, t);
3148
+
3149
+ for (j = i0 * 4; j < i0 * 4 + 2 * 4; ++j) {
3150
+ p0Attributes.color.values.push(colors[j]);
3151
+ }
3152
+ p0Attributes.color.values.push(r, g, b, a);
3153
+ p0Attributes.color.values.push(r, g, b, a);
3154
+ p2Attributes.color.values.push(r, g, b, a);
3155
+ p2Attributes.color.values.push(r, g, b, a);
3156
+ for (j = i2 * 4; j < i2 * 4 + 2 * 4; ++j) {
3157
+ p2Attributes.color.values.push(colors[j]);
3158
+ }
3159
+ }
3160
+
3161
+ if (defined(texCoords)) {
3162
+ const s0 = Cartesian2.fromArray(texCoords, i0 * 2, cartesian2Scratch0);
3163
+ const s3 = Cartesian2.fromArray(
3164
+ texCoords,
3165
+ (i + 3) * 2,
3166
+ cartesian2Scratch1
3167
+ );
3168
+
3169
+ const sx = CesiumMath.lerp(s0.x, s3.x, t);
3170
+
3171
+ for (j = i0 * 2; j < i0 * 2 + 2 * 2; ++j) {
3172
+ p0Attributes.st.values.push(texCoords[j]);
3173
+ }
3174
+ p0Attributes.st.values.push(sx, s0.y);
3175
+ p0Attributes.st.values.push(sx, s3.y);
3176
+ p2Attributes.st.values.push(sx, s0.y);
3177
+ p2Attributes.st.values.push(sx, s3.y);
3178
+ for (j = i2 * 2; j < i2 * 2 + 2 * 2; ++j) {
3179
+ p2Attributes.st.values.push(texCoords[j]);
3180
+ }
3181
+ }
3182
+
3183
+ index = p0Attributes.position.values.length / 3 - 4;
3184
+ p0Indices.push(index, index + 2, index + 1);
3185
+ p0Indices.push(index + 1, index + 2, index + 3);
3186
+
3187
+ index = p2Attributes.position.values.length / 3 - 4;
3188
+ p2Indices.push(index, index + 2, index + 1);
3189
+ p2Indices.push(index + 1, index + 2, index + 3);
3190
+ } else {
3191
+ let currentAttributes;
3192
+ let currentIndices;
3193
+
3194
+ if (p0.y < 0.0) {
3195
+ currentAttributes = westGeometry.attributes;
3196
+ currentIndices = westGeometry.indices;
3197
+ } else {
3198
+ currentAttributes = eastGeometry.attributes;
3199
+ currentIndices = eastGeometry.indices;
3200
+ }
3201
+
3202
+ currentAttributes.position.values.push(p0.x, p0.y, p0.z);
3203
+ currentAttributes.position.values.push(p0.x, p0.y, p0.z);
3204
+ currentAttributes.position.values.push(p2.x, p2.y, p2.z);
3205
+ currentAttributes.position.values.push(p2.x, p2.y, p2.z);
3206
+
3207
+ for (j = i * 3; j < i * 3 + 4 * 3; ++j) {
3208
+ currentAttributes.prevPosition.values.push(prevPositions[j]);
3209
+ currentAttributes.nextPosition.values.push(nextPositions[j]);
3210
+ }
3211
+
3212
+ for (j = i * 2; j < i * 2 + 4 * 2; ++j) {
3213
+ currentAttributes.expandAndWidth.values.push(expandAndWidths[j]);
3214
+ if (defined(texCoords)) {
3215
+ currentAttributes.st.values.push(texCoords[j]);
3216
+ }
3217
+ }
3218
+
3219
+ if (defined(colors)) {
3220
+ for (j = i * 4; j < i * 4 + 4 * 4; ++j) {
3221
+ currentAttributes.color.values.push(colors[j]);
3222
+ }
3223
+ }
3224
+
3225
+ index = currentAttributes.position.values.length / 3 - 4;
3226
+ currentIndices.push(index, index + 2, index + 1);
3227
+ currentIndices.push(index + 1, index + 2, index + 3);
3228
+ }
3229
+ }
3230
+
3231
+ if (intersectionFound) {
3232
+ updateAdjacencyAfterSplit(westGeometry);
3233
+ updateAdjacencyAfterSplit(eastGeometry);
3234
+ }
3235
+
3236
+ updateInstanceAfterSplit(instance, westGeometry, eastGeometry);
3237
+ }
3238
+
3239
+ /**
3240
+ * Splits the instances's geometry, by introducing new vertices and indices,that
3241
+ * intersect the International Date Line and Prime Meridian so that no primitives cross longitude
3242
+ * -180/180 degrees. This is not required for 3D drawing, but is required for
3243
+ * correcting drawing in 2D and Columbus view.
3244
+ *
3245
+ * @private
3246
+ *
3247
+ * @param {GeometryInstance} instance The instance to modify.
3248
+ * @returns {GeometryInstance} The modified <code>instance</code> argument, with it's geometry split at the International Date Line.
3249
+ *
3250
+ * @example
3251
+ * instance = Cesium.GeometryPipeline.splitLongitude(instance);
3252
+ */
3253
+ GeometryPipeline.splitLongitude = function (instance) {
3254
+ //>>includeStart('debug', pragmas.debug);
3255
+ if (!defined(instance)) {
3256
+ throw new DeveloperError("instance is required.");
3257
+ }
3258
+ //>>includeEnd('debug');
3259
+
3260
+ const geometry = instance.geometry;
3261
+ const boundingSphere = geometry.boundingSphere;
3262
+ if (defined(boundingSphere)) {
3263
+ const minX = boundingSphere.center.x - boundingSphere.radius;
3264
+ if (
3265
+ minX > 0 ||
3266
+ BoundingSphere.intersectPlane(boundingSphere, Plane.ORIGIN_ZX_PLANE) !==
3267
+ Intersect.INTERSECTING
3268
+ ) {
3269
+ return instance;
3270
+ }
3271
+ }
3272
+
3273
+ if (geometry.geometryType !== GeometryType.NONE) {
3274
+ switch (geometry.geometryType) {
3275
+ case GeometryType.POLYLINES:
3276
+ splitLongitudePolyline(instance);
3277
+ break;
3278
+ case GeometryType.TRIANGLES:
3279
+ splitLongitudeTriangles(instance);
3280
+ break;
3281
+ case GeometryType.LINES:
3282
+ splitLongitudeLines(instance);
3283
+ break;
3284
+ }
3285
+ } else {
3286
+ indexPrimitive(geometry);
3287
+ if (geometry.primitiveType === PrimitiveType.TRIANGLES) {
3288
+ splitLongitudeTriangles(instance);
3289
+ } else if (geometry.primitiveType === PrimitiveType.LINES) {
3290
+ splitLongitudeLines(instance);
3291
+ }
3292
+ }
3293
+
3294
+ return instance;
3295
+ };
3296
+ export default GeometryPipeline;