@cesium/engine 11.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (774) hide show
  1. package/Build/Workers/{chunk-HFPMX5L2.js → chunk-2B5H7KIN.js} +1 -1
  2. package/Build/Workers/{chunk-KKAEXHDY.js → chunk-2RHMHHJH.js} +2 -2
  3. package/Build/Workers/{chunk-AI3O7UN2.js → chunk-3OHDXGFC.js} +6 -6
  4. package/Build/Workers/{chunk-TTI2SUWJ.js → chunk-3OM5QZSI.js} +2 -2
  5. package/Build/Workers/{chunk-2EDC3QGH.js → chunk-3UJV3W4Y.js} +1 -1
  6. package/Build/Workers/{chunk-N3BIL6WA.js → chunk-3X2LXRHU.js} +13 -13
  7. package/Build/Workers/{chunk-FJT3ERV7.js → chunk-4ESQ3DN2.js} +9 -9
  8. package/Build/Workers/{chunk-HO2NTC7I.js → chunk-4IQPX22D.js} +6 -6
  9. package/Build/Workers/{chunk-L6FARMF6.js → chunk-4XPGN5Y7.js} +11 -11
  10. package/Build/Workers/{chunk-4NBRIKB3.js → chunk-56LALJCU.js} +2 -2
  11. package/Build/Workers/{chunk-HC7RYWPZ.js → chunk-5FSKL7US.js} +12 -12
  12. package/Build/Workers/{chunk-54VC7SCM.js → chunk-5YKJKOFE.js} +7 -7
  13. package/Build/Workers/{chunk-6ZREIBKS.js → chunk-62YGXNGC.js} +7 -7
  14. package/Build/Workers/{chunk-BH5ZEN4I.js → chunk-6DYMJ57Z.js} +10 -10
  15. package/Build/Workers/{chunk-AS7P4BHI.js → chunk-7DSVCRFD.js} +6 -6
  16. package/Build/Workers/{chunk-6FFGOENI.js → chunk-7OISMGQF.js} +46 -23
  17. package/Build/Workers/{chunk-BJ3WF5RW.js → chunk-AL7BHP36.js} +6 -6
  18. package/Build/Workers/{chunk-WQRXRDCZ.js → chunk-AOCENJVH.js} +11 -11
  19. package/Build/Workers/{chunk-2MKRG7L7.js → chunk-ARTM66DL.js} +5 -5
  20. package/Build/Workers/{chunk-VSFFJGTA.js → chunk-B4AZL6Q4.js} +5 -5
  21. package/Build/Workers/{chunk-5IY5BXCT.js → chunk-BQNTN4CC.js} +83 -79
  22. package/Build/Workers/{chunk-AUM45VEG.js → chunk-C4IAULHW.js} +15 -15
  23. package/Build/Workers/{chunk-6PJIHPQB.js → chunk-ES6Q5HWK.js} +13 -13
  24. package/Build/Workers/{chunk-DVAIU7A4.js → chunk-GKBICLGC.js} +19 -23
  25. package/Build/Workers/{chunk-IBG5FVXC.js → chunk-GMGUR5GM.js} +4 -4
  26. package/Build/Workers/{chunk-OOA6GXKD.js → chunk-GUW6BS72.js} +7 -7
  27. package/Build/Workers/{chunk-KFW4UNQH.js → chunk-GYHHNFW5.js} +15 -25
  28. package/Build/Workers/{chunk-GOHDOWU5.js → chunk-GZG526CC.js} +14 -14
  29. package/Build/Workers/{chunk-BZXF3GNX.js → chunk-HILBDZUP.js} +2 -2
  30. package/Build/Workers/{chunk-BBO6BGLC.js → chunk-HYUTWUXN.js} +13 -13
  31. package/Build/Workers/{chunk-HA6TZ3XT.js → chunk-IL6SMMDD.js} +4 -4
  32. package/Build/Workers/{chunk-T4MB73MC.js → chunk-IT6AWHFV.js} +2 -2
  33. package/Build/Workers/{chunk-SRZJCF7G.js → chunk-J64XIF5C.js} +10 -36
  34. package/Build/Workers/{chunk-BUOFSNFW.js → chunk-JGGZ3H4W.js} +1 -1
  35. package/Build/Workers/{chunk-SIZXFNJY.js → chunk-JRULXFCC.js} +5 -5
  36. package/Build/Workers/{chunk-QGT2GMOK.js → chunk-MSY2AAW2.js} +4 -4
  37. package/Build/Workers/{chunk-XLCZE6DD.js → chunk-QXBRZZQS.js} +10 -10
  38. package/Build/Workers/{chunk-JYUCC5NV.js → chunk-SXJ37VUC.js} +7 -7
  39. package/Build/Workers/{chunk-OC4MYPVW.js → chunk-T6FZFMTF.js} +2 -2
  40. package/Build/Workers/{chunk-OSCHEWSG.js → chunk-TQK4D4AR.js} +7 -7
  41. package/Build/Workers/{chunk-2RZYNSMR.js → chunk-US3L7FXC.js} +7 -9
  42. package/Build/Workers/{chunk-RFQYEYAL.js → chunk-VGT4ONMC.js} +18 -20
  43. package/Build/Workers/{chunk-VHJ5ESXF.js → chunk-VJVTWBXB.js} +1 -1
  44. package/Build/Workers/{chunk-RJF5ZP76.js → chunk-VQZNBD3T.js} +4 -4
  45. package/Build/Workers/{chunk-WXDGOYTT.js → chunk-VUCVRDLD.js} +7 -7
  46. package/Build/Workers/{chunk-DJXXI7UF.js → chunk-W2Q2F7JS.js} +5 -5
  47. package/Build/Workers/{chunk-HZPMWR4H.js → chunk-WQCX7U65.js} +7 -7
  48. package/Build/Workers/{chunk-HFMJM3SX.js → chunk-WW5RTJ72.js} +1 -1
  49. package/Build/Workers/{chunk-IXLNNST6.js → chunk-X67KKHI7.js} +4 -4
  50. package/Build/Workers/{chunk-4TK5YR6Q.js → chunk-X7VRF25X.js} +5 -5
  51. package/Build/Workers/{chunk-O5SSW3B3.js → chunk-YANQEHO5.js} +6 -6
  52. package/Build/Workers/{chunk-HBZSCVZC.js → chunk-ZZNBFQL5.js} +11 -11
  53. package/Build/Workers/combineGeometry.js +23 -25
  54. package/Build/Workers/createBoxGeometry.js +16 -16
  55. package/Build/Workers/createBoxOutlineGeometry.js +14 -14
  56. package/Build/Workers/createCircleGeometry.js +24 -24
  57. package/Build/Workers/createCircleOutlineGeometry.js +17 -17
  58. package/Build/Workers/createCoplanarPolygonGeometry.js +31 -31
  59. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
  60. package/Build/Workers/createCorridorGeometry.js +27 -27
  61. package/Build/Workers/createCorridorOutlineGeometry.js +26 -26
  62. package/Build/Workers/createCylinderGeometry.js +18 -18
  63. package/Build/Workers/createCylinderOutlineGeometry.js +16 -16
  64. package/Build/Workers/createEllipseGeometry.js +24 -24
  65. package/Build/Workers/createEllipseOutlineGeometry.js +17 -17
  66. package/Build/Workers/createEllipsoidGeometry.js +17 -17
  67. package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -16
  68. package/Build/Workers/createFrustumGeometry.js +16 -16
  69. package/Build/Workers/createFrustumOutlineGeometry.js +16 -16
  70. package/Build/Workers/createGeometry.js +25 -26
  71. package/Build/Workers/createGroundPolylineGeometry.js +20 -20
  72. package/Build/Workers/createPlaneGeometry.js +14 -14
  73. package/Build/Workers/createPlaneOutlineGeometry.js +13 -13
  74. package/Build/Workers/createPolygonGeometry.js +36 -40
  75. package/Build/Workers/createPolygonOutlineGeometry.js +40 -48
  76. package/Build/Workers/createPolylineGeometry.js +23 -23
  77. package/Build/Workers/createPolylineVolumeGeometry.js +32 -31
  78. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
  79. package/Build/Workers/createRectangleGeometry.js +28 -30
  80. package/Build/Workers/createRectangleOutlineGeometry.js +19 -19
  81. package/Build/Workers/createSimplePolylineGeometry.js +21 -21
  82. package/Build/Workers/createSphereGeometry.js +17 -17
  83. package/Build/Workers/createSphereOutlineGeometry.js +16 -16
  84. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  85. package/Build/Workers/createVectorTileClampedPolylines.js +13 -13
  86. package/Build/Workers/createVectorTileGeometries.js +22 -22
  87. package/Build/Workers/createVectorTilePoints.js +12 -12
  88. package/Build/Workers/createVectorTilePolygons.js +20 -20
  89. package/Build/Workers/createVectorTilePolylines.js +13 -13
  90. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -26
  91. package/Build/Workers/createVerticesFromHeightmap.js +22 -26
  92. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +42 -32
  93. package/Build/Workers/createWallGeometry.js +22 -22
  94. package/Build/Workers/createWallOutlineGeometry.js +21 -21
  95. package/Build/Workers/decodeDraco.js +11 -11
  96. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  97. package/Build/Workers/decodeI3S.js +10 -10
  98. package/Build/Workers/transcodeKTX2.js +7 -7
  99. package/Build/Workers/transferTypedArrayTest.js +1 -1
  100. package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -20
  101. package/Source/Core/ApproximateTerrainHeights.js +15 -15
  102. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +33 -35
  103. package/Source/Core/AttributeCompression.js +12 -12
  104. package/Source/Core/AxisAlignedBoundingBox.js +2 -2
  105. package/Source/Core/BingMapsGeocoderService.js +1 -1
  106. package/Source/Core/BoundingRectangle.js +3 -3
  107. package/Source/Core/BoundingSphere.js +45 -45
  108. package/Source/Core/BoxGeometry.js +6 -6
  109. package/Source/Core/BoxOutlineGeometry.js +3 -3
  110. package/Source/Core/Cartesian2.js +7 -7
  111. package/Source/Core/Cartesian3.js +20 -20
  112. package/Source/Core/Cartesian4.js +8 -8
  113. package/Source/Core/Cartographic.js +6 -6
  114. package/Source/Core/CatmullRomSpline.js +6 -6
  115. package/Source/Core/CesiumTerrainProvider.js +66 -68
  116. package/Source/Core/Check.d.ts +3 -3
  117. package/Source/Core/Check.js +11 -11
  118. package/Source/Core/CircleGeometry.js +6 -6
  119. package/Source/Core/CircleOutlineGeometry.js +4 -4
  120. package/Source/Core/Clock.js +4 -4
  121. package/Source/Core/Color.js +12 -9
  122. package/Source/Core/ColorGeometryInstanceAttribute.js +1 -1
  123. package/Source/Core/ComponentDatatype.js +4 -4
  124. package/Source/Core/CompressedTextureBuffer.js +2 -2
  125. package/Source/Core/ConstantSpline.js +1 -1
  126. package/Source/Core/CoplanarPolygonGeometry.js +44 -41
  127. package/Source/Core/CoplanarPolygonGeometryLibrary.js +5 -5
  128. package/Source/Core/CoplanarPolygonOutlineGeometry.js +6 -6
  129. package/Source/Core/CorridorGeometry.js +77 -77
  130. package/Source/Core/CorridorGeometryLibrary.js +48 -48
  131. package/Source/Core/CorridorOutlineGeometry.js +16 -16
  132. package/Source/Core/CullingVolume.js +4 -4
  133. package/Source/Core/CustomHeightmapTerrainProvider.js +13 -13
  134. package/Source/Core/CylinderGeometry.js +8 -8
  135. package/Source/Core/CylinderGeometryLibrary.js +1 -1
  136. package/Source/Core/CylinderOutlineGeometry.js +4 -4
  137. package/Source/Core/DeveloperError.js +1 -1
  138. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +20 -21
  139. package/Source/Core/DoubleEndedPriorityQueue.js +2 -2
  140. package/Source/Core/EarthOrientationParameters.js +21 -25
  141. package/Source/Core/EarthOrientationParametersSample.js +1 -1
  142. package/Source/Core/EllipseGeometry.js +55 -56
  143. package/Source/Core/EllipseGeometryLibrary.js +12 -12
  144. package/Source/Core/EllipseOutlineGeometry.js +19 -19
  145. package/Source/Core/Ellipsoid.js +25 -33
  146. package/Source/Core/EllipsoidGeodesic.js +18 -17
  147. package/Source/Core/EllipsoidGeometry.js +9 -8
  148. package/Source/Core/EllipsoidOutlineGeometry.js +4 -4
  149. package/Source/Core/EllipsoidRhumbLine.js +33 -32
  150. package/Source/Core/EllipsoidTangentPlane.js +16 -16
  151. package/Source/Core/EllipsoidTerrainProvider.js +11 -10
  152. package/Source/Core/EllipsoidalOccluder.js +110 -130
  153. package/Source/Core/FeatureDetection.js +4 -4
  154. package/Source/Core/FrustumGeometry.js +15 -15
  155. package/Source/Core/FrustumOutlineGeometry.js +4 -4
  156. package/Source/Core/GeographicTilingScheme.js +6 -6
  157. package/Source/Core/Geometry.js +15 -17
  158. package/Source/Core/GeometryAttribute.js +4 -9
  159. package/Source/Core/GeometryAttributes.js +6 -6
  160. package/Source/Core/GeometryInstance.js +3 -4
  161. package/Source/Core/GeometryInstanceAttribute.js +1 -6
  162. package/Source/Core/GeometryPipeline.js +133 -137
  163. package/Source/Core/GoogleEarthEnterpriseMetadata.js +19 -20
  164. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +25 -24
  165. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +17 -21
  166. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +2 -2
  167. package/Source/Core/GoogleMaps.js +1 -1
  168. package/Source/Core/GregorianDate.js +4 -4
  169. package/Source/Core/GroundPolylineGeometry.js +104 -104
  170. package/Source/Core/HeadingPitchRoll.js +7 -7
  171. package/Source/Core/HeightmapTerrainData.js +58 -54
  172. package/Source/Core/HeightmapTessellator.js +22 -23
  173. package/Source/Core/HermitePolynomialApproximation.js +8 -8
  174. package/Source/Core/HermiteSpline.js +11 -11
  175. package/Source/Core/HilbertOrder.js +1 -1
  176. package/Source/Core/Iau2006XysData.js +6 -6
  177. package/Source/Core/IauOrientationAxes.js +2 -2
  178. package/Source/Core/IauOrientationParameters.js +1 -1
  179. package/Source/Core/IndexDatatype.js +5 -5
  180. package/Source/Core/IntersectionTests.js +36 -78
  181. package/Source/Core/Intersections2D.js +3 -3
  182. package/Source/Core/Ion.js +1 -1
  183. package/Source/Core/IonGeocoderService.js +2 -2
  184. package/Source/Core/IonResource.js +5 -5
  185. package/Source/Core/Iso8601.js +3 -3
  186. package/Source/Core/JulianDate.js +23 -33
  187. package/Source/Core/KTX2Transcoder.js +2 -2
  188. package/Source/Core/LagrangePolynomialApproximation.js +1 -1
  189. package/Source/Core/LinearApproximation.js +4 -4
  190. package/Source/Core/LinearSpline.js +2 -2
  191. package/Source/Core/Math.js +6 -4
  192. package/Source/Core/Matrix2.js +3 -3
  193. package/Source/Core/Matrix3.js +16 -16
  194. package/Source/Core/Matrix4.js +31 -31
  195. package/Source/Core/MorphWeightSpline.js +2 -2
  196. package/Source/Core/NearFarScalar.js +1 -1
  197. package/Source/Core/Occluder.js +52 -56
  198. package/Source/Core/OpenCageGeocoderService.js +2 -2
  199. package/Source/Core/OrientedBoundingBox.js +52 -51
  200. package/Source/Core/OrthographicFrustum.js +11 -11
  201. package/Source/Core/OrthographicOffCenterFrustum.js +17 -17
  202. package/Source/Core/PeliasGeocoderService.js +1 -1
  203. package/Source/Core/PerspectiveFrustum.js +61 -55
  204. package/Source/Core/PerspectiveOffCenterFrustum.js +58 -59
  205. package/Source/Core/PinBuilder.js +1 -1
  206. package/Source/Core/PixelFormat.js +6 -6
  207. package/Source/Core/Plane.js +9 -9
  208. package/Source/Core/PlaneGeometry.js +1 -1
  209. package/Source/Core/PolygonGeometry.js +95 -94
  210. package/Source/Core/PolygonGeometryLibrary.js +49 -51
  211. package/Source/Core/PolygonOutlineGeometry.js +49 -51
  212. package/Source/Core/PolygonPipeline.js +31 -31
  213. package/Source/Core/PolylineGeometry.js +10 -10
  214. package/Source/Core/PolylinePipeline.js +25 -25
  215. package/Source/Core/PolylineVolumeGeometry.js +9 -9
  216. package/Source/Core/PolylineVolumeGeometryLibrary.js +53 -53
  217. package/Source/Core/PolylineVolumeOutlineGeometry.js +6 -6
  218. package/Source/Core/QuadraticRealPolynomial.js +1 -1
  219. package/Source/Core/QuantizedMeshTerrainData.js +28 -28
  220. package/Source/Core/QuarticRealPolynomial.js +1 -1
  221. package/Source/Core/Quaternion.js +19 -19
  222. package/Source/Core/QuaternionSpline.js +2 -2
  223. package/Source/Core/Rectangle.js +34 -13
  224. package/Source/Core/RectangleCollisionChecker.js +3 -3
  225. package/Source/Core/RectangleGeometry.js +55 -56
  226. package/Source/Core/RectangleGeometryLibrary.js +8 -8
  227. package/Source/Core/RectangleOutlineGeometry.js +20 -20
  228. package/Source/Core/RequestScheduler.js +6 -6
  229. package/Source/Core/Resource.js +24 -24
  230. package/Source/Core/S2Cell.js +16 -80
  231. package/Source/Core/ScreenSpaceEventHandler.js +54 -53
  232. package/Source/Core/Simon1994PlanetaryPositions.js +13 -13
  233. package/Source/Core/SimplePolylineGeometry.js +7 -7
  234. package/Source/Core/SphereGeometry.js +2 -2
  235. package/Source/Core/SphereOutlineGeometry.js +3 -3
  236. package/Source/Core/Spline.js +1 -1
  237. package/Source/Core/SteppedSpline.js +1 -1
  238. package/Source/Core/Stereographic.js +9 -9
  239. package/Source/Core/TaskProcessor.js +13 -13
  240. package/Source/Core/TerrainEncoding.js +33 -38
  241. package/Source/Core/TerrainMesh.js +1 -1
  242. package/Source/Core/TerrainProvider.js +12 -12
  243. package/Source/Core/TileAvailability.js +28 -28
  244. package/Source/Core/TileProviderError.js +5 -5
  245. package/Source/Core/TilingScheme.js +1 -1
  246. package/Source/Core/TimeInterval.js +4 -4
  247. package/Source/Core/TimeIntervalCollection.js +16 -15
  248. package/Source/Core/Tipsify.js +2 -2
  249. package/Source/Core/Transforms.js +52 -54
  250. package/Source/Core/TranslationRotationScale.js +1 -1
  251. package/Source/Core/TridiagonalSystemSolver.js +4 -4
  252. package/Source/Core/VRTheWorldTerrainProvider.js +28 -26
  253. package/Source/Core/VertexFormat.js +6 -6
  254. package/Source/Core/VerticalExaggeration.js +4 -4
  255. package/Source/Core/VideoSynchronizer.js +1 -1
  256. package/Source/Core/WallGeometry.js +18 -18
  257. package/Source/Core/WallGeometryLibrary.js +7 -7
  258. package/Source/Core/WallOutlineGeometry.js +8 -8
  259. package/Source/Core/WebMercatorProjection.js +5 -6
  260. package/Source/Core/WebMercatorTilingScheme.js +13 -13
  261. package/Source/Core/WireframeIndexGenerator.js +8 -8
  262. package/Source/Core/arrayRemoveDuplicates.js +1 -1
  263. package/Source/Core/buildModuleUrl.js +2 -2
  264. package/Source/Core/decodeGoogleEarthEnterpriseData.js +4 -4
  265. package/Source/Core/decodeVectorPolylinePositions.js +4 -4
  266. package/Source/Core/destroyObject.js +1 -1
  267. package/Source/Core/getJsonFromTypedArray.js +1 -1
  268. package/Source/Core/getMagic.js +1 -1
  269. package/Source/Core/loadImageFromTypedArray.js +2 -2
  270. package/Source/Core/loadKTX2.js +1 -1
  271. package/Source/Core/pointInsideTriangle.js +1 -1
  272. package/Source/Core/resizeImageToNextPowerOfTwo.js +1 -1
  273. package/Source/Core/sampleTerrain.js +7 -7
  274. package/Source/Core/sampleTerrainMostDetailed.js +7 -7
  275. package/Source/Core/scaleToGeodeticSurface.js +3 -3
  276. package/Source/Core/srgbToLinear.js +1 -1
  277. package/Source/Core/writeTextToCanvas.js +1 -1
  278. package/Source/DataSources/BillboardGraphics.js +13 -13
  279. package/Source/DataSources/BillboardVisualizer.js +24 -24
  280. package/Source/DataSources/BoxGeometryUpdater.js +33 -32
  281. package/Source/DataSources/BoxGraphics.js +3 -3
  282. package/Source/DataSources/CallbackPositionProperty.js +173 -0
  283. package/Source/DataSources/Cesium3DTilesetGraphics.js +1 -1
  284. package/Source/DataSources/Cesium3DTilesetVisualizer.js +6 -6
  285. package/Source/DataSources/CheckerboardMaterialProperty.js +2 -2
  286. package/Source/DataSources/ColorMaterialProperty.js +1 -1
  287. package/Source/DataSources/CompositeEntityCollection.js +14 -15
  288. package/Source/DataSources/CompositeMaterialProperty.js +5 -7
  289. package/Source/DataSources/CompositePositionProperty.js +4 -5
  290. package/Source/DataSources/CompositeProperty.js +2 -2
  291. package/Source/DataSources/ConstantPositionProperty.js +2 -2
  292. package/Source/DataSources/CorridorGeometryUpdater.js +61 -56
  293. package/Source/DataSources/CorridorGraphics.js +6 -6
  294. package/Source/DataSources/CylinderGeometryUpdater.js +42 -40
  295. package/Source/DataSources/CylinderGraphics.js +4 -4
  296. package/Source/DataSources/CzmlDataSource.js +365 -368
  297. package/Source/DataSources/DataSourceCollection.js +1 -1
  298. package/Source/DataSources/DataSourceDisplay.js +24 -24
  299. package/Source/DataSources/DynamicGeometryBatch.js +2 -2
  300. package/Source/DataSources/DynamicGeometryUpdater.js +14 -18
  301. package/Source/DataSources/EllipseGeometryUpdater.js +67 -63
  302. package/Source/DataSources/EllipseGraphics.js +7 -7
  303. package/Source/DataSources/EllipsoidGeometryUpdater.js +88 -86
  304. package/Source/DataSources/EllipsoidGraphics.js +5 -5
  305. package/Source/DataSources/Entity.js +13 -13
  306. package/Source/DataSources/EntityCluster.js +29 -27
  307. package/Source/DataSources/EntityCollection.js +7 -7
  308. package/Source/DataSources/EntityView.js +23 -23
  309. package/Source/DataSources/GeoJsonDataSource.js +25 -25
  310. package/Source/DataSources/GeometryUpdater.js +9 -10
  311. package/Source/DataSources/GeometryUpdaterSet.js +3 -3
  312. package/Source/DataSources/GeometryVisualizer.js +65 -71
  313. package/Source/DataSources/GpxDataSource.js +10 -10
  314. package/Source/DataSources/GridMaterialProperty.js +5 -5
  315. package/Source/DataSources/GroundGeometryUpdater.js +6 -6
  316. package/Source/DataSources/ImageMaterialProperty.js +2 -2
  317. package/Source/DataSources/KmlDataSource.js +212 -212
  318. package/Source/DataSources/LabelGraphics.js +14 -14
  319. package/Source/DataSources/LabelVisualizer.js +24 -24
  320. package/Source/DataSources/ModelGraphics.js +38 -17
  321. package/Source/DataSources/ModelVisualizer.js +41 -32
  322. package/Source/DataSources/NodeTransformationProperty.js +3 -3
  323. package/Source/DataSources/PathGraphics.js +2 -2
  324. package/Source/DataSources/PathVisualizer.js +99 -35
  325. package/Source/DataSources/PlaneGeometryUpdater.js +38 -37
  326. package/Source/DataSources/PlaneGraphics.js +2 -2
  327. package/Source/DataSources/PointGraphics.js +8 -8
  328. package/Source/DataSources/PointVisualizer.js +29 -29
  329. package/Source/DataSources/PolygonGeometryUpdater.js +68 -64
  330. package/Source/DataSources/PolygonGraphics.js +9 -9
  331. package/Source/DataSources/PolylineArrowMaterialProperty.js +1 -1
  332. package/Source/DataSources/PolylineDashMaterialProperty.js +4 -4
  333. package/Source/DataSources/PolylineGeometryUpdater.js +39 -44
  334. package/Source/DataSources/PolylineGlowMaterialProperty.js +3 -3
  335. package/Source/DataSources/PolylineGraphics.js +4 -4
  336. package/Source/DataSources/PolylineOutlineMaterialProperty.js +3 -3
  337. package/Source/DataSources/PolylineVisualizer.js +39 -43
  338. package/Source/DataSources/PolylineVolumeGeometryUpdater.js +70 -68
  339. package/Source/DataSources/PolylineVolumeGraphics.js +2 -2
  340. package/Source/DataSources/PositionProperty.js +4 -3
  341. package/Source/DataSources/PositionPropertyArray.js +3 -3
  342. package/Source/DataSources/Property.js +1 -1
  343. package/Source/DataSources/PropertyArray.js +1 -1
  344. package/Source/DataSources/PropertyBag.js +5 -5
  345. package/Source/DataSources/RectangleGeometryUpdater.js +68 -63
  346. package/Source/DataSources/RectangleGraphics.js +6 -6
  347. package/Source/DataSources/ReferenceProperty.js +6 -6
  348. package/Source/DataSources/Rotation.js +2 -2
  349. package/Source/DataSources/SampledPositionProperty.js +6 -6
  350. package/Source/DataSources/SampledProperty.js +16 -16
  351. package/Source/DataSources/ScaledPositionProperty.js +2 -2
  352. package/Source/DataSources/StaticGeometryColorBatch.js +41 -41
  353. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +40 -40
  354. package/Source/DataSources/StaticGroundGeometryColorBatch.js +26 -27
  355. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +46 -44
  356. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +44 -43
  357. package/Source/DataSources/StaticOutlineGeometryBatch.js +28 -29
  358. package/Source/DataSources/StripeMaterialProperty.js +2 -2
  359. package/Source/DataSources/TerrainOffsetProperty.js +11 -11
  360. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +28 -30
  361. package/Source/DataSources/TimeIntervalCollectionProperty.js +1 -1
  362. package/Source/DataSources/VelocityOrientationProperty.js +3 -3
  363. package/Source/DataSources/VelocityVectorProperty.js +4 -4
  364. package/Source/DataSources/WallGeometryUpdater.js +25 -25
  365. package/Source/DataSources/WallGraphics.js +4 -4
  366. package/Source/DataSources/createPropertyDescriptor.js +3 -3
  367. package/Source/DataSources/exportKml.js +90 -86
  368. package/Source/DataSources/getElement.js +1 -1
  369. package/Source/DataSources/heightReferenceOnEntityPropertyChanged.js +4 -4
  370. package/Source/Renderer/AutomaticUniforms.js +14 -1
  371. package/Source/Renderer/Buffer.js +18 -18
  372. package/Source/Renderer/ClearCommand.js +1 -1
  373. package/Source/Renderer/ComputeEngine.js +1 -1
  374. package/Source/Renderer/Context.js +40 -40
  375. package/Source/Renderer/CubeMap.js +109 -32
  376. package/Source/Renderer/CubeMapFace.js +109 -32
  377. package/Source/Renderer/DrawCommand.js +50 -5
  378. package/Source/Renderer/Framebuffer.js +48 -49
  379. package/Source/Renderer/FramebufferManager.js +40 -34
  380. package/Source/Renderer/MultisampleFramebuffer.js +35 -14
  381. package/Source/Renderer/RenderState.js +36 -36
  382. package/Source/Renderer/Renderbuffer.js +3 -3
  383. package/Source/Renderer/Sampler.js +2 -2
  384. package/Source/Renderer/ShaderBuilder.js +8 -8
  385. package/Source/Renderer/ShaderCache.js +11 -15
  386. package/Source/Renderer/ShaderFunction.js +1 -1
  387. package/Source/Renderer/ShaderProgram.js +15 -15
  388. package/Source/Renderer/ShaderSource.js +40 -40
  389. package/Source/Renderer/Texture.js +74 -63
  390. package/Source/Renderer/UniformState.js +78 -58
  391. package/Source/Renderer/VertexArray.js +20 -20
  392. package/Source/Renderer/VertexArrayFacade.js +15 -16
  393. package/Source/Renderer/createUniform.js +1 -1
  394. package/Source/Renderer/createUniformArray.js +4 -4
  395. package/Source/Renderer/demodernizeShader.js +5 -5
  396. package/Source/Renderer/loadCubeMap.js +1 -1
  397. package/Source/Scene/ArcGisMapServerImageryProvider.js +39 -45
  398. package/Source/Scene/ArcGisMapService.js +4 -7
  399. package/Source/Scene/Atmosphere.js +22 -0
  400. package/Source/Scene/AutoExposure.js +4 -5
  401. package/Source/Scene/Axis.js +6 -6
  402. package/Source/Scene/B3dmParser.js +9 -9
  403. package/Source/Scene/BatchTable.js +7 -7
  404. package/Source/Scene/BatchTableHierarchy.js +62 -59
  405. package/Source/Scene/BatchTexture.js +2 -2
  406. package/Source/Scene/Billboard.js +45 -43
  407. package/Source/Scene/BillboardCollection.js +81 -83
  408. package/Source/Scene/BingMapsImageryProvider.js +13 -13
  409. package/Source/Scene/BoundingVolumeSemantics.js +10 -10
  410. package/Source/Scene/BoxEmitter.js +1 -1
  411. package/Source/Scene/BufferLoader.js +1 -1
  412. package/Source/Scene/Camera.js +161 -164
  413. package/Source/Scene/CameraEventAggregator.js +18 -18
  414. package/Source/Scene/CameraFlightPath.js +25 -25
  415. package/Source/Scene/Cesium3DTile.js +89 -95
  416. package/Source/Scene/Cesium3DTileBatchTable.js +61 -61
  417. package/Source/Scene/Cesium3DTileContentFactory.js +7 -7
  418. package/Source/Scene/Cesium3DTileFeature.js +1 -1
  419. package/Source/Scene/Cesium3DTileFeatureTable.js +8 -8
  420. package/Source/Scene/Cesium3DTileOptimizations.js +1 -1
  421. package/Source/Scene/Cesium3DTilePointFeature.js +11 -11
  422. package/Source/Scene/Cesium3DTileStyle.js +26 -24
  423. package/Source/Scene/Cesium3DTilesVoxelProvider.js +14 -20
  424. package/Source/Scene/Cesium3DTileset.js +120 -83
  425. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +8 -16
  426. package/Source/Scene/Cesium3DTilesetCache.js +2 -2
  427. package/Source/Scene/Cesium3DTilesetHeatmap.js +5 -5
  428. package/Source/Scene/Cesium3DTilesetMetadata.js +2 -2
  429. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +2 -2
  430. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +8 -12
  431. package/Source/Scene/Cesium3DTilesetStatistics.js +1 -1
  432. package/Source/Scene/Cesium3DTilesetTraversal.js +8 -10
  433. package/Source/Scene/ClassificationPrimitive.js +70 -69
  434. package/Source/Scene/ClippingPlaneCollection.js +39 -41
  435. package/Source/Scene/ClippingPolygon.js +8 -8
  436. package/Source/Scene/ClippingPolygonCollection.js +62 -63
  437. package/Source/Scene/CloudCollection.js +3 -10
  438. package/Source/Scene/Composite3DTileContent.js +6 -6
  439. package/Source/Scene/ConditionsExpression.js +5 -5
  440. package/Source/Scene/ContentMetadata.js +4 -4
  441. package/Source/Scene/CreditDisplay.js +8 -8
  442. package/Source/Scene/CumulusCloud.js +4 -4
  443. package/Source/Scene/DebugAppearance.js +2 -2
  444. package/Source/Scene/DebugCameraPrimitive.js +2 -2
  445. package/Source/Scene/DebugInspector.js +3 -3
  446. package/Source/Scene/DebugModelMatrixPrimitive.js +4 -4
  447. package/Source/Scene/DepthPlane.js +7 -7
  448. package/Source/Scene/DerivedCommand.js +422 -238
  449. package/Source/Scene/DiscardMissingTileImagePolicy.js +1 -1
  450. package/Source/Scene/DracoLoader.js +3 -3
  451. package/Source/Scene/DynamicEnvironmentMapManager.js +852 -0
  452. package/Source/Scene/EllipsoidPrimitive.js +7 -7
  453. package/Source/Scene/EllipsoidSurfaceAppearance.js +3 -3
  454. package/Source/Scene/Empty3DTileContent.js +1 -1
  455. package/Source/Scene/Expression.js +91 -91
  456. package/Source/Scene/Fog.js +76 -116
  457. package/Source/Scene/FrameRateMonitor.js +22 -22
  458. package/Source/Scene/FrameState.js +36 -3
  459. package/Source/Scene/Geometry3DTileContent.js +20 -20
  460. package/Source/Scene/GetFeatureInfoFormat.js +15 -14
  461. package/Source/Scene/Globe.js +32 -27
  462. package/Source/Scene/GlobeDepth.js +95 -66
  463. package/Source/Scene/GlobeSurfaceShaderSet.js +12 -10
  464. package/Source/Scene/GlobeSurfaceTile.js +33 -33
  465. package/Source/Scene/GlobeSurfaceTileProvider.js +127 -124
  466. package/Source/Scene/GlobeTranslucency.js +4 -4
  467. package/Source/Scene/GlobeTranslucencyFramebuffer.js +9 -9
  468. package/Source/Scene/GlobeTranslucencyState.js +53 -55
  469. package/Source/Scene/GltfBufferViewLoader.js +2 -2
  470. package/Source/Scene/GltfIndexBufferLoader.js +5 -5
  471. package/Source/Scene/GltfJsonLoader.js +2 -2
  472. package/Source/Scene/GltfLoader.js +177 -100
  473. package/Source/Scene/GltfStructuralMetadataLoader.js +9 -8
  474. package/Source/Scene/GltfTextureLoader.js +5 -5
  475. package/Source/Scene/GltfVertexBufferLoader.js +12 -13
  476. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +9 -9
  477. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +9 -9
  478. package/Source/Scene/GridImageryProvider.js +2 -2
  479. package/Source/Scene/GroundPolylinePrimitive.js +38 -39
  480. package/Source/Scene/GroundPrimitive.js +47 -45
  481. package/Source/Scene/GroupMetadata.js +4 -4
  482. package/Source/Scene/I3SDataProvider.js +12 -12
  483. package/Source/Scene/I3SDecoder.js +7 -8
  484. package/Source/Scene/I3SField.js +8 -8
  485. package/Source/Scene/I3SGeometry.js +14 -14
  486. package/Source/Scene/I3SLayer.js +26 -20
  487. package/Source/Scene/I3SNode.js +17 -17
  488. package/Source/Scene/I3SSublayer.js +4 -4
  489. package/Source/Scene/I3SSymbology.js +8 -8
  490. package/Source/Scene/I3dmParser.js +9 -9
  491. package/Source/Scene/ImageBasedLighting.js +32 -87
  492. package/Source/Scene/Imagery.js +3 -3
  493. package/Source/Scene/ImageryLayer.js +64 -66
  494. package/Source/Scene/ImageryLayerCollection.js +13 -15
  495. package/Source/Scene/ImageryLayerFeatureInfo.js +19 -20
  496. package/Source/Scene/ImageryProvider.js +1 -1
  497. package/Source/Scene/Implicit3DTileContent.js +34 -37
  498. package/Source/Scene/ImplicitAvailabilityBitstream.js +2 -2
  499. package/Source/Scene/ImplicitMetadataView.js +2 -2
  500. package/Source/Scene/ImplicitSubtree.js +29 -30
  501. package/Source/Scene/ImplicitSubtreeCache.js +1 -1
  502. package/Source/Scene/ImplicitSubtreeMetadata.js +5 -5
  503. package/Source/Scene/ImplicitTileCoordinates.js +11 -11
  504. package/Source/Scene/ImplicitTileset.js +2 -2
  505. package/Source/Scene/InvertClassification.js +7 -7
  506. package/Source/Scene/IonImageryProvider.js +6 -6
  507. package/Source/Scene/JobScheduler.js +4 -4
  508. package/Source/Scene/Label.js +29 -29
  509. package/Source/Scene/LabelCollection.js +17 -15
  510. package/Source/Scene/MapboxImageryProvider.js +3 -3
  511. package/Source/Scene/MapboxStyleImageryProvider.js +4 -4
  512. package/Source/Scene/Material.js +26 -27
  513. package/Source/Scene/MaterialAppearance.js +4 -4
  514. package/Source/Scene/Megatexture.js +21 -24
  515. package/Source/Scene/MetadataClassProperty.js +11 -11
  516. package/Source/Scene/MetadataComponentType.js +1 -1
  517. package/Source/Scene/MetadataEntity.js +8 -8
  518. package/Source/Scene/MetadataEnum.js +1 -1
  519. package/Source/Scene/MetadataPicking.js +305 -0
  520. package/Source/Scene/MetadataSchemaLoader.js +1 -1
  521. package/Source/Scene/MetadataTable.js +2 -2
  522. package/Source/Scene/MetadataTableProperty.js +22 -22
  523. package/Source/Scene/Model/AlphaPipelineStage.js +2 -2
  524. package/Source/Scene/Model/AtmospherePipelineStage.js +13 -8
  525. package/Source/Scene/Model/B3dmLoader.js +8 -8
  526. package/Source/Scene/Model/BatchTexturePipelineStage.js +2 -2
  527. package/Source/Scene/Model/CPUStylingPipelineStage.js +4 -4
  528. package/Source/Scene/Model/ClassificationModelDrawCommand.js +8 -8
  529. package/Source/Scene/Model/ClassificationPipelineStage.js +5 -5
  530. package/Source/Scene/Model/CustomShader.js +9 -9
  531. package/Source/Scene/Model/CustomShaderPipelineStage.js +37 -38
  532. package/Source/Scene/Model/DequantizationPipelineStage.js +5 -5
  533. package/Source/Scene/Model/Extensions/Gpm/AnchorPointDirect.js +61 -0
  534. package/Source/Scene/Model/Extensions/Gpm/AnchorPointIndirect.js +77 -0
  535. package/Source/Scene/Model/Extensions/Gpm/CorrelationGroup.js +81 -0
  536. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +248 -0
  537. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLocal.js +179 -0
  538. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +548 -0
  539. package/Source/Scene/Model/Extensions/Gpm/MeshPrimitiveGpmLocal.js +28 -0
  540. package/Source/Scene/Model/Extensions/Gpm/PpeMetadata.js +79 -0
  541. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +75 -0
  542. package/Source/Scene/Model/Extensions/Gpm/PpeTexture.js +127 -0
  543. package/Source/Scene/Model/Extensions/Gpm/Spdcf.js +103 -0
  544. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +30 -0
  545. package/Source/Scene/Model/FeatureIdPipelineStage.js +40 -40
  546. package/Source/Scene/Model/GeoJsonLoader.js +17 -17
  547. package/Source/Scene/Model/GeometryPipelineStage.js +23 -24
  548. package/Source/Scene/Model/I3dmLoader.js +36 -36
  549. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +56 -34
  550. package/Source/Scene/Model/InstancingPipelineStage.js +86 -86
  551. package/Source/Scene/Model/LightingPipelineStage.js +4 -4
  552. package/Source/Scene/Model/MaterialPipelineStage.js +78 -93
  553. package/Source/Scene/Model/MetadataPickingPipelineStage.js +96 -0
  554. package/Source/Scene/Model/MetadataPipelineStage.js +39 -47
  555. package/Source/Scene/Model/Model.js +228 -75
  556. package/Source/Scene/Model/Model3DTileContent.js +37 -13
  557. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  558. package/Source/Scene/Model/ModelAnimationCollection.js +9 -9
  559. package/Source/Scene/Model/ModelArticulation.js +2 -2
  560. package/Source/Scene/Model/ModelArticulationStage.js +4 -4
  561. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +11 -11
  562. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +6 -6
  563. package/Source/Scene/Model/ModelColorPipelineStage.js +12 -13
  564. package/Source/Scene/Model/ModelDrawCommand.js +5 -5
  565. package/Source/Scene/Model/{buildDrawCommand.js → ModelDrawCommands.js} +85 -28
  566. package/Source/Scene/Model/ModelFeatureTable.js +5 -5
  567. package/Source/Scene/Model/ModelMatrixUpdateStage.js +24 -12
  568. package/Source/Scene/Model/ModelRenderResources.js +1 -1
  569. package/Source/Scene/Model/ModelRuntimeNode.js +15 -15
  570. package/Source/Scene/Model/ModelRuntimePrimitive.js +8 -5
  571. package/Source/Scene/Model/ModelSceneGraph.js +43 -43
  572. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +4 -4
  573. package/Source/Scene/Model/ModelSkin.js +4 -4
  574. package/Source/Scene/Model/ModelSplitterPipelineStage.js +8 -9
  575. package/Source/Scene/Model/ModelUtility.js +5 -5
  576. package/Source/Scene/Model/MorphTargetsPipelineStage.js +18 -18
  577. package/Source/Scene/Model/NodeRenderResources.js +1 -1
  578. package/Source/Scene/Model/NodeStatisticsPipelineStage.js +1 -1
  579. package/Source/Scene/Model/PickingPipelineStage.js +5 -5
  580. package/Source/Scene/Model/PntsLoader.js +7 -7
  581. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +22 -23
  582. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +6 -6
  583. package/Source/Scene/Model/PrimitiveOutlinePipelineStage.js +7 -7
  584. package/Source/Scene/Model/PrimitiveRenderResources.js +3 -3
  585. package/Source/Scene/Model/PrimitiveStatisticsPipelineStage.js +1 -1
  586. package/Source/Scene/Model/SceneMode2DPipelineStage.js +23 -23
  587. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +10 -14
  588. package/Source/Scene/Model/SkinningPipelineStage.js +5 -5
  589. package/Source/Scene/Model/StyleCommandsNeeded.js +1 -1
  590. package/Source/Scene/Model/TextureManager.js +2 -2
  591. package/Source/Scene/Model/TextureUniform.js +3 -3
  592. package/Source/Scene/Model/TilesetPipelineStage.js +2 -2
  593. package/Source/Scene/Model/VerticalExaggerationPipelineStage.js +4 -4
  594. package/Source/Scene/Model/WireframePipelineStage.js +7 -7
  595. package/Source/Scene/Model/pickModel.js +26 -26
  596. package/Source/Scene/ModelComponents.js +13 -4
  597. package/Source/Scene/Moon.js +6 -5
  598. package/Source/Scene/Multiple3DTileContent.js +15 -14
  599. package/Source/Scene/OIT.js +48 -97
  600. package/Source/Scene/OpenStreetMapImageryProvider.js +8 -7
  601. package/Source/Scene/OrderedGroundPrimitiveCollection.js +2 -2
  602. package/Source/Scene/Particle.js +3 -3
  603. package/Source/Scene/ParticleEmitter.js +1 -1
  604. package/Source/Scene/ParticleSystem.js +32 -32
  605. package/Source/Scene/PerInstanceColorAppearance.js +1 -1
  606. package/Source/Scene/PickDepth.js +16 -4
  607. package/Source/Scene/PickDepthFramebuffer.js +1 -1
  608. package/Source/Scene/PickFramebuffer.js +24 -12
  609. package/Source/Scene/PickedMetadataInfo.js +39 -0
  610. package/Source/Scene/Picking.js +270 -120
  611. package/Source/Scene/PntsParser.js +28 -28
  612. package/Source/Scene/PointCloud.js +39 -38
  613. package/Source/Scene/PointCloudEyeDomeLighting.js +6 -6
  614. package/Source/Scene/PointCloudShading.js +3 -3
  615. package/Source/Scene/PointPrimitive.js +31 -28
  616. package/Source/Scene/PointPrimitiveCollection.js +34 -33
  617. package/Source/Scene/Polyline.js +9 -9
  618. package/Source/Scene/PolylineCollection.js +55 -57
  619. package/Source/Scene/PolylineColorAppearance.js +3 -3
  620. package/Source/Scene/PolylineMaterialAppearance.js +3 -3
  621. package/Source/Scene/PostProcessStage.js +95 -115
  622. package/Source/Scene/PostProcessStageCollection.js +35 -41
  623. package/Source/Scene/PostProcessStageComposite.js +2 -2
  624. package/Source/Scene/PostProcessStageLibrary.js +5 -5
  625. package/Source/Scene/PostProcessStageTextureCache.js +10 -10
  626. package/Source/Scene/Primitive.js +93 -93
  627. package/Source/Scene/PrimitiveCollection.js +1 -1
  628. package/Source/Scene/PrimitiveLoadPlan.js +1 -1
  629. package/Source/Scene/PrimitivePipeline.js +30 -30
  630. package/Source/Scene/PropertyTable.js +5 -5
  631. package/Source/Scene/PropertyTextureProperty.js +36 -7
  632. package/Source/Scene/QuadtreePrimitive.js +56 -58
  633. package/Source/Scene/QuadtreeTile.js +4 -4
  634. package/Source/Scene/QuadtreeTileProvider.js +1 -1
  635. package/Source/Scene/ResourceCache.js +7 -7
  636. package/Source/Scene/ResourceCacheKey.js +15 -15
  637. package/Source/Scene/Scene.js +879 -657
  638. package/Source/Scene/SceneFramebuffer.js +2 -2
  639. package/Source/Scene/SceneTransforms.js +30 -30
  640. package/Source/Scene/SceneTransitioner.js +47 -47
  641. package/Source/Scene/ScreenSpaceCameraController.js +180 -154
  642. package/Source/Scene/SensorVolumePortionToDisplay.js +1 -1
  643. package/Source/Scene/ShadowMap.js +71 -72
  644. package/Source/Scene/ShadowMapShader.js +9 -9
  645. package/Source/Scene/ShadowVolumeAppearance.js +39 -39
  646. package/Source/Scene/SingleTileImageryProvider.js +3 -3
  647. package/Source/Scene/SkyAtmosphere.js +8 -8
  648. package/Source/Scene/SkyBox.js +7 -8
  649. package/Source/Scene/SpatialNode.js +13 -13
  650. package/Source/Scene/SphereEmitter.js +1 -1
  651. package/Source/Scene/StructuralMetadata.js +1 -1
  652. package/Source/Scene/StyleExpression.js +1 -1
  653. package/Source/Scene/Sun.js +11 -7
  654. package/Source/Scene/SunPostProcess.js +6 -6
  655. package/Source/Scene/TerrainFillMesh.js +157 -156
  656. package/Source/Scene/TextureAtlas.js +11 -11
  657. package/Source/Scene/TileBoundingRegion.js +31 -31
  658. package/Source/Scene/TileBoundingS2Cell.js +37 -40
  659. package/Source/Scene/TileBoundingSphere.js +2 -2
  660. package/Source/Scene/TileCoordinatesImageryProvider.js +3 -3
  661. package/Source/Scene/TileImagery.js +7 -11
  662. package/Source/Scene/TileMapServiceImageryProvider.js +26 -25
  663. package/Source/Scene/TileMetadata.js +4 -4
  664. package/Source/Scene/TileOrientedBoundingBox.js +6 -6
  665. package/Source/Scene/Tileset3DTileContent.js +1 -1
  666. package/Source/Scene/TilesetMetadata.js +4 -4
  667. package/Source/Scene/TimeDynamicImagery.js +3 -3
  668. package/Source/Scene/TimeDynamicPointCloud.js +9 -9
  669. package/Source/Scene/TranslucentTileClassification.js +48 -58
  670. package/Source/Scene/TweenCollection.js +9 -9
  671. package/Source/Scene/UrlTemplateImageryProvider.js +23 -23
  672. package/Source/Scene/Vector3DTileClampedPolylines.js +21 -21
  673. package/Source/Scene/Vector3DTileContent.js +38 -39
  674. package/Source/Scene/Vector3DTileGeometry.js +11 -8
  675. package/Source/Scene/Vector3DTilePoints.js +18 -22
  676. package/Source/Scene/Vector3DTilePolygons.js +6 -6
  677. package/Source/Scene/Vector3DTilePolylines.js +8 -8
  678. package/Source/Scene/Vector3DTilePrimitive.js +30 -31
  679. package/Source/Scene/View.js +111 -80
  680. package/Source/Scene/VoxelBoxShape.js +34 -34
  681. package/Source/Scene/VoxelCell.js +7 -7
  682. package/Source/Scene/VoxelContent.js +1 -1
  683. package/Source/Scene/VoxelCylinderShape.js +48 -48
  684. package/Source/Scene/VoxelEllipsoidShape.js +83 -97
  685. package/Source/Scene/VoxelPrimitive.js +80 -80
  686. package/Source/Scene/VoxelRenderResources.js +13 -13
  687. package/Source/Scene/VoxelTraversal.js +41 -41
  688. package/Source/Scene/WebMapServiceImageryProvider.js +12 -12
  689. package/Source/Scene/WebMapTileServiceImageryProvider.js +8 -8
  690. package/Source/Scene/buildVoxelDrawCommands.js +10 -14
  691. package/Source/Scene/computeFlyToLocationForRectangle.js +7 -5
  692. package/Source/Scene/createBillboardPointCallback.js +2 -2
  693. package/Source/Scene/createElevationBandMaterial.js +8 -8
  694. package/Source/Scene/createGooglePhotorealistic3DTileset.js +1 -1
  695. package/Source/Scene/createOsmBuildingsAsync.js +1 -1
  696. package/Source/Scene/createTangentSpaceDebugPrimitive.js +7 -7
  697. package/Source/Scene/findContentMetadata.js +2 -2
  698. package/Source/Scene/findTileMetadata.js +2 -2
  699. package/Source/Scene/getBinaryAccessor.js +1 -1
  700. package/Source/Scene/getClipAndStyleCode.js +1 -1
  701. package/Source/Scene/getClippingFunction.js +1 -1
  702. package/Source/Scene/getMetadataClassProperty.js +43 -0
  703. package/Source/Scene/parseBatchTable.js +21 -24
  704. package/Source/Scene/parseFeatureMetadataLegacy.js +3 -3
  705. package/Source/Scene/parseStructuralMetadata.js +3 -3
  706. package/Source/Scene/processVoxelProperties.js +28 -33
  707. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.glsl +44 -0
  708. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.js +44 -0
  709. package/Source/Shaders/Builtin/Functions/computeScattering.glsl +0 -1
  710. package/Source/Shaders/Builtin/Functions/computeScattering.js +0 -1
  711. package/Source/Shaders/Builtin/Functions/packDepth.glsl +2 -2
  712. package/Source/Shaders/Builtin/Functions/packDepth.js +2 -2
  713. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.glsl +3 -1
  714. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.js +3 -1
  715. package/Source/Shaders/Builtin/Functions/unpackDepth.glsl +3 -3
  716. package/Source/Shaders/Builtin/Functions/unpackDepth.js +3 -3
  717. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +1 -1
  718. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +1 -1
  719. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +2 -2
  720. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +2 -2
  721. package/Source/Shaders/ComputeIrradianceFS.glsl +103 -0
  722. package/Source/Shaders/ComputeIrradianceFS.js +105 -0
  723. package/Source/Shaders/ComputeRadianceMapFS.glsl +107 -0
  724. package/Source/Shaders/ComputeRadianceMapFS.js +109 -0
  725. package/Source/Shaders/ConvolveSpecularMapFS.glsl +70 -0
  726. package/Source/Shaders/ConvolveSpecularMapFS.js +72 -0
  727. package/Source/Shaders/ConvolveSpecularMapVS.glsl +24 -0
  728. package/Source/Shaders/ConvolveSpecularMapVS.js +26 -0
  729. package/Source/Shaders/DepthPlaneVS.glsl +1 -1
  730. package/Source/Shaders/DepthPlaneVS.js +1 -1
  731. package/Source/Shaders/GlobeFS.glsl +1 -2
  732. package/Source/Shaders/GlobeFS.js +1 -2
  733. package/Source/Shaders/Model/AtmosphereStageFS.glsl +1 -4
  734. package/Source/Shaders/Model/AtmosphereStageFS.js +1 -4
  735. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +2 -155
  736. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +3 -156
  737. package/Source/Shaders/Model/LightingStageFS.glsl +3 -22
  738. package/Source/Shaders/Model/LightingStageFS.js +3 -22
  739. package/Source/Shaders/Model/ModelFS.glsl +26 -0
  740. package/Source/Shaders/Model/ModelFS.js +26 -0
  741. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +59 -59
  742. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +60 -60
  743. package/Source/Shaders/SkyBoxVS.glsl +0 -1
  744. package/Source/Shaders/SkyBoxVS.js +0 -1
  745. package/Source/Widget/CesiumWidget.js +785 -9
  746. package/Source/Workers/combineGeometry.js +3 -4
  747. package/Source/Workers/createCircleGeometry.js +2 -2
  748. package/Source/Workers/createCircleOutlineGeometry.js +2 -2
  749. package/Source/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  750. package/Source/Workers/createCorridorOutlineGeometry.js +2 -2
  751. package/Source/Workers/createEllipsoidOutlineGeometry.js +1 -1
  752. package/Source/Workers/createGeometry.js +4 -5
  753. package/Source/Workers/createGroundPolylineGeometry.js +1 -1
  754. package/Source/Workers/createPolylineVolumeGeometry.js +2 -2
  755. package/Source/Workers/createPolylineVolumeOutlineGeometry.js +4 -4
  756. package/Source/Workers/createRectangleOutlineGeometry.js +1 -1
  757. package/Source/Workers/createSimplePolylineGeometry.js +2 -2
  758. package/Source/Workers/createTaskProcessorWorker.js +1 -1
  759. package/Source/Workers/createVectorTileClampedPolylines.js +30 -30
  760. package/Source/Workers/createVectorTileGeometries.js +18 -18
  761. package/Source/Workers/createVectorTilePoints.js +3 -3
  762. package/Source/Workers/createVectorTilePolygons.js +11 -11
  763. package/Source/Workers/createVectorTilePolylines.js +7 -7
  764. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +29 -30
  765. package/Source/Workers/createVerticesFromQuantizedTerrainMesh.js +60 -60
  766. package/Source/Workers/decodeDraco.js +23 -23
  767. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +4 -4
  768. package/Source/Workers/decodeI3S.js +53 -53
  769. package/Source/Workers/transcodeKTX2.js +9 -9
  770. package/Source/Workers/transferTypedArrayTest.js +1 -1
  771. package/Source/Workers/upsampleQuantizedTerrainMesh.js +37 -36
  772. package/index.d.ts +769 -47
  773. package/index.js +73 -51
  774. package/package.json +3 -3
@@ -0,0 +1,852 @@
1
+ import Cartesian2 from "../Core/Cartesian2.js";
2
+ import Cartesian3 from "../Core/Cartesian3.js";
3
+ import Cartesian4 from "../Core/Cartesian4.js";
4
+ import Color from "../Core/Color.js";
5
+ import defaultValue from "../Core/defaultValue.js";
6
+ import defined from "../Core/defined.js";
7
+ import destroyObject from "../Core/destroyObject.js";
8
+ import DeveloperError from "../Core/DeveloperError.js";
9
+ import JulianDate from "../Core/JulianDate.js";
10
+ import Matrix4 from "../Core/Matrix4.js";
11
+ import PixelFormat from "../Core/PixelFormat.js";
12
+ import SceneMode from "./SceneMode.js";
13
+ import Transforms from "../Core/Transforms.js";
14
+ import ComputeCommand from "../Renderer/ComputeCommand.js";
15
+ import CubeMap from "../Renderer/CubeMap.js";
16
+ import Framebuffer from "../Renderer/Framebuffer.js";
17
+ import Texture from "../Renderer/Texture.js";
18
+ import PixelDatatype from "../Renderer/PixelDatatype.js";
19
+ import Sampler from "../Renderer/Sampler.js";
20
+ import ShaderProgram from "../Renderer/ShaderProgram.js";
21
+ import ShaderSource from "../Renderer/ShaderSource.js";
22
+ import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
23
+ import Atmosphere from "./Atmosphere.js";
24
+ import DynamicAtmosphereLightingType from "./DynamicAtmosphereLightingType.js";
25
+ import AtmosphereCommon from "../Shaders/AtmosphereCommon.js";
26
+ import ComputeIrradianceFS from "../Shaders/ComputeIrradianceFS.js";
27
+ import ComputeRadianceMapFS from "../Shaders/ComputeRadianceMapFS.js";
28
+ import ConvolveSpecularMapFS from "../Shaders/ConvolveSpecularMapFS.js";
29
+ import ConvolveSpecularMapVS from "../Shaders/ConvolveSpecularMapVS.js";
30
+
31
+ /**
32
+ * @typedef {object} DynamicEnvironmentMapManager.ConstructorOptions
33
+ * Options for the DynamicEnvironmentMapManager constructor
34
+ * @property {boolean} [enabled=true] If true, the environment map and related properties will continue to update.
35
+ * @property {number} [mipmapLevels=10] The number of mipmap levels to generate for specular maps. More mipmap levels will produce a higher resolution specular reflection.
36
+ * @property {number} [maximumSecondsDifference=3600] The maximum amount of elapsed seconds before a new environment map is created.
37
+ * @property {number} [maximumPositionEpsilon=1000] The maximum difference in position before a new environment map is created, in meters. Small differences in position will not visibly affect results.
38
+ * @property {number} [atmosphereScatteringIntensity=2.0] The intensity of the scattered light emitted from the atmosphere. This should be adjusted relative to the value of {@link Scene.light} intensity.
39
+ * @property {number} [gamma=1.0] The gamma correction to apply to the range of light emitted from the environment. 1.0 uses the unmodified emitted light color.
40
+ * @property {number} [brightness=1.0] The brightness of light emitted from the environment. 1.0 uses the unmodified emitted environment color. Less than 1.0 makes the light darker while greater than 1.0 makes it brighter.
41
+ * @property {number} [saturation=1.0] The saturation of the light emitted from the environment. 1.0 uses the unmodified emitted environment color. Less than 1.0 reduces the saturation while greater than 1.0 increases it.
42
+ * @property {Color} [groundColor=DynamicEnvironmentMapManager.AVERAGE_EARTH_GROUND_COLOR] Solid color used to represent the ground.
43
+ * @property {number} [groundAlbedo=0.31] The percentage of light reflected from the ground. The average earth albedo is 0.31.
44
+ */
45
+
46
+ /**
47
+ * Generates an environment map at the given position based on scene's current lighting conditions. From this, it produces multiple levels of specular maps and spherical harmonic coefficients than can be used with {@link ImageBasedLighting} for models or tilesets.
48
+ * @alias DynamicEnvironmentMapManager
49
+ * @constructor
50
+ * @param {DynamicEnvironmentMapManager.ConstructorOptions} [options] An object describing initialization options.
51
+ *
52
+ * @example
53
+ * // Enable time-of-day environment mapping in a scene
54
+ * scene.atmosphere.dynamicLighting = Cesium.DynamicAtmosphereLightingType.SUNLIGHT;
55
+ *
56
+ * // Decrease the directional lighting contribution
57
+ * scene.light.intensity = 0.5
58
+ *
59
+ * // Increase the intensity of of the environment map lighting contribution
60
+ * const environmentMapManager = tileset.environmentMapManager;
61
+ * environmentMapManager.atmosphereScatteringIntensity = 3.0;
62
+ *
63
+ * @example
64
+ * // Change the ground color used for a model's environment map to a forest green
65
+ * const environmentMapManager = model.environmentMapManager;
66
+ * environmentMapManager.groundColor = Cesium.Color.fromCssColorString("#203b34");
67
+ */
68
+ function DynamicEnvironmentMapManager(options) {
69
+ this._position = undefined;
70
+
71
+ this._radianceMapDirty = false;
72
+ this._radianceCommandsDirty = false;
73
+ this._convolutionsCommandsDirty = false;
74
+ this._irradianceCommandDirty = false;
75
+ this._irradianceTextureDirty = false;
76
+ this._sphericalHarmonicCoefficientsDirty = false;
77
+
78
+ this._shouldRegenerateShaders = false;
79
+
80
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
81
+
82
+ const mipmapLevels = defaultValue(options.mipmapLevels, 10);
83
+ this._mipmapLevels = mipmapLevels;
84
+ this._radianceMapComputeCommands = new Array(6);
85
+ this._convolutionComputeCommands = new Array((mipmapLevels - 1) * 6);
86
+ this._irradianceComputeCommand = undefined;
87
+
88
+ this._radianceMapFS = undefined;
89
+ this._irradianceMapFS = undefined;
90
+ this._convolveSP = undefined;
91
+ this._va = undefined;
92
+
93
+ this._radianceMapTextures = new Array(6);
94
+ this._specularMapTextures = new Array((mipmapLevels - 1) * 6);
95
+ this._radianceCubeMap = undefined;
96
+ this._irradianceMapTexture = undefined;
97
+
98
+ this._sphericalHarmonicCoefficients = new Array(9);
99
+
100
+ this._lastTime = new JulianDate();
101
+ const width = Math.pow(2, mipmapLevels - 1);
102
+ this._textureDimensions = new Cartesian2(width, width);
103
+
104
+ this._radiiAndDynamicAtmosphereColor = new Cartesian3();
105
+ this._sceneEnvironmentMap = undefined;
106
+ this._backgroundColor = undefined;
107
+
108
+ // If this DynamicEnvironmentMapManager has an owner, only its owner should update or destroy it.
109
+ // This is because in a Cesium3DTileset multiple models may reference one tileset's DynamicEnvironmentMapManager.
110
+ this._owner = undefined;
111
+
112
+ /**
113
+ * If true, the environment map and related properties will continue to update.
114
+ * @type {boolean}
115
+ * @default true
116
+ */
117
+ this.enabled = defaultValue(options.enabled, true);
118
+
119
+ /**
120
+ * Disables updates. For internal use.
121
+ * @private
122
+ * @default true
123
+ */
124
+ this.shouldUpdate = true;
125
+
126
+ /**
127
+ * The maximum amount of elapsed seconds before a new environment map is created.
128
+ * @type {number}
129
+ * @default 3600
130
+ */
131
+ this.maximumSecondsDifference = defaultValue(
132
+ options.maximumSecondsDifference,
133
+ 60 * 60,
134
+ );
135
+
136
+ /**
137
+ * The maximum difference in position before a new environment map is created, in meters. Small differences in position will not visibly affect results.
138
+ * @type {number}
139
+ * @default 1000
140
+ */
141
+ this.maximumPositionEpsilon = defaultValue(
142
+ options.maximumPositionEpsilon,
143
+ 1000.0,
144
+ );
145
+
146
+ /**
147
+ * The intensity of the scattered light emitted from the atmosphere. This should be adjusted relative to the value of {@link Scene.light} intensity.
148
+ * @type {number}
149
+ * @default 2.0
150
+ * @see DirectionalLight.intensity
151
+ * @see SunLight.intensity
152
+ */
153
+ this.atmosphereScatteringIntensity = defaultValue(
154
+ options.atmosphereScatteringIntensity,
155
+ 2.0,
156
+ );
157
+
158
+ /**
159
+ * The gamma correction to apply to the range of light emitted from the environment. 1.0 uses the unmodified incoming light color.
160
+ * @type {number}
161
+ * @default 1.0
162
+ */
163
+ this.gamma = defaultValue(options.gamma, 1.0);
164
+
165
+ /**
166
+ * The brightness of light emitted from the environment. 1.0 uses the unmodified emitted environment color. Less than 1.0
167
+ * makes the light darker while greater than 1.0 makes it brighter.
168
+ * @type {number}
169
+ * @default 1.0
170
+ */
171
+ this.brightness = defaultValue(options.brightness, 1.0);
172
+
173
+ /**
174
+ * The saturation of the light emitted from the environment. 1.0 uses the unmodified emitted environment color. Less than 1.0 reduces the
175
+ * saturation while greater than 1.0 increases it.
176
+ * @type {number}
177
+ * @default 1.0
178
+ */
179
+ this.saturation = defaultValue(options.saturation, 1.0);
180
+
181
+ /**
182
+ * Solid color used to represent the ground.
183
+ * @type {Color}
184
+ * @default DynamicEnvironmentMapManager.AVERAGE_EARTH_GROUND_COLOR
185
+ */
186
+ this.groundColor = defaultValue(
187
+ options.groundColor,
188
+ DynamicEnvironmentMapManager.AVERAGE_EARTH_GROUND_COLOR,
189
+ );
190
+
191
+ /**
192
+ * The percentage of light reflected from the ground. The average earth albedo is 0.31.
193
+ * @type {number}
194
+ * @default 0.31
195
+ */
196
+ this.groundAlbedo = defaultValue(options.groundAlbedo, 0.31);
197
+ }
198
+
199
+ Object.defineProperties(DynamicEnvironmentMapManager.prototype, {
200
+ /**
201
+ * A reference to the DynamicEnvironmentMapManager's owner, if any.
202
+ * @memberof DynamicEnvironmentMapManager.prototype
203
+ * @type {object|undefined}
204
+ * @readonly
205
+ * @private
206
+ */
207
+ owner: {
208
+ get: function () {
209
+ return this._owner;
210
+ },
211
+ },
212
+
213
+ /**
214
+ * True if model shaders need to be regenerated to account for updates.
215
+ * @memberof DynamicEnvironmentMapManager.prototype
216
+ * @type {boolean}
217
+ * @readonly
218
+ * @private
219
+ */
220
+ shouldRegenerateShaders: {
221
+ get: function () {
222
+ return this._shouldRegenerateShaders;
223
+ },
224
+ },
225
+
226
+ /**
227
+ * The position around which the environment map is generated.
228
+ * @memberof DynamicEnvironmentMapManager.prototype
229
+ * @type {Cartesian3|undefined}
230
+ */
231
+ position: {
232
+ get: function () {
233
+ return this._position;
234
+ },
235
+ set: function (value) {
236
+ if (
237
+ Cartesian3.equalsEpsilon(
238
+ value,
239
+ this._position,
240
+ 0.0,
241
+ this.maximumPositionEpsilon,
242
+ )
243
+ ) {
244
+ return;
245
+ }
246
+
247
+ this._position = Cartesian3.clone(value, this._position);
248
+ this.reset();
249
+ },
250
+ },
251
+
252
+ /**
253
+ * The computed radiance map, or <code>undefined</code> if it has not yet been created.
254
+ * @memberof DynamicEnvironmentMapManager.prototype
255
+ * @type {CubeMap|undefined}
256
+ * @readonly
257
+ * @private
258
+ */
259
+ radianceCubeMap: {
260
+ get: function () {
261
+ return this._radianceCubeMap;
262
+ },
263
+ },
264
+
265
+ /**
266
+ * The maximum number of mip levels available in the radiance cubemap.
267
+ * @memberof DynamicEnvironmentMapManager.prototype
268
+ * @type {number}
269
+ * @readonly
270
+ * @private
271
+ */
272
+ maximumMipmapLevel: {
273
+ get: function () {
274
+ return this._mipmapLevels;
275
+ },
276
+ },
277
+
278
+ /**
279
+ * The third order spherical harmonic coefficients used for the diffuse color of image-based lighting.
280
+ * <p>
281
+ * There are nine <code>Cartesian3</code> coefficients.
282
+ * The order of the coefficients is: L<sub>0,0</sub>, L<sub>1,-1</sub>, L<sub>1,0</sub>, L<sub>1,1</sub>, L<sub>2,-2</sub>, L<sub>2,-1</sub>, L<sub>2,0</sub>, L<sub>2,1</sub>, L<sub>2,2</sub>
283
+ * </p>
284
+ * @memberof DynamicEnvironmentMapManager.prototype
285
+ * @readonly
286
+ * @type {Cartesian3[]}
287
+ * @see {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf|An Efficient Representation for Irradiance Environment Maps}
288
+ * @private
289
+ */
290
+ sphericalHarmonicCoefficients: {
291
+ get: function () {
292
+ return this._sphericalHarmonicCoefficients;
293
+ },
294
+ },
295
+ });
296
+
297
+ /**
298
+ * Sets the owner for the input DynamicEnvironmentMapManager if there wasn't another owner.
299
+ * Destroys the owner's previous DynamicEnvironmentMapManager if setting is successful.
300
+ * @param {DynamicEnvironmentMapManager} [environmentMapManager] A DynamicEnvironmentMapManager (or undefined) being attached to an object
301
+ * @param {object} owner An Object that should receive the new DynamicEnvironmentMapManager
302
+ * @param {string} key The Key for the Object to reference the DynamicEnvironmentMapManager
303
+ * @private
304
+ */
305
+ DynamicEnvironmentMapManager.setOwner = function (
306
+ environmentMapManager,
307
+ owner,
308
+ key,
309
+ ) {
310
+ // Don't destroy the DynamicEnvironmentMapManager if it's already owned by newOwner
311
+ if (environmentMapManager === owner[key]) {
312
+ return;
313
+ }
314
+ // Destroy the existing DynamicEnvironmentMapManager, if any
315
+ owner[key] = owner[key] && owner[key].destroy();
316
+ if (defined(environmentMapManager)) {
317
+ //>>includeStart('debug', pragmas.debug);
318
+ if (defined(environmentMapManager._owner)) {
319
+ throw new DeveloperError(
320
+ "DynamicEnvironmentMapManager should only be assigned to one object",
321
+ );
322
+ }
323
+ //>>includeEnd('debug');
324
+ environmentMapManager._owner = owner;
325
+ owner[key] = environmentMapManager;
326
+ }
327
+ };
328
+
329
+ /**
330
+ * Cancels any in-progress commands and marks the environment map as dirty.
331
+ * @private
332
+ */
333
+ DynamicEnvironmentMapManager.prototype.reset = function () {
334
+ let length = this._radianceMapComputeCommands.length;
335
+ for (let i = 0; i < length; ++i) {
336
+ this._radianceMapComputeCommands[i] = undefined;
337
+ }
338
+
339
+ length = this._convolutionComputeCommands.length;
340
+ for (let i = 0; i < length; ++i) {
341
+ this._convolutionComputeCommands[i] = undefined;
342
+ }
343
+
344
+ if (defined(this._irradianceComputeCommand)) {
345
+ this._irradianceComputeCommand = undefined;
346
+ }
347
+
348
+ this._radianceMapDirty = true;
349
+ this._radianceCommandsDirty = true;
350
+ };
351
+
352
+ const scratchPackedAtmosphere = new Cartesian3();
353
+ const scratchSurfacePosition = new Cartesian3();
354
+
355
+ /**
356
+ * Update atmosphere properties and returns true if the environment map needs to be regenerated.
357
+ * @param {DynamicEnvironmentMapManager} manager this manager
358
+ * @param {FrameState} frameState the current frameState
359
+ * @returns {boolean} true if the environment map needs to be regenerated.
360
+ * @private
361
+ */
362
+ function atmosphereNeedsUpdate(manager, frameState) {
363
+ const position = manager._position;
364
+ const atmosphere = frameState.atmosphere;
365
+
366
+ const ellipsoid = frameState.mapProjection.ellipsoid;
367
+ const surfacePosition = ellipsoid.scaleToGeodeticSurface(
368
+ position,
369
+ scratchSurfacePosition,
370
+ );
371
+ const outerEllipsoidScale = 1.025;
372
+
373
+ // Pack outer radius, inner radius, and dynamic atmosphere flag
374
+ const radiiAndDynamicAtmosphereColor = scratchPackedAtmosphere;
375
+ const radius = defined(surfacePosition)
376
+ ? Cartesian3.magnitude(surfacePosition)
377
+ : ellipsoid.maximumRadius;
378
+ radiiAndDynamicAtmosphereColor.x = radius * outerEllipsoidScale;
379
+ radiiAndDynamicAtmosphereColor.y = radius;
380
+ radiiAndDynamicAtmosphereColor.z = atmosphere.dynamicLighting;
381
+
382
+ if (
383
+ !Cartesian3.equalsEpsilon(
384
+ manager._radiiAndDynamicAtmosphereColor,
385
+ radiiAndDynamicAtmosphereColor,
386
+ ) ||
387
+ frameState.environmentMap !== manager._sceneEnvironmentMap ||
388
+ frameState.backgroundColor !== manager._backgroundColor
389
+ ) {
390
+ Cartesian3.clone(
391
+ radiiAndDynamicAtmosphereColor,
392
+ manager._radiiAndDynamicAtmosphereColor,
393
+ );
394
+ manager._sceneEnvironmentMap = frameState.environmentMap;
395
+ manager._backgroundColor = frameState.backgroundColor;
396
+ return true;
397
+ }
398
+
399
+ return false;
400
+ }
401
+
402
+ const scratchCartesian = new Cartesian3();
403
+ const scratchMatrix = new Matrix4();
404
+ const scratchAdjustments = new Cartesian4();
405
+ const scratchColor = new Color();
406
+
407
+ /**
408
+ * Renders the highest resolution specular map by creating compute commands for each cube face
409
+ * @param {DynamicEnvironmentMapManager} manager this manager
410
+ * @param {FrameState} frameState the current frameState
411
+ * @private
412
+ */
413
+ function updateRadianceMap(manager, frameState) {
414
+ const context = frameState.context;
415
+ const textureDimensions = manager._textureDimensions;
416
+
417
+ if (!defined(manager._radianceCubeMap)) {
418
+ manager._radianceCubeMap = new CubeMap({
419
+ context: context,
420
+ width: textureDimensions.x,
421
+ height: textureDimensions.y,
422
+ pixelDatatype: PixelDatatype.UNSIGNED_BYTE,
423
+ pixelFormat: PixelFormat.RGBA,
424
+ });
425
+ }
426
+
427
+ if (manager._radianceCommandsDirty) {
428
+ let fs = manager._radianceMapFS;
429
+ if (!defined(fs)) {
430
+ fs = new ShaderSource({
431
+ sources: [AtmosphereCommon, ComputeRadianceMapFS],
432
+ });
433
+ manager._radianceMapFS = fs;
434
+ }
435
+
436
+ if (Atmosphere.requiresColorCorrect(frameState.atmosphere)) {
437
+ fs.defines.push("ATMOSPHERE_COLOR_CORRECT");
438
+ }
439
+
440
+ const position = manager._position;
441
+ const radiiAndDynamicAtmosphereColor =
442
+ manager._radiiAndDynamicAtmosphereColor;
443
+
444
+ const ellipsoid = frameState.mapProjection.ellipsoid;
445
+ const enuToFixedFrame = Transforms.eastNorthUpToFixedFrame(
446
+ position,
447
+ ellipsoid,
448
+ scratchMatrix,
449
+ );
450
+
451
+ const adjustments = scratchAdjustments;
452
+
453
+ adjustments.x = manager.brightness;
454
+ adjustments.y = manager.saturation;
455
+ adjustments.z = manager.gamma;
456
+ adjustments.w = manager.atmosphereScatteringIntensity;
457
+
458
+ if (
459
+ manager.brightness !== 1.0 ||
460
+ manager.saturation !== 1.0 ||
461
+ manager.gamma !== 1.0
462
+ ) {
463
+ fs.defines.push("ENVIRONMENT_COLOR_CORRECT");
464
+ }
465
+
466
+ let i = 0;
467
+ for (const face of CubeMap.faceNames()) {
468
+ let texture = manager._radianceMapTextures[i];
469
+ if (defined(texture)) {
470
+ texture.destroy();
471
+ }
472
+
473
+ texture = new Texture({
474
+ context: context,
475
+ width: textureDimensions.x,
476
+ height: textureDimensions.y,
477
+ pixelDatatype: PixelDatatype.UNSIGNED_BYTE,
478
+ pixelFormat: PixelFormat.RGBA,
479
+ });
480
+ manager._radianceMapTextures[i] = texture;
481
+
482
+ const index = i;
483
+ const command = new ComputeCommand({
484
+ fragmentShaderSource: fs,
485
+ outputTexture: texture,
486
+ uniformMap: {
487
+ u_radiiAndDynamicAtmosphereColor: () =>
488
+ radiiAndDynamicAtmosphereColor,
489
+ u_enuToFixedFrame: () => enuToFixedFrame,
490
+ u_faceDirection: () => CubeMap.getDirection(face, scratchCartesian),
491
+ u_positionWC: () => position,
492
+ u_brightnessSaturationGammaIntensity: () => adjustments,
493
+ u_groundColor: () => {
494
+ return manager.groundColor.withAlpha(
495
+ manager.groundAlbedo,
496
+ scratchColor,
497
+ );
498
+ },
499
+ },
500
+ persists: true,
501
+ owner: manager,
502
+ postExecute: () => {
503
+ const commands = manager._radianceMapComputeCommands;
504
+ if (!defined(commands[index])) {
505
+ // This command was cancelled
506
+ return;
507
+ }
508
+ commands[index] = undefined;
509
+
510
+ const framebuffer = new Framebuffer({
511
+ context: context,
512
+ colorTextures: [manager._radianceMapTextures[index]],
513
+ destroyAttachments: false,
514
+ });
515
+
516
+ // Copy the output texture into the corresponding cubemap face
517
+ framebuffer._bind();
518
+ manager._radianceCubeMap[face].copyFromFramebuffer();
519
+ framebuffer._unBind();
520
+ framebuffer.destroy();
521
+
522
+ if (!commands.some(defined)) {
523
+ manager._convolutionsCommandsDirty = true;
524
+ manager._shouldRegenerateShaders = true;
525
+ }
526
+ },
527
+ });
528
+ frameState.commandList.push(command);
529
+ manager._radianceMapComputeCommands[i] = command;
530
+ i++;
531
+ }
532
+ manager._radianceCommandsDirty = false;
533
+ }
534
+ }
535
+
536
+ /**
537
+ * Creates a mipmap chain for the cubemap by convolving the environment map for each roughness level
538
+ * @param {DynamicEnvironmentMapManager} manager this manager
539
+ * @param {FrameState} frameState the current frameState
540
+ * @private
541
+ */
542
+ function updateSpecularMaps(manager, frameState) {
543
+ const radianceCubeMap = manager._radianceCubeMap;
544
+ radianceCubeMap.generateMipmap();
545
+
546
+ const mipmapLevels = manager._mipmapLevels;
547
+ const textureDimensions = manager._textureDimensions;
548
+ let width = textureDimensions.x / 2;
549
+ let height = textureDimensions.y / 2;
550
+ const context = frameState.context;
551
+
552
+ let facesCopied = 0;
553
+ const getPostExecute = (index, texture, face, level) => () => {
554
+ // Copy output texture to corresponding face and mipmap level
555
+ const commands = manager._convolutionComputeCommands;
556
+ if (!defined(commands[index])) {
557
+ // This command was cancelled
558
+ return;
559
+ }
560
+ commands[index] = undefined;
561
+
562
+ radianceCubeMap.copyFace(frameState, texture, face, level);
563
+ facesCopied++;
564
+
565
+ // All faces and levels have been copied
566
+ if (facesCopied === manager._specularMapTextures.length) {
567
+ manager._irradianceCommandDirty = true;
568
+ radianceCubeMap.sampler = new Sampler({
569
+ minificationFilter: TextureMinificationFilter.LINEAR_MIPMAP_LINEAR,
570
+ });
571
+ manager._shouldRegenerateShaders = true;
572
+ }
573
+ };
574
+
575
+ let index = 0;
576
+ for (let level = 1; level < mipmapLevels; ++level) {
577
+ for (const face of CubeMap.faceNames()) {
578
+ const texture = (manager._specularMapTextures[index] = new Texture({
579
+ context: context,
580
+ width: width,
581
+ height: height,
582
+ pixelDatatype: PixelDatatype.UNSIGNED_BYTE,
583
+ pixelFormat: PixelFormat.RGBA,
584
+ }));
585
+
586
+ let vertexArray = manager._va;
587
+ if (!defined(vertexArray)) {
588
+ vertexArray = CubeMap.createVertexArray(context, face);
589
+ manager._va = vertexArray;
590
+ }
591
+
592
+ let shaderProgram = manager._convolveSP;
593
+ if (!defined(shaderProgram)) {
594
+ shaderProgram = ShaderProgram.fromCache({
595
+ context: context,
596
+ vertexShaderSource: ConvolveSpecularMapVS,
597
+ fragmentShaderSource: ConvolveSpecularMapFS,
598
+ attributeLocations: {
599
+ positions: 0,
600
+ },
601
+ });
602
+ manager._convolveSP = shaderProgram;
603
+ }
604
+
605
+ const command = new ComputeCommand({
606
+ shaderProgram: shaderProgram,
607
+ vertexArray: vertexArray,
608
+ outputTexture: texture,
609
+ persists: true,
610
+ owner: manager,
611
+ uniformMap: {
612
+ u_roughness: () => level / (mipmapLevels - 1),
613
+ u_radianceTexture: () => radianceCubeMap,
614
+ u_faceDirection: () => {
615
+ return CubeMap.getDirection(face, scratchCartesian);
616
+ },
617
+ },
618
+ postExecute: getPostExecute(index, texture, face, level),
619
+ });
620
+ manager._convolutionComputeCommands[index] = command;
621
+ frameState.commandList.push(command);
622
+ ++index;
623
+ }
624
+
625
+ width /= 2;
626
+ height /= 2;
627
+ }
628
+ }
629
+
630
+ const irradianceTextureDimensions = new Cartesian2(3, 3); // 9 coefficients
631
+
632
+ /**
633
+ * Computes spherical harmonic coefficients by convolving the environment map.
634
+ * @param {DynamicEnvironmentMapManager} manager this manager
635
+ * @param {FrameState} frameState the current frameState
636
+ * @private
637
+ */
638
+ function updateIrradianceResources(manager, frameState) {
639
+ const context = frameState.context;
640
+ const dimensions = irradianceTextureDimensions;
641
+
642
+ let texture = manager._irradianceMapTexture;
643
+ if (!defined(texture)) {
644
+ texture = new Texture({
645
+ context: context,
646
+ width: dimensions.x,
647
+ height: dimensions.y,
648
+ pixelDatatype: PixelDatatype.FLOAT,
649
+ pixelFormat: PixelFormat.RGBA,
650
+ });
651
+ manager._irradianceMapTexture = texture;
652
+ }
653
+
654
+ let fs = manager._irradianceMapFS;
655
+ if (!defined(fs)) {
656
+ fs = new ShaderSource({
657
+ sources: [ComputeIrradianceFS],
658
+ });
659
+ manager._irradianceMapFS = fs;
660
+ }
661
+
662
+ const command = new ComputeCommand({
663
+ fragmentShaderSource: fs,
664
+ outputTexture: texture,
665
+ uniformMap: {
666
+ u_radianceMap: () => manager._radianceCubeMap,
667
+ },
668
+ postExecute: () => {
669
+ if (!defined(manager._irradianceComputeCommand)) {
670
+ // This command was cancelled
671
+ return;
672
+ }
673
+ manager._irradianceTextureDirty = false;
674
+ manager._irradianceComputeCommand = undefined;
675
+ manager._sphericalHarmonicCoefficientsDirty = true;
676
+ },
677
+ });
678
+ manager._irradianceComputeCommand = command;
679
+ frameState.commandList.push(command);
680
+ manager._irradianceTextureDirty = true;
681
+ }
682
+
683
+ /**
684
+ * Copies coefficients from the output texture using readPixels.
685
+ * @param {DynamicEnvironmentMapManager} manager this manager
686
+ * @param {FrameState} frameState the current frameState
687
+ * @private
688
+ */
689
+ function updateSphericalHarmonicCoefficients(manager, frameState) {
690
+ const context = frameState.context;
691
+
692
+ const framebuffer = new Framebuffer({
693
+ context: context,
694
+ colorTextures: [manager._irradianceMapTexture],
695
+ destroyAttachments: false,
696
+ });
697
+
698
+ const dimensions = irradianceTextureDimensions;
699
+ const data = context.readPixels({
700
+ x: 0,
701
+ y: 0,
702
+ width: dimensions.x,
703
+ height: dimensions.y,
704
+ framebuffer: framebuffer,
705
+ });
706
+
707
+ for (let i = 0; i < 9; ++i) {
708
+ manager._sphericalHarmonicCoefficients[i] = Cartesian3.unpack(data, i * 4);
709
+ Cartesian3.multiplyByScalar(
710
+ manager._sphericalHarmonicCoefficients[i],
711
+ manager.atmosphereScatteringIntensity,
712
+ manager._sphericalHarmonicCoefficients[i],
713
+ );
714
+ }
715
+
716
+ framebuffer.destroy();
717
+ manager._shouldRegenerateShaders = true;
718
+ }
719
+
720
+ /**
721
+ * Called when {@link Viewer} or {@link CesiumWidget} render the scene to
722
+ * build the resources for the environment maps.
723
+ * <p>
724
+ * Do not call this function directly.
725
+ * </p>
726
+ * @private
727
+ */
728
+ DynamicEnvironmentMapManager.prototype.update = function (frameState) {
729
+ const mode = frameState.mode;
730
+
731
+ if (
732
+ !this.enabled ||
733
+ !this.shouldUpdate ||
734
+ !defined(this._position) ||
735
+ mode === SceneMode.MORPHING
736
+ ) {
737
+ this._shouldRegenerateShaders = false;
738
+ return;
739
+ }
740
+
741
+ const dynamicLighting = frameState.atmosphere.dynamicLighting;
742
+ const regenerateEnvironmentMap =
743
+ atmosphereNeedsUpdate(this, frameState) ||
744
+ (dynamicLighting === DynamicAtmosphereLightingType.SUNLIGHT &&
745
+ !JulianDate.equalsEpsilon(
746
+ frameState.time,
747
+ this._lastTime,
748
+ this.maximumSecondsDifference,
749
+ ));
750
+
751
+ if (regenerateEnvironmentMap) {
752
+ this.reset();
753
+ this._lastTime = JulianDate.clone(frameState.time, this._lastTime);
754
+ }
755
+
756
+ if (this._radianceMapDirty) {
757
+ updateRadianceMap(this, frameState);
758
+ this._radianceMapDirty = false;
759
+ }
760
+
761
+ if (this._convolutionsCommandsDirty) {
762
+ updateSpecularMaps(this, frameState);
763
+ this._convolutionsCommandsDirty = false;
764
+ }
765
+
766
+ if (this._irradianceCommandDirty) {
767
+ updateIrradianceResources(this, frameState);
768
+ this._irradianceCommandDirty = false;
769
+ }
770
+
771
+ if (this._irradianceTextureDirty) {
772
+ this._shouldRegenerateShaders = false;
773
+ return;
774
+ }
775
+
776
+ if (this._sphericalHarmonicCoefficientsDirty) {
777
+ updateSphericalHarmonicCoefficients(this, frameState);
778
+ this._sphericalHarmonicCoefficientsDirty = false;
779
+ return;
780
+ }
781
+
782
+ this._shouldRegenerateShaders = false;
783
+ };
784
+
785
+ /**
786
+ * Returns true if this object was destroyed; otherwise, false.
787
+ * <br /><br />
788
+ * If this object was destroyed, it should not be used; calling any function other than
789
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
790
+ * @returns {boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
791
+ * @see DynamicEnvironmentMapManager#destroy
792
+ */
793
+ DynamicEnvironmentMapManager.prototype.isDestroyed = function () {
794
+ return false;
795
+ };
796
+
797
+ /**
798
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
799
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
800
+ * <br /><br />
801
+ * Once an object is destroyed, it should not be used; calling any function other than
802
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
803
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
804
+ * @throws {DeveloperError} This object was destroyed, i.e., destroy() was called.
805
+ * @example
806
+ * mapManager = mapManager && mapManager.destroy();
807
+ * @see DynamicEnvironmentMapManager#isDestroyed
808
+ */
809
+ DynamicEnvironmentMapManager.prototype.destroy = function () {
810
+ // Cancel in-progress commands
811
+ let length = this._radianceMapComputeCommands.length;
812
+ for (let i = 0; i < length; ++i) {
813
+ this._radianceMapComputeCommands[i] = undefined;
814
+ }
815
+
816
+ length = this._convolutionComputeCommands.length;
817
+ for (let i = 0; i < length; ++i) {
818
+ this._convolutionComputeCommands[i] = undefined;
819
+ }
820
+
821
+ this._irradianceMapComputeCommand = undefined;
822
+
823
+ // Destroy all textures
824
+ length = this._radianceMapTextures.length;
825
+ for (let i = 0; i < length; ++i) {
826
+ this._radianceMapTextures[i] =
827
+ this._radianceMapTextures[i] && this._radianceMapTextures[i].destroy();
828
+ }
829
+
830
+ length = this._specularMapTextures.length;
831
+ for (let i = 0; i < length; ++i) {
832
+ this._specularMapTextures[i] =
833
+ this._specularMapTextures[i] && this._specularMapTextures[i].destroy();
834
+ }
835
+
836
+ this._radianceCubeMap =
837
+ this._radianceCubeMap && this._radianceCubeMap.destroy();
838
+ this._irradianceMapTexture =
839
+ this._irradianceMapTexture && this._irradianceMapTexture.destroy();
840
+
841
+ return destroyObject(this);
842
+ };
843
+
844
+ /**
845
+ * Average hue of ground color on earth, a warm green-gray.
846
+ * @type {Color}
847
+ */
848
+ DynamicEnvironmentMapManager.AVERAGE_EARTH_GROUND_COLOR = Object.freeze(
849
+ Color.fromCssColorString("#717145"),
850
+ );
851
+
852
+ export default DynamicEnvironmentMapManager;