@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
@@ -19,6 +19,7 @@ import Camera from "./Camera.js";
19
19
  import Cesium3DTileFeature from "./Cesium3DTileFeature.js";
20
20
  import Cesium3DTilePass from "./Cesium3DTilePass.js";
21
21
  import Cesium3DTilePassState from "./Cesium3DTilePassState.js";
22
+ import MetadataPicking from "./MetadataPicking.js";
22
23
  import PickDepth from "./PickDepth.js";
23
24
  import PrimitiveCollection from "./PrimitiveCollection.js";
24
25
  import SceneMode from "./SceneMode.js";
@@ -59,7 +60,7 @@ function Picking(scene) {
59
60
  this._pickOffscreenView = new View(
60
61
  scene,
61
62
  pickOffscreenCamera,
62
- pickOffscreenViewport
63
+ pickOffscreenViewport,
63
64
  );
64
65
  }
65
66
 
@@ -88,7 +89,7 @@ function getPickOrthographicCullingVolume(
88
89
  drawingBufferPosition,
89
90
  width,
90
91
  height,
91
- viewport
92
+ viewport,
92
93
  ) {
93
94
  const camera = scene.camera;
94
95
  let frustum = camera.frustum;
@@ -107,7 +108,7 @@ function getPickOrthographicCullingVolume(
107
108
 
108
109
  const transform = Matrix4.clone(
109
110
  camera.transform,
110
- scratchOrthoPickVolumeMatrix4
111
+ scratchOrthoPickVolumeMatrix4,
111
112
  );
112
113
  camera._setTransform(Matrix4.IDENTITY);
113
114
 
@@ -128,7 +129,7 @@ function getPickOrthographicCullingVolume(
128
129
  viewport.height,
129
130
  1.0,
130
131
  1.0,
131
- scratchOrthoPixelSize
132
+ scratchOrthoPixelSize,
132
133
  );
133
134
 
134
135
  const ortho = scratchOrthoPickingFrustum;
@@ -150,7 +151,7 @@ function getPickPerspectiveCullingVolume(
150
151
  drawingBufferPosition,
151
152
  width,
152
153
  height,
153
- viewport
154
+ viewport,
154
155
  ) {
155
156
  const camera = scene.camera;
156
157
  const frustum = camera.frustum;
@@ -174,7 +175,7 @@ function getPickPerspectiveCullingVolume(
174
175
  viewport.height,
175
176
  1.0,
176
177
  1.0,
177
- scratchPerspPixelSize
178
+ scratchPerspPixelSize,
178
179
  );
179
180
  const pickWidth = pixelSize.x * width * 0.5;
180
181
  const pickHeight = pixelSize.y * height * 0.5;
@@ -190,7 +191,7 @@ function getPickPerspectiveCullingVolume(
190
191
  return offCenter.computeCullingVolume(
191
192
  camera.positionWC,
192
193
  camera.directionWC,
193
- camera.upWC
194
+ camera.upWC,
194
195
  );
195
196
  }
196
197
 
@@ -199,7 +200,7 @@ function getPickCullingVolume(
199
200
  drawingBufferPosition,
200
201
  width,
201
202
  height,
202
- viewport
203
+ viewport,
203
204
  ) {
204
205
  const frustum = scene.camera.frustum;
205
206
  if (
@@ -211,7 +212,7 @@ function getPickCullingVolume(
211
212
  drawingBufferPosition,
212
213
  width,
213
214
  height,
214
- viewport
215
+ viewport,
215
216
  );
216
217
  }
217
218
 
@@ -220,22 +221,47 @@ function getPickCullingVolume(
220
221
  drawingBufferPosition,
221
222
  width,
222
223
  height,
223
- viewport
224
+ viewport,
224
225
  );
225
226
  }
226
227
 
227
- // pick rectangle width and height, assumed odd
228
- let scratchRectangleWidth = 3.0;
229
- let scratchRectangleHeight = 3.0;
230
- let scratchRectangle = new BoundingRectangle(
231
- 0.0,
232
- 0.0,
233
- scratchRectangleWidth,
234
- scratchRectangleHeight
235
- );
228
+ // Pick position and rectangle, used in all picking functions,
229
+ // filled in computePickingDrawingBufferRectangle and passed
230
+ // the the FrameBuffer begin/end methods
231
+ const scratchRectangle = new BoundingRectangle(0.0, 0.0, 3.0, 3.0);
236
232
  const scratchPosition = new Cartesian2();
233
+
234
+ // Dummy color that is passed to updateAndExecuteCommands in
235
+ // all picking functions, used as the "background color"
237
236
  const scratchColorZero = new Color(0.0, 0.0, 0.0, 0.0);
238
237
 
238
+ /**
239
+ * Compute the rectangle that describes the part of the drawing buffer
240
+ * that is relevant for picking.
241
+ *
242
+ * @param {number} drawingBufferHeight The height of the drawing buffer
243
+ * @param {Cartesian2} position The position inside the drawing buffer
244
+ * @param {number|undefined} width The width of the rectangle, assumed to
245
+ * be an odd integer number, default : 3.0
246
+ * @param {number|undefined} height The height of the rectangle. If unspecified,
247
+ * height will default to the value of <code>width</code>
248
+ * @param {BoundingRectangle} result The result rectangle
249
+ * @returns {BoundingRectangle} The result rectangle
250
+ */
251
+ function computePickingDrawingBufferRectangle(
252
+ drawingBufferHeight,
253
+ position,
254
+ width,
255
+ height,
256
+ result,
257
+ ) {
258
+ result.width = defaultValue(width, 3.0);
259
+ result.height = defaultValue(height, result.width);
260
+ result.x = position.x - (result.width - 1.0) * 0.5;
261
+ result.y = drawingBufferHeight - position.y - (result.height - 1.0) * 0.5;
262
+ return result;
263
+ }
264
+
239
265
  /**
240
266
  * Returns an object with a <code>primitive</code> property that contains the first (top) primitive in the scene
241
267
  * at a particular window coordinate or undefined if nothing is at the location. Other properties may
@@ -254,9 +280,6 @@ Picking.prototype.pick = function (scene, windowPosition, width, height) {
254
280
  Check.defined("windowPosition", windowPosition);
255
281
  //>>includeEnd('debug');
256
282
 
257
- scratchRectangleWidth = defaultValue(width, 3.0);
258
- scratchRectangleHeight = defaultValue(height, scratchRectangleWidth);
259
-
260
283
  const { context, frameState, defaultView } = scene;
261
284
  const { viewport, pickFramebuffer } = defaultView;
262
285
 
@@ -273,7 +296,14 @@ Picking.prototype.pick = function (scene, windowPosition, width, height) {
273
296
  const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
274
297
  scene,
275
298
  windowPosition,
276
- scratchPosition
299
+ scratchPosition,
300
+ );
301
+ const drawingBufferRectangle = computePickingDrawingBufferRectangle(
302
+ context.drawingBufferHeight,
303
+ drawingBufferPosition,
304
+ width,
305
+ height,
306
+ scratchRectangle,
277
307
  );
278
308
 
279
309
  scene.jobScheduler.disableThisFrame();
@@ -282,9 +312,9 @@ Picking.prototype.pick = function (scene, windowPosition, width, height) {
282
312
  frameState.cullingVolume = getPickCullingVolume(
283
313
  scene,
284
314
  drawingBufferPosition,
285
- scratchRectangleWidth,
286
- scratchRectangleHeight,
287
- viewport
315
+ drawingBufferRectangle.width,
316
+ drawingBufferRectangle.height,
317
+ viewport,
288
318
  );
289
319
  frameState.invertClassification = false;
290
320
  frameState.passes.pick = true;
@@ -294,20 +324,12 @@ Picking.prototype.pick = function (scene, windowPosition, width, height) {
294
324
 
295
325
  scene.updateEnvironment();
296
326
 
297
- scratchRectangle.x =
298
- drawingBufferPosition.x - (scratchRectangleWidth - 1.0) * 0.5;
299
- scratchRectangle.y =
300
- scene.drawingBufferHeight -
301
- drawingBufferPosition.y -
302
- (scratchRectangleHeight - 1.0) * 0.5;
303
- scratchRectangle.width = scratchRectangleWidth;
304
- scratchRectangle.height = scratchRectangleHeight;
305
- passState = pickFramebuffer.begin(scratchRectangle, viewport);
327
+ passState = pickFramebuffer.begin(drawingBufferRectangle, viewport);
306
328
 
307
329
  scene.updateAndExecuteCommands(passState, scratchColorZero);
308
330
  scene.resolveFramebuffers(passState);
309
331
 
310
- const object = pickFramebuffer.end(scratchRectangle);
332
+ const object = pickFramebuffer.end(drawingBufferRectangle);
311
333
  context.endFrame();
312
334
  return object;
313
335
  };
@@ -327,15 +349,12 @@ Picking.prototype.pickVoxelCoordinate = function (
327
349
  scene,
328
350
  windowPosition,
329
351
  width,
330
- height
352
+ height,
331
353
  ) {
332
354
  //>>includeStart('debug', pragmas.debug);
333
355
  Check.defined("windowPosition", windowPosition);
334
356
  //>>includeEnd('debug');
335
357
 
336
- scratchRectangleWidth = defaultValue(width, 3.0);
337
- scratchRectangleHeight = defaultValue(height, scratchRectangleWidth);
338
-
339
358
  const { context, frameState, defaultView } = scene;
340
359
  const { viewport, pickFramebuffer } = defaultView;
341
360
 
@@ -352,7 +371,14 @@ Picking.prototype.pickVoxelCoordinate = function (
352
371
  const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
353
372
  scene,
354
373
  windowPosition,
355
- scratchPosition
374
+ scratchPosition,
375
+ );
376
+ const drawingBufferRectangle = computePickingDrawingBufferRectangle(
377
+ context.drawingBufferHeight,
378
+ drawingBufferPosition,
379
+ width,
380
+ height,
381
+ scratchRectangle,
356
382
  );
357
383
 
358
384
  scene.jobScheduler.disableThisFrame();
@@ -361,9 +387,9 @@ Picking.prototype.pickVoxelCoordinate = function (
361
387
  frameState.cullingVolume = getPickCullingVolume(
362
388
  scene,
363
389
  drawingBufferPosition,
364
- scratchRectangleWidth,
365
- scratchRectangleHeight,
366
- viewport
390
+ drawingBufferRectangle.width,
391
+ drawingBufferRectangle.height,
392
+ viewport,
367
393
  );
368
394
  frameState.invertClassification = false;
369
395
  frameState.passes.pickVoxel = true;
@@ -373,24 +399,141 @@ Picking.prototype.pickVoxelCoordinate = function (
373
399
 
374
400
  scene.updateEnvironment();
375
401
 
376
- scratchRectangle.x =
377
- drawingBufferPosition.x - (scratchRectangleWidth - 1.0) * 0.5;
378
- scratchRectangle.y =
379
- scene.drawingBufferHeight -
380
- drawingBufferPosition.y -
381
- (scratchRectangleHeight - 1.0) * 0.5;
382
- scratchRectangle.width = scratchRectangleWidth;
383
- scratchRectangle.height = scratchRectangleHeight;
384
- passState = pickFramebuffer.begin(scratchRectangle, viewport);
402
+ passState = pickFramebuffer.begin(drawingBufferRectangle, viewport);
385
403
 
386
404
  scene.updateAndExecuteCommands(passState, scratchColorZero);
387
405
  scene.resolveFramebuffers(passState);
388
406
 
389
- const voxelInfo = pickFramebuffer.readVoxelInfo(scratchRectangle);
407
+ const voxelInfo = pickFramebuffer.readCenterPixel(drawingBufferRectangle);
390
408
  context.endFrame();
391
409
  return voxelInfo;
392
410
  };
393
411
 
412
+ /**
413
+ * Pick a metadata value at the given window position.
414
+ *
415
+ * The given `pickedMetadataInfo` defines the metadata value that is
416
+ * supposed to be picked.
417
+ *
418
+ * The return type will depend on the type of the metadata property
419
+ * that is picked. Given the current limitations of the types that
420
+ * are supported for metadata picking, the return type will be one
421
+ * of the following:
422
+ *
423
+ * - For `SCALAR`, the return type will be a `number`
424
+ * - For `SCALAR` arrays, the return type will be a `number[]`
425
+ * - For `VEC2`, the return type will be a `Cartesian2`
426
+ * - For `VEC3`, the return type will be a `Cartesian3`
427
+ * - For `VEC4`, the return type will be a `Cartesian4`
428
+ *
429
+ * @param {Cartesian2} windowPosition Window coordinates to perform picking on.
430
+ * @param {PickedMetadataInfo} pickedMetadataInfo Information about the picked metadata.
431
+ * @returns {any} The metadata values
432
+ *
433
+ * @private
434
+ */
435
+ Picking.prototype.pickMetadata = function (
436
+ scene,
437
+ windowPosition,
438
+ pickedMetadataInfo,
439
+ ) {
440
+ //>>includeStart('debug', pragmas.debug);
441
+ Check.typeOf.object("windowPosition", windowPosition);
442
+ Check.typeOf.object("pickedMetadataInfo", pickedMetadataInfo);
443
+ //>>includeEnd('debug');
444
+
445
+ const { context, frameState, defaultView } = scene;
446
+ const { viewport, pickFramebuffer } = defaultView;
447
+
448
+ scene.view = defaultView;
449
+
450
+ viewport.x = 0;
451
+ viewport.y = 0;
452
+ viewport.width = context.drawingBufferWidth;
453
+ viewport.height = context.drawingBufferHeight;
454
+
455
+ let passState = defaultView.passState;
456
+ passState.viewport = BoundingRectangle.clone(viewport, passState.viewport);
457
+
458
+ const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
459
+ scene,
460
+ windowPosition,
461
+ scratchPosition,
462
+ );
463
+ const drawingBufferRectangle = computePickingDrawingBufferRectangle(
464
+ context.drawingBufferHeight,
465
+ drawingBufferPosition,
466
+ 1.0,
467
+ 1.0,
468
+ scratchRectangle,
469
+ );
470
+
471
+ scene.jobScheduler.disableThisFrame();
472
+
473
+ scene.updateFrameState();
474
+ frameState.cullingVolume = getPickCullingVolume(
475
+ scene,
476
+ drawingBufferPosition,
477
+ drawingBufferRectangle.width,
478
+ drawingBufferRectangle.height,
479
+ viewport,
480
+ );
481
+ frameState.invertClassification = false;
482
+
483
+ frameState.passes.pick = true;
484
+ frameState.tilesetPassState = pickTilesetPassState;
485
+
486
+ // Insert the information about the picked metadata property
487
+ // into the frame state, so that the `Scene.updateDerivedCommands`
488
+ // call can detect any changes in the picked metadata description,
489
+ // and update the derived commands for the new picked metadata
490
+ // property
491
+ frameState.pickingMetadata = true;
492
+ frameState.pickedMetadataInfo = pickedMetadataInfo;
493
+ context.uniformState.update(frameState);
494
+
495
+ scene.updateEnvironment();
496
+
497
+ passState = pickFramebuffer.begin(drawingBufferRectangle, viewport);
498
+
499
+ scene.updateAndExecuteCommands(passState, scratchColorZero);
500
+
501
+ // When OIT is enabled, then the resolveFrameBuffers function
502
+ // will juggle around several frame buffers, and eventually use
503
+ // the "environmentState.originalFramebuffer" instead of the
504
+ // picking frame buffer. Skipping a million questions, just
505
+ // switch OIT off here:
506
+ const oldOIT = scene._environmentState.useOIT;
507
+ scene._environmentState.useOIT = false;
508
+ scene.resolveFramebuffers(passState);
509
+ scene._environmentState.useOIT = oldOIT;
510
+
511
+ const rawMetadataPixel = pickFramebuffer.readCenterPixel(
512
+ drawingBufferRectangle,
513
+ );
514
+ context.endFrame();
515
+
516
+ frameState.pickingMetadata = false;
517
+
518
+ const metadataValue = MetadataPicking.decodeMetadataValues(
519
+ pickedMetadataInfo.classProperty,
520
+ rawMetadataPixel,
521
+ );
522
+
523
+ return metadataValue;
524
+ };
525
+
526
+ /**
527
+ * @typedef {object} PickedMetadataInfo
528
+ *
529
+ * Information about metadata that is supposed to be picked
530
+ *
531
+ * @property {string|undefined} schemaId The optional ID of the metadata schema
532
+ * @property {string} className The name of the metadata class
533
+ * @property {string} propertyName The name of the metadata property
534
+ * @property {MetadataClassProperty} classProperty The metadata class property
535
+ */
536
+
394
537
  function renderTranslucentDepthForPick(scene, drawingBufferPosition) {
395
538
  // PERFORMANCE_IDEA: render translucent only and merge with the previous frame
396
539
  const { defaultView, context, frameState, environmentState } = scene;
@@ -414,7 +557,7 @@ function renderTranslucentDepthForPick(scene, drawingBufferPosition) {
414
557
  drawingBufferPosition,
415
558
  1,
416
559
  1,
417
- viewport
560
+ viewport,
418
561
  );
419
562
  frameState.tilesetPassState = pickTilesetPassState;
420
563
 
@@ -423,7 +566,7 @@ function renderTranslucentDepthForPick(scene, drawingBufferPosition) {
423
566
  passState = pickDepthFramebuffer.update(
424
567
  context,
425
568
  drawingBufferPosition,
426
- viewport
569
+ viewport,
427
570
  );
428
571
 
429
572
  scene.updateAndExecuteCommands(passState, scratchColorZero);
@@ -440,7 +583,7 @@ const scratchOrthographicOffCenterFrustum = new OrthographicOffCenterFrustum();
440
583
  Picking.prototype.pickPositionWorldCoordinates = function (
441
584
  scene,
442
585
  windowPosition,
443
- result
586
+ result,
444
587
  ) {
445
588
  if (!scene.useDepthPicking) {
446
589
  return undefined;
@@ -450,7 +593,7 @@ Picking.prototype.pickPositionWorldCoordinates = function (
450
593
  Check.defined("windowPosition", windowPosition);
451
594
  if (!scene.context.depthTexture) {
452
595
  throw new DeveloperError(
453
- "Picking from the depth buffer is not supported. Check pickPositionSupported."
596
+ "Picking from the depth buffer is not supported. Check pickPositionSupported.",
454
597
  );
455
598
  }
456
599
  //>>includeEnd('debug');
@@ -472,7 +615,7 @@ Picking.prototype.pickPositionWorldCoordinates = function (
472
615
  const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
473
616
  scene,
474
617
  windowPosition,
475
- scratchPosition
618
+ scratchPosition,
476
619
  );
477
620
  if (scene.pickTranslucentDepth) {
478
621
  renderTranslucentDepthForPick(scene, drawingBufferPosition);
@@ -495,14 +638,14 @@ Picking.prototype.pickPositionWorldCoordinates = function (
495
638
  frustum = camera.frustum.clone(scratchOrthographicOffCenterFrustum);
496
639
  }
497
640
 
498
- const frustumCommandsList = defaultView.frustumCommandsList;
641
+ const { frustumCommandsList } = defaultView;
499
642
  const numFrustums = frustumCommandsList.length;
500
643
  for (let i = 0; i < numFrustums; ++i) {
501
644
  const pickDepth = this.getPickDepth(scene, i);
502
645
  const depth = pickDepth.getDepth(
503
646
  context,
504
647
  drawingBufferPosition.x,
505
- drawingBufferPosition.y
648
+ drawingBufferPosition.y,
506
649
  );
507
650
  if (!defined(depth)) {
508
651
  continue;
@@ -529,7 +672,7 @@ Picking.prototype.pickPositionWorldCoordinates = function (
529
672
  scene,
530
673
  drawingBufferPosition,
531
674
  depth,
532
- result
675
+ result,
533
676
  );
534
677
 
535
678
  if (scene.mode === SceneMode.SCENE2D) {
@@ -610,7 +753,7 @@ function drillPick(limit, pickCallback) {
610
753
  hasShowAttribute = true;
611
754
  attributes.show = ShowGeometryInstanceAttribute.toValue(
612
755
  false,
613
- attributes.show
756
+ attributes.show,
614
757
  );
615
758
  pickedAttributes.push(attributes);
616
759
  }
@@ -641,7 +784,7 @@ function drillPick(limit, pickCallback) {
641
784
  attributes = pickedAttributes[i];
642
785
  attributes.show = ShowGeometryInstanceAttribute.toValue(
643
786
  true,
644
- attributes.show
787
+ attributes.show,
645
788
  );
646
789
  }
647
790
 
@@ -657,7 +800,7 @@ Picking.prototype.drillPick = function (
657
800
  windowPosition,
658
801
  limit,
659
802
  width,
660
- height
803
+ height,
661
804
  ) {
662
805
  const that = this;
663
806
  const pickCallback = function () {
@@ -707,7 +850,7 @@ function updateOffscreenCameraFromRay(picking, ray, width, camera) {
707
850
  return camera.frustum.computeCullingVolume(
708
851
  camera.positionWC,
709
852
  camera.directionWC,
710
- camera.upWC
853
+ camera.upWC,
711
854
  );
712
855
  }
713
856
 
@@ -721,7 +864,7 @@ function updateMostDetailedRayPick(picking, scene, rayPick) {
721
864
  picking,
722
865
  ray,
723
866
  width,
724
- camera
867
+ camera,
725
868
  );
726
869
 
727
870
  const tilesetPassState = mostDetailedPreloadTilesetPassState;
@@ -781,7 +924,7 @@ function launchMostDetailedRayPick(
781
924
  ray,
782
925
  objectsToExclude,
783
926
  width,
784
- callback
927
+ callback,
785
928
  ) {
786
929
  const tilesets = [];
787
930
  getTilesets(scene.primitives, objectsToExclude, tilesets);
@@ -818,7 +961,7 @@ function getRayIntersection(
818
961
  objectsToExclude,
819
962
  width,
820
963
  requirePosition,
821
- mostDetailed
964
+ mostDetailed,
822
965
  ) {
823
966
  const { context, frameState } = scene;
824
967
  const uniformState = context.uniformState;
@@ -828,9 +971,15 @@ function getRayIntersection(
828
971
 
829
972
  updateOffscreenCameraFromRay(picking, ray, width, view.camera);
830
973
 
831
- scratchRectangle = BoundingRectangle.clone(view.viewport, scratchRectangle);
974
+ const drawingBufferRectangle = BoundingRectangle.clone(
975
+ view.viewport,
976
+ scratchRectangle,
977
+ );
832
978
 
833
- const passState = view.pickFramebuffer.begin(scratchRectangle, view.viewport);
979
+ const passState = view.pickFramebuffer.begin(
980
+ drawingBufferRectangle,
981
+ view.viewport,
982
+ );
834
983
 
835
984
  scene.jobScheduler.disableThisFrame();
836
985
 
@@ -852,10 +1001,11 @@ function getRayIntersection(
852
1001
  scene.resolveFramebuffers(passState);
853
1002
 
854
1003
  let position;
855
- const object = view.pickFramebuffer.end(scratchRectangle);
1004
+ const object = view.pickFramebuffer.end(drawingBufferRectangle);
856
1005
 
857
1006
  if (scene.context.depthTexture) {
858
- const numFrustums = view.frustumCommandsList.length;
1007
+ const { frustumCommandsList } = view;
1008
+ const numFrustums = frustumCommandsList.length;
859
1009
  for (let i = 0; i < numFrustums; ++i) {
860
1010
  const pickDepth = picking.getPickDepth(scene, i);
861
1011
  const depth = pickDepth.getDepth(context, 0, 0);
@@ -863,7 +1013,7 @@ function getRayIntersection(
863
1013
  continue;
864
1014
  }
865
1015
  if (depth > 0.0 && depth < 1.0) {
866
- const renderedFrustum = view.frustumCommandsList[i];
1016
+ const renderedFrustum = frustumCommandsList[i];
867
1017
  const near =
868
1018
  renderedFrustum.near *
869
1019
  (i !== 0 ? scene.opaqueFrustumNearOffset : 1.0);
@@ -897,7 +1047,7 @@ function getRayIntersections(
897
1047
  objectsToExclude,
898
1048
  width,
899
1049
  requirePosition,
900
- mostDetailed
1050
+ mostDetailed,
901
1051
  ) {
902
1052
  const pickCallback = function () {
903
1053
  return getRayIntersection(
@@ -907,7 +1057,7 @@ function getRayIntersections(
907
1057
  objectsToExclude,
908
1058
  width,
909
1059
  requirePosition,
910
- mostDetailed
1060
+ mostDetailed,
911
1061
  );
912
1062
  };
913
1063
  return drillPick(limit, pickCallback);
@@ -920,7 +1070,7 @@ function pickFromRay(
920
1070
  objectsToExclude,
921
1071
  width,
922
1072
  requirePosition,
923
- mostDetailed
1073
+ mostDetailed,
924
1074
  ) {
925
1075
  const results = getRayIntersections(
926
1076
  picking,
@@ -930,7 +1080,7 @@ function pickFromRay(
930
1080
  objectsToExclude,
931
1081
  width,
932
1082
  requirePosition,
933
- mostDetailed
1083
+ mostDetailed,
934
1084
  );
935
1085
  if (results.length > 0) {
936
1086
  return results[0];
@@ -945,7 +1095,7 @@ function drillPickFromRay(
945
1095
  objectsToExclude,
946
1096
  width,
947
1097
  requirePosition,
948
- mostDetailed
1098
+ mostDetailed,
949
1099
  ) {
950
1100
  return getRayIntersections(
951
1101
  picking,
@@ -955,7 +1105,7 @@ function drillPickFromRay(
955
1105
  objectsToExclude,
956
1106
  width,
957
1107
  requirePosition,
958
- mostDetailed
1108
+ mostDetailed,
959
1109
  );
960
1110
  }
961
1111
 
@@ -982,7 +1132,7 @@ Picking.prototype.pickFromRay = function (scene, ray, objectsToExclude, width) {
982
1132
  Check.defined("ray", ray);
983
1133
  if (scene.mode !== SceneMode.SCENE3D) {
984
1134
  throw new DeveloperError(
985
- "Ray intersections are only supported in 3D mode."
1135
+ "Ray intersections are only supported in 3D mode.",
986
1136
  );
987
1137
  }
988
1138
  //>>includeEnd('debug');
@@ -995,13 +1145,13 @@ Picking.prototype.drillPickFromRay = function (
995
1145
  ray,
996
1146
  limit,
997
1147
  objectsToExclude,
998
- width
1148
+ width,
999
1149
  ) {
1000
1150
  //>>includeStart('debug', pragmas.debug);
1001
1151
  Check.defined("ray", ray);
1002
1152
  if (scene.mode !== SceneMode.SCENE3D) {
1003
1153
  throw new DeveloperError(
1004
- "Ray intersections are only supported in 3D mode."
1154
+ "Ray intersections are only supported in 3D mode.",
1005
1155
  );
1006
1156
  }
1007
1157
  //>>includeEnd('debug');
@@ -1014,7 +1164,7 @@ Picking.prototype.drillPickFromRay = function (
1014
1164
  objectsToExclude,
1015
1165
  width,
1016
1166
  false,
1017
- false
1167
+ false,
1018
1168
  );
1019
1169
  };
1020
1170
 
@@ -1022,13 +1172,13 @@ Picking.prototype.pickFromRayMostDetailed = function (
1022
1172
  scene,
1023
1173
  ray,
1024
1174
  objectsToExclude,
1025
- width
1175
+ width,
1026
1176
  ) {
1027
1177
  //>>includeStart('debug', pragmas.debug);
1028
1178
  Check.defined("ray", ray);
1029
1179
  if (scene.mode !== SceneMode.SCENE3D) {
1030
1180
  throw new DeveloperError(
1031
- "Ray intersections are only supported in 3D mode."
1181
+ "Ray intersections are only supported in 3D mode.",
1032
1182
  );
1033
1183
  }
1034
1184
  //>>includeEnd('debug');
@@ -1054,10 +1204,10 @@ Picking.prototype.pickFromRayMostDetailed = function (
1054
1204
  objectsToExclude,
1055
1205
  width,
1056
1206
  false,
1057
- true
1207
+ true,
1058
1208
  );
1059
- }
1060
- )
1209
+ },
1210
+ ),
1061
1211
  );
1062
1212
  };
1063
1213
 
@@ -1066,13 +1216,13 @@ Picking.prototype.drillPickFromRayMostDetailed = function (
1066
1216
  ray,
1067
1217
  limit,
1068
1218
  objectsToExclude,
1069
- width
1219
+ width,
1070
1220
  ) {
1071
1221
  //>>includeStart('debug', pragmas.debug);
1072
1222
  Check.defined("ray", ray);
1073
1223
  if (scene.mode !== SceneMode.SCENE3D) {
1074
1224
  throw new DeveloperError(
1075
- "Ray intersections are only supported in 3D mode."
1225
+ "Ray intersections are only supported in 3D mode.",
1076
1226
  );
1077
1227
  }
1078
1228
  //>>includeEnd('debug');
@@ -1099,10 +1249,10 @@ Picking.prototype.drillPickFromRayMostDetailed = function (
1099
1249
  objectsToExclude,
1100
1250
  width,
1101
1251
  false,
1102
- true
1252
+ true,
1103
1253
  );
1104
- }
1105
- )
1254
+ },
1255
+ ),
1106
1256
  );
1107
1257
  };
1108
1258
 
@@ -1116,12 +1266,12 @@ function getRayForSampleHeight(scene, cartographic) {
1116
1266
  const height = ApproximateTerrainHeights._defaultMaxTerrainHeight;
1117
1267
  const surfaceNormal = ellipsoid.geodeticSurfaceNormalCartographic(
1118
1268
  cartographic,
1119
- scratchSurfaceNormal
1269
+ scratchSurfaceNormal,
1120
1270
  );
1121
1271
  const surfacePosition = Cartographic.toCartesian(
1122
1272
  cartographic,
1123
1273
  ellipsoid,
1124
- scratchSurfacePosition
1274
+ scratchSurfacePosition,
1125
1275
  );
1126
1276
  const surfaceRay = scratchSurfaceRay;
1127
1277
  surfaceRay.origin = surfacePosition;
@@ -1137,7 +1287,7 @@ function getRayForClampToHeight(scene, cartesian) {
1137
1287
  const cartographic = Cartographic.fromCartesian(
1138
1288
  cartesian,
1139
1289
  ellipsoid,
1140
- scratchCartographic
1290
+ scratchCartographic,
1141
1291
  );
1142
1292
  return getRayForSampleHeight(scene, cartographic);
1143
1293
  }
@@ -1147,7 +1297,7 @@ function getHeightFromCartesian(scene, cartesian) {
1147
1297
  const cartographic = Cartographic.fromCartesian(
1148
1298
  cartesian,
1149
1299
  ellipsoid,
1150
- scratchCartographic
1300
+ scratchCartographic,
1151
1301
  );
1152
1302
  return cartographic.height;
1153
1303
  }
@@ -1157,7 +1307,7 @@ function sampleHeightMostDetailed(
1157
1307
  scene,
1158
1308
  cartographic,
1159
1309
  objectsToExclude,
1160
- width
1310
+ width,
1161
1311
  ) {
1162
1312
  const ray = getRayForSampleHeight(scene, cartographic);
1163
1313
  return launchMostDetailedRayPick(
@@ -1174,12 +1324,12 @@ function sampleHeightMostDetailed(
1174
1324
  objectsToExclude,
1175
1325
  width,
1176
1326
  true,
1177
- true
1327
+ true,
1178
1328
  );
1179
1329
  if (defined(pickResult)) {
1180
1330
  return getHeightFromCartesian(scene, pickResult.position);
1181
1331
  }
1182
- }
1332
+ },
1183
1333
  );
1184
1334
  }
1185
1335
 
@@ -1189,7 +1339,7 @@ function clampToHeightMostDetailed(
1189
1339
  cartesian,
1190
1340
  objectsToExclude,
1191
1341
  width,
1192
- result
1342
+ result,
1193
1343
  ) {
1194
1344
  const ray = getRayForClampToHeight(scene, cartesian);
1195
1345
  return launchMostDetailedRayPick(
@@ -1206,12 +1356,12 @@ function clampToHeightMostDetailed(
1206
1356
  objectsToExclude,
1207
1357
  width,
1208
1358
  true,
1209
- true
1359
+ true,
1210
1360
  );
1211
1361
  if (defined(pickResult)) {
1212
1362
  return Cartesian3.clone(pickResult.position, result);
1213
1363
  }
1214
- }
1364
+ },
1215
1365
  );
1216
1366
  }
1217
1367
 
@@ -1219,7 +1369,7 @@ Picking.prototype.sampleHeight = function (
1219
1369
  scene,
1220
1370
  position,
1221
1371
  objectsToExclude,
1222
- width
1372
+ width,
1223
1373
  ) {
1224
1374
  //>>includeStart('debug', pragmas.debug);
1225
1375
  Check.defined("position", position);
@@ -1228,7 +1378,7 @@ Picking.prototype.sampleHeight = function (
1228
1378
  }
1229
1379
  if (!scene.sampleHeightSupported) {
1230
1380
  throw new DeveloperError(
1231
- "sampleHeight requires depth texture support. Check sampleHeightSupported."
1381
+ "sampleHeight requires depth texture support. Check sampleHeightSupported.",
1232
1382
  );
1233
1383
  }
1234
1384
  //>>includeEnd('debug');
@@ -1241,7 +1391,7 @@ Picking.prototype.sampleHeight = function (
1241
1391
  objectsToExclude,
1242
1392
  width,
1243
1393
  true,
1244
- false
1394
+ false,
1245
1395
  );
1246
1396
  if (defined(pickResult)) {
1247
1397
  return getHeightFromCartesian(scene, pickResult.position);
@@ -1253,7 +1403,7 @@ Picking.prototype.clampToHeight = function (
1253
1403
  cartesian,
1254
1404
  objectsToExclude,
1255
1405
  width,
1256
- result
1406
+ result,
1257
1407
  ) {
1258
1408
  //>>includeStart('debug', pragmas.debug);
1259
1409
  Check.defined("cartesian", cartesian);
@@ -1262,7 +1412,7 @@ Picking.prototype.clampToHeight = function (
1262
1412
  }
1263
1413
  if (!scene.clampToHeightSupported) {
1264
1414
  throw new DeveloperError(
1265
- "clampToHeight requires depth texture support. Check clampToHeightSupported."
1415
+ "clampToHeight requires depth texture support. Check clampToHeightSupported.",
1266
1416
  );
1267
1417
  }
1268
1418
  //>>includeEnd('debug');
@@ -1275,7 +1425,7 @@ Picking.prototype.clampToHeight = function (
1275
1425
  objectsToExclude,
1276
1426
  width,
1277
1427
  true,
1278
- false
1428
+ false,
1279
1429
  );
1280
1430
  if (defined(pickResult)) {
1281
1431
  return Cartesian3.clone(pickResult.position, result);
@@ -1286,18 +1436,18 @@ Picking.prototype.sampleHeightMostDetailed = function (
1286
1436
  scene,
1287
1437
  positions,
1288
1438
  objectsToExclude,
1289
- width
1439
+ width,
1290
1440
  ) {
1291
1441
  //>>includeStart('debug', pragmas.debug);
1292
1442
  Check.defined("positions", positions);
1293
1443
  if (scene.mode !== SceneMode.SCENE3D) {
1294
1444
  throw new DeveloperError(
1295
- "sampleHeightMostDetailed is only supported in 3D mode."
1445
+ "sampleHeightMostDetailed is only supported in 3D mode.",
1296
1446
  );
1297
1447
  }
1298
1448
  if (!scene.sampleHeightSupported) {
1299
1449
  throw new DeveloperError(
1300
- "sampleHeightMostDetailed requires depth texture support. Check sampleHeightSupported."
1450
+ "sampleHeightMostDetailed requires depth texture support. Check sampleHeightSupported.",
1301
1451
  );
1302
1452
  }
1303
1453
  //>>includeEnd('debug');
@@ -1313,7 +1463,7 @@ Picking.prototype.sampleHeightMostDetailed = function (
1313
1463
  scene,
1314
1464
  positions[i],
1315
1465
  objectsToExclude,
1316
- width
1466
+ width,
1317
1467
  );
1318
1468
  }
1319
1469
  return deferPromiseUntilPostRender(
@@ -1324,7 +1474,7 @@ Picking.prototype.sampleHeightMostDetailed = function (
1324
1474
  positions[i].height = heights[i];
1325
1475
  }
1326
1476
  return positions;
1327
- })
1477
+ }),
1328
1478
  );
1329
1479
  };
1330
1480
 
@@ -1332,18 +1482,18 @@ Picking.prototype.clampToHeightMostDetailed = function (
1332
1482
  scene,
1333
1483
  cartesians,
1334
1484
  objectsToExclude,
1335
- width
1485
+ width,
1336
1486
  ) {
1337
1487
  //>>includeStart('debug', pragmas.debug);
1338
1488
  Check.defined("cartesians", cartesians);
1339
1489
  if (scene.mode !== SceneMode.SCENE3D) {
1340
1490
  throw new DeveloperError(
1341
- "clampToHeightMostDetailed is only supported in 3D mode."
1491
+ "clampToHeightMostDetailed is only supported in 3D mode.",
1342
1492
  );
1343
1493
  }
1344
1494
  if (!scene.clampToHeightSupported) {
1345
1495
  throw new DeveloperError(
1346
- "clampToHeightMostDetailed requires depth texture support. Check clampToHeightSupported."
1496
+ "clampToHeightMostDetailed requires depth texture support. Check clampToHeightSupported.",
1347
1497
  );
1348
1498
  }
1349
1499
  //>>includeEnd('debug');
@@ -1360,7 +1510,7 @@ Picking.prototype.clampToHeightMostDetailed = function (
1360
1510
  cartesians[i],
1361
1511
  objectsToExclude,
1362
1512
  width,
1363
- cartesians[i]
1513
+ cartesians[i],
1364
1514
  );
1365
1515
  }
1366
1516
  return deferPromiseUntilPostRender(
@@ -1371,7 +1521,7 @@ Picking.prototype.clampToHeightMostDetailed = function (
1371
1521
  cartesians[i] = clampedCartesians[i];
1372
1522
  }
1373
1523
  return cartesians;
1374
- })
1524
+ }),
1375
1525
  );
1376
1526
  };
1377
1527