@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
@@ -18,6 +18,7 @@ import RuntimeError from "../../Core/RuntimeError.js";
18
18
  import Pass from "../../Renderer/Pass.js";
19
19
  import ClippingPlaneCollection from "../ClippingPlaneCollection.js";
20
20
  import ClippingPolygonCollection from "../ClippingPolygonCollection.js";
21
+ import DynamicEnvironmentMapManager from "../DynamicEnvironmentMapManager.js";
21
22
  import ColorBlendMode from "../ColorBlendMode.js";
22
23
  import GltfLoader from "../GltfLoader.js";
23
24
  import HeightReference, {
@@ -105,6 +106,9 @@ import pickModel from "./pickModel.js";
105
106
  * <li>
106
107
  * {@link https://github.com/KhronosGroup/glTF/blob/main/extensions/1.0/Vendor/WEB3D_quantized_attributes/README.md|WEB3D_quantized_attributes}
107
108
  * </li>
109
+ * <li>
110
+ * {@link https://nsgreg.nga.mil/csmwg.jsp|NGA_gpm_local (experimental)}
111
+ * </li>
108
112
  * </ul>
109
113
  * </p>
110
114
  * <p>
@@ -123,6 +127,7 @@ import pickModel from "./pickModel.js";
123
127
  * @privateParam {boolean} [options.show=true] Whether or not to render the model.
124
128
  * @privateParam {Matrix4} [options.modelMatrix=Matrix4.IDENTITY] The 4x4 transformation matrix that transforms the model from model to world coordinates.
125
129
  * @privateParam {number} [options.scale=1.0] A uniform scale applied to this model.
130
+ * @privateParam {boolean} [options.enableVerticalExaggeration=true] If <code>true</code>, the model is exaggerated along the ellipsoid normal when {@link Scene.verticalExaggeration} is set to a value other than <code>1.0</code>.
126
131
  * @privateParam {number} [options.minimumPixelSize=0.0] The approximate minimum pixel size of the model regardless of zoom.
127
132
  * @privateParam {number} [options.maximumScale] The maximum scale size of a model. An upper limit for minimumPixelSize.
128
133
  * @privateParam {object} [options.id] A user-defined object to return when the model is picked with {@link Scene#pick}.
@@ -151,6 +156,7 @@ import pickModel from "./pickModel.js";
151
156
  * @privateParam {ClippingPolygonCollection} [options.clippingPolygons] The {@link ClippingPolygonCollection} used to selectively disable rendering the model.
152
157
  * @privateParam {Cartesian3} [options.lightColor] The light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
153
158
  * @privateParam {ImageBasedLighting} [options.imageBasedLighting] The properties for managing image-based lighting on this model.
159
+ * @privateParam {DynamicEnvironmentMapManager.ConstructorOptions} [options.environmentMapOptions] The properties for managing dynamic environment maps on this model. Affects lighting.
154
160
  * @privateParam {boolean} [options.backFaceCulling=true] Whether to cull back-facing geometry. When true, back face culling is determined by the material's doubleSided property; when false, back face culling is disabled. Back faces are not culled if the model's color is translucent.
155
161
  * @privateParam {Credit|string} [options.credit] A credit for the data source, which is displayed on the canvas.
156
162
  * @privateParam {boolean} [options.showCreditsOnScreen=false] Whether to display the credits of this model on screen.
@@ -161,7 +167,7 @@ import pickModel from "./pickModel.js";
161
167
  * @privateParam {string|number} [options.instanceFeatureIdLabel="instanceFeatureId_0"] Label of the instance feature ID set used for picking and styling. If instanceFeatureIdLabel is set to an integer N, it is converted to the string "instanceFeatureId_N" automatically. If both per-primitive and per-instance feature IDs are present, the instance feature IDs take priority.
162
168
  * @privateParam {object} [options.pointCloudShading] Options for constructing a {@link PointCloudShading} object to control point attenuation based on geometric error and lighting.
163
169
  * @privateParam {ClassificationType} [options.classificationType] Determines whether terrain, 3D Tiles or both will be classified by this model. This cannot be set after the model has loaded.
164
-
170
+ *
165
171
  *
166
172
  * @see Model.fromGltfAsync
167
173
  *
@@ -209,7 +215,7 @@ function Model(options) {
209
215
  * m.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);
210
216
  */
211
217
  this.modelMatrix = Matrix4.clone(
212
- defaultValue(options.modelMatrix, Matrix4.IDENTITY)
218
+ defaultValue(options.modelMatrix, Matrix4.IDENTITY),
213
219
  );
214
220
  this._modelMatrix = Matrix4.clone(this.modelMatrix);
215
221
  this._scale = defaultValue(options.scale, 1.0);
@@ -275,7 +281,7 @@ function Model(options) {
275
281
  this._color = Color.clone(options.color);
276
282
  this._colorBlendMode = defaultValue(
277
283
  options.colorBlendMode,
278
- ColorBlendMode.HIGHLIGHT
284
+ ColorBlendMode.HIGHLIGHT,
279
285
  );
280
286
  this._colorBlendAmount = defaultValue(options.colorBlendAmount, 0.5);
281
287
 
@@ -306,7 +312,7 @@ function Model(options) {
306
312
 
307
313
  let instanceFeatureIdLabel = defaultValue(
308
314
  options.instanceFeatureIdLabel,
309
- "instanceFeatureId_0"
315
+ "instanceFeatureId_0",
310
316
  );
311
317
  if (typeof instanceFeatureIdLabel === "number") {
312
318
  instanceFeatureIdLabel = `instanceFeatureId_${instanceFeatureIdLabel}`;
@@ -335,22 +341,25 @@ function Model(options) {
335
341
 
336
342
  this._heightReference = defaultValue(
337
343
  options.heightReference,
338
- HeightReference.NONE
344
+ HeightReference.NONE,
339
345
  );
340
346
  this._heightDirty = this._heightReference !== HeightReference.NONE;
341
347
  this._removeUpdateHeightCallback = undefined;
342
348
 
343
- this._verticalExaggerationOn = false;
349
+ this._enableVerticalExaggeration = defaultValue(
350
+ options.enableVerticalExaggeration,
351
+ true,
352
+ );
353
+ this._hasVerticalExaggeration = false;
344
354
 
345
355
  this._clampedModelMatrix = undefined; // For use with height reference
346
356
 
347
357
  const scene = options.scene;
348
358
  if (defined(scene) && defined(scene.terrainProviderChanged)) {
349
- this._terrainProviderChangedCallback = scene.terrainProviderChanged.addEventListener(
350
- () => {
359
+ this._terrainProviderChangedCallback =
360
+ scene.terrainProviderChanged.addEventListener(() => {
351
361
  this._heightDirty = true;
352
- }
353
- );
362
+ });
354
363
  }
355
364
  this._scene = scene;
356
365
 
@@ -379,7 +388,7 @@ function Model(options) {
379
388
  ClippingPolygonCollection.setOwner(
380
389
  clippingPolygons,
381
390
  this,
382
- "_clippingPolygons"
391
+ "_clippingPolygons",
383
392
  );
384
393
  } else {
385
394
  this._clippingPolygons = clippingPolygons;
@@ -393,6 +402,16 @@ function Model(options) {
393
402
  : new ImageBasedLighting();
394
403
  this._shouldDestroyImageBasedLighting = !defined(options.imageBasedLighting);
395
404
 
405
+ this._environmentMapManager = undefined;
406
+ const environmentMapManager = new DynamicEnvironmentMapManager(
407
+ options.environmentMapOptions,
408
+ );
409
+ DynamicEnvironmentMapManager.setOwner(
410
+ environmentMapManager,
411
+ this,
412
+ "_environmentMapManager",
413
+ );
414
+
396
415
  this._backFaceCulling = defaultValue(options.backFaceCulling, true);
397
416
  this._backFaceCullingDirty = false;
398
417
 
@@ -402,12 +421,12 @@ function Model(options) {
402
421
  this._debugShowBoundingVolumeDirty = false;
403
422
  this._debugShowBoundingVolume = defaultValue(
404
423
  options.debugShowBoundingVolume,
405
- false
424
+ false,
406
425
  );
407
426
 
408
427
  this._enableDebugWireframe = defaultValue(
409
428
  options.enableDebugWireframe,
410
- false
429
+ false,
411
430
  );
412
431
  this._enableShowOutline = defaultValue(options.enableShowOutline, true);
413
432
  this._debugWireframe = defaultValue(options.debugWireframe, false);
@@ -420,7 +439,7 @@ function Model(options) {
420
439
  ) {
421
440
  oneTimeWarning(
422
441
  "model-debug-wireframe-ignored",
423
- "enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored."
442
+ "enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.",
424
443
  );
425
444
  }
426
445
 
@@ -444,7 +463,7 @@ function Model(options) {
444
463
 
445
464
  this._splitDirection = defaultValue(
446
465
  options.splitDirection,
447
- SplitDirection.NONE
466
+ SplitDirection.NONE,
448
467
  );
449
468
 
450
469
  this._enableShowOutline = defaultValue(options.enableShowOutline, true);
@@ -539,7 +558,7 @@ function selectFeatureTableId(components, model) {
539
558
  if (defined(node.instances)) {
540
559
  featureIdAttribute = ModelUtility.getFeatureIdsByLabel(
541
560
  node.instances.featureIds,
542
- instanceFeatureIdLabel
561
+ instanceFeatureIdLabel,
543
562
  );
544
563
  if (
545
564
  defined(featureIdAttribute) &&
@@ -558,7 +577,7 @@ function selectFeatureTableId(components, model) {
558
577
  const primitive = node.primitives[j];
559
578
  const featureIds = ModelUtility.getFeatureIdsByLabel(
560
579
  primitive.featureIds,
561
- featureIdLabel
580
+ featureIdLabel,
562
581
  );
563
582
 
564
583
  if (defined(featureIds)) {
@@ -887,7 +906,7 @@ Object.defineProperties(Model.prototype, {
887
906
  //>>includeEnd('debug');
888
907
  this._distanceDisplayCondition = DistanceDisplayCondition.clone(
889
908
  value,
890
- this._distanceDisplayCondition
909
+ this._distanceDisplayCondition,
891
910
  );
892
911
  },
893
912
  },
@@ -1127,7 +1146,7 @@ Object.defineProperties(Model.prototype, {
1127
1146
  //>>includeStart('debug', pragmas.debug);
1128
1147
  if (!this._ready) {
1129
1148
  throw new DeveloperError(
1130
- "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true."
1149
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1131
1150
  );
1132
1151
  }
1133
1152
  //>>includeEnd('debug');
@@ -1195,7 +1214,7 @@ Object.defineProperties(Model.prototype, {
1195
1214
  ) {
1196
1215
  oneTimeWarning(
1197
1216
  "model-debug-wireframe-ignored",
1198
- "enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored."
1217
+ "enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.",
1199
1218
  );
1200
1219
  }
1201
1220
  },
@@ -1340,7 +1359,46 @@ Object.defineProperties(Model.prototype, {
1340
1359
  },
1341
1360
 
1342
1361
  /**
1343
- * The light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
1362
+ * If <code>true</code>, the model is exaggerated along the ellipsoid normal when {@link Scene.verticalExaggeration} is set to a value other than <code>1.0</code>.
1363
+ *
1364
+ * @memberof Model.prototype
1365
+ * @type {boolean}
1366
+ * @default true
1367
+ *
1368
+ * @example
1369
+ * // Exaggerate terrain by a factor of 2, but prevent model exaggeration
1370
+ * scene.verticalExaggeration = 2.0;
1371
+ * model.enableVerticalExaggeration = false;
1372
+ */
1373
+ enableVerticalExaggeration: {
1374
+ get: function () {
1375
+ return this._enableVerticalExaggeration;
1376
+ },
1377
+ set: function (value) {
1378
+ if (value !== this._enableVerticalExaggeration) {
1379
+ this.resetDrawCommands();
1380
+ }
1381
+ this._enableVerticalExaggeration = value;
1382
+ },
1383
+ },
1384
+
1385
+ /**
1386
+ * If <code>true</code>, the model is vertically exaggerated along the ellipsoid normal.
1387
+ *
1388
+ * @memberof Model.prototype
1389
+ * @type {boolean}
1390
+ * @default true
1391
+ * @readonly
1392
+ * @private
1393
+ */
1394
+ hasVerticalExaggeration: {
1395
+ get: function () {
1396
+ return this._hasVerticalExaggeration;
1397
+ },
1398
+ },
1399
+
1400
+ /**
1401
+ * The directional light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
1344
1402
  * <p>
1345
1403
  * Disabling additional light sources by setting
1346
1404
  * <code>model.imageBasedLighting.imageBasedLightingFactor = new Cartesian2(0.0, 0.0)</code>
@@ -1378,7 +1436,7 @@ Object.defineProperties(Model.prototype, {
1378
1436
  },
1379
1437
  set: function (value) {
1380
1438
  //>>includeStart('debug', pragmas.debug);
1381
- Check.typeOf.object("imageBasedLighting", this._imageBasedLighting);
1439
+ Check.typeOf.object("imageBasedLighting", value);
1382
1440
  //>>includeEnd('debug');
1383
1441
 
1384
1442
  if (value !== this._imageBasedLighting) {
@@ -1395,6 +1453,38 @@ Object.defineProperties(Model.prototype, {
1395
1453
  },
1396
1454
  },
1397
1455
 
1456
+ /**
1457
+ * The properties for managing dynamic environment maps on this model. Affects lighting.
1458
+ * @memberof Model.prototype
1459
+ * @readonly
1460
+ *
1461
+ * @example
1462
+ * // Change the ground color used for a model's environment map to a forest green
1463
+ * const environmentMapManager = model.environmentMapManager;
1464
+ * environmentMapManager.groundColor = Cesium.Color.fromCssColorString("#203b34");
1465
+ *
1466
+ * @type {DynamicEnvironmentMapManager}
1467
+ */
1468
+ environmentMapManager: {
1469
+ get: function () {
1470
+ return this._environmentMapManager;
1471
+ },
1472
+ set: function (value) {
1473
+ //>>includeStart('debug', pragmas.debug);
1474
+ Check.typeOf.object("environmentMapManager", value);
1475
+ //>>includeEnd('debug');
1476
+
1477
+ if (value !== this.environmentMapManager) {
1478
+ DynamicEnvironmentMapManager.setOwner(
1479
+ value,
1480
+ this,
1481
+ "_environmentMapManager",
1482
+ );
1483
+ this.resetDrawCommands();
1484
+ }
1485
+ },
1486
+ },
1487
+
1398
1488
  /**
1399
1489
  * Whether to cull back-facing geometry. When true, back face culling is
1400
1490
  * determined by the material's doubleSided property; when false, back face
@@ -1671,7 +1761,7 @@ Model.prototype.getNode = function (name) {
1671
1761
  //>>includeStart('debug', pragmas.debug);
1672
1762
  if (!this._ready) {
1673
1763
  throw new DeveloperError(
1674
- "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true."
1764
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1675
1765
  );
1676
1766
  }
1677
1767
  Check.typeOf.string("name", name);
@@ -1701,7 +1791,7 @@ Model.prototype.setArticulationStage = function (articulationStageKey, value) {
1701
1791
  Check.typeOf.number("value", value);
1702
1792
  if (!this._ready) {
1703
1793
  throw new DeveloperError(
1704
- "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true."
1794
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1705
1795
  );
1706
1796
  }
1707
1797
  //>>includeEnd('debug');
@@ -1720,7 +1810,7 @@ Model.prototype.applyArticulations = function () {
1720
1810
  //>>includeStart('debug', pragmas.debug);
1721
1811
  if (!this._ready) {
1722
1812
  throw new DeveloperError(
1723
- "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true."
1813
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1724
1814
  );
1725
1815
  }
1726
1816
  //>>includeEnd('debug');
@@ -1728,6 +1818,33 @@ Model.prototype.applyArticulations = function () {
1728
1818
  this._sceneGraph.applyArticulations();
1729
1819
  };
1730
1820
 
1821
+ /**
1822
+ * Returns the object that was created for the given extension.
1823
+ *
1824
+ * The given name may be the name of a glTF extension, like `"EXT_example_extension"`.
1825
+ * If the specified extension was present in the root of the underlying glTF asset,
1826
+ * and a loder for the specified extension has processed the extension data, then
1827
+ * this will return the model representation of the extension.
1828
+ *
1829
+ * @param {string} extensionName The name of the extension
1830
+ * @returns {object|undefined} The object, or `undefined`
1831
+ * @exception {DeveloperError} The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.
1832
+ *
1833
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
1834
+ */
1835
+ Model.prototype.getExtension = function (extensionName) {
1836
+ //>>includeStart('debug', pragmas.debug);
1837
+ Check.typeOf.string("extensionName", extensionName);
1838
+ if (!this._ready) {
1839
+ throw new DeveloperError(
1840
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1841
+ );
1842
+ }
1843
+ //>>includeEnd('debug');
1844
+ const components = this._loader.components;
1845
+ return components.extensions[extensionName];
1846
+ };
1847
+
1731
1848
  /**
1732
1849
  * Marks the model's {@link Model#style} as dirty, which forces all features
1733
1850
  * to re-evaluate the style in the next frame the model is visible.
@@ -1776,7 +1893,7 @@ Model.prototype.update = function (frameState) {
1776
1893
  const runtimeError = ModelUtility.getError(
1777
1894
  "model",
1778
1895
  this._resource,
1779
- error
1896
+ error,
1780
1897
  );
1781
1898
  handleError(this, runtimeError);
1782
1899
  }
@@ -1785,6 +1902,9 @@ Model.prototype.update = function (frameState) {
1785
1902
  // A custom shader may have to load texture uniforms.
1786
1903
  updateCustomShader(this, frameState);
1787
1904
 
1905
+ // Environment maps, specular maps, and spherical harmonics may need to be updated or regenerated
1906
+ updateEnvironmentMap(this, frameState);
1907
+
1788
1908
  // The image-based lighting may have to load texture uniforms
1789
1909
  // for specular maps.
1790
1910
  updateImageBasedLighting(this, frameState);
@@ -1801,7 +1921,7 @@ Model.prototype.update = function (frameState) {
1801
1921
  const error = ModelUtility.getError(
1802
1922
  "model",
1803
1923
  this._resource,
1804
- new RuntimeError("Failed to load model.")
1924
+ new RuntimeError("Failed to load model."),
1805
1925
  );
1806
1926
  handleError(error);
1807
1927
  this._rejectLoad = this._rejectLoad && this._rejectLoad(error);
@@ -1909,6 +2029,23 @@ function updateCustomShader(model, frameState) {
1909
2029
  }
1910
2030
  }
1911
2031
 
2032
+ function updateEnvironmentMap(model, frameState) {
2033
+ const environmentMapManager = model._environmentMapManager;
2034
+ const picking = frameState.passes.pick || frameState.passes.pickVoxel;
2035
+ if (model._ready && environmentMapManager.owner === model && !picking) {
2036
+ environmentMapManager.position = model._boundingSphere.center;
2037
+ environmentMapManager.shouldUpdate =
2038
+ !defined(model._imageBasedLighting.sphericalHarmonicCoefficients) ||
2039
+ !defined(model._imageBasedLighting.specularEnvironmentMaps);
2040
+
2041
+ environmentMapManager.update(frameState);
2042
+
2043
+ if (environmentMapManager.shouldRegenerateShaders) {
2044
+ model.resetDrawCommands();
2045
+ }
2046
+ }
2047
+ }
2048
+
1912
2049
  function updateImageBasedLighting(model, frameState) {
1913
2050
  model._imageBasedLighting.update(frameState);
1914
2051
  if (model._imageBasedLighting.shouldRegenerateShaders) {
@@ -1969,7 +2106,7 @@ function updateStyleCommandsNeeded(model) {
1969
2106
  const featureTable = model.featureTables[model.featureTableId];
1970
2107
  model._styleCommandsNeeded = StyleCommandsNeeded.getStyleCommandsNeeded(
1971
2108
  featureTable.featuresLength,
1972
- featureTable.batchTexture.translucentFeaturesLength
2109
+ featureTable.batchTexture.translucentFeaturesLength,
1973
2110
  );
1974
2111
  }
1975
2112
 
@@ -2062,10 +2199,15 @@ function updateFog(model, frameState) {
2062
2199
  }
2063
2200
 
2064
2201
  function updateVerticalExaggeration(model, frameState) {
2065
- const verticalExaggerationNeeded = frameState.verticalExaggeration !== 1.0;
2066
- if (model._verticalExaggerationOn !== verticalExaggerationNeeded) {
2067
- model.resetDrawCommands();
2068
- model._verticalExaggerationOn = verticalExaggerationNeeded;
2202
+ if (model.enableVerticalExaggeration) {
2203
+ const verticalExaggerationNeeded = frameState.verticalExaggeration !== 1.0;
2204
+ if (model.hasVerticalExaggeration !== verticalExaggerationNeeded) {
2205
+ model.resetDrawCommands();
2206
+ model._hasVerticalExaggeration = verticalExaggerationNeeded;
2207
+ }
2208
+ } else if (model.hasVerticalExaggeration) {
2209
+ model.resetDrawCommands(); //if verticalExaggeration was on, reset.
2210
+ model._hasVerticalExaggeration = false;
2069
2211
  }
2070
2212
  }
2071
2213
 
@@ -2084,7 +2226,7 @@ function updateModelMatrix(model, frameState) {
2084
2226
  //>>includeStart('debug', pragmas.debug);
2085
2227
  if (frameState.mode !== SceneMode.SCENE3D && model._projectTo2D) {
2086
2228
  throw new DeveloperError(
2087
- "Model.modelMatrix cannot be changed in 2D or Columbus View if projectTo2D is true."
2229
+ "Model.modelMatrix cannot be changed in 2D or Columbus View if projectTo2D is true.",
2088
2230
  );
2089
2231
  }
2090
2232
  //>>includeEnd('debug');
@@ -2115,7 +2257,7 @@ function updateClamping(model) {
2115
2257
  //>>includeStart('debug', pragmas.debug);
2116
2258
  if (model.heightReference !== HeightReference.NONE) {
2117
2259
  throw new DeveloperError(
2118
- "Height reference is not supported without a scene."
2260
+ "Height reference is not supported without a scene.",
2119
2261
  );
2120
2262
  }
2121
2263
  //>>includeEnd('debug');
@@ -2140,7 +2282,7 @@ function updateClamping(model) {
2140
2282
  model._removeUpdateHeightCallback = scene.updateHeight(
2141
2283
  cartoPosition,
2142
2284
  getUpdateHeightCallback(model, ellipsoid, cartoPosition),
2143
- model.heightReference
2285
+ model.heightReference,
2144
2286
  );
2145
2287
 
2146
2288
  // Set the correct height now
@@ -2180,14 +2322,14 @@ function updateBoundingSphere(model, modelMatrix) {
2180
2322
  model._boundingSphere.center = Cartesian3.multiplyByScalar(
2181
2323
  model._sceneGraph.boundingSphere.center,
2182
2324
  model._clampedScale,
2183
- model._boundingSphere.center
2325
+ model._boundingSphere.center,
2184
2326
  );
2185
2327
  model._boundingSphere.radius = model._initialRadius * model._clampedScale;
2186
2328
 
2187
2329
  model._boundingSphere = BoundingSphere.transform(
2188
2330
  model._boundingSphere,
2189
2331
  modelMatrix,
2190
- model._boundingSphere
2332
+ model._boundingSphere,
2191
2333
  );
2192
2334
  }
2193
2335
 
@@ -2199,7 +2341,7 @@ function updateComputedScale(model, modelMatrix, frameState) {
2199
2341
  const context = frameState.context;
2200
2342
  const maxPixelSize = Math.max(
2201
2343
  context.drawingBufferWidth,
2202
- context.drawingBufferHeight
2344
+ context.drawingBufferHeight,
2203
2345
  );
2204
2346
 
2205
2347
  Matrix4.getTranslation(modelMatrix, scratchPosition);
@@ -2208,7 +2350,7 @@ function updateComputedScale(model, modelMatrix, frameState) {
2208
2350
  SceneTransforms.computeActualEllipsoidPosition(
2209
2351
  frameState,
2210
2352
  scratchPosition,
2211
- scratchPosition
2353
+ scratchPosition,
2212
2354
  );
2213
2355
  }
2214
2356
 
@@ -2219,7 +2361,7 @@ function updateComputedScale(model, modelMatrix, frameState) {
2219
2361
  const pixelsPerMeter = 1.0 / metersPerPixel;
2220
2362
  const diameterInPixels = Math.min(
2221
2363
  pixelsPerMeter * (2.0 * radius),
2222
- maxPixelSize
2364
+ maxPixelSize,
2223
2365
  );
2224
2366
 
2225
2367
  // Maintain model's minimum pixel size
@@ -2260,46 +2402,43 @@ function updateReferenceMatrices(model, frameState) {
2260
2402
  const referenceMatrix = defaultValue(model.referenceMatrix, modelMatrix);
2261
2403
  const context = frameState.context;
2262
2404
 
2263
- const ibl = model._imageBasedLighting;
2264
- if (ibl.useSphericalHarmonicCoefficients || ibl.useSpecularEnvironmentMaps) {
2265
- let iblReferenceFrameMatrix3 = scratchIBLReferenceFrameMatrix3;
2266
- let iblReferenceFrameMatrix4 = scratchIBLReferenceFrameMatrix4;
2405
+ let iblReferenceFrameMatrix3 = scratchIBLReferenceFrameMatrix3;
2406
+ let iblReferenceFrameMatrix4 = scratchIBLReferenceFrameMatrix4;
2267
2407
 
2268
- iblReferenceFrameMatrix4 = Matrix4.multiply(
2269
- context.uniformState.view3D,
2270
- referenceMatrix,
2271
- iblReferenceFrameMatrix4
2272
- );
2273
- iblReferenceFrameMatrix3 = Matrix4.getRotation(
2274
- iblReferenceFrameMatrix4,
2275
- iblReferenceFrameMatrix3
2276
- );
2277
- iblReferenceFrameMatrix3 = Matrix3.transpose(
2278
- iblReferenceFrameMatrix3,
2279
- iblReferenceFrameMatrix3
2280
- );
2281
- model._iblReferenceFrameMatrix = Matrix3.multiply(
2282
- yUpToZUp,
2283
- iblReferenceFrameMatrix3,
2284
- model._iblReferenceFrameMatrix
2285
- );
2286
- }
2408
+ iblReferenceFrameMatrix4 = Matrix4.multiply(
2409
+ context.uniformState.view3D,
2410
+ referenceMatrix,
2411
+ iblReferenceFrameMatrix4,
2412
+ );
2413
+ iblReferenceFrameMatrix3 = Matrix4.getRotation(
2414
+ iblReferenceFrameMatrix4,
2415
+ iblReferenceFrameMatrix3,
2416
+ );
2417
+ iblReferenceFrameMatrix3 = Matrix3.transpose(
2418
+ iblReferenceFrameMatrix3,
2419
+ iblReferenceFrameMatrix3,
2420
+ );
2421
+ model._iblReferenceFrameMatrix = Matrix3.multiply(
2422
+ yUpToZUp,
2423
+ iblReferenceFrameMatrix3,
2424
+ model._iblReferenceFrameMatrix,
2425
+ );
2287
2426
 
2288
2427
  if (model.isClippingEnabled()) {
2289
2428
  let clippingPlanesMatrix = scratchClippingPlanesMatrix;
2290
2429
  clippingPlanesMatrix = Matrix4.multiply(
2291
2430
  context.uniformState.view3D,
2292
2431
  referenceMatrix,
2293
- clippingPlanesMatrix
2432
+ clippingPlanesMatrix,
2294
2433
  );
2295
2434
  clippingPlanesMatrix = Matrix4.multiply(
2296
2435
  clippingPlanesMatrix,
2297
2436
  model._clippingPlanes.modelMatrix,
2298
- clippingPlanesMatrix
2437
+ clippingPlanesMatrix,
2299
2438
  );
2300
2439
  model._clippingPlanesMatrix = Matrix4.inverseTranspose(
2301
2440
  clippingPlanesMatrix,
2302
- model._clippingPlanesMatrix
2441
+ model._clippingPlanesMatrix,
2303
2442
  );
2304
2443
  }
2305
2444
  }
@@ -2377,7 +2516,7 @@ function submitDrawCommands(model, frameState) {
2377
2516
 
2378
2517
  const displayConditionPassed = passesDistanceDisplayCondition(
2379
2518
  model,
2380
- frameState
2519
+ frameState,
2381
2520
  );
2382
2521
 
2383
2522
  const invisible = model.isInvisible();
@@ -2410,7 +2549,7 @@ function scaleInPixels(positionWC, radius, frameState) {
2410
2549
  return frameState.camera.getPixelSize(
2411
2550
  scratchBoundingSphere,
2412
2551
  frameState.context.drawingBufferWidth,
2413
- frameState.context.drawingBufferHeight
2552
+ frameState.context.drawingBufferHeight,
2414
2553
  );
2415
2554
  }
2416
2555
 
@@ -2423,7 +2562,7 @@ function getUpdateHeightCallback(model, ellipsoid, originalPostition) {
2423
2562
 
2424
2563
  ellipsoid.cartographicToCartesian(
2425
2564
  clampedPosition,
2426
- scratchUpdateHeightCartesian
2565
+ scratchUpdateHeightCartesian,
2427
2566
  );
2428
2567
 
2429
2568
  const clampedModelMatrix = model._clampedModelMatrix;
@@ -2459,7 +2598,7 @@ function passesDistanceDisplayCondition(model, frameState) {
2459
2598
  // Distance to center of primitive's reference frame
2460
2599
  const position = Matrix4.getTranslation(
2461
2600
  model.modelMatrix,
2462
- scratchDisplayConditionCartesian
2601
+ scratchDisplayConditionCartesian,
2463
2602
  );
2464
2603
 
2465
2604
  // This will project the position if the scene is in Columbus View,
@@ -2467,12 +2606,12 @@ function passesDistanceDisplayCondition(model, frameState) {
2467
2606
  SceneTransforms.computeActualEllipsoidPosition(
2468
2607
  frameState,
2469
2608
  position,
2470
- position
2609
+ position,
2471
2610
  );
2472
2611
 
2473
2612
  distanceSquared = Cartesian3.distanceSquared(
2474
2613
  position,
2475
- frameState.camera.positionWC
2614
+ frameState.camera.positionWC,
2476
2615
  );
2477
2616
  }
2478
2617
 
@@ -2588,7 +2727,7 @@ Model.prototype.pick = function (
2588
2727
  frameState,
2589
2728
  verticalExaggeration,
2590
2729
  relativeHeight,
2591
- result
2730
+ result,
2592
2731
  ) {
2593
2732
  return pickModel(
2594
2733
  this,
@@ -2596,7 +2735,7 @@ Model.prototype.pick = function (
2596
2735
  frameState,
2597
2736
  verticalExaggeration,
2598
2737
  relativeHeight,
2599
- result
2738
+ result,
2600
2739
  );
2601
2740
  };
2602
2741
 
@@ -2704,6 +2843,16 @@ Model.prototype.destroy = function () {
2704
2843
  }
2705
2844
  this._imageBasedLighting = undefined;
2706
2845
 
2846
+ // Only destroy the environment map manager if this is the owner.
2847
+ const environmentMapManager = this._environmentMapManager;
2848
+ if (
2849
+ !environmentMapManager.isDestroyed() &&
2850
+ environmentMapManager.owner === this
2851
+ ) {
2852
+ environmentMapManager.destroy();
2853
+ }
2854
+ this._environmentMapManager = undefined;
2855
+
2707
2856
  destroyObject(this);
2708
2857
  };
2709
2858
 
@@ -2748,6 +2897,7 @@ Model.prototype.destroyModelResources = function () {
2748
2897
  * @param {boolean} [options.show=true] Whether or not to render the model.
2749
2898
  * @param {Matrix4} [options.modelMatrix=Matrix4.IDENTITY] The 4x4 transformation matrix that transforms the model from model to world coordinates.
2750
2899
  * @param {number} [options.scale=1.0] A uniform scale applied to this model.
2900
+ * @param {boolean} [options.enableVerticalExaggeration=true] If <code>true</code>, the model is exaggerated along the ellipsoid normal when {@link Scene.verticalExaggeration} is set to a value other than <code>1.0</code>.
2751
2901
  * @param {number} [options.minimumPixelSize=0.0] The approximate minimum pixel size of the model regardless of zoom.
2752
2902
  * @param {number} [options.maximumScale] The maximum scale size of a model. An upper limit for minimumPixelSize.
2753
2903
  * @param {object} [options.id] A user-defined object to return when the model is picked with {@link Scene#pick}.
@@ -2781,6 +2931,7 @@ Model.prototype.destroyModelResources = function () {
2781
2931
  * @param {ClippingPolygonCollection} [options.clippingPolygons] The {@link ClippingPolygonCollection} used to selectively disable rendering the model.
2782
2932
  * @param {Cartesian3} [options.lightColor] The light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
2783
2933
  * @param {ImageBasedLighting} [options.imageBasedLighting] The properties for managing image-based lighting on this model.
2934
+ * @param {DynamicEnvironmentMapManager.ConstructorOptions} [options.environmentMapOptions] The properties for managing dynamic environment maps on this model.
2784
2935
  * @param {boolean} [options.backFaceCulling=true] Whether to cull back-facing geometry. When true, back face culling is determined by the material's doubleSided property; when false, back face culling is disabled. Back faces are not culled if the model's color is translucent.
2785
2936
  * @param {Credit|string} [options.credit] A credit for the data source, which is displayed on the canvas.
2786
2937
  * @param {boolean} [options.showCreditsOnScreen=false] Whether to display the credits of this model on screen.
@@ -2911,6 +3062,7 @@ Model.fromGltfAsync = async function (options) {
2911
3062
 
2912
3063
  const modelOptions = makeModelOptions(loader, type, options);
2913
3064
  modelOptions.resource = resource;
3065
+ modelOptions.environmentMapOptions = options.environmentMapOptions;
2914
3066
 
2915
3067
  try {
2916
3068
  // This load the gltf JSON and ensures the gltf is valid
@@ -3043,7 +3195,7 @@ Model.fromGeoJson = async function (options) {
3043
3195
  const modelOptions = makeModelOptions(
3044
3196
  loader,
3045
3197
  ModelType.TILE_GEOJSON,
3046
- options
3198
+ options,
3047
3199
  );
3048
3200
  const model = new Model(modelOptions);
3049
3201
  return model;
@@ -3116,6 +3268,7 @@ function makeModelOptions(loader, modelType, options) {
3116
3268
  show: options.show,
3117
3269
  modelMatrix: options.modelMatrix,
3118
3270
  scale: options.scale,
3271
+ enableVerticalExaggeration: options.enableVerticalExaggeration,
3119
3272
  minimumPixelSize: options.minimumPixelSize,
3120
3273
  maximumScale: options.maximumScale,
3121
3274
  id: options.id,