@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
@@ -2,6 +2,8 @@ import defined from "../Core/defined.js";
2
2
  import DrawCommand from "../Renderer/DrawCommand.js";
3
3
  import RenderState from "../Renderer/RenderState.js";
4
4
  import ShaderSource from "../Renderer/ShaderSource.js";
5
+ import MetadataType from "./MetadataType.js";
6
+ import MetadataPickingPipelineStage from "./Model/MetadataPickingPipelineStage.js";
5
7
 
6
8
  /**
7
9
  * @private
@@ -12,89 +14,80 @@ const fragDepthRegex = /\bgl_FragDepth\b/;
12
14
  const discardRegex = /\bdiscard\b/;
13
15
 
14
16
  function getDepthOnlyShaderProgram(context, shaderProgram) {
15
- let shader = context.shaderCache.getDerivedShaderProgram(
17
+ const cachedShader = context.shaderCache.getDerivedShaderProgram(
16
18
  shaderProgram,
17
- "depthOnly"
19
+ "depthOnly",
18
20
  );
19
- if (!defined(shader)) {
20
- const attributeLocations = shaderProgram._attributeLocations;
21
- let fs = shaderProgram.fragmentShaderSource;
22
-
23
- let i;
24
- let writesDepthOrDiscards = false;
25
- const sources = fs.sources;
26
- let length = sources.length;
27
- for (i = 0; i < length; ++i) {
28
- if (fragDepthRegex.test(sources[i]) || discardRegex.test(sources[i])) {
29
- writesDepthOrDiscards = true;
30
- break;
31
- }
32
- }
21
+ if (defined(cachedShader)) {
22
+ return cachedShader;
23
+ }
33
24
 
34
- let usesLogDepth = false;
35
- const defines = fs.defines;
36
- length = defines.length;
37
- for (i = 0; i < length; ++i) {
38
- if (defines[i] === "LOG_DEPTH") {
39
- usesLogDepth = true;
40
- break;
41
- }
42
- }
25
+ let fs = shaderProgram.fragmentShaderSource;
43
26
 
44
- let source;
45
- if (!writesDepthOrDiscards && !usesLogDepth) {
46
- source =
47
- "void main() \n" +
48
- "{ \n" +
49
- " out_FragColor = vec4(1.0); \n" +
50
- "} \n";
51
- fs = new ShaderSource({
52
- sources: [source],
53
- });
54
- } else if (!writesDepthOrDiscards && usesLogDepth) {
55
- source =
56
- "void main() \n" +
57
- "{ \n" +
58
- " out_FragColor = vec4(1.0); \n" +
59
- " czm_writeLogDepth(); \n" +
60
- "} \n";
61
- fs = new ShaderSource({
62
- defines: ["LOG_DEPTH"],
63
- sources: [source],
64
- });
27
+ let writesDepthOrDiscards = false;
28
+ const sources = fs.sources;
29
+ for (let i = 0; i < sources.length; ++i) {
30
+ if (fragDepthRegex.test(sources[i]) || discardRegex.test(sources[i])) {
31
+ writesDepthOrDiscards = true;
32
+ break;
65
33
  }
34
+ }
66
35
 
67
- shader = context.shaderCache.createDerivedShaderProgram(
68
- shaderProgram,
69
- "depthOnly",
70
- {
71
- vertexShaderSource: shaderProgram.vertexShaderSource,
72
- fragmentShaderSource: fs,
73
- attributeLocations: attributeLocations,
74
- }
75
- );
36
+ const usesLogDepth = fs.defines.indexOf("LOG_DEPTH") >= 0;
37
+
38
+ if (!writesDepthOrDiscards && !usesLogDepth) {
39
+ const source = `void main()
40
+ {
41
+ out_FragColor = vec4(1.0);
42
+ }
43
+ `;
44
+ fs = new ShaderSource({
45
+ sources: [source],
46
+ });
47
+ } else if (!writesDepthOrDiscards && usesLogDepth) {
48
+ const source = `void main()
49
+ {
50
+ out_FragColor = vec4(1.0);
51
+ czm_writeLogDepth();
52
+ }
53
+ `;
54
+ fs = new ShaderSource({
55
+ defines: ["LOG_DEPTH"],
56
+ sources: [source],
57
+ });
76
58
  }
77
59
 
78
- return shader;
60
+ return context.shaderCache.createDerivedShaderProgram(
61
+ shaderProgram,
62
+ "depthOnly",
63
+ {
64
+ vertexShaderSource: shaderProgram.vertexShaderSource,
65
+ fragmentShaderSource: fs,
66
+ attributeLocations: shaderProgram._attributeLocations,
67
+ },
68
+ );
79
69
  }
80
70
 
81
71
  function getDepthOnlyRenderState(scene, renderState) {
82
72
  const cache = scene._depthOnlyRenderStateCache;
83
- let depthOnlyState = cache[renderState.id];
84
- if (!defined(depthOnlyState)) {
85
- const rs = RenderState.getState(renderState);
86
- rs.depthMask = true;
87
- rs.colorMask = {
88
- red: false,
89
- green: false,
90
- blue: false,
91
- alpha: false,
92
- };
93
-
94
- depthOnlyState = RenderState.fromCache(rs);
95
- cache[renderState.id] = depthOnlyState;
73
+
74
+ const cachedDepthOnlyState = cache[renderState.id];
75
+ if (defined(cachedDepthOnlyState)) {
76
+ return cachedDepthOnlyState;
96
77
  }
97
78
 
79
+ const rs = RenderState.getState(renderState);
80
+ rs.depthMask = true;
81
+ rs.colorMask = {
82
+ red: false,
83
+ green: false,
84
+ blue: false,
85
+ alpha: false,
86
+ };
87
+
88
+ const depthOnlyState = RenderState.fromCache(rs);
89
+ cache[renderState.id] = depthOnlyState;
90
+
98
91
  return depthOnlyState;
99
92
  }
100
93
 
@@ -102,7 +95,7 @@ DerivedCommand.createDepthOnlyDerivedCommand = function (
102
95
  scene,
103
96
  command,
104
97
  context,
105
- result
98
+ result,
106
99
  ) {
107
100
  // For a depth only pass, we bind a framebuffer with only a depth attachment (no color attachments),
108
101
  // do not write color, and write depth. If the fragment shader doesn't modify the fragment depth
@@ -113,26 +106,22 @@ DerivedCommand.createDepthOnlyDerivedCommand = function (
113
106
  result = {};
114
107
  }
115
108
 
116
- let shader;
117
- let renderState;
118
- if (defined(result.depthOnlyCommand)) {
119
- shader = result.depthOnlyCommand.shaderProgram;
120
- renderState = result.depthOnlyCommand.renderState;
121
- }
109
+ const shader = result.depthOnlyCommand?.shaderProgram;
110
+ const renderState = result.depthOnlyCommand?.renderState;
122
111
 
123
112
  result.depthOnlyCommand = DrawCommand.shallowClone(
124
113
  command,
125
- result.depthOnlyCommand
114
+ result.depthOnlyCommand,
126
115
  );
127
116
 
128
117
  if (!defined(shader) || result.shaderProgramId !== command.shaderProgram.id) {
129
118
  result.depthOnlyCommand.shaderProgram = getDepthOnlyShaderProgram(
130
119
  context,
131
- command.shaderProgram
120
+ command.shaderProgram,
132
121
  );
133
122
  result.depthOnlyCommand.renderState = getDepthOnlyRenderState(
134
123
  scene,
135
- command.renderState
124
+ command.renderState,
136
125
  );
137
126
  result.shaderProgramId = command.shaderProgram.id;
138
127
  } else {
@@ -154,91 +143,88 @@ function getLogDepthShaderProgram(context, shaderProgram) {
154
143
  return shaderProgram;
155
144
  }
156
145
 
157
- let shader = context.shaderCache.getDerivedShaderProgram(
146
+ const cachedShader = context.shaderCache.getDerivedShaderProgram(
158
147
  shaderProgram,
159
- "logDepth"
148
+ "logDepth",
160
149
  );
161
- if (!defined(shader)) {
162
- const attributeLocations = shaderProgram._attributeLocations;
163
- const vs = shaderProgram.vertexShaderSource.clone();
164
- const fs = shaderProgram.fragmentShaderSource.clone();
165
-
166
- vs.defines = defined(vs.defines) ? vs.defines.slice(0) : [];
167
- vs.defines.push("LOG_DEPTH");
168
- fs.defines = defined(fs.defines) ? fs.defines.slice(0) : [];
169
- fs.defines.push("LOG_DEPTH");
170
-
171
- let i;
172
- let logMain;
173
- let writesLogDepth = false;
174
- let sources = vs.sources;
175
- let length = sources.length;
176
- for (i = 0; i < length; ++i) {
177
- if (vertexlogDepthRegex.test(sources[i])) {
178
- writesLogDepth = true;
179
- break;
180
- }
181
- }
150
+ if (defined(cachedShader)) {
151
+ return cachedShader;
152
+ }
182
153
 
183
- if (!writesLogDepth) {
184
- for (i = 0; i < length; ++i) {
185
- sources[i] = ShaderSource.replaceMain(sources[i], "czm_log_depth_main");
186
- }
187
-
188
- logMain =
189
- "\n\n" +
190
- "void main() \n" +
191
- "{ \n" +
192
- " czm_log_depth_main(); \n" +
193
- " czm_vertexLogDepth(); \n" +
194
- "} \n";
195
- sources.push(logMain);
196
- }
154
+ const attributeLocations = shaderProgram._attributeLocations;
155
+ const vs = shaderProgram.vertexShaderSource.clone();
156
+ const fs = shaderProgram.fragmentShaderSource.clone();
197
157
 
198
- sources = fs.sources;
199
- length = sources.length;
158
+ vs.defines = defined(vs.defines) ? vs.defines.slice(0) : [];
159
+ vs.defines.push("LOG_DEPTH");
160
+ fs.defines = defined(fs.defines) ? fs.defines.slice(0) : [];
161
+ fs.defines.push("LOG_DEPTH");
200
162
 
201
- writesLogDepth = false;
202
- for (i = 0; i < length; ++i) {
203
- if (writeLogDepthRegex.test(sources[i])) {
204
- writesLogDepth = true;
205
- }
206
- }
207
- // This define indicates that a log depth value is written by the shader but doesn't use czm_writeLogDepth.
208
- if (fs.defines.indexOf("LOG_DEPTH_WRITE") !== -1) {
163
+ let writesLogDepth = false;
164
+ let sources = vs.sources;
165
+ for (let i = 0; i < sources.length; ++i) {
166
+ if (vertexlogDepthRegex.test(sources[i])) {
209
167
  writesLogDepth = true;
168
+ break;
210
169
  }
170
+ }
211
171
 
212
- let logSource = "";
172
+ if (!writesLogDepth) {
173
+ for (let i = 0; i < sources.length; ++i) {
174
+ sources[i] = ShaderSource.replaceMain(sources[i], "czm_log_depth_main");
175
+ }
176
+
177
+ const logMain = `
213
178
 
214
- if (!writesLogDepth) {
215
- for (i = 0; i < length; i++) {
216
- sources[i] = ShaderSource.replaceMain(sources[i], "czm_log_depth_main");
217
- }
179
+ void main()
180
+ {
181
+ czm_log_depth_main();
182
+ czm_vertexLogDepth();
183
+ }
184
+ `;
185
+ sources.push(logMain);
186
+ }
218
187
 
219
- logSource +=
220
- "\n" +
221
- "void main() \n" +
222
- "{ \n" +
223
- " czm_log_depth_main(); \n" +
224
- " czm_writeLogDepth(); \n" +
225
- "} \n";
188
+ sources = fs.sources;
189
+
190
+ writesLogDepth = false;
191
+ for (let i = 0; i < sources.length; ++i) {
192
+ if (writeLogDepthRegex.test(sources[i])) {
193
+ writesLogDepth = true;
226
194
  }
195
+ }
196
+ // This define indicates that a log depth value is written by the shader but doesn't use czm_writeLogDepth.
197
+ if (fs.defines.indexOf("LOG_DEPTH_WRITE") !== -1) {
198
+ writesLogDepth = true;
199
+ }
227
200
 
228
- sources.push(logSource);
201
+ let logSource = "";
229
202
 
230
- shader = context.shaderCache.createDerivedShaderProgram(
231
- shaderProgram,
232
- "logDepth",
233
- {
234
- vertexShaderSource: vs,
235
- fragmentShaderSource: fs,
236
- attributeLocations: attributeLocations,
237
- }
238
- );
203
+ if (!writesLogDepth) {
204
+ for (let i = 0; i < sources.length; i++) {
205
+ sources[i] = ShaderSource.replaceMain(sources[i], "czm_log_depth_main");
206
+ }
207
+
208
+ logSource = `
209
+ void main()
210
+ {
211
+ czm_log_depth_main();
212
+ czm_writeLogDepth();
213
+ }
214
+ `;
239
215
  }
240
216
 
241
- return shader;
217
+ sources.push(logSource);
218
+
219
+ return context.shaderCache.createDerivedShaderProgram(
220
+ shaderProgram,
221
+ "logDepth",
222
+ {
223
+ vertexShaderSource: vs,
224
+ fragmentShaderSource: fs,
225
+ attributeLocations: attributeLocations,
226
+ },
227
+ );
242
228
  }
243
229
 
244
230
  DerivedCommand.createLogDepthCommand = function (command, context, result) {
@@ -246,17 +232,14 @@ DerivedCommand.createLogDepthCommand = function (command, context, result) {
246
232
  result = {};
247
233
  }
248
234
 
249
- let shader;
250
- if (defined(result.command)) {
251
- shader = result.command.shaderProgram;
252
- }
235
+ const shader = result.command?.shaderProgram;
253
236
 
254
237
  result.command = DrawCommand.shallowClone(command, result.command);
255
238
 
256
239
  if (!defined(shader) || result.shaderProgramId !== command.shaderProgram.id) {
257
240
  result.command.shaderProgram = getLogDepthShaderProgram(
258
241
  context,
259
- command.shaderProgram
242
+ command.shaderProgram,
260
243
  );
261
244
  result.shaderProgramId = command.shaderProgram.id;
262
245
  } else {
@@ -267,24 +250,20 @@ DerivedCommand.createLogDepthCommand = function (command, context, result) {
267
250
  };
268
251
 
269
252
  function getPickShaderProgram(context, shaderProgram, pickId) {
270
- let shader = context.shaderCache.getDerivedShaderProgram(
253
+ const cachedShader = context.shaderCache.getDerivedShaderProgram(
271
254
  shaderProgram,
272
- "pick"
255
+ "pick",
273
256
  );
274
- if (!defined(shader)) {
275
- const attributeLocations = shaderProgram._attributeLocations;
276
- let fs = shaderProgram.fragmentShaderSource;
257
+ if (defined(cachedShader)) {
258
+ return cachedShader;
259
+ }
277
260
 
278
- const sources = fs.sources;
279
- const length = sources.length;
261
+ const attributeLocations = shaderProgram._attributeLocations;
262
+ const { sources, defines } = shaderProgram.fragmentShaderSource;
280
263
 
281
- const hasFragData = sources.some((source) =>
282
- source.includes("out_FragData")
283
- );
284
- const outputColorVariable = hasFragData
285
- ? "out_FragData_0"
286
- : "out_FragColor";
287
- const newMain = `void main ()
264
+ const hasFragData = sources.some((source) => source.includes("out_FragData"));
265
+ const outputColorVariable = hasFragData ? "out_FragData_0" : "out_FragColor";
266
+ const newMain = `void main ()
288
267
  {
289
268
  czm_non_pick_main();
290
269
  if (${outputColorVariable}.a == 0.0) {
@@ -293,47 +272,42 @@ function getPickShaderProgram(context, shaderProgram, pickId) {
293
272
  ${outputColorVariable} = ${pickId};
294
273
  } `;
295
274
 
296
- const newSources = new Array(length + 1);
297
- for (let i = 0; i < length; ++i) {
298
- newSources[i] = ShaderSource.replaceMain(sources[i], "czm_non_pick_main");
299
- }
300
- newSources[length] = newMain;
301
- fs = new ShaderSource({
302
- sources: newSources,
303
- defines: fs.defines,
304
- });
305
- shader = context.shaderCache.createDerivedShaderProgram(
306
- shaderProgram,
307
- "pick",
308
- {
309
- vertexShaderSource: shaderProgram.vertexShaderSource,
310
- fragmentShaderSource: fs,
311
- attributeLocations: attributeLocations,
312
- }
313
- );
275
+ const length = sources.length;
276
+ const newSources = new Array(length + 1);
277
+ for (let i = 0; i < length; ++i) {
278
+ newSources[i] = ShaderSource.replaceMain(sources[i], "czm_non_pick_main");
314
279
  }
315
-
316
- return shader;
280
+ newSources[length] = newMain;
281
+ const fragmentShaderSource = new ShaderSource({
282
+ sources: newSources,
283
+ defines: defines,
284
+ });
285
+ return context.shaderCache.createDerivedShaderProgram(shaderProgram, "pick", {
286
+ vertexShaderSource: shaderProgram.vertexShaderSource,
287
+ fragmentShaderSource: fragmentShaderSource,
288
+ attributeLocations: attributeLocations,
289
+ });
317
290
  }
318
291
 
319
292
  function getPickRenderState(scene, renderState) {
320
293
  const cache = scene.picking.pickRenderStateCache;
321
- let pickState = cache[renderState.id];
322
- if (!defined(pickState)) {
323
- const rs = RenderState.getState(renderState);
324
- rs.blending.enabled = false;
325
-
326
- // Turns on depth writing for opaque and translucent passes
327
- // Overlapping translucent geometry on the globe surface may exhibit z-fighting
328
- // during the pick pass which may not match the rendered scene. Once
329
- // terrain is on by default and ground primitives are used instead
330
- // this will become less of a problem.
331
- rs.depthMask = true;
332
-
333
- pickState = RenderState.fromCache(rs);
334
- cache[renderState.id] = pickState;
294
+ const cachedPickState = cache[renderState.id];
295
+ if (defined(cachedPickState)) {
296
+ return cachedPickState;
335
297
  }
336
298
 
299
+ const rs = RenderState.getState(renderState);
300
+ rs.blending.enabled = false;
301
+
302
+ // Turns on depth writing for opaque and translucent passes
303
+ // Overlapping translucent geometry on the globe surface may exhibit z-fighting
304
+ // during the pick pass which may not match the rendered scene. Once
305
+ // terrain is on by default and ground primitives are used instead
306
+ // this will become less of a problem.
307
+ rs.depthMask = true;
308
+
309
+ const pickState = RenderState.fromCache(rs);
310
+ cache[renderState.id] = pickState;
337
311
  return pickState;
338
312
  }
339
313
 
@@ -341,18 +315,14 @@ DerivedCommand.createPickDerivedCommand = function (
341
315
  scene,
342
316
  command,
343
317
  context,
344
- result
318
+ result,
345
319
  ) {
346
320
  if (!defined(result)) {
347
321
  result = {};
348
322
  }
349
323
 
350
- let shader;
351
- let renderState;
352
- if (defined(result.pickCommand)) {
353
- shader = result.pickCommand.shaderProgram;
354
- renderState = result.pickCommand.renderState;
355
- }
324
+ const shader = result.pickCommand?.shaderProgram;
325
+ const renderState = result.pickCommand?.renderState;
356
326
 
357
327
  result.pickCommand = DrawCommand.shallowClone(command, result.pickCommand);
358
328
 
@@ -360,11 +330,11 @@ DerivedCommand.createPickDerivedCommand = function (
360
330
  result.pickCommand.shaderProgram = getPickShaderProgram(
361
331
  context,
362
332
  command.shaderProgram,
363
- command.pickId
333
+ command.pickId,
364
334
  );
365
335
  result.pickCommand.renderState = getPickRenderState(
366
336
  scene,
367
- command.renderState
337
+ command.renderState,
368
338
  );
369
339
  result.shaderProgramId = command.shaderProgram.id;
370
340
  } else {
@@ -375,33 +345,250 @@ DerivedCommand.createPickDerivedCommand = function (
375
345
  return result;
376
346
  };
377
347
 
348
+ /**
349
+ * Replaces the value of the specified 'define' directive identifier
350
+ * with the given value.
351
+ *
352
+ * The given defines are the parts of the define directives that are
353
+ * stored in the `ShaderSource`. For example, the defines may be
354
+ * `["EXAMPLE", "EXAMPLE_VALUE 123"]`
355
+ *
356
+ * Calling `replaceDefine(defines, "EXAMPLE", 999)` will result in
357
+ * the defines being
358
+ * `["EXAMPLE 999", "EXAMPLE_VALUE 123"]`
359
+ *
360
+ * @param {string[]} defines The define directive identifiers
361
+ * @param {string} defineName The name (identifier) of the define directive
362
+ * @param {any} newDefineValue The new value whose string representation
363
+ * will become the token string for the define directive
364
+ * @private
365
+ */
366
+ function replaceDefine(defines, defineName, newDefineValue) {
367
+ const n = defines.length;
368
+ for (let i = 0; i < n; i++) {
369
+ const define = defines[i];
370
+ const tokens = define.trimStart().split(/\s+/);
371
+ if (tokens[0] === defineName) {
372
+ defines[i] = `${defineName} ${newDefineValue}`;
373
+ }
374
+ }
375
+ }
376
+
377
+ /**
378
+ * Returns the component count for the given class property, or
379
+ * its array length if it is an array.
380
+ *
381
+ * This will be
382
+ * `[1, 2, 3, 4]` for `[SCALAR, VEC2, VEC3, VEC4`] types,
383
+ * or the array length if it is an array.
384
+ *
385
+ * @param {MetadataClassProperty} classProperty The class property
386
+ * @returns {number} The component count
387
+ * @private
388
+ */
389
+ function getComponentCount(classProperty) {
390
+ if (!classProperty.isArray) {
391
+ return MetadataType.getComponentCount(classProperty.type);
392
+ }
393
+ return classProperty.arrayLength;
394
+ }
395
+
396
+ /**
397
+ * Returns the type that the given class property has in a GLSL shader.
398
+ *
399
+ * It returns the same string as `PropertyTextureProperty.prototype.getGlslType`
400
+ * for a property texture property with the given class property
401
+ *
402
+ * @param {MetadataClassProperty} classProperty The class property
403
+ * @returns {string} The GLSL shader type string for the property
404
+ */
405
+ function getGlslType(classProperty) {
406
+ const componentCount = getComponentCount(classProperty);
407
+ if (classProperty.normalized) {
408
+ if (componentCount === 1) {
409
+ return "float";
410
+ }
411
+ return `vec${componentCount}`;
412
+ }
413
+ if (componentCount === 1) {
414
+ return "int";
415
+ }
416
+ return `ivec${componentCount}`;
417
+ }
418
+
419
+ /**
420
+ * Creates a new `ShaderProgram` from the given input that renders metadata
421
+ * values into the frame buffer, according to the given picked metadata info.
422
+ *
423
+ * This will update the `defines` of the fragment shader of the given shader
424
+ * program, by setting `METADATA_PICKING_ENABLED`, and updating the
425
+ * `METADATA_PICKING_VALUE_*` defines so that they reflect the components
426
+ * of the metadata that should be written into the RGBA (vec4) that
427
+ * ends up as the 'color' in the frame buffer.
428
+ *
429
+ * The RGBA values will eventually be converted back into an actual metadata
430
+ * value in `Picking.js`, by calling `MetadataPicking.decodeMetadataValues`.
431
+ *
432
+ * @param {Context} context The context
433
+ * @param {ShaderProgram} shaderProgram The shader program
434
+ * @param {PickedMetadataInfo} pickedMetadataInfo The picked metadata info
435
+ * @returns {ShaderProgram} The new shader program
436
+ * @private
437
+ */
438
+ function getPickMetadataShaderProgram(
439
+ context,
440
+ shaderProgram,
441
+ pickedMetadataInfo,
442
+ ) {
443
+ const schemaId = pickedMetadataInfo.schemaId;
444
+ const className = pickedMetadataInfo.className;
445
+ const propertyName = pickedMetadataInfo.propertyName;
446
+ const keyword = `pickMetadata-${schemaId}-${className}-${propertyName}`;
447
+ const shader = context.shaderCache.getDerivedShaderProgram(
448
+ shaderProgram,
449
+ keyword,
450
+ );
451
+ if (defined(shader)) {
452
+ return shader;
453
+ }
454
+
455
+ const classProperty = pickedMetadataInfo.classProperty;
456
+ const glslType = getGlslType(classProperty);
457
+
458
+ // Define the components that will go into the output `metadataValues`.
459
+ // By default, all of them are 0.0.
460
+ const sourceValueStrings = ["0.0", "0.0", "0.0", "0.0"];
461
+ const componentCount = getComponentCount(classProperty);
462
+ if (componentCount === 1) {
463
+ // When the property is a scalar, store its value directly
464
+ // in `metadataValues.x`
465
+ sourceValueStrings[0] = `float(value)`;
466
+ } else {
467
+ // When the property is an array, store the array elements
468
+ // in `metadataValues.x/y/z/w`
469
+ const components = ["x", "y", "z", "w"];
470
+ for (let i = 0; i < componentCount; i++) {
471
+ const component = components[i];
472
+ const valueString = `value.${component}`;
473
+ sourceValueStrings[i] = `float(${valueString})`;
474
+ }
475
+ }
476
+
477
+ // Make sure that the `metadataValues` components are all in
478
+ // the range [0, 1] (which will result in RGBA components
479
+ // in [0, 255] during rendering)
480
+ if (!classProperty.normalized) {
481
+ for (let i = 0; i < componentCount; i++) {
482
+ sourceValueStrings[i] += " / 255.0";
483
+ }
484
+ }
485
+
486
+ const newDefines = shaderProgram.fragmentShaderSource.defines.slice();
487
+ newDefines.push(MetadataPickingPipelineStage.METADATA_PICKING_ENABLED);
488
+
489
+ // Replace the defines of the shader, using the type, property
490
+ // access, and value components that have been determined
491
+ replaceDefine(
492
+ newDefines,
493
+ MetadataPickingPipelineStage.METADATA_PICKING_VALUE_TYPE,
494
+ glslType,
495
+ );
496
+ replaceDefine(
497
+ newDefines,
498
+ MetadataPickingPipelineStage.METADATA_PICKING_VALUE_STRING,
499
+ `metadata.${propertyName}`,
500
+ );
501
+ replaceDefine(
502
+ newDefines,
503
+ MetadataPickingPipelineStage.METADATA_PICKING_VALUE_COMPONENT_X,
504
+ sourceValueStrings[0],
505
+ );
506
+ replaceDefine(
507
+ newDefines,
508
+ MetadataPickingPipelineStage.METADATA_PICKING_VALUE_COMPONENT_Y,
509
+ sourceValueStrings[1],
510
+ );
511
+ replaceDefine(
512
+ newDefines,
513
+ MetadataPickingPipelineStage.METADATA_PICKING_VALUE_COMPONENT_Z,
514
+ sourceValueStrings[2],
515
+ );
516
+ replaceDefine(
517
+ newDefines,
518
+ MetadataPickingPipelineStage.METADATA_PICKING_VALUE_COMPONENT_W,
519
+ sourceValueStrings[3],
520
+ );
521
+
522
+ const newFragmentShaderSource = new ShaderSource({
523
+ sources: shaderProgram.fragmentShaderSource.sources,
524
+ defines: newDefines,
525
+ });
526
+ const newShader = context.shaderCache.createDerivedShaderProgram(
527
+ shaderProgram,
528
+ keyword,
529
+ {
530
+ vertexShaderSource: shaderProgram.vertexShaderSource,
531
+ fragmentShaderSource: newFragmentShaderSource,
532
+ attributeLocations: shaderProgram._attributeLocations,
533
+ },
534
+ );
535
+ return newShader;
536
+ }
537
+
538
+ /**
539
+ * @private
540
+ */
541
+ DerivedCommand.createPickMetadataDerivedCommand = function (
542
+ scene,
543
+ command,
544
+ context,
545
+ result,
546
+ ) {
547
+ if (!defined(result)) {
548
+ result = {};
549
+ }
550
+ result.pickMetadataCommand = DrawCommand.shallowClone(
551
+ command,
552
+ result.pickMetadataCommand,
553
+ );
554
+
555
+ result.pickMetadataCommand.shaderProgram = getPickMetadataShaderProgram(
556
+ context,
557
+ command.shaderProgram,
558
+ command.pickedMetadataInfo,
559
+ );
560
+ result.pickMetadataCommand.renderState = getPickRenderState(
561
+ scene,
562
+ command.renderState,
563
+ );
564
+ result.shaderProgramId = command.shaderProgram.id;
565
+
566
+ return result;
567
+ };
568
+
378
569
  function getHdrShaderProgram(context, shaderProgram) {
379
- let shader = context.shaderCache.getDerivedShaderProgram(
570
+ const cachedShader = context.shaderCache.getDerivedShaderProgram(
380
571
  shaderProgram,
381
- "HDR"
572
+ "HDR",
382
573
  );
383
- if (!defined(shader)) {
384
- const attributeLocations = shaderProgram._attributeLocations;
385
- const vs = shaderProgram.vertexShaderSource.clone();
386
- const fs = shaderProgram.fragmentShaderSource.clone();
387
-
388
- vs.defines = defined(vs.defines) ? vs.defines.slice(0) : [];
389
- vs.defines.push("HDR");
390
- fs.defines = defined(fs.defines) ? fs.defines.slice(0) : [];
391
- fs.defines.push("HDR");
392
-
393
- shader = context.shaderCache.createDerivedShaderProgram(
394
- shaderProgram,
395
- "HDR",
396
- {
397
- vertexShaderSource: vs,
398
- fragmentShaderSource: fs,
399
- attributeLocations: attributeLocations,
400
- }
401
- );
574
+ if (defined(cachedShader)) {
575
+ return cachedShader;
402
576
  }
403
577
 
404
- return shader;
578
+ const attributeLocations = shaderProgram._attributeLocations;
579
+ const vs = shaderProgram.vertexShaderSource.clone();
580
+ const fs = shaderProgram.fragmentShaderSource.clone();
581
+
582
+ vs.defines = defined(vs.defines) ? vs.defines.slice(0) : [];
583
+ vs.defines.push("HDR");
584
+ fs.defines = defined(fs.defines) ? fs.defines.slice(0) : [];
585
+ fs.defines.push("HDR");
586
+
587
+ return context.shaderCache.createDerivedShaderProgram(shaderProgram, "HDR", {
588
+ vertexShaderSource: vs,
589
+ fragmentShaderSource: fs,
590
+ attributeLocations: attributeLocations,
591
+ });
405
592
  }
406
593
 
407
594
  DerivedCommand.createHdrCommand = function (command, context, result) {
@@ -409,17 +596,14 @@ DerivedCommand.createHdrCommand = function (command, context, result) {
409
596
  result = {};
410
597
  }
411
598
 
412
- let shader;
413
- if (defined(result.command)) {
414
- shader = result.command.shaderProgram;
415
- }
599
+ const shader = result.command?.shaderProgram;
416
600
 
417
601
  result.command = DrawCommand.shallowClone(command, result.command);
418
602
 
419
603
  if (!defined(shader) || result.shaderProgramId !== command.shaderProgram.id) {
420
604
  result.command.shaderProgram = getHdrShaderProgram(
421
605
  context,
422
- command.shaderProgram
606
+ command.shaderProgram,
423
607
  );
424
608
  result.shaderProgramId = command.shaderProgram.id;
425
609
  } else {