@cesium/engine 10.1.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (845) hide show
  1. package/Build/Workers/{chunk-EB7PNZTK.js → chunk-26GA3JAM.js} +6 -5
  2. package/Build/Workers/{chunk-RZLZWKFN.js → chunk-27HUZ7SA.js} +4 -4
  3. package/Build/Workers/{chunk-A5CODJ4M.js → chunk-2ZGOQXYU.js} +6 -6
  4. package/Build/Workers/{chunk-TF776XCO.js → chunk-3Q2L65QU.js} +7 -7
  5. package/Build/Workers/{chunk-NVOABL76.js → chunk-472HQ3EH.js} +5 -5
  6. package/Build/Workers/{chunk-QX5XS4LC.js → chunk-5ODQSF26.js} +2 -2
  7. package/Build/Workers/{chunk-4YSNMHZ4.js → chunk-5OOFQLKF.js} +6 -6
  8. package/Build/Workers/{chunk-OXALEQPI.js → chunk-5PTXS2GO.js} +49 -23
  9. package/Build/Workers/{chunk-T77JILCU.js → chunk-6CHGCNMW.js} +2 -2
  10. package/Build/Workers/{chunk-FEVVHITK.js → chunk-76BYBWHP.js} +4 -4
  11. package/Build/Workers/{chunk-65MZOUNU.js → chunk-7BMOHCPM.js} +13 -13
  12. package/Build/Workers/{chunk-VE7BFUIX.js → chunk-7JO7GPJN.js} +1 -1
  13. package/Build/Workers/{chunk-5BLJ5ZM6.js → chunk-7KTQP4VB.js} +5 -5
  14. package/Build/Workers/{chunk-G5V4GPZE.js → chunk-7O373FFS.js} +8 -34
  15. package/Build/Workers/{chunk-S3PI2KFM.js → chunk-AD63PIY6.js} +2 -2
  16. package/Build/Workers/{chunk-6D66DPRV.js → chunk-BHQJ2NT7.js} +6 -6
  17. package/Build/Workers/{chunk-I2RC4XVN.js → chunk-C6YYBQXW.js} +4 -4
  18. package/Build/Workers/{chunk-X2ZQ7RJR.js → chunk-CKY7HOHV.js} +9 -9
  19. package/Build/Workers/{chunk-TO2PVHKI.js → chunk-DHYHSFFJ.js} +2 -2
  20. package/Build/Workers/{chunk-R6B7UCQB.js → chunk-DI5NGJUP.js} +2 -2
  21. package/Build/Workers/{chunk-X23FRWHJ.js → chunk-E27BLMDD.js} +7 -9
  22. package/Build/Workers/{chunk-N4QEHO3U.js → chunk-E63IIM5T.js} +1 -1
  23. package/Build/Workers/{chunk-BY3E4ONI.js → chunk-E6V6SQZW.js} +6 -6
  24. package/Build/Workers/{chunk-LSSWVB2X.js → chunk-EJZTDTUH.js} +4 -4
  25. package/Build/Workers/{chunk-XLTOBCDI.js → chunk-FDOV2LBJ.js} +7 -7
  26. package/Build/Workers/{chunk-ACRTCBN5.js → chunk-FIGIZHAQ.js} +11 -11
  27. package/Build/Workers/{chunk-4RMIRG6T.js → chunk-GESF4OXQ.js} +2 -2
  28. package/Build/Workers/{chunk-PNFHVBSF.js → chunk-GGZJN2TI.js} +16 -15
  29. package/Build/Workers/{chunk-KV4EQHK4.js → chunk-GNBFYG7F.js} +83 -79
  30. package/Build/Workers/{chunk-FOZWUH4T.js → chunk-GWCFU2SA.js} +7 -7
  31. package/Build/Workers/{chunk-Q55ECN3Y.js → chunk-I2ITFFPX.js} +1 -1
  32. package/Build/Workers/{chunk-XQI7XZHX.js → chunk-IBLIYJZR.js} +6 -6
  33. package/Build/Workers/{chunk-D2U4RI64.js → chunk-JW4FOI6M.js} +7 -7
  34. package/Build/Workers/{chunk-2J3JKXCP.js → chunk-K4GQUNB5.js} +9 -5
  35. package/Build/Workers/{chunk-POSRARY7.js → chunk-M3GMB5OP.js} +10 -10
  36. package/Build/Workers/{chunk-OOK53QUQ.js → chunk-MXIZJAPH.js} +1 -1
  37. package/Build/Workers/{chunk-OWGTMVDB.js → chunk-N5KJGGCM.js} +18 -20
  38. package/Build/Workers/{chunk-J7MQUQJY.js → chunk-NGPPMXRM.js} +12 -7
  39. package/Build/Workers/{chunk-OOMCT7OL.js → chunk-O3E4OAOE.js} +13 -13
  40. package/Build/Workers/{chunk-C3Z23UUJ.js → chunk-PGRPDNHG.js} +19 -23
  41. package/Build/Workers/{chunk-4VFBBNQ3.js → chunk-PRGYLLJT.js} +1 -1
  42. package/Build/Workers/{chunk-XZZNKIEV.js → chunk-S6MRMMQU.js} +6 -6
  43. package/Build/Workers/{chunk-76BYYG7N.js → chunk-SMDOP47J.js} +10 -10
  44. package/Build/Workers/{chunk-ZU334IDQ.js → chunk-TGONEMZO.js} +11 -11
  45. package/Build/Workers/{chunk-VRZ46QZ5.js → chunk-TKVT5GQM.js} +13 -13
  46. package/Build/Workers/{chunk-FDCLACT5.js → chunk-U72QNFOJ.js} +15 -25
  47. package/Build/Workers/{chunk-F3NDOSTZ.js → chunk-VJZB3WAV.js} +7 -7
  48. package/Build/Workers/{chunk-GPJR7MPQ.js → chunk-VU2MNO7L.js} +7 -7
  49. package/Build/Workers/{chunk-R4OIEIPE.js → chunk-XY4BATBS.js} +4 -4
  50. package/Build/Workers/{chunk-T6LPN7RI.js → chunk-YFXQECWV.js} +5 -5
  51. package/Build/Workers/{chunk-UCIPJSZX.js → chunk-YSGTGQQO.js} +14 -14
  52. package/Build/Workers/{chunk-BGE4QVG7.js → chunk-YZ733KKS.js} +12 -12
  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 +26 -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 +28 -5
  97. package/Build/Workers/decodeI3S.js +10 -10
  98. package/Build/Workers/transcodeKTX2.js +19 -18
  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 +44 -44
  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 +11 -8
  122. package/Source/Core/ColorGeometryInstanceAttribute.js +1 -1
  123. package/Source/Core/ComponentDatatype.js +4 -4
  124. package/Source/Core/CompressedTextureBuffer.js +13 -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 +45 -45
  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 +54 -55
  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 +17 -16
  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 +14 -14
  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 +11 -18
  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 +4 -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 +7 -21
  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 +51 -51
  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 +3 -3
  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/CallbackProperty.js +8 -2
  284. package/Source/DataSources/Cesium3DTilesetGraphics.js +1 -1
  285. package/Source/DataSources/Cesium3DTilesetVisualizer.js +6 -6
  286. package/Source/DataSources/CheckerboardMaterialProperty.js +9 -3
  287. package/Source/DataSources/ColorMaterialProperty.js +8 -2
  288. package/Source/DataSources/CompositeEntityCollection.js +14 -15
  289. package/Source/DataSources/CompositeMaterialProperty.js +10 -11
  290. package/Source/DataSources/CompositePositionProperty.js +11 -6
  291. package/Source/DataSources/CompositeProperty.js +7 -7
  292. package/Source/DataSources/ConstantPositionProperty.js +9 -3
  293. package/Source/DataSources/CorridorGeometryUpdater.js +61 -56
  294. package/Source/DataSources/CorridorGraphics.js +6 -6
  295. package/Source/DataSources/CylinderGeometryUpdater.js +42 -40
  296. package/Source/DataSources/CylinderGraphics.js +4 -4
  297. package/Source/DataSources/CzmlDataSource.js +365 -368
  298. package/Source/DataSources/DataSourceCollection.js +1 -1
  299. package/Source/DataSources/DataSourceDisplay.js +23 -23
  300. package/Source/DataSources/DynamicGeometryBatch.js +2 -2
  301. package/Source/DataSources/DynamicGeometryUpdater.js +14 -18
  302. package/Source/DataSources/EllipseGeometryUpdater.js +67 -63
  303. package/Source/DataSources/EllipseGraphics.js +7 -7
  304. package/Source/DataSources/EllipsoidGeometryUpdater.js +88 -86
  305. package/Source/DataSources/EllipsoidGraphics.js +5 -5
  306. package/Source/DataSources/Entity.js +14 -14
  307. package/Source/DataSources/EntityCluster.js +29 -27
  308. package/Source/DataSources/EntityCollection.js +7 -7
  309. package/Source/DataSources/EntityView.js +23 -23
  310. package/Source/DataSources/GeoJsonDataSource.js +25 -25
  311. package/Source/DataSources/GeometryUpdater.js +9 -10
  312. package/Source/DataSources/GeometryUpdaterSet.js +3 -3
  313. package/Source/DataSources/GeometryVisualizer.js +65 -71
  314. package/Source/DataSources/GpxDataSource.js +10 -10
  315. package/Source/DataSources/GridMaterialProperty.js +12 -6
  316. package/Source/DataSources/GroundGeometryUpdater.js +6 -6
  317. package/Source/DataSources/ImageMaterialProperty.js +10 -3
  318. package/Source/DataSources/KmlDataSource.js +212 -212
  319. package/Source/DataSources/LabelGraphics.js +14 -14
  320. package/Source/DataSources/LabelVisualizer.js +24 -24
  321. package/Source/DataSources/MaterialProperty.js +7 -1
  322. package/Source/DataSources/ModelGraphics.js +37 -17
  323. package/Source/DataSources/ModelVisualizer.js +41 -32
  324. package/Source/DataSources/NodeTransformationProperty.js +10 -4
  325. package/Source/DataSources/PathGraphics.js +2 -2
  326. package/Source/DataSources/PathVisualizer.js +99 -35
  327. package/Source/DataSources/PlaneGeometryUpdater.js +38 -37
  328. package/Source/DataSources/PlaneGraphics.js +2 -2
  329. package/Source/DataSources/PointGraphics.js +8 -8
  330. package/Source/DataSources/PointVisualizer.js +29 -29
  331. package/Source/DataSources/PolygonGeometryUpdater.js +68 -64
  332. package/Source/DataSources/PolygonGraphics.js +9 -9
  333. package/Source/DataSources/PolylineArrowMaterialProperty.js +8 -2
  334. package/Source/DataSources/PolylineDashMaterialProperty.js +11 -5
  335. package/Source/DataSources/PolylineGeometryUpdater.js +39 -44
  336. package/Source/DataSources/PolylineGlowMaterialProperty.js +10 -4
  337. package/Source/DataSources/PolylineGraphics.js +4 -4
  338. package/Source/DataSources/PolylineOutlineMaterialProperty.js +10 -4
  339. package/Source/DataSources/PolylineVisualizer.js +39 -43
  340. package/Source/DataSources/PolylineVolumeGeometryUpdater.js +70 -68
  341. package/Source/DataSources/PolylineVolumeGraphics.js +2 -2
  342. package/Source/DataSources/PositionProperty.js +5 -4
  343. package/Source/DataSources/PositionPropertyArray.js +10 -4
  344. package/Source/DataSources/Property.js +2 -2
  345. package/Source/DataSources/PropertyArray.js +6 -6
  346. package/Source/DataSources/PropertyBag.js +10 -9
  347. package/Source/DataSources/RectangleGeometryUpdater.js +68 -63
  348. package/Source/DataSources/RectangleGraphics.js +6 -6
  349. package/Source/DataSources/ReferenceProperty.js +13 -7
  350. package/Source/DataSources/Rotation.js +2 -2
  351. package/Source/DataSources/SampledPositionProperty.js +13 -7
  352. package/Source/DataSources/SampledProperty.js +22 -20
  353. package/Source/DataSources/ScaledPositionProperty.js +8 -2
  354. package/Source/DataSources/StaticGeometryColorBatch.js +41 -41
  355. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +40 -40
  356. package/Source/DataSources/StaticGroundGeometryColorBatch.js +26 -27
  357. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +46 -44
  358. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +44 -43
  359. package/Source/DataSources/StaticOutlineGeometryBatch.js +28 -29
  360. package/Source/DataSources/StripeMaterialProperty.js +9 -3
  361. package/Source/DataSources/TerrainOffsetProperty.js +20 -11
  362. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +35 -31
  363. package/Source/DataSources/TimeIntervalCollectionProperty.js +6 -6
  364. package/Source/DataSources/VelocityOrientationProperty.js +9 -4
  365. package/Source/DataSources/VelocityVectorProperty.js +7 -9
  366. package/Source/DataSources/WallGeometryUpdater.js +25 -25
  367. package/Source/DataSources/WallGraphics.js +4 -4
  368. package/Source/DataSources/createPropertyDescriptor.js +3 -3
  369. package/Source/DataSources/exportKml.js +90 -86
  370. package/Source/DataSources/getElement.js +1 -1
  371. package/Source/DataSources/heightReferenceOnEntityPropertyChanged.js +4 -4
  372. package/Source/Renderer/AutomaticUniforms.js +3 -18
  373. package/Source/Renderer/Buffer.js +18 -18
  374. package/Source/Renderer/ClearCommand.js +1 -1
  375. package/Source/Renderer/ComputeEngine.js +1 -1
  376. package/Source/Renderer/Context.js +55 -40
  377. package/Source/Renderer/CubeMap.js +332 -354
  378. package/Source/Renderer/CubeMapFace.js +43 -65
  379. package/Source/Renderer/DrawCommand.js +50 -5
  380. package/Source/Renderer/Framebuffer.js +48 -49
  381. package/Source/Renderer/FramebufferManager.js +40 -34
  382. package/Source/Renderer/MultisampleFramebuffer.js +35 -14
  383. package/Source/Renderer/PixelDatatype.js +23 -0
  384. package/Source/Renderer/RenderState.js +36 -36
  385. package/Source/Renderer/Renderbuffer.js +3 -3
  386. package/Source/Renderer/Sampler.js +9 -15
  387. package/Source/Renderer/ShaderBuilder.js +8 -8
  388. package/Source/Renderer/ShaderCache.js +11 -15
  389. package/Source/Renderer/ShaderFunction.js +1 -1
  390. package/Source/Renderer/ShaderProgram.js +22 -15
  391. package/Source/Renderer/ShaderSource.js +40 -40
  392. package/Source/Renderer/Texture.js +455 -380
  393. package/Source/Renderer/UniformState.js +68 -80
  394. package/Source/Renderer/VertexArray.js +20 -20
  395. package/Source/Renderer/VertexArrayFacade.js +15 -16
  396. package/Source/Renderer/createUniform.js +1 -1
  397. package/Source/Renderer/createUniformArray.js +4 -4
  398. package/Source/Renderer/demodernizeShader.js +7 -5
  399. package/Source/Renderer/loadCubeMap.js +3 -8
  400. package/Source/Scene/ArcGisMapServerImageryProvider.js +39 -45
  401. package/Source/Scene/ArcGisMapService.js +4 -7
  402. package/Source/Scene/AutoExposure.js +4 -5
  403. package/Source/Scene/Axis.js +6 -6
  404. package/Source/Scene/B3dmParser.js +9 -9
  405. package/Source/Scene/BatchTable.js +7 -7
  406. package/Source/Scene/BatchTableHierarchy.js +62 -59
  407. package/Source/Scene/BatchTexture.js +2 -2
  408. package/Source/Scene/Billboard.js +45 -43
  409. package/Source/Scene/BillboardCollection.js +81 -83
  410. package/Source/Scene/BingMapsImageryProvider.js +13 -13
  411. package/Source/Scene/BoundingVolumeSemantics.js +10 -10
  412. package/Source/Scene/BoxEmitter.js +1 -1
  413. package/Source/Scene/BufferLoader.js +1 -1
  414. package/Source/Scene/Camera.js +161 -164
  415. package/Source/Scene/CameraEventAggregator.js +67 -23
  416. package/Source/Scene/CameraFlightPath.js +25 -25
  417. package/Source/Scene/Cesium3DTile.js +89 -95
  418. package/Source/Scene/Cesium3DTileBatchTable.js +61 -61
  419. package/Source/Scene/Cesium3DTileContentFactory.js +7 -7
  420. package/Source/Scene/Cesium3DTileFeature.js +1 -1
  421. package/Source/Scene/Cesium3DTileFeatureTable.js +8 -8
  422. package/Source/Scene/Cesium3DTileOptimizations.js +1 -1
  423. package/Source/Scene/Cesium3DTilePointFeature.js +11 -11
  424. package/Source/Scene/Cesium3DTileStyle.js +26 -24
  425. package/Source/Scene/Cesium3DTilesVoxelProvider.js +14 -20
  426. package/Source/Scene/Cesium3DTileset.js +81 -83
  427. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +8 -16
  428. package/Source/Scene/Cesium3DTilesetCache.js +2 -2
  429. package/Source/Scene/Cesium3DTilesetHeatmap.js +5 -5
  430. package/Source/Scene/Cesium3DTilesetMetadata.js +2 -2
  431. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +2 -2
  432. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +8 -12
  433. package/Source/Scene/Cesium3DTilesetStatistics.js +1 -1
  434. package/Source/Scene/Cesium3DTilesetTraversal.js +8 -10
  435. package/Source/Scene/ClassificationPrimitive.js +70 -69
  436. package/Source/Scene/ClippingPlaneCollection.js +39 -41
  437. package/Source/Scene/ClippingPolygon.js +8 -8
  438. package/Source/Scene/ClippingPolygonCollection.js +62 -63
  439. package/Source/Scene/CloudCollection.js +3 -10
  440. package/Source/Scene/Composite3DTileContent.js +6 -6
  441. package/Source/Scene/ConditionsExpression.js +5 -5
  442. package/Source/Scene/ContentMetadata.js +4 -4
  443. package/Source/Scene/CreditDisplay.js +8 -8
  444. package/Source/Scene/CumulusCloud.js +4 -4
  445. package/Source/Scene/DebugAppearance.js +2 -2
  446. package/Source/Scene/DebugCameraPrimitive.js +2 -2
  447. package/Source/Scene/DebugInspector.js +3 -3
  448. package/Source/Scene/DebugModelMatrixPrimitive.js +4 -4
  449. package/Source/Scene/DepthPlane.js +7 -7
  450. package/Source/Scene/DerivedCommand.js +422 -238
  451. package/Source/Scene/DiscardMissingTileImagePolicy.js +1 -1
  452. package/Source/Scene/DracoLoader.js +3 -3
  453. package/Source/Scene/EllipsoidPrimitive.js +7 -7
  454. package/Source/Scene/EllipsoidSurfaceAppearance.js +3 -3
  455. package/Source/Scene/Empty3DTileContent.js +1 -1
  456. package/Source/Scene/Expression.js +91 -91
  457. package/Source/Scene/Fog.js +8 -41
  458. package/Source/Scene/FrameRateMonitor.js +22 -22
  459. package/Source/Scene/FrameState.js +31 -0
  460. package/Source/Scene/Geometry3DTileContent.js +20 -20
  461. package/Source/Scene/GetFeatureInfoFormat.js +15 -14
  462. package/Source/Scene/Globe.js +33 -28
  463. package/Source/Scene/GlobeDepth.js +95 -66
  464. package/Source/Scene/GlobeSurfaceShaderSet.js +41 -34
  465. package/Source/Scene/GlobeSurfaceTile.js +33 -33
  466. package/Source/Scene/GlobeSurfaceTileProvider.js +132 -127
  467. package/Source/Scene/GlobeTranslucency.js +4 -4
  468. package/Source/Scene/GlobeTranslucencyFramebuffer.js +9 -9
  469. package/Source/Scene/GlobeTranslucencyState.js +53 -55
  470. package/Source/Scene/GltfBufferViewLoader.js +2 -2
  471. package/Source/Scene/GltfIndexBufferLoader.js +5 -5
  472. package/Source/Scene/GltfJsonLoader.js +2 -2
  473. package/Source/Scene/GltfLoader.js +177 -100
  474. package/Source/Scene/GltfStructuralMetadataLoader.js +9 -8
  475. package/Source/Scene/GltfTextureLoader.js +5 -5
  476. package/Source/Scene/GltfVertexBufferLoader.js +12 -13
  477. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +9 -9
  478. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +9 -9
  479. package/Source/Scene/GridImageryProvider.js +2 -2
  480. package/Source/Scene/GroundPolylinePrimitive.js +38 -39
  481. package/Source/Scene/GroundPrimitive.js +47 -45
  482. package/Source/Scene/GroupMetadata.js +4 -4
  483. package/Source/Scene/I3SDataProvider.js +12 -12
  484. package/Source/Scene/I3SDecoder.js +7 -8
  485. package/Source/Scene/I3SField.js +8 -8
  486. package/Source/Scene/I3SGeometry.js +14 -14
  487. package/Source/Scene/I3SLayer.js +26 -20
  488. package/Source/Scene/I3SNode.js +17 -17
  489. package/Source/Scene/I3SSublayer.js +4 -4
  490. package/Source/Scene/I3SSymbology.js +8 -8
  491. package/Source/Scene/I3dmParser.js +9 -9
  492. package/Source/Scene/ImageBasedLighting.js +58 -56
  493. package/Source/Scene/Imagery.js +3 -3
  494. package/Source/Scene/ImageryLayer.js +64 -66
  495. package/Source/Scene/ImageryLayerCollection.js +13 -15
  496. package/Source/Scene/ImageryLayerFeatureInfo.js +19 -20
  497. package/Source/Scene/ImageryProvider.js +1 -1
  498. package/Source/Scene/Implicit3DTileContent.js +34 -37
  499. package/Source/Scene/ImplicitAvailabilityBitstream.js +2 -2
  500. package/Source/Scene/ImplicitMetadataView.js +2 -2
  501. package/Source/Scene/ImplicitSubtree.js +29 -30
  502. package/Source/Scene/ImplicitSubtreeCache.js +1 -1
  503. package/Source/Scene/ImplicitSubtreeMetadata.js +5 -5
  504. package/Source/Scene/ImplicitTileCoordinates.js +11 -11
  505. package/Source/Scene/ImplicitTileset.js +2 -2
  506. package/Source/Scene/InvertClassification.js +7 -7
  507. package/Source/Scene/IonImageryProvider.js +6 -6
  508. package/Source/Scene/JobScheduler.js +4 -4
  509. package/Source/Scene/Label.js +31 -31
  510. package/Source/Scene/LabelCollection.js +17 -15
  511. package/Source/Scene/MapboxImageryProvider.js +3 -3
  512. package/Source/Scene/MapboxStyleImageryProvider.js +4 -4
  513. package/Source/Scene/Material.js +50 -29
  514. package/Source/Scene/MaterialAppearance.js +4 -4
  515. package/Source/Scene/Megatexture.js +21 -24
  516. package/Source/Scene/MetadataClassProperty.js +11 -11
  517. package/Source/Scene/MetadataComponentType.js +1 -1
  518. package/Source/Scene/MetadataEntity.js +8 -8
  519. package/Source/Scene/MetadataEnum.js +1 -1
  520. package/Source/Scene/MetadataPicking.js +305 -0
  521. package/Source/Scene/MetadataSchemaLoader.js +1 -1
  522. package/Source/Scene/MetadataTable.js +2 -2
  523. package/Source/Scene/MetadataTableProperty.js +22 -22
  524. package/Source/Scene/Model/AlphaPipelineStage.js +2 -2
  525. package/Source/Scene/Model/AtmospherePipelineStage.js +3 -3
  526. package/Source/Scene/Model/B3dmLoader.js +8 -8
  527. package/Source/Scene/Model/BatchTexturePipelineStage.js +2 -2
  528. package/Source/Scene/Model/CPUStylingPipelineStage.js +4 -4
  529. package/Source/Scene/Model/ClassificationModelDrawCommand.js +8 -8
  530. package/Source/Scene/Model/ClassificationPipelineStage.js +5 -5
  531. package/Source/Scene/Model/CustomShader.js +9 -9
  532. package/Source/Scene/Model/CustomShaderPipelineStage.js +37 -38
  533. package/Source/Scene/Model/DequantizationPipelineStage.js +5 -5
  534. package/Source/Scene/Model/Extensions/Gpm/AnchorPointDirect.js +61 -0
  535. package/Source/Scene/Model/Extensions/Gpm/AnchorPointIndirect.js +77 -0
  536. package/Source/Scene/Model/Extensions/Gpm/CorrelationGroup.js +81 -0
  537. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +248 -0
  538. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLocal.js +179 -0
  539. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +548 -0
  540. package/Source/Scene/Model/Extensions/Gpm/MeshPrimitiveGpmLocal.js +28 -0
  541. package/Source/Scene/Model/Extensions/Gpm/PpeMetadata.js +79 -0
  542. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +75 -0
  543. package/Source/Scene/Model/Extensions/Gpm/PpeTexture.js +127 -0
  544. package/Source/Scene/Model/Extensions/Gpm/Spdcf.js +103 -0
  545. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +30 -0
  546. package/Source/Scene/Model/FeatureIdPipelineStage.js +40 -40
  547. package/Source/Scene/Model/GeoJsonLoader.js +17 -17
  548. package/Source/Scene/Model/GeometryPipelineStage.js +23 -24
  549. package/Source/Scene/Model/I3dmLoader.js +36 -36
  550. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +22 -30
  551. package/Source/Scene/Model/InstancingPipelineStage.js +86 -86
  552. package/Source/Scene/Model/LightingPipelineStage.js +4 -4
  553. package/Source/Scene/Model/MaterialPipelineStage.js +78 -93
  554. package/Source/Scene/Model/MetadataPickingPipelineStage.js +96 -0
  555. package/Source/Scene/Model/MetadataPipelineStage.js +39 -47
  556. package/Source/Scene/Model/Model.js +134 -54
  557. package/Source/Scene/Model/Model3DTileContent.js +32 -13
  558. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  559. package/Source/Scene/Model/ModelAnimationCollection.js +9 -9
  560. package/Source/Scene/Model/ModelArticulation.js +2 -2
  561. package/Source/Scene/Model/ModelArticulationStage.js +4 -4
  562. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +11 -11
  563. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +6 -6
  564. package/Source/Scene/Model/ModelColorPipelineStage.js +12 -13
  565. package/Source/Scene/Model/ModelDrawCommand.js +5 -5
  566. package/Source/Scene/Model/{buildDrawCommand.js → ModelDrawCommands.js} +85 -28
  567. package/Source/Scene/Model/ModelFeatureTable.js +5 -5
  568. package/Source/Scene/Model/ModelMatrixUpdateStage.js +24 -12
  569. package/Source/Scene/Model/ModelRenderResources.js +1 -1
  570. package/Source/Scene/Model/ModelRuntimeNode.js +15 -15
  571. package/Source/Scene/Model/ModelRuntimePrimitive.js +8 -5
  572. package/Source/Scene/Model/ModelSceneGraph.js +42 -43
  573. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +4 -4
  574. package/Source/Scene/Model/ModelSkin.js +4 -4
  575. package/Source/Scene/Model/ModelSplitterPipelineStage.js +8 -9
  576. package/Source/Scene/Model/ModelUtility.js +5 -5
  577. package/Source/Scene/Model/MorphTargetsPipelineStage.js +18 -18
  578. package/Source/Scene/Model/NodeRenderResources.js +1 -1
  579. package/Source/Scene/Model/NodeStatisticsPipelineStage.js +1 -1
  580. package/Source/Scene/Model/PickingPipelineStage.js +5 -5
  581. package/Source/Scene/Model/PntsLoader.js +7 -7
  582. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +22 -23
  583. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +6 -6
  584. package/Source/Scene/Model/PrimitiveOutlinePipelineStage.js +7 -7
  585. package/Source/Scene/Model/PrimitiveRenderResources.js +3 -3
  586. package/Source/Scene/Model/PrimitiveStatisticsPipelineStage.js +1 -1
  587. package/Source/Scene/Model/SceneMode2DPipelineStage.js +23 -23
  588. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +10 -14
  589. package/Source/Scene/Model/SkinningPipelineStage.js +5 -5
  590. package/Source/Scene/Model/StyleCommandsNeeded.js +1 -1
  591. package/Source/Scene/Model/TextureManager.js +2 -2
  592. package/Source/Scene/Model/TextureUniform.js +3 -3
  593. package/Source/Scene/Model/TilesetPipelineStage.js +2 -2
  594. package/Source/Scene/Model/VerticalExaggerationPipelineStage.js +4 -4
  595. package/Source/Scene/Model/WireframePipelineStage.js +7 -7
  596. package/Source/Scene/Model/pickModel.js +26 -26
  597. package/Source/Scene/ModelComponents.js +13 -4
  598. package/Source/Scene/Moon.js +6 -5
  599. package/Source/Scene/Multiple3DTileContent.js +15 -14
  600. package/Source/Scene/OIT.js +48 -97
  601. package/Source/Scene/OpenStreetMapImageryProvider.js +8 -7
  602. package/Source/Scene/OrderedGroundPrimitiveCollection.js +2 -2
  603. package/Source/Scene/Particle.js +3 -3
  604. package/Source/Scene/ParticleEmitter.js +1 -1
  605. package/Source/Scene/ParticleSystem.js +32 -32
  606. package/Source/Scene/PerInstanceColorAppearance.js +1 -1
  607. package/Source/Scene/PickDepth.js +16 -4
  608. package/Source/Scene/PickDepthFramebuffer.js +1 -1
  609. package/Source/Scene/PickFramebuffer.js +24 -12
  610. package/Source/Scene/PickedMetadataInfo.js +39 -0
  611. package/Source/Scene/Picking.js +270 -120
  612. package/Source/Scene/PntsParser.js +28 -28
  613. package/Source/Scene/PointCloud.js +39 -38
  614. package/Source/Scene/PointCloudEyeDomeLighting.js +6 -6
  615. package/Source/Scene/PointCloudShading.js +3 -3
  616. package/Source/Scene/PointPrimitive.js +31 -28
  617. package/Source/Scene/PointPrimitiveCollection.js +34 -33
  618. package/Source/Scene/Polyline.js +9 -9
  619. package/Source/Scene/PolylineCollection.js +55 -57
  620. package/Source/Scene/PolylineColorAppearance.js +3 -3
  621. package/Source/Scene/PolylineMaterialAppearance.js +3 -3
  622. package/Source/Scene/PostProcessStage.js +95 -115
  623. package/Source/Scene/PostProcessStageCollection.js +73 -49
  624. package/Source/Scene/PostProcessStageComposite.js +2 -2
  625. package/Source/Scene/PostProcessStageLibrary.js +30 -4
  626. package/Source/Scene/PostProcessStageTextureCache.js +10 -10
  627. package/Source/Scene/Primitive.js +93 -93
  628. package/Source/Scene/PrimitiveCollection.js +1 -1
  629. package/Source/Scene/PrimitiveLoadPlan.js +1 -1
  630. package/Source/Scene/PrimitivePipeline.js +30 -30
  631. package/Source/Scene/PropertyTable.js +5 -5
  632. package/Source/Scene/PropertyTextureProperty.js +36 -7
  633. package/Source/Scene/QuadtreePrimitive.js +56 -58
  634. package/Source/Scene/QuadtreeTile.js +4 -4
  635. package/Source/Scene/QuadtreeTileProvider.js +1 -1
  636. package/Source/Scene/ResourceCache.js +7 -7
  637. package/Source/Scene/ResourceCacheKey.js +15 -15
  638. package/Source/Scene/Scene.js +897 -677
  639. package/Source/Scene/SceneFramebuffer.js +2 -2
  640. package/Source/Scene/SceneTransforms.js +30 -92
  641. package/Source/Scene/SceneTransitioner.js +47 -47
  642. package/Source/Scene/ScreenSpaceCameraController.js +171 -157
  643. package/Source/Scene/SensorVolumePortionToDisplay.js +1 -1
  644. package/Source/Scene/ShadowMap.js +71 -72
  645. package/Source/Scene/ShadowMapShader.js +9 -9
  646. package/Source/Scene/ShadowVolumeAppearance.js +39 -39
  647. package/Source/Scene/SingleTileImageryProvider.js +3 -3
  648. package/Source/Scene/SkyAtmosphere.js +8 -8
  649. package/Source/Scene/SkyBox.js +17 -24
  650. package/Source/Scene/SpatialNode.js +13 -13
  651. package/Source/Scene/SpecularEnvironmentCubeMap.js +240 -0
  652. package/Source/Scene/SphereEmitter.js +1 -1
  653. package/Source/Scene/StructuralMetadata.js +1 -1
  654. package/Source/Scene/StyleExpression.js +1 -1
  655. package/Source/Scene/Sun.js +11 -7
  656. package/Source/Scene/SunPostProcess.js +6 -6
  657. package/Source/Scene/TerrainFillMesh.js +157 -156
  658. package/Source/Scene/TextureAtlas.js +11 -11
  659. package/Source/Scene/TileBoundingRegion.js +31 -31
  660. package/Source/Scene/TileBoundingS2Cell.js +37 -40
  661. package/Source/Scene/TileBoundingSphere.js +2 -2
  662. package/Source/Scene/TileCoordinatesImageryProvider.js +3 -3
  663. package/Source/Scene/TileImagery.js +7 -11
  664. package/Source/Scene/TileMapServiceImageryProvider.js +26 -25
  665. package/Source/Scene/TileMetadata.js +4 -4
  666. package/Source/Scene/TileOrientedBoundingBox.js +6 -6
  667. package/Source/Scene/Tileset3DTileContent.js +1 -1
  668. package/Source/Scene/TilesetMetadata.js +4 -4
  669. package/Source/Scene/TimeDynamicImagery.js +3 -3
  670. package/Source/Scene/TimeDynamicPointCloud.js +9 -9
  671. package/Source/Scene/Tonemapper.js +35 -23
  672. package/Source/Scene/TranslucentTileClassification.js +48 -58
  673. package/Source/Scene/TweenCollection.js +9 -9
  674. package/Source/Scene/UrlTemplateImageryProvider.js +23 -23
  675. package/Source/Scene/Vector3DTileClampedPolylines.js +21 -21
  676. package/Source/Scene/Vector3DTileContent.js +38 -39
  677. package/Source/Scene/Vector3DTileGeometry.js +11 -8
  678. package/Source/Scene/Vector3DTilePoints.js +18 -22
  679. package/Source/Scene/Vector3DTilePolygons.js +6 -6
  680. package/Source/Scene/Vector3DTilePolylines.js +8 -8
  681. package/Source/Scene/Vector3DTilePrimitive.js +30 -31
  682. package/Source/Scene/View.js +111 -80
  683. package/Source/Scene/VoxelBoxShape.js +34 -34
  684. package/Source/Scene/VoxelCell.js +7 -7
  685. package/Source/Scene/VoxelContent.js +1 -1
  686. package/Source/Scene/VoxelCylinderShape.js +48 -48
  687. package/Source/Scene/VoxelEllipsoidShape.js +83 -97
  688. package/Source/Scene/VoxelPrimitive.js +80 -109
  689. package/Source/Scene/VoxelRenderResources.js +13 -16
  690. package/Source/Scene/VoxelTraversal.js +41 -41
  691. package/Source/Scene/WebMapServiceImageryProvider.js +12 -12
  692. package/Source/Scene/WebMapTileServiceImageryProvider.js +8 -8
  693. package/Source/Scene/buildVoxelDrawCommands.js +10 -14
  694. package/Source/Scene/computeFlyToLocationForRectangle.js +7 -5
  695. package/Source/Scene/createBillboardPointCallback.js +2 -2
  696. package/Source/Scene/createElevationBandMaterial.js +8 -8
  697. package/Source/Scene/createGooglePhotorealistic3DTileset.js +1 -1
  698. package/Source/Scene/createOsmBuildingsAsync.js +1 -1
  699. package/Source/Scene/createTangentSpaceDebugPrimitive.js +7 -7
  700. package/Source/Scene/findContentMetadata.js +2 -2
  701. package/Source/Scene/findTileMetadata.js +2 -2
  702. package/Source/Scene/getBinaryAccessor.js +1 -1
  703. package/Source/Scene/getClipAndStyleCode.js +1 -1
  704. package/Source/Scene/getClippingFunction.js +1 -1
  705. package/Source/Scene/getMetadataClassProperty.js +43 -0
  706. package/Source/Scene/parseBatchTable.js +21 -24
  707. package/Source/Scene/parseFeatureMetadataLegacy.js +3 -3
  708. package/Source/Scene/parseStructuralMetadata.js +3 -3
  709. package/Source/Scene/processVoxelProperties.js +28 -33
  710. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -2
  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/pbrLighting.glsl +2 -2
  714. package/Source/Shaders/Builtin/Functions/pbrLighting.js +2 -2
  715. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.glsl +23 -0
  716. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.js +25 -0
  717. package/Source/Shaders/Builtin/Functions/textureCube.glsl +21 -2
  718. package/Source/Shaders/Builtin/Functions/textureCube.js +21 -2
  719. package/Source/Shaders/Builtin/Functions/unpackDepth.glsl +3 -3
  720. package/Source/Shaders/Builtin/Functions/unpackDepth.js +3 -3
  721. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +1 -1
  722. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +1 -1
  723. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +2 -2
  724. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +2 -2
  725. package/Source/Shaders/Builtin/Structs/materialInput.glsl +2 -0
  726. package/Source/Shaders/Builtin/Structs/materialInput.js +2 -0
  727. package/Source/Shaders/DepthPlaneVS.glsl +1 -1
  728. package/Source/Shaders/DepthPlaneVS.js +1 -1
  729. package/Source/Shaders/GlobeFS.glsl +10 -4
  730. package/Source/Shaders/GlobeFS.js +10 -4
  731. package/Source/Shaders/Materials/WaterMaskMaterial.glsl +15 -0
  732. package/Source/Shaders/Materials/WaterMaskMaterial.js +17 -0
  733. package/Source/Shaders/Model/AtmosphereStageFS.glsl +1 -1
  734. package/Source/Shaders/Model/AtmosphereStageFS.js +1 -1
  735. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +40 -29
  736. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +40 -29
  737. package/Source/Shaders/Model/LightingStageFS.glsl +2 -2
  738. package/Source/Shaders/Model/LightingStageFS.js +2 -2
  739. package/Source/Shaders/Model/ModelFS.glsl +26 -0
  740. package/Source/Shaders/Model/ModelFS.js +26 -0
  741. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -0
  742. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -0
  743. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +59 -59
  744. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +60 -60
  745. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -0
  746. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -0
  747. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -0
  748. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -0
  749. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.glsl +25 -0
  750. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.js +27 -0
  751. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -0
  752. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -0
  753. package/Source/Shaders/SkyAtmosphereFS.glsl +1 -1
  754. package/Source/Shaders/SkyAtmosphereFS.js +1 -1
  755. package/Source/Widget/CesiumWidget.js +10 -9
  756. package/Source/Workers/combineGeometry.js +3 -4
  757. package/Source/Workers/createCircleGeometry.js +2 -2
  758. package/Source/Workers/createCircleOutlineGeometry.js +2 -2
  759. package/Source/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  760. package/Source/Workers/createCorridorOutlineGeometry.js +2 -2
  761. package/Source/Workers/createEllipsoidOutlineGeometry.js +1 -1
  762. package/Source/Workers/createGeometry.js +4 -5
  763. package/Source/Workers/createGroundPolylineGeometry.js +1 -1
  764. package/Source/Workers/createPolylineVolumeGeometry.js +2 -2
  765. package/Source/Workers/createPolylineVolumeOutlineGeometry.js +4 -4
  766. package/Source/Workers/createRectangleOutlineGeometry.js +1 -1
  767. package/Source/Workers/createSimplePolylineGeometry.js +2 -2
  768. package/Source/Workers/createTaskProcessorWorker.js +1 -1
  769. package/Source/Workers/createVectorTileClampedPolylines.js +30 -30
  770. package/Source/Workers/createVectorTileGeometries.js +18 -18
  771. package/Source/Workers/createVectorTilePoints.js +3 -3
  772. package/Source/Workers/createVectorTilePolygons.js +11 -11
  773. package/Source/Workers/createVectorTilePolylines.js +7 -7
  774. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +29 -30
  775. package/Source/Workers/createVerticesFromQuantizedTerrainMesh.js +60 -60
  776. package/Source/Workers/decodeDraco.js +23 -23
  777. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +3 -3
  778. package/Source/Workers/decodeI3S.js +53 -53
  779. package/Source/Workers/transcodeKTX2.js +9 -9
  780. package/Source/Workers/transferTypedArrayTest.js +1 -1
  781. package/Source/Workers/upsampleQuantizedTerrainMesh.js +37 -36
  782. package/index.d.ts +620 -136
  783. package/index.js +221 -205
  784. package/package.json +3 -3
  785. package/Build/Workers/chunk-2GEAGYUY.js +0 -1477
  786. package/Build/Workers/chunk-3WUV74WM.js +0 -1800
  787. package/Build/Workers/chunk-4MSUJ4I7.js +0 -456
  788. package/Build/Workers/chunk-5KWHSZYL.js +0 -834
  789. package/Build/Workers/chunk-5O6JWQ4E.js +0 -398
  790. package/Build/Workers/chunk-6OFDHMHR.js +0 -1258
  791. package/Build/Workers/chunk-AA4GZKOT.js +0 -75
  792. package/Build/Workers/chunk-B75IEX2S.js +0 -390
  793. package/Build/Workers/chunk-BAVI3ZS2.js +0 -39
  794. package/Build/Workers/chunk-BBDZYSZB.js +0 -287
  795. package/Build/Workers/chunk-C45MU4GZ.js +0 -220
  796. package/Build/Workers/chunk-CF7P7K7E.js +0 -684
  797. package/Build/Workers/chunk-D4K27X2M.js +0 -305
  798. package/Build/Workers/chunk-DKVHRNFY.js +0 -100
  799. package/Build/Workers/chunk-ELI4BUOT.js +0 -963
  800. package/Build/Workers/chunk-FQPSOOPH.js +0 -258
  801. package/Build/Workers/chunk-GNHZH7HP.js +0 -37
  802. package/Build/Workers/chunk-GWT64LKY.js +0 -171
  803. package/Build/Workers/chunk-HGEEOMSC.js +0 -157
  804. package/Build/Workers/chunk-IUROUBPA.js +0 -300
  805. package/Build/Workers/chunk-JNLWLSTP.js +0 -476
  806. package/Build/Workers/chunk-JYQNWIQQ.js +0 -44
  807. package/Build/Workers/chunk-KUN2ZA5X.js +0 -138
  808. package/Build/Workers/chunk-LXQ5QAEJ.js +0 -196
  809. package/Build/Workers/chunk-MBZH7YZ7.js +0 -945
  810. package/Build/Workers/chunk-MKXWJTFQ.js +0 -781
  811. package/Build/Workers/chunk-MMV6TO3P.js +0 -101
  812. package/Build/Workers/chunk-MSKXMXJI.js +0 -500
  813. package/Build/Workers/chunk-OAPA2RTG.js +0 -239
  814. package/Build/Workers/chunk-OE4MCOC7.js +0 -421
  815. package/Build/Workers/chunk-OJF4RTJG.js +0 -634
  816. package/Build/Workers/chunk-OXSI7N4C.js +0 -768
  817. package/Build/Workers/chunk-PYHLO636.js +0 -2857
  818. package/Build/Workers/chunk-QD4KM3GO.js +0 -138
  819. package/Build/Workers/chunk-QMLTCCYG.js +0 -55
  820. package/Build/Workers/chunk-QYQIVZBU.js +0 -117
  821. package/Build/Workers/chunk-R3TKLC6E.js +0 -1075
  822. package/Build/Workers/chunk-R4ZEWO4I.js +0 -122
  823. package/Build/Workers/chunk-RCK55EDX.js +0 -691
  824. package/Build/Workers/chunk-RHBWXX7C.js +0 -629
  825. package/Build/Workers/chunk-SAPFXU5X.js +0 -102
  826. package/Build/Workers/chunk-TBBFDFCS.js +0 -368
  827. package/Build/Workers/chunk-TGY6H6N6.js +0 -163
  828. package/Build/Workers/chunk-UOEUCKKU.js +0 -59
  829. package/Build/Workers/chunk-VFBNELXB.js +0 -353
  830. package/Build/Workers/chunk-VYWUFRRR.js +0 -1052
  831. package/Build/Workers/chunk-WVSELU6O.js +0 -2716
  832. package/Build/Workers/chunk-X43SJLQL.js +0 -10364
  833. package/Build/Workers/chunk-XUOJCLOH.js +0 -511
  834. package/Build/Workers/chunk-YLYBLJ3Y.js +0 -73
  835. package/Build/Workers/chunk-ZEE2EIFD.js +0 -430
  836. package/Build/Workers/chunk-ZIKGV7EL.js +0 -58
  837. package/Source/Scene/OctahedralProjectedCubeMap.js +0 -444
  838. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +0 -78
  839. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +0 -80
  840. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +0 -89
  841. package/Source/Shaders/OctahedralProjectionAtlasFS.js +0 -91
  842. package/Source/Shaders/OctahedralProjectionFS.glsl +0 -14
  843. package/Source/Shaders/OctahedralProjectionFS.js +0 -16
  844. package/Source/Shaders/OctahedralProjectionVS.glsl +0 -10
  845. package/Source/Shaders/OctahedralProjectionVS.js +0 -12
@@ -153,7 +153,7 @@ float getSunLuminance(vec3 positionWC, vec3 normalEC, vec3 lightDirectionEC)\n\
153
153
  }\n\
154
154
  \n\
155
155
  #ifdef DIFFUSE_IBL\n\
156
- vec3 computeDiffuseIBL(vec3 cubeDir)\n\
156
+ vec3 sampleDiffuseEnvironment(vec3 cubeDir)\n\
157
157
  {\n\
158
158
  #ifdef CUSTOM_SPHERICAL_HARMONICS\n\
159
159
  return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); \n\
@@ -167,13 +167,11 @@ vec3 computeDiffuseIBL(vec3 cubeDir)\n\
167
167
  vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness)\n\
168
168
  {\n\
169
169
  #ifdef CUSTOM_SPECULAR_IBL\n\
170
- float maxLod = model_specularEnvironmentMapsMaximumLOD;\n\
171
- float lod = roughness * maxLod;\n\
172
- return czm_sampleOctahedralProjection(model_specularEnvironmentMaps, model_specularEnvironmentMapsSize, cubeDir, lod, maxLod);\n\
170
+ float lod = roughness * model_specularEnvironmentMapsMaximumLOD;\n\
171
+ return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb;\n\
173
172
  #else\n\
174
- float maxLod = czm_specularEnvironmentMapsMaximumLOD;\n\
175
- float lod = roughness * maxLod;\n\
176
- return czm_sampleOctahedralProjection(czm_specularEnvironmentMaps, czm_specularEnvironmentMapSize, cubeDir, lod, maxLod);\n\
173
+ float lod = roughness * czm_specularEnvironmentMapsMaximumLOD;\n\
174
+ return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb;\n\
177
175
  #endif\n\
178
176
  }\n\
179
177
  vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)\n\
@@ -192,25 +190,43 @@ vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)\n\
192
190
  \n\
193
191
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)\n\
194
192
  /**\n\
195
- * Compute the light contributions from environment maps and spherical harmonic coefficients\n\
193
+ * Compute the light contributions from environment maps and spherical harmonic coefficients.\n\
194
+ * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation\n\
195
+ * of the single- and multi-scattering terms.\n\
196
196
  *\n\
197
- * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position\n\
198
- * @param {vec3} normalEC The surface normal in eye coordinates\n\
199
- * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.\n\
197
+ * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position.\n\
198
+ * @param {vec3} normalEC The surface normal in eye coordinates.\n\
200
199
  * @param {czm_modelMaterial} The material properties.\n\
201
- * @return {vec3} The computed HDR color\n\
200
+ * @return {vec3} The computed HDR color.\n\
202
201
  */\n\
203
- vec3 textureIBL(\n\
204
- vec3 viewDirectionEC,\n\
205
- vec3 normalEC,\n\
206
- vec3 lightDirectionEC,\n\
207
- czm_modelMaterial material\n\
208
- ) {\n\
202
+ vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) {\n\
203
+ vec3 f0 = material.specular;\n\
204
+ float roughness = material.roughness;\n\
205
+ float specularWeight = 1.0;\n\
206
+ #ifdef USE_SPECULAR\n\
207
+ specularWeight = material.specularWeight;\n\
208
+ #endif\n\
209
+ float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);\n\
210
+ \n\
211
+ // see https://bruop.github.io/ibl/ at Single Scattering Results\n\
212
+ // Roughness dependent fresnel, from Fdez-Aguera\n\
213
+ vec3 f90 = max(vec3(1.0 - roughness), f0);\n\
214
+ vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV);\n\
215
+ \n\
216
+ vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;\n\
217
+ vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y);\n\
218
+ \n\
209
219
  #ifdef DIFFUSE_IBL\n\
210
220
  vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC);\n\
211
- vec3 diffuseContribution = computeDiffuseIBL(normalMC) * material.diffuse;\n\
221
+ vec3 irradiance = sampleDiffuseEnvironment(normalMC);\n\
222
+ \n\
223
+ vec3 averageFresnel = f0 + (1.0 - f0) / 21.0;\n\
224
+ float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y);\n\
225
+ vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems);\n\
226
+ vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse;\n\
227
+ vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering);\n\
212
228
  #else\n\
213
- vec3 diffuseContribution = vec3(0.0); \n\
229
+ vec3 diffuseContribution = vec3(0.0);\n\
214
230
  #endif\n\
215
231
  \n\
216
232
  #ifdef USE_ANISOTROPY\n\
@@ -218,7 +234,7 @@ vec3 textureIBL(\n\
218
234
  vec3 anisotropyDirection = material.anisotropicB;\n\
219
235
  vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC);\n\
220
236
  vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection);\n\
221
- float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - material.roughness);\n\
237
+ float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness);\n\
222
238
  float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor;\n\
223
239
  vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4));\n\
224
240
  vec3 reflectEC = reflect(-viewDirectionEC, bentNormal);\n\
@@ -228,15 +244,10 @@ vec3 textureIBL(\n\
228
244
  \n\
229
245
  #ifdef SPECULAR_IBL\n\
230
246
  vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC);\n\
231
- float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);\n\
232
- vec3 f0 = material.specular;\n\
233
- vec3 specularContribution = computeSpecularIBL(reflectMC, NdotV, f0, material.roughness);\n\
247
+ vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness);\n\
248
+ vec3 specularContribution = radiance * FssEss;\n\
234
249
  #else\n\
235
- vec3 specularContribution = vec3(0.0); \n\
236
- #endif\n\
237
- \n\
238
- #ifdef USE_SPECULAR\n\
239
- specularContribution *= material.specularWeight;\n\
250
+ vec3 specularContribution = vec3(0.0);\n\
240
251
  #endif\n\
241
252
  \n\
242
253
  return diffuseContribution + specularContribution;\n\
@@ -4,7 +4,7 @@ vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColor
4
4
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
5
5
  // Environment maps were provided, use them for IBL
6
6
  vec3 viewDirection = -normalize(position);
7
- vec3 iblColor = textureIBL(viewDirection, normal, lightDirection, material);
7
+ vec3 iblColor = textureIBL(viewDirection, normal, material);
8
8
  #else
9
9
  // Use procedural IBL if there are no environment maps
10
10
  vec3 imageBasedLighting = proceduralIBL(position, normal, lightDirection, material);
@@ -120,7 +120,7 @@ void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attribu
120
120
  // tonemapping. However, if HDR is not enabled, we must tonemap else large
121
121
  // values may be clamped to 1.0
122
122
  #ifndef HDR
123
- color = czm_acesTonemapping(color);
123
+ color = czm_pbrNeutralTonemapping(color);
124
124
  #endif
125
125
  #else // unlit
126
126
  vec3 color = material.diffuse;
@@ -5,7 +5,7 @@ vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColor
5
5
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)\n\
6
6
  // Environment maps were provided, use them for IBL\n\
7
7
  vec3 viewDirection = -normalize(position);\n\
8
- vec3 iblColor = textureIBL(viewDirection, normal, lightDirection, material);\n\
8
+ vec3 iblColor = textureIBL(viewDirection, normal, material);\n\
9
9
  #else\n\
10
10
  // Use procedural IBL if there are no environment maps\n\
11
11
  vec3 imageBasedLighting = proceduralIBL(position, normal, lightDirection, material);\n\
@@ -121,7 +121,7 @@ void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attribu
121
121
  // tonemapping. However, if HDR is not enabled, we must tonemap else large\n\
122
122
  // values may be clamped to 1.0\n\
123
123
  #ifndef HDR\n\
124
- color = czm_acesTonemapping(color);\n\
124
+ color = czm_pbrNeutralTonemapping(color);\n\
125
125
  #endif\n\
126
126
  #else // unlit\n\
127
127
  vec3 color = material.diffuse;\n\
@@ -45,6 +45,10 @@ void main()
45
45
  MetadataStatistics metadataStatistics;
46
46
  metadataStage(metadata, metadataClass, metadataStatistics, attributes);
47
47
 
48
+ //========================================================================
49
+ // When not picking metadata START
50
+ #ifndef METADATA_PICKING_ENABLED
51
+
48
52
  #ifdef HAS_SELECTED_FEATURE_ID
49
53
  selectedFeatureIdStage(selectedFeature, featureIds);
50
54
  #endif
@@ -73,6 +77,20 @@ void main()
73
77
 
74
78
  vec4 color = handleAlpha(material.diffuse, material.alpha);
75
79
 
80
+ // When not picking metadata END
81
+ //========================================================================
82
+ #else
83
+ //========================================================================
84
+ // When picking metadata START
85
+
86
+ vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0);
87
+ metadataPickingStage(metadata, metadataClass, metadataValues);
88
+ vec4 color = metadataValues;
89
+
90
+ #endif
91
+ // When picking metadata END
92
+ //========================================================================
93
+
76
94
  #ifdef HAS_CLIPPING_PLANES
77
95
  modelClippingPlanesStage(color);
78
96
  #endif
@@ -81,6 +99,10 @@ void main()
81
99
  modelClippingPolygonsStage();
82
100
  #endif
83
101
 
102
+ //========================================================================
103
+ // When not picking metadata START
104
+ #ifndef METADATA_PICKING_ENABLED
105
+
84
106
  #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS)
85
107
  silhouetteStage(color);
86
108
  #endif
@@ -89,5 +111,9 @@ void main()
89
111
  atmosphereStage(color, attributes);
90
112
  #endif
91
113
 
114
+ #endif
115
+ // When not picking metadata END
116
+ //========================================================================
117
+
92
118
  out_FragColor = color;
93
119
  }
@@ -45,6 +45,10 @@ void main()\n\
45
45
  MetadataClass metadataClass;\n\
46
46
  MetadataStatistics metadataStatistics;\n\
47
47
  metadataStage(metadata, metadataClass, metadataStatistics, attributes);\n\
48
+ \n\
49
+ //========================================================================\n\
50
+ // When not picking metadata START\n\
51
+ #ifndef METADATA_PICKING_ENABLED\n\
48
52
  \n\
49
53
  #ifdef HAS_SELECTED_FEATURE_ID\n\
50
54
  selectedFeatureIdStage(selectedFeature, featureIds);\n\
@@ -73,6 +77,20 @@ void main()\n\
73
77
  #endif\n\
74
78
  \n\
75
79
  vec4 color = handleAlpha(material.diffuse, material.alpha);\n\
80
+ \n\
81
+ // When not picking metadata END\n\
82
+ //========================================================================\n\
83
+ #else \n\
84
+ //========================================================================\n\
85
+ // When picking metadata START\n\
86
+ \n\
87
+ vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0);\n\
88
+ metadataPickingStage(metadata, metadataClass, metadataValues);\n\
89
+ vec4 color = metadataValues;\n\
90
+ \n\
91
+ #endif\n\
92
+ // When picking metadata END\n\
93
+ //========================================================================\n\
76
94
  \n\
77
95
  #ifdef HAS_CLIPPING_PLANES\n\
78
96
  modelClippingPlanesStage(color);\n\
@@ -81,6 +99,10 @@ void main()\n\
81
99
  #ifdef ENABLE_CLIPPING_POLYGONS\n\
82
100
  modelClippingPolygonsStage();\n\
83
101
  #endif\n\
102
+ \n\
103
+ //========================================================================\n\
104
+ // When not picking metadata START\n\
105
+ #ifndef METADATA_PICKING_ENABLED\n\
84
106
  \n\
85
107
  #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS)\n\
86
108
  silhouetteStage(color);\n\
@@ -89,6 +111,10 @@ void main()\n\
89
111
  #ifdef HAS_ATMOSPHERE\n\
90
112
  atmosphereStage(color, attributes);\n\
91
113
  #endif\n\
114
+ \n\
115
+ #endif\n\
116
+ // When not picking metadata END\n\
117
+ //========================================================================\n\
92
118
  \n\
93
119
  out_FragColor = color;\n\
94
120
  }\n\
@@ -4,6 +4,8 @@ in vec2 v_textureCoordinates;
4
4
 
5
5
  #ifdef AUTO_EXPOSURE
6
6
  uniform sampler2D autoExposure;
7
+ #else
8
+ uniform float exposure;
7
9
  #endif
8
10
 
9
11
  void main()
@@ -13,6 +15,8 @@ void main()
13
15
 
14
16
  #ifdef AUTO_EXPOSURE
15
17
  color /= texture(autoExposure, vec2(0.5)).r;
18
+ #else
19
+ color *= vec3(exposure);
16
20
  #endif
17
21
  color = czm_acesTonemapping(color);
18
22
  color = czm_inverseGamma(color);
@@ -5,6 +5,8 @@ in vec2 v_textureCoordinates;\n\
5
5
  \n\
6
6
  #ifdef AUTO_EXPOSURE\n\
7
7
  uniform sampler2D autoExposure;\n\
8
+ #else\n\
9
+ uniform float exposure;\n\
8
10
  #endif\n\
9
11
  \n\
10
12
  void main()\n\
@@ -14,6 +16,8 @@ void main()\n\
14
16
  \n\
15
17
  #ifdef AUTO_EXPOSURE\n\
16
18
  color /= texture(autoExposure, vec2(0.5)).r;\n\
19
+ #else\n\
20
+ color *= vec3(exposure);\n\
17
21
  #endif\n\
18
22
  color = czm_acesTonemapping(color);\n\
19
23
  color = czm_inverseGamma(color);\n\
@@ -1,3 +1,5 @@
1
+ precision highp float;
2
+
1
3
  uniform sampler2D randomTexture;
2
4
  uniform sampler2D depthTexture;
3
5
  uniform float intensity;
@@ -6,109 +8,107 @@ uniform float lengthCap;
6
8
  uniform float stepSize;
7
9
  uniform float frustumLength;
8
10
 
9
- in vec2 v_textureCoordinates;
10
-
11
- vec4 clipToEye(vec2 uv, float depth)
11
+ vec3 pixelToEye(vec2 screenCoordinate)
12
12
  {
13
- vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0));
13
+ vec2 uv = screenCoordinate / czm_viewport.zw;
14
+ float depth = czm_readDepth(depthTexture, uv);
15
+ vec2 xy = 2.0 * uv - vec2(1.0);
14
16
  vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0);
15
- posEC = posEC / posEC.w;
16
- return posEC;
17
+ return posEC.xyz / posEC.w;
17
18
  }
18
19
 
19
- //Reconstruct Normal Without Edge Removation
20
- vec3 getNormalXEdge(vec3 posInCamera, float depthU, float depthD, float depthL, float depthR, vec2 pixelSize)
20
+ // Reconstruct surface normal in eye coordinates, avoiding edges
21
+ vec3 getNormalXEdge(vec3 positionEC)
21
22
  {
22
- vec4 posInCameraUp = clipToEye(v_textureCoordinates - vec2(0.0, pixelSize.y), depthU);
23
- vec4 posInCameraDown = clipToEye(v_textureCoordinates + vec2(0.0, pixelSize.y), depthD);
24
- vec4 posInCameraLeft = clipToEye(v_textureCoordinates - vec2(pixelSize.x, 0.0), depthL);
25
- vec4 posInCameraRight = clipToEye(v_textureCoordinates + vec2(pixelSize.x, 0.0), depthR);
26
-
27
- vec3 up = posInCamera.xyz - posInCameraUp.xyz;
28
- vec3 down = posInCameraDown.xyz - posInCamera.xyz;
29
- vec3 left = posInCamera.xyz - posInCameraLeft.xyz;
30
- vec3 right = posInCameraRight.xyz - posInCamera.xyz;
31
-
32
- vec3 DX = length(left) < length(right) ? left : right;
33
- vec3 DY = length(up) < length(down) ? up : down;
34
-
35
- return normalize(cross(DY, DX));
23
+ // Find the 3D surface positions at adjacent screen pixels
24
+ vec2 centerCoord = gl_FragCoord.xy;
25
+ vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0));
26
+ vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0));
27
+ vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0));
28
+ vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0));
29
+
30
+ // Compute potential tangent vectors
31
+ vec3 dx0 = positionEC - positionLeft;
32
+ vec3 dx1 = positionRight - positionEC;
33
+ vec3 dy0 = positionEC - positionDown;
34
+ vec3 dy1 = positionUp - positionEC;
35
+
36
+ // The shorter tangent is more likely to be on the same surface
37
+ vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1;
38
+ vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1;
39
+
40
+ return normalize(cross(dx, dy));
36
41
  }
37
42
 
38
43
  void main(void)
39
44
  {
40
- float depth = czm_readDepth(depthTexture, v_textureCoordinates);
41
- vec4 posInCamera = clipToEye(v_textureCoordinates, depth);
45
+ vec3 positionEC = pixelToEye(gl_FragCoord.xy);
42
46
 
43
- if (posInCamera.z > frustumLength)
47
+ if (positionEC.z > frustumLength)
44
48
  {
45
49
  out_FragColor = vec4(1.0);
46
50
  return;
47
51
  }
48
52
 
49
- vec2 pixelSize = czm_pixelRatio / czm_viewport.zw;
50
- float depthU = czm_readDepth(depthTexture, v_textureCoordinates - vec2(0.0, pixelSize.y));
51
- float depthD = czm_readDepth(depthTexture, v_textureCoordinates + vec2(0.0, pixelSize.y));
52
- float depthL = czm_readDepth(depthTexture, v_textureCoordinates - vec2(pixelSize.x, 0.0));
53
- float depthR = czm_readDepth(depthTexture, v_textureCoordinates + vec2(pixelSize.x, 0.0));
54
- vec3 normalInCamera = getNormalXEdge(posInCamera.xyz, depthU, depthD, depthL, depthR, pixelSize);
53
+ vec3 normalEC = getNormalXEdge(positionEC);
55
54
 
56
55
  float ao = 0.0;
57
- vec2 sampleDirection = vec2(1.0, 0.0);
58
- float gapAngle = 90.0 * czm_radiansPerDegree;
59
56
 
60
- // RandomNoise
61
- float randomVal = texture(randomTexture, v_textureCoordinates / pixelSize / 255.0).x;
62
-
63
- //Loop for each direction
64
- for (int i = 0; i < 4; i++)
57
+ const int ANGLE_STEPS = 4;
58
+ float angleStepScale = 1.0 / float(ANGLE_STEPS);
59
+ float angleStep = angleStepScale * czm_twoPi;
60
+ float cosStep = cos(angleStep);
61
+ float sinStep = sin(angleStep);
62
+ mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep);
63
+
64
+ // Initial sampling direction (different for each pixel)
65
+ const float randomTextureSize = 255.0;
66
+ vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize);
67
+ float randomVal = texture(randomTexture, randomTexCoord).x;
68
+ vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal));
69
+
70
+ // Loop over sampling directions
71
+ for (int i = 0; i < ANGLE_STEPS; i++)
65
72
  {
66
- float newGapAngle = gapAngle * (float(i) + randomVal);
67
- float cosVal = cos(newGapAngle);
68
- float sinVal = sin(newGapAngle);
73
+ sampleDirection = rotateStep * sampleDirection;
69
74
 
70
- //Rotate Sampling Direction
71
- vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);
72
75
  float localAO = 0.0;
73
- float localStepSize = stepSize;
76
+ vec2 radialStep = stepSize * sampleDirection;
74
77
 
75
- //Loop for each step
76
78
  for (int j = 0; j < 6; j++)
77
79
  {
78
- vec2 newCoords = v_textureCoordinates + rotatedSampleDirection * localStepSize * pixelSize;
80
+ // Step along sampling direction, away from output pixel
81
+ vec2 newCoords = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5);
79
82
 
80
- //Exception Handling
81
- if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0)
83
+ // Exit if we stepped off the screen
84
+ if (clamp(newCoords, vec2(0.0), czm_viewport.zw) != newCoords)
82
85
  {
83
86
  break;
84
87
  }
85
88
 
86
- float stepDepthInfo = czm_readDepth(depthTexture, newCoords);
87
- vec4 stepPosInCamera = clipToEye(newCoords, stepDepthInfo);
88
- vec3 diffVec = stepPosInCamera.xyz - posInCamera.xyz;
89
- float len = length(diffVec);
89
+ vec3 stepPositionEC = pixelToEye(newCoords);
90
+ vec3 stepVector = stepPositionEC - positionEC;
91
+ float stepLength = length(stepVector);
90
92
 
91
- if (len > lengthCap)
93
+ if (stepLength > lengthCap)
92
94
  {
93
95
  break;
94
96
  }
95
97
 
96
- float dotVal = clamp(dot(normalInCamera, normalize(diffVec)), 0.0, 1.0 );
97
- float weight = len / lengthCap;
98
- weight = 1.0 - weight * weight;
99
-
98
+ float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0);
100
99
  if (dotVal < bias)
101
100
  {
102
101
  dotVal = 0.0;
103
102
  }
104
103
 
104
+ float weight = stepLength / lengthCap;
105
+ weight = 1.0 - weight * weight;
105
106
  localAO = max(localAO, dotVal * weight);
106
- localStepSize += stepSize;
107
107
  }
108
108
  ao += localAO;
109
109
  }
110
110
 
111
- ao /= 4.0;
111
+ ao *= angleStepScale;
112
112
  ao = 1.0 - clamp(ao, 0.0, 1.0);
113
113
  ao = pow(ao, intensity);
114
114
  out_FragColor = vec4(vec3(ao), 1.0);
@@ -1,5 +1,7 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
- export default "uniform sampler2D randomTexture;\n\
2
+ export default "precision highp float;\n\
3
+ \n\
4
+ uniform sampler2D randomTexture;\n\
3
5
  uniform sampler2D depthTexture;\n\
4
6
  uniform float intensity;\n\
5
7
  uniform float bias;\n\
@@ -7,109 +9,107 @@ uniform float lengthCap;\n\
7
9
  uniform float stepSize;\n\
8
10
  uniform float frustumLength;\n\
9
11
  \n\
10
- in vec2 v_textureCoordinates;\n\
11
- \n\
12
- vec4 clipToEye(vec2 uv, float depth)\n\
12
+ vec3 pixelToEye(vec2 screenCoordinate)\n\
13
13
  {\n\
14
- vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0));\n\
14
+ vec2 uv = screenCoordinate / czm_viewport.zw;\n\
15
+ float depth = czm_readDepth(depthTexture, uv);\n\
16
+ vec2 xy = 2.0 * uv - vec2(1.0);\n\
15
17
  vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0);\n\
16
- posEC = posEC / posEC.w;\n\
17
- return posEC;\n\
18
+ return posEC.xyz / posEC.w;\n\
18
19
  }\n\
19
20
  \n\
20
- //Reconstruct Normal Without Edge Removation\n\
21
- vec3 getNormalXEdge(vec3 posInCamera, float depthU, float depthD, float depthL, float depthR, vec2 pixelSize)\n\
21
+ // Reconstruct surface normal in eye coordinates, avoiding edges\n\
22
+ vec3 getNormalXEdge(vec3 positionEC)\n\
22
23
  {\n\
23
- vec4 posInCameraUp = clipToEye(v_textureCoordinates - vec2(0.0, pixelSize.y), depthU);\n\
24
- vec4 posInCameraDown = clipToEye(v_textureCoordinates + vec2(0.0, pixelSize.y), depthD);\n\
25
- vec4 posInCameraLeft = clipToEye(v_textureCoordinates - vec2(pixelSize.x, 0.0), depthL);\n\
26
- vec4 posInCameraRight = clipToEye(v_textureCoordinates + vec2(pixelSize.x, 0.0), depthR);\n\
27
- \n\
28
- vec3 up = posInCamera.xyz - posInCameraUp.xyz;\n\
29
- vec3 down = posInCameraDown.xyz - posInCamera.xyz;\n\
30
- vec3 left = posInCamera.xyz - posInCameraLeft.xyz;\n\
31
- vec3 right = posInCameraRight.xyz - posInCamera.xyz;\n\
32
- \n\
33
- vec3 DX = length(left) < length(right) ? left : right;\n\
34
- vec3 DY = length(up) < length(down) ? up : down;\n\
35
- \n\
36
- return normalize(cross(DY, DX));\n\
24
+ // Find the 3D surface positions at adjacent screen pixels\n\
25
+ vec2 centerCoord = gl_FragCoord.xy;\n\
26
+ vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0));\n\
27
+ vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0));\n\
28
+ vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0));\n\
29
+ vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0));\n\
30
+ \n\
31
+ // Compute potential tangent vectors\n\
32
+ vec3 dx0 = positionEC - positionLeft;\n\
33
+ vec3 dx1 = positionRight - positionEC;\n\
34
+ vec3 dy0 = positionEC - positionDown;\n\
35
+ vec3 dy1 = positionUp - positionEC;\n\
36
+ \n\
37
+ // The shorter tangent is more likely to be on the same surface\n\
38
+ vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1;\n\
39
+ vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1;\n\
40
+ \n\
41
+ return normalize(cross(dx, dy));\n\
37
42
  }\n\
38
43
  \n\
39
44
  void main(void)\n\
40
45
  {\n\
41
- float depth = czm_readDepth(depthTexture, v_textureCoordinates);\n\
42
- vec4 posInCamera = clipToEye(v_textureCoordinates, depth);\n\
46
+ vec3 positionEC = pixelToEye(gl_FragCoord.xy);\n\
43
47
  \n\
44
- if (posInCamera.z > frustumLength)\n\
48
+ if (positionEC.z > frustumLength)\n\
45
49
  {\n\
46
50
  out_FragColor = vec4(1.0);\n\
47
51
  return;\n\
48
52
  }\n\
49
53
  \n\
50
- vec2 pixelSize = czm_pixelRatio / czm_viewport.zw;\n\
51
- float depthU = czm_readDepth(depthTexture, v_textureCoordinates - vec2(0.0, pixelSize.y));\n\
52
- float depthD = czm_readDepth(depthTexture, v_textureCoordinates + vec2(0.0, pixelSize.y));\n\
53
- float depthL = czm_readDepth(depthTexture, v_textureCoordinates - vec2(pixelSize.x, 0.0));\n\
54
- float depthR = czm_readDepth(depthTexture, v_textureCoordinates + vec2(pixelSize.x, 0.0));\n\
55
- vec3 normalInCamera = getNormalXEdge(posInCamera.xyz, depthU, depthD, depthL, depthR, pixelSize);\n\
54
+ vec3 normalEC = getNormalXEdge(positionEC);\n\
56
55
  \n\
57
56
  float ao = 0.0;\n\
58
- vec2 sampleDirection = vec2(1.0, 0.0);\n\
59
- float gapAngle = 90.0 * czm_radiansPerDegree;\n\
60
57
  \n\
61
- // RandomNoise\n\
62
- float randomVal = texture(randomTexture, v_textureCoordinates / pixelSize / 255.0).x;\n\
63
- \n\
64
- //Loop for each direction\n\
65
- for (int i = 0; i < 4; i++)\n\
58
+ const int ANGLE_STEPS = 4;\n\
59
+ float angleStepScale = 1.0 / float(ANGLE_STEPS);\n\
60
+ float angleStep = angleStepScale * czm_twoPi;\n\
61
+ float cosStep = cos(angleStep);\n\
62
+ float sinStep = sin(angleStep);\n\
63
+ mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep);\n\
64
+ \n\
65
+ // Initial sampling direction (different for each pixel)\n\
66
+ const float randomTextureSize = 255.0;\n\
67
+ vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize);\n\
68
+ float randomVal = texture(randomTexture, randomTexCoord).x;\n\
69
+ vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal));\n\
70
+ \n\
71
+ // Loop over sampling directions\n\
72
+ for (int i = 0; i < ANGLE_STEPS; i++)\n\
66
73
  {\n\
67
- float newGapAngle = gapAngle * (float(i) + randomVal);\n\
68
- float cosVal = cos(newGapAngle);\n\
69
- float sinVal = sin(newGapAngle);\n\
74
+ sampleDirection = rotateStep * sampleDirection;\n\
70
75
  \n\
71
- //Rotate Sampling Direction\n\
72
- vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\n\
73
76
  float localAO = 0.0;\n\
74
- float localStepSize = stepSize;\n\
77
+ vec2 radialStep = stepSize * sampleDirection;\n\
75
78
  \n\
76
- //Loop for each step\n\
77
79
  for (int j = 0; j < 6; j++)\n\
78
80
  {\n\
79
- vec2 newCoords = v_textureCoordinates + rotatedSampleDirection * localStepSize * pixelSize;\n\
81
+ // Step along sampling direction, away from output pixel\n\
82
+ vec2 newCoords = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5);\n\
80
83
  \n\
81
- //Exception Handling\n\
82
- if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0)\n\
84
+ // Exit if we stepped off the screen\n\
85
+ if (clamp(newCoords, vec2(0.0), czm_viewport.zw) != newCoords)\n\
83
86
  {\n\
84
87
  break;\n\
85
88
  }\n\
86
89
  \n\
87
- float stepDepthInfo = czm_readDepth(depthTexture, newCoords);\n\
88
- vec4 stepPosInCamera = clipToEye(newCoords, stepDepthInfo);\n\
89
- vec3 diffVec = stepPosInCamera.xyz - posInCamera.xyz;\n\
90
- float len = length(diffVec);\n\
90
+ vec3 stepPositionEC = pixelToEye(newCoords);\n\
91
+ vec3 stepVector = stepPositionEC - positionEC;\n\
92
+ float stepLength = length(stepVector);\n\
91
93
  \n\
92
- if (len > lengthCap)\n\
94
+ if (stepLength > lengthCap)\n\
93
95
  {\n\
94
96
  break;\n\
95
97
  }\n\
96
98
  \n\
97
- float dotVal = clamp(dot(normalInCamera, normalize(diffVec)), 0.0, 1.0 );\n\
98
- float weight = len / lengthCap;\n\
99
- weight = 1.0 - weight * weight;\n\
100
- \n\
99
+ float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0);\n\
101
100
  if (dotVal < bias)\n\
102
101
  {\n\
103
102
  dotVal = 0.0;\n\
104
103
  }\n\
105
104
  \n\
105
+ float weight = stepLength / lengthCap;\n\
106
+ weight = 1.0 - weight * weight;\n\
106
107
  localAO = max(localAO, dotVal * weight);\n\
107
- localStepSize += stepSize;\n\
108
108
  }\n\
109
109
  ao += localAO;\n\
110
110
  }\n\
111
111
  \n\
112
- ao /= 4.0;\n\
112
+ ao *= angleStepScale;\n\
113
113
  ao = 1.0 - clamp(ao, 0.0, 1.0);\n\
114
114
  ao = pow(ao, intensity);\n\
115
115
  out_FragColor = vec4(vec3(ao), 1.0);\n\
@@ -4,6 +4,8 @@ in vec2 v_textureCoordinates;
4
4
 
5
5
  #ifdef AUTO_EXPOSURE
6
6
  uniform sampler2D autoExposure;
7
+ #else
8
+ uniform float exposure;
7
9
  #endif
8
10
 
9
11
  // See slides 142 and 143:
@@ -17,6 +19,8 @@ void main()
17
19
  #ifdef AUTO_EXPOSURE
18
20
  float exposure = texture(autoExposure, vec2(0.5)).r;
19
21
  color /= exposure;
22
+ #else
23
+ color *= vec3(exposure);
20
24
  #endif
21
25
 
22
26
  const float A = 0.22; // shoulder strength