@cesium/engine 2.0.0 → 2.2.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 (828) hide show
  1. package/Build/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
  2. package/Build/Workers/{AttributeCompression-b646d393.js → AttributeCompression-8a5a065e.js} +24 -24
  3. package/Build/Workers/{AxisAlignedBoundingBox-47525601.js → AxisAlignedBoundingBox-379015ef.js} +3 -3
  4. package/Build/Workers/{BoundingRectangle-93b263ac.js → BoundingRectangle-57f2b24f.js} +18 -18
  5. package/Build/Workers/{BoxGeometry-8c4b4125.js → BoxGeometry-ecabfc78.js} +9 -9
  6. package/Build/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
  7. package/Build/Workers/{Color-52c60ed7.js → Color-14d1a36d.js} +59 -59
  8. package/Build/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
  9. package/Build/Workers/{CoplanarPolygonGeometryLibrary-33c4c1f8.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
  10. package/Build/Workers/{CorridorGeometryLibrary-5039cd8e.js → CorridorGeometryLibrary-520c8619.js} +1 -1
  11. package/Build/Workers/{CylinderGeometry-3ac44974.js → CylinderGeometry-119068b8.js} +12 -12
  12. package/Build/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-135b0858.js} +1 -1
  13. package/Build/Workers/{EllipseGeometry-a9c9b3be.js → EllipseGeometry-2dfc3523.js} +20 -20
  14. package/Build/Workers/{EllipseGeometryLibrary-855d4681.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
  15. package/Build/Workers/{EllipseOutlineGeometry-017a5929.js → EllipseOutlineGeometry-c5251669.js} +15 -15
  16. package/Build/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-dcff5cbd.js} +6 -6
  17. package/Build/Workers/{EllipsoidGeometry-826e7bce.js → EllipsoidGeometry-d10a5221.js} +14 -14
  18. package/Build/Workers/{EllipsoidOutlineGeometry-784dcdb5.js → EllipsoidOutlineGeometry-7039a0ae.js} +15 -15
  19. package/Build/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-b672d507.js} +9 -9
  20. package/Build/Workers/{EllipsoidTangentPlane-ed9443a1.js → EllipsoidTangentPlane-857186be.js} +1 -1
  21. package/Build/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-e8bbca36.js} +6 -6
  22. package/Build/Workers/{FrustumGeometry-9f1ee4d8.js → FrustumGeometry-400fa1b7.js} +109 -109
  23. package/Build/Workers/{GeometryAttribute-334718f8.js → GeometryAttribute-7a2de5c6.js} +20 -20
  24. package/Build/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
  25. package/Build/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-3fb607b7.js} +6 -6
  26. package/Build/Workers/{GeometryPipeline-8fb0db69.js → GeometryPipeline-916636fa.js} +22 -22
  27. package/Build/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-b8f3e09d.js} +13 -13
  28. package/Build/Workers/{IntersectionTests-27d49265.js → IntersectionTests-b4d02d4d.js} +37 -37
  29. package/Build/Workers/{Math-2dbd6b93.js → Math-dad82b4d.js} +137 -137
  30. package/Build/Workers/{Matrix2-13178034.js → Matrix2-1e403d0e.js} +256 -256
  31. package/Build/Workers/{Matrix3-315394f6.js → Matrix3-fa806b97.js} +150 -150
  32. package/Build/Workers/{OrientedBoundingBox-79ee7cbb.js → OrientedBoundingBox-96fe1752.js} +19 -17
  33. package/Build/Workers/{Plane-900aa728.js → Plane-c27e1ac6.js} +5 -5
  34. package/Build/Workers/{PolygonGeometryLibrary-6b5a29e9.js → PolygonGeometryLibrary-931f1ec6.js} +6 -6
  35. package/Build/Workers/{PolygonPipeline-21668b3f.js → PolygonPipeline-32fc92cc.js} +14 -14
  36. package/Build/Workers/{PolylinePipeline-5e2e1b21.js → PolylinePipeline-6d5c63e5.js} +16 -16
  37. package/Build/Workers/{PolylineVolumeGeometryLibrary-97f0b94e.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +7 -7
  38. package/Build/Workers/{PrimitivePipeline-5640850a.js → PrimitivePipeline-879f996a.js} +6 -6
  39. package/Build/Workers/{RectangleGeometryLibrary-d5457f7b.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
  40. package/Build/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
  41. package/Build/Workers/{TerrainEncoding-bfdf2021.js → TerrainEncoding-82882059.js} +30 -30
  42. package/Build/Workers/{Transforms-a05e5e6e.js → Transforms-9052372a.js} +531 -530
  43. package/Build/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
  44. package/Build/Workers/{WallGeometryLibrary-6db0ebb6.js → WallGeometryLibrary-db7a64fb.js} +1 -1
  45. package/Build/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
  46. package/Build/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-76a3fcc0.js} +6 -6
  47. package/Build/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-fac118a8.js} +5 -5
  48. package/Build/Workers/cesiumWorkerBootstrapper.js +5 -5
  49. package/Build/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
  50. package/Build/Workers/combineGeometry.js +1 -1
  51. package/Build/Workers/createBoxGeometry.js +1 -1
  52. package/Build/Workers/createBoxOutlineGeometry.js +9 -9
  53. package/Build/Workers/createCircleGeometry.js +13 -13
  54. package/Build/Workers/createCircleOutlineGeometry.js +13 -13
  55. package/Build/Workers/createCoplanarPolygonGeometry.js +11 -11
  56. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
  57. package/Build/Workers/createCorridorGeometry.js +14 -14
  58. package/Build/Workers/createCorridorOutlineGeometry.js +12 -12
  59. package/Build/Workers/createCylinderGeometry.js +1 -1
  60. package/Build/Workers/createCylinderOutlineGeometry.js +13 -13
  61. package/Build/Workers/createEllipseGeometry.js +1 -1
  62. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  63. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  64. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  65. package/Build/Workers/createFrustumGeometry.js +1 -1
  66. package/Build/Workers/createFrustumOutlineGeometry.js +8 -8
  67. package/Build/Workers/createGeometry.js +1 -1
  68. package/Build/Workers/createGroundPolylineGeometry.js +33 -33
  69. package/Build/Workers/createPlaneGeometry.js +8 -8
  70. package/Build/Workers/createPlaneOutlineGeometry.js +6 -6
  71. package/Build/Workers/createPolygonGeometry.js +25 -25
  72. package/Build/Workers/createPolygonOutlineGeometry.js +17 -17
  73. package/Build/Workers/createPolylineGeometry.js +11 -11
  74. package/Build/Workers/createPolylineVolumeGeometry.js +9 -9
  75. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
  76. package/Build/Workers/createRectangleGeometry.js +16 -16
  77. package/Build/Workers/createRectangleOutlineGeometry.js +12 -12
  78. package/Build/Workers/createSimplePolylineGeometry.js +10 -10
  79. package/Build/Workers/createSphereGeometry.js +11 -11
  80. package/Build/Workers/createSphereOutlineGeometry.js +12 -12
  81. package/Build/Workers/createTaskProcessorWorker.js +2 -2
  82. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  83. package/Build/Workers/createVectorTileGeometries.js +8 -8
  84. package/Build/Workers/createVectorTilePoints.js +1 -1
  85. package/Build/Workers/createVectorTilePolygons.js +1 -1
  86. package/Build/Workers/createVectorTilePolylines.js +1 -1
  87. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  88. package/Build/Workers/createVerticesFromHeightmap.js +23 -21
  89. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
  90. package/Build/Workers/createWallGeometry.js +14 -14
  91. package/Build/Workers/createWallOutlineGeometry.js +14 -14
  92. package/Build/Workers/decodeDraco.js +1 -1
  93. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
  94. package/Build/Workers/decodeI3S.js +1 -1
  95. package/Build/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
  96. package/Build/Workers/package.js +1 -1
  97. package/Build/Workers/transcodeKTX2.js +26 -26
  98. package/Build/Workers/transferTypedArrayTest.js +1 -1
  99. package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -24
  100. package/Source/Core/ApproximateTerrainHeights.js +3 -3
  101. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +308 -208
  102. package/Source/Core/ArcType.js +4 -4
  103. package/Source/Core/ArticulationStageType.js +1 -1
  104. package/Source/Core/AssociativeArray.js +7 -7
  105. package/Source/Core/AttributeCompression.js +12 -12
  106. package/Source/Core/AxisAlignedBoundingBox.js +2 -2
  107. package/Source/Core/BingMapsGeocoderService.js +6 -6
  108. package/Source/Core/BoundingRectangle.js +17 -17
  109. package/Source/Core/BoundingSphere.js +25 -25
  110. package/Source/Core/BoxGeometry.js +8 -8
  111. package/Source/Core/BoxOutlineGeometry.js +8 -8
  112. package/Source/Core/Cartesian2.js +38 -38
  113. package/Source/Core/Cartesian3.js +50 -50
  114. package/Source/Core/Cartesian4.js +44 -44
  115. package/Source/Core/Cartographic.js +19 -19
  116. package/Source/Core/CartographicGeocoderService.js +1 -1
  117. package/Source/Core/CatmullRomSpline.js +10 -10
  118. package/Source/Core/CesiumTerrainProvider.js +598 -461
  119. package/Source/Core/Check.js +17 -17
  120. package/Source/Core/CircleGeometry.js +12 -12
  121. package/Source/Core/CircleOutlineGeometry.js +12 -12
  122. package/Source/Core/Clock.js +7 -7
  123. package/Source/Core/ClockRange.js +4 -4
  124. package/Source/Core/ClockStep.js +4 -4
  125. package/Source/Core/Color.js +58 -58
  126. package/Source/Core/ColorGeometryInstanceAttribute.js +7 -7
  127. package/Source/Core/ComponentDatatype.js +15 -15
  128. package/Source/Core/CompressedTextureBuffer.js +7 -7
  129. package/Source/Core/ConstantSpline.js +9 -9
  130. package/Source/Core/CoplanarPolygonGeometry.js +10 -10
  131. package/Source/Core/CoplanarPolygonOutlineGeometry.js +8 -8
  132. package/Source/Core/CornerType.js +4 -4
  133. package/Source/Core/CorridorGeometry.js +13 -13
  134. package/Source/Core/CorridorOutlineGeometry.js +11 -11
  135. package/Source/Core/Credit.js +7 -7
  136. package/Source/Core/CubicRealPolynomial.js +10 -10
  137. package/Source/Core/CullingVolume.js +7 -7
  138. package/Source/Core/CustomHeightmapTerrainProvider.js +40 -28
  139. package/Source/Core/CylinderGeometry.js +11 -11
  140. package/Source/Core/CylinderOutlineGeometry.js +12 -12
  141. package/Source/Core/DefaultProxy.js +3 -3
  142. package/Source/Core/DeveloperError.js +4 -4
  143. package/Source/Core/DistanceDisplayCondition.js +12 -12
  144. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +5 -5
  145. package/Source/Core/DoubleEndedPriorityQueue.js +5 -5
  146. package/Source/Core/EarthOrientationParameters.js +6 -6
  147. package/Source/Core/EarthOrientationParametersSample.js +10 -10
  148. package/Source/Core/EasingFunction.js +2 -2
  149. package/Source/Core/EllipseGeometry.js +19 -19
  150. package/Source/Core/EllipseOutlineGeometry.js +14 -14
  151. package/Source/Core/Ellipsoid.js +20 -20
  152. package/Source/Core/EllipsoidGeodesic.js +5 -5
  153. package/Source/Core/EllipsoidGeometry.js +13 -13
  154. package/Source/Core/EllipsoidOutlineGeometry.js +14 -14
  155. package/Source/Core/EllipsoidRhumbLine.js +8 -8
  156. package/Source/Core/EllipsoidTerrainProvider.js +35 -28
  157. package/Source/Core/EllipsoidalOccluder.js +9 -9
  158. package/Source/Core/EncodedCartesian3.js +5 -5
  159. package/Source/Core/Event.js +4 -4
  160. package/Source/Core/EventHelper.js +1 -1
  161. package/Source/Core/ExtrapolationType.js +4 -4
  162. package/Source/Core/FeatureDetection.js +9 -9
  163. package/Source/Core/FrustumGeometry.js +8 -8
  164. package/Source/Core/FrustumOutlineGeometry.js +7 -7
  165. package/Source/Core/Fullscreen.js +8 -8
  166. package/Source/Core/GeocodeType.js +3 -3
  167. package/Source/Core/GeocoderService.js +3 -3
  168. package/Source/Core/GeographicTilingScheme.js +16 -16
  169. package/Source/Core/Geometry.js +5 -5
  170. package/Source/Core/GeometryAttribute.js +6 -6
  171. package/Source/Core/GeometryInstance.js +5 -5
  172. package/Source/Core/GeometryInstanceAttribute.js +7 -7
  173. package/Source/Core/GeometryPipeline.js +11 -11
  174. package/Source/Core/GoogleEarthEnterpriseMetadata.js +107 -55
  175. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +29 -29
  176. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +137 -100
  177. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +14 -14
  178. package/Source/Core/GregorianDate.js +16 -16
  179. package/Source/Core/GroundPolylineGeometry.js +13 -13
  180. package/Source/Core/HeadingPitchRange.js +6 -6
  181. package/Source/Core/HeadingPitchRoll.js +18 -18
  182. package/Source/Core/Heap.js +7 -7
  183. package/Source/Core/HeightmapEncoding.js +3 -3
  184. package/Source/Core/HeightmapTerrainData.js +44 -44
  185. package/Source/Core/HeightmapTessellator.js +16 -16
  186. package/Source/Core/HermitePolynomialApproximation.js +17 -17
  187. package/Source/Core/HermiteSpline.js +17 -17
  188. package/Source/Core/HilbertOrder.js +7 -7
  189. package/Source/Core/Iau2006XysData.js +13 -13
  190. package/Source/Core/Iau2006XysSample.js +6 -6
  191. package/Source/Core/IauOrientationParameters.js +4 -4
  192. package/Source/Core/IndexDatatype.js +12 -12
  193. package/Source/Core/InterpolationAlgorithm.js +17 -17
  194. package/Source/Core/InterpolationType.js +1 -1
  195. package/Source/Core/Intersect.js +4 -4
  196. package/Source/Core/IntersectionTests.js +5 -5
  197. package/Source/Core/Intersections2D.js +23 -23
  198. package/Source/Core/Interval.js +4 -4
  199. package/Source/Core/Ion.js +3 -3
  200. package/Source/Core/IonGeocoderService.js +4 -4
  201. package/Source/Core/IonResource.js +20 -9
  202. package/Source/Core/JulianDate.js +27 -27
  203. package/Source/Core/KeyboardEventModifier.js +4 -4
  204. package/Source/Core/LagrangePolynomialApproximation.js +8 -8
  205. package/Source/Core/LeapSecond.js +2 -2
  206. package/Source/Core/LinearApproximation.js +8 -8
  207. package/Source/Core/LinearSpline.js +13 -13
  208. package/Source/Core/ManagedArray.js +8 -8
  209. package/Source/Core/Math.js +136 -136
  210. package/Source/Core/Matrix2.js +44 -44
  211. package/Source/Core/Matrix3.js +59 -59
  212. package/Source/Core/Matrix4.js +91 -91
  213. package/Source/Core/MorphWeightSpline.js +14 -14
  214. package/Source/Core/MortonOrder.js +21 -21
  215. package/Source/Core/NearFarScalar.js +16 -16
  216. package/Source/Core/Occluder.js +5 -5
  217. package/Source/Core/OffsetGeometryInstanceAttribute.js +5 -5
  218. package/Source/Core/OpenCageGeocoderService.js +18 -18
  219. package/Source/Core/OrientedBoundingBox.js +18 -16
  220. package/Source/Core/OrthographicFrustum.js +23 -23
  221. package/Source/Core/OrthographicOffCenterFrustum.js +21 -21
  222. package/Source/Core/Packable.js +7 -7
  223. package/Source/Core/PackableForInterpolation.js +11 -11
  224. package/Source/Core/PeliasGeocoderService.js +2 -2
  225. package/Source/Core/PerspectiveFrustum.js +28 -28
  226. package/Source/Core/PerspectiveOffCenterFrustum.js +21 -21
  227. package/Source/Core/PinBuilder.js +9 -9
  228. package/Source/Core/PixelFormat.js +23 -23
  229. package/Source/Core/Plane.js +4 -4
  230. package/Source/Core/PlaneGeometry.js +7 -7
  231. package/Source/Core/PlaneOutlineGeometry.js +5 -5
  232. package/Source/Core/PolygonGeometry.js +24 -24
  233. package/Source/Core/PolygonGeometryLibrary.js +4 -4
  234. package/Source/Core/PolygonOutlineGeometry.js +16 -16
  235. package/Source/Core/PolygonPipeline.js +10 -10
  236. package/Source/Core/PolylineGeometry.js +10 -10
  237. package/Source/Core/PolylinePipeline.js +15 -15
  238. package/Source/Core/PolylineVolumeGeometry.js +8 -8
  239. package/Source/Core/PolylineVolumeOutlineGeometry.js +8 -8
  240. package/Source/Core/PrimitiveType.js +8 -8
  241. package/Source/Core/Proxy.js +2 -2
  242. package/Source/Core/QuadraticRealPolynomial.js +8 -8
  243. package/Source/Core/QuantizedMeshTerrainData.js +37 -37
  244. package/Source/Core/QuarticRealPolynomial.js +12 -12
  245. package/Source/Core/Quaternion.js +42 -42
  246. package/Source/Core/QuaternionSpline.js +10 -10
  247. package/Source/Core/Queue.js +2 -2
  248. package/Source/Core/Ray.js +1 -1
  249. package/Source/Core/Rectangle.js +38 -38
  250. package/Source/Core/RectangleCollisionChecker.js +3 -3
  251. package/Source/Core/RectangleGeometry.js +15 -15
  252. package/Source/Core/RectangleOutlineGeometry.js +11 -11
  253. package/Source/Core/ReferenceFrame.js +3 -3
  254. package/Source/Core/Request.js +13 -13
  255. package/Source/Core/RequestErrorEvent.js +7 -7
  256. package/Source/Core/RequestScheduler.js +15 -15
  257. package/Source/Core/RequestState.js +7 -7
  258. package/Source/Core/RequestType.js +5 -5
  259. package/Source/Core/Resource.js +225 -225
  260. package/Source/Core/RuntimeError.js +4 -4
  261. package/Source/Core/S2Cell.js +15 -15
  262. package/Source/Core/ScreenSpaceEventHandler.js +7 -7
  263. package/Source/Core/ScreenSpaceEventType.js +16 -16
  264. package/Source/Core/ShowGeometryInstanceAttribute.js +4 -4
  265. package/Source/Core/SimplePolylineGeometry.js +9 -9
  266. package/Source/Core/SphereGeometry.js +10 -10
  267. package/Source/Core/SphereOutlineGeometry.js +11 -11
  268. package/Source/Core/Spherical.js +13 -13
  269. package/Source/Core/Spline.js +14 -14
  270. package/Source/Core/SteppedSpline.js +14 -14
  271. package/Source/Core/TaskProcessor.js +10 -10
  272. package/Source/Core/TerrainData.js +25 -25
  273. package/Source/Core/TerrainEncoding.js +14 -14
  274. package/Source/Core/TerrainExaggeration.js +3 -3
  275. package/Source/Core/TerrainMesh.js +18 -18
  276. package/Source/Core/TerrainProvider.js +32 -37
  277. package/Source/Core/TerrainQuantization.js +3 -3
  278. package/Source/Core/TileAvailability.js +16 -16
  279. package/Source/Core/TileProviderError.js +19 -19
  280. package/Source/Core/TilingScheme.js +13 -13
  281. package/Source/Core/TimeConstants.js +10 -10
  282. package/Source/Core/TimeInterval.js +23 -23
  283. package/Source/Core/TimeIntervalCollection.js +39 -39
  284. package/Source/Core/TimeStandard.js +3 -3
  285. package/Source/Core/Tipsify.js +10 -10
  286. package/Source/Core/Transforms.js +2 -2
  287. package/Source/Core/TranslationRotationScale.js +1 -1
  288. package/Source/Core/TridiagonalSystemSolver.js +3 -3
  289. package/Source/Core/TrustedServers.js +5 -5
  290. package/Source/Core/VRTheWorldTerrainProvider.js +210 -141
  291. package/Source/Core/VertexFormat.js +13 -13
  292. package/Source/Core/VideoSynchronizer.js +4 -4
  293. package/Source/Core/Visibility.js +4 -4
  294. package/Source/Core/VulkanConstants.js +1 -1
  295. package/Source/Core/WallGeometry.js +13 -13
  296. package/Source/Core/WallOutlineGeometry.js +13 -13
  297. package/Source/Core/WebGLConstants.js +1 -1
  298. package/Source/Core/WebMercatorProjection.js +5 -5
  299. package/Source/Core/WebMercatorTilingScheme.js +16 -16
  300. package/Source/Core/WindingOrder.js +3 -3
  301. package/Source/Core/WireframeIndexGenerator.js +3 -3
  302. package/Source/Core/arrayRemoveDuplicates.js +4 -4
  303. package/Source/Core/binarySearch.js +2 -2
  304. package/Source/Core/buildModuleUrl.js +8 -7
  305. package/Source/Core/clone.js +3 -3
  306. package/Source/Core/combine.js +4 -4
  307. package/Source/Core/createGuid.js +1 -1
  308. package/Source/Core/createWorldTerrain.js +23 -5
  309. package/Source/Core/createWorldTerrainAsync.js +48 -0
  310. package/Source/Core/defaultValue.js +1 -1
  311. package/Source/Core/defer.js +1 -1
  312. package/Source/Core/defined.js +1 -1
  313. package/Source/Core/deprecationWarning.js +2 -2
  314. package/Source/Core/destroyObject.js +2 -2
  315. package/Source/Core/formatError.js +1 -1
  316. package/Source/Core/getAbsoluteUri.js +3 -3
  317. package/Source/Core/getBaseUri.js +3 -3
  318. package/Source/Core/getExtensionFromUri.js +2 -2
  319. package/Source/Core/getFilenameFromUri.js +2 -2
  320. package/Source/Core/getImageFromTypedArray.js +2 -2
  321. package/Source/Core/getImagePixels.js +4 -3
  322. package/Source/Core/getJsonFromTypedArray.js +3 -3
  323. package/Source/Core/getStringFromTypedArray.js +3 -3
  324. package/Source/Core/getTimestamp.js +1 -1
  325. package/Source/Core/isBlobUri.js +2 -2
  326. package/Source/Core/isDataUri.js +2 -2
  327. package/Source/Core/isLeapYear.js +2 -2
  328. package/Source/Core/loadKTX2.js +8 -8
  329. package/Source/Core/mergeSort.js +1 -1
  330. package/Source/Core/objectToQuery.js +2 -2
  331. package/Source/Core/oneTimeWarning.js +2 -2
  332. package/Source/Core/parseResponseHeaders.js +2 -2
  333. package/Source/Core/pointInsideTriangle.js +1 -1
  334. package/Source/Core/queryToObject.js +2 -2
  335. package/Source/Core/sampleTerrain.js +16 -17
  336. package/Source/Core/sampleTerrainMostDetailed.js +67 -73
  337. package/Source/Core/scaleToGeodeticSurface.js +1 -1
  338. package/Source/Core/subdivideArray.js +1 -1
  339. package/Source/Core/writeTextToCanvas.js +10 -9
  340. package/Source/DataSources/BillboardGraphics.js +1 -1
  341. package/Source/DataSources/BillboardVisualizer.js +2 -2
  342. package/Source/DataSources/BoundingSphereState.js +1 -1
  343. package/Source/DataSources/BoxGraphics.js +1 -1
  344. package/Source/DataSources/CallbackProperty.js +8 -8
  345. package/Source/DataSources/Cesium3DTilesetGraphics.js +1 -1
  346. package/Source/DataSources/Cesium3DTilesetVisualizer.js +39 -28
  347. package/Source/DataSources/CheckerboardMaterialProperty.js +6 -6
  348. package/Source/DataSources/ColorMaterialProperty.js +5 -5
  349. package/Source/DataSources/CompositeEntityCollection.js +8 -8
  350. package/Source/DataSources/CompositeMaterialProperty.js +5 -5
  351. package/Source/DataSources/CompositePositionProperty.js +2 -2
  352. package/Source/DataSources/CompositeProperty.js +4 -4
  353. package/Source/DataSources/ConstantPositionProperty.js +4 -4
  354. package/Source/DataSources/ConstantProperty.js +5 -5
  355. package/Source/DataSources/CorridorGraphics.js +1 -1
  356. package/Source/DataSources/CustomDataSource.js +5 -5
  357. package/Source/DataSources/CylinderGraphics.js +1 -1
  358. package/Source/DataSources/CzmlDataSource.js +26 -26
  359. package/Source/DataSources/DataSource.js +4 -4
  360. package/Source/DataSources/DataSourceClock.js +2 -2
  361. package/Source/DataSources/DataSourceCollection.js +11 -11
  362. package/Source/DataSources/DataSourceDisplay.js +5 -5
  363. package/Source/DataSources/DynamicGeometryUpdater.js +1 -1
  364. package/Source/DataSources/EllipseGraphics.js +1 -1
  365. package/Source/DataSources/EllipsoidGeometryUpdater.js +2 -2
  366. package/Source/DataSources/EllipsoidGraphics.js +1 -1
  367. package/Source/DataSources/Entity.js +20 -15
  368. package/Source/DataSources/EntityCluster.js +16 -16
  369. package/Source/DataSources/EntityCollection.js +8 -8
  370. package/Source/DataSources/GeoJsonDataSource.js +27 -27
  371. package/Source/DataSources/GeometryUpdater.js +22 -22
  372. package/Source/DataSources/GeometryVisualizer.js +2 -2
  373. package/Source/DataSources/GpxDataSource.js +23 -23
  374. package/Source/DataSources/GridMaterialProperty.js +7 -7
  375. package/Source/DataSources/GroundGeometryUpdater.js +5 -5
  376. package/Source/DataSources/ImageMaterialProperty.js +8 -8
  377. package/Source/DataSources/KmlDataSource.js +32 -32
  378. package/Source/DataSources/KmlTour.js +7 -7
  379. package/Source/DataSources/KmlTourFlyTo.js +6 -6
  380. package/Source/DataSources/KmlTourWait.js +2 -2
  381. package/Source/DataSources/LabelGraphics.js +1 -1
  382. package/Source/DataSources/LabelVisualizer.js +2 -2
  383. package/Source/DataSources/MaterialProperty.js +5 -5
  384. package/Source/DataSources/ModelGraphics.js +3 -3
  385. package/Source/DataSources/ModelVisualizer.js +101 -33
  386. package/Source/DataSources/NodeTransformationProperty.js +3 -3
  387. package/Source/DataSources/PathGraphics.js +1 -1
  388. package/Source/DataSources/PathVisualizer.js +2 -2
  389. package/Source/DataSources/PlaneGraphics.js +1 -1
  390. package/Source/DataSources/PointGraphics.js +1 -1
  391. package/Source/DataSources/PointVisualizer.js +2 -2
  392. package/Source/DataSources/PolygonGraphics.js +4 -4
  393. package/Source/DataSources/PolylineArrowMaterialProperty.js +5 -5
  394. package/Source/DataSources/PolylineDashMaterialProperty.js +8 -8
  395. package/Source/DataSources/PolylineGeometryUpdater.js +13 -13
  396. package/Source/DataSources/PolylineGlowMaterialProperty.js +8 -8
  397. package/Source/DataSources/PolylineGraphics.js +2 -2
  398. package/Source/DataSources/PolylineOutlineMaterialProperty.js +7 -7
  399. package/Source/DataSources/PolylineVisualizer.js +2 -2
  400. package/Source/DataSources/PolylineVolumeGraphics.js +3 -3
  401. package/Source/DataSources/PositionProperty.js +2 -2
  402. package/Source/DataSources/PositionPropertyArray.js +2 -2
  403. package/Source/DataSources/Property.js +4 -4
  404. package/Source/DataSources/PropertyArray.js +2 -2
  405. package/Source/DataSources/PropertyBag.js +10 -10
  406. package/Source/DataSources/RectangleGraphics.js +1 -1
  407. package/Source/DataSources/ReferenceProperty.js +10 -10
  408. package/Source/DataSources/Rotation.js +14 -14
  409. package/Source/DataSources/SampledPositionProperty.js +11 -11
  410. package/Source/DataSources/SampledProperty.js +12 -12
  411. package/Source/DataSources/StripeMaterialProperty.js +8 -8
  412. package/Source/DataSources/StripeOrientation.js +3 -3
  413. package/Source/DataSources/TerrainOffsetProperty.js +1 -1
  414. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +3 -3
  415. package/Source/DataSources/TimeIntervalCollectionProperty.js +4 -4
  416. package/Source/DataSources/VelocityOrientationProperty.js +2 -2
  417. package/Source/DataSources/VelocityVectorProperty.js +4 -4
  418. package/Source/DataSources/Visualizer.js +2 -2
  419. package/Source/DataSources/WallGraphics.js +4 -4
  420. package/Source/DataSources/exportKml.js +9 -9
  421. package/Source/Renderer/Buffer.js +4 -4
  422. package/Source/Renderer/ClearCommand.js +3 -3
  423. package/Source/Renderer/ComputeCommand.js +3 -3
  424. package/Source/Renderer/Context.js +46 -46
  425. package/Source/Renderer/ContextLimits.js +22 -22
  426. package/Source/Renderer/CubeMapFace.js +11 -11
  427. package/Source/Renderer/DrawCommand.js +15 -15
  428. package/Source/Renderer/Framebuffer.js +4 -4
  429. package/Source/Renderer/FramebufferManager.js +9 -9
  430. package/Source/Renderer/MultisampleFramebuffer.js +1 -1
  431. package/Source/Renderer/PassState.js +2 -2
  432. package/Source/Renderer/PixelDatatype.js +1 -1
  433. package/Source/Renderer/RenderState.js +1 -1
  434. package/Source/Renderer/ShaderBuilder.js +24 -24
  435. package/Source/Renderer/ShaderCache.js +8 -8
  436. package/Source/Renderer/ShaderDestination.js +2 -2
  437. package/Source/Renderer/ShaderFunction.js +3 -3
  438. package/Source/Renderer/ShaderSource.js +8 -8
  439. package/Source/Renderer/ShaderStruct.js +4 -4
  440. package/Source/Renderer/Texture.js +18 -18
  441. package/Source/Renderer/TextureMagnificationFilter.js +4 -4
  442. package/Source/Renderer/TextureMinificationFilter.js +8 -8
  443. package/Source/Renderer/UniformState.js +14 -14
  444. package/Source/Renderer/VertexArray.js +2 -2
  445. package/Source/Renderer/createUniform.js +12 -12
  446. package/Source/Renderer/createUniformArray.js +12 -12
  447. package/Source/Renderer/freezeRenderState.js +2 -2
  448. package/Source/Renderer/loadCubeMap.js +3 -3
  449. package/Source/Scene/AlphaMode.js +4 -4
  450. package/Source/Scene/Appearance.js +14 -14
  451. package/Source/Scene/ArcGisMapServerImageryProvider.js +585 -409
  452. package/Source/Scene/AttributeType.js +11 -11
  453. package/Source/Scene/AutoExposure.js +6 -6
  454. package/Source/Scene/Axis.js +6 -6
  455. package/Source/Scene/B3dmParser.js +2 -2
  456. package/Source/Scene/BatchTable.js +13 -13
  457. package/Source/Scene/BatchTableHierarchy.js +22 -22
  458. package/Source/Scene/BatchTexture.js +14 -14
  459. package/Source/Scene/Billboard.js +17 -17
  460. package/Source/Scene/BillboardCollection.js +13 -13
  461. package/Source/Scene/BingMapsImageryProvider.js +541 -335
  462. package/Source/Scene/BingMapsStyle.js +11 -11
  463. package/Source/Scene/BlendEquation.js +6 -6
  464. package/Source/Scene/BlendFunction.js +16 -16
  465. package/Source/Scene/BlendOption.js +4 -4
  466. package/Source/Scene/BlendingState.js +4 -4
  467. package/Source/Scene/BufferLoader.js +33 -38
  468. package/Source/Scene/Camera.js +57 -57
  469. package/Source/Scene/CameraEventAggregator.js +26 -16
  470. package/Source/Scene/CameraEventType.js +6 -6
  471. package/Source/Scene/Cesium3DContentGroup.js +1 -1
  472. package/Source/Scene/Cesium3DTile.js +409 -272
  473. package/Source/Scene/Cesium3DTileBatchTable.js +3 -3
  474. package/Source/Scene/Cesium3DTileColorBlendMode.js +4 -4
  475. package/Source/Scene/Cesium3DTileContent.js +31 -15
  476. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  477. package/Source/Scene/Cesium3DTileContentType.js +17 -17
  478. package/Source/Scene/Cesium3DTileFeature.js +16 -16
  479. package/Source/Scene/Cesium3DTileOptimizationHint.js +1 -1
  480. package/Source/Scene/Cesium3DTileOptimizations.js +1 -1
  481. package/Source/Scene/Cesium3DTilePass.js +8 -11
  482. package/Source/Scene/Cesium3DTilePassState.js +1 -1
  483. package/Source/Scene/Cesium3DTilePointFeature.js +23 -23
  484. package/Source/Scene/Cesium3DTileRefine.js +3 -3
  485. package/Source/Scene/Cesium3DTileStyle.js +17 -17
  486. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  487. package/Source/Scene/Cesium3DTilesVoxelProvider.js +226 -118
  488. package/Source/Scene/Cesium3DTileset.js +817 -543
  489. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  490. package/Source/Scene/Cesium3DTilesetHeatmap.js +4 -4
  491. package/Source/Scene/Cesium3DTilesetMetadata.js +5 -5
  492. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  493. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  494. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  495. package/Source/Scene/CircleEmitter.js +2 -2
  496. package/Source/Scene/ClassificationPrimitive.js +32 -25
  497. package/Source/Scene/ClassificationType.js +4 -4
  498. package/Source/Scene/ClippingPlane.js +2 -2
  499. package/Source/Scene/ClippingPlaneCollection.js +17 -17
  500. package/Source/Scene/CloudCollection.js +16 -16
  501. package/Source/Scene/CloudType.js +3 -3
  502. package/Source/Scene/ColorBlendMode.js +1 -1
  503. package/Source/Scene/Composite3DTileContent.js +69 -26
  504. package/Source/Scene/ConditionsExpression.js +11 -11
  505. package/Source/Scene/ConeEmitter.js +2 -2
  506. package/Source/Scene/ContentMetadata.js +16 -16
  507. package/Source/Scene/CreditDisplay.js +22 -6
  508. package/Source/Scene/CullFace.js +4 -4
  509. package/Source/Scene/CumulusCloud.js +3 -3
  510. package/Source/Scene/DebugAppearance.js +17 -17
  511. package/Source/Scene/DebugCameraPrimitive.js +7 -7
  512. package/Source/Scene/DebugModelMatrixPrimitive.js +9 -9
  513. package/Source/Scene/DepthFunction.js +9 -9
  514. package/Source/Scene/DepthPlane.js +1 -1
  515. package/Source/Scene/DeviceOrientationCameraController.js +1 -1
  516. package/Source/Scene/DirectionalLight.js +3 -3
  517. package/Source/Scene/DiscardEmptyTileImagePolicy.js +2 -2
  518. package/Source/Scene/DiscardMissingTileImagePolicy.js +5 -5
  519. package/Source/Scene/DracoLoader.js +4 -4
  520. package/Source/Scene/EllipsoidPrimitive.js +8 -8
  521. package/Source/Scene/EllipsoidSurfaceAppearance.js +19 -19
  522. package/Source/Scene/Empty3DTileContent.js +31 -1
  523. package/Source/Scene/Expression.js +14 -14
  524. package/Source/Scene/Fog.js +5 -5
  525. package/Source/Scene/FrameRateMonitor.js +14 -14
  526. package/Source/Scene/FrameState.js +36 -36
  527. package/Source/Scene/FrustumCommands.js +2 -2
  528. package/Source/Scene/Geometry3DTileContent.js +47 -7
  529. package/Source/Scene/GetFeatureInfoFormat.js +2 -2
  530. package/Source/Scene/Globe.js +39 -35
  531. package/Source/Scene/GlobeSurfaceTile.js +3 -2
  532. package/Source/Scene/GlobeSurfaceTileProvider.js +56 -33
  533. package/Source/Scene/GlobeTranslucency.js +3 -3
  534. package/Source/Scene/GltfBufferViewLoader.js +52 -96
  535. package/Source/Scene/GltfDracoLoader.js +117 -119
  536. package/Source/Scene/GltfImageLoader.js +77 -84
  537. package/Source/Scene/GltfIndexBufferLoader.js +118 -131
  538. package/Source/Scene/GltfJsonLoader.js +81 -80
  539. package/Source/Scene/GltfLoader.js +413 -301
  540. package/Source/Scene/GltfLoaderUtil.js +11 -11
  541. package/Source/Scene/GltfPipeline/addBuffer.js +2 -2
  542. package/Source/Scene/GltfPipeline/addDefaults.js +2 -2
  543. package/Source/Scene/GltfPipeline/addExtensionsRequired.js +2 -2
  544. package/Source/Scene/GltfPipeline/addExtensionsUsed.js +2 -2
  545. package/Source/Scene/GltfPipeline/addPipelineExtras.js +2 -2
  546. package/Source/Scene/GltfPipeline/addToArray.js +2 -2
  547. package/Source/Scene/GltfPipeline/findAccessorMinMax.js +2 -2
  548. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +3 -3
  549. package/Source/Scene/GltfPipeline/getAccessorByteStride.js +3 -3
  550. package/Source/Scene/GltfPipeline/getComponentReader.js +5 -5
  551. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -2
  552. package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +2 -2
  553. package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +2 -2
  554. package/Source/Scene/GltfPipeline/parseGlb.js +1 -1
  555. package/Source/Scene/GltfPipeline/readAccessorPacked.js +2 -2
  556. package/Source/Scene/GltfPipeline/removeExtension.js +2 -2
  557. package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +2 -2
  558. package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +2 -2
  559. package/Source/Scene/GltfPipeline/removePipelineExtras.js +2 -2
  560. package/Source/Scene/GltfPipeline/removeUnusedElements.js +2 -2
  561. package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +2 -2
  562. package/Source/Scene/GltfPipeline/updateVersion.js +4 -4
  563. package/Source/Scene/GltfPipeline/usesExtension.js +3 -3
  564. package/Source/Scene/GltfStructuralMetadataLoader.js +117 -118
  565. package/Source/Scene/GltfTextureLoader.js +104 -103
  566. package/Source/Scene/GltfVertexBufferLoader.js +140 -145
  567. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +377 -249
  568. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +520 -360
  569. package/Source/Scene/GridImageryProvider.js +292 -129
  570. package/Source/Scene/GroundPolylinePrimitive.js +32 -21
  571. package/Source/Scene/GroundPrimitive.js +34 -27
  572. package/Source/Scene/GroupMetadata.js +17 -17
  573. package/Source/Scene/HeightReference.js +4 -4
  574. package/Source/Scene/HorizontalOrigin.js +4 -4
  575. package/Source/Scene/I3SDataProvider.js +221 -120
  576. package/Source/Scene/I3SFeature.js +8 -7
  577. package/Source/Scene/I3SField.js +5 -5
  578. package/Source/Scene/I3SGeometry.js +8 -8
  579. package/Source/Scene/I3SLayer.js +33 -44
  580. package/Source/Scene/I3SNode.js +65 -72
  581. package/Source/Scene/I3dmParser.js +2 -2
  582. package/Source/Scene/ImageBasedLighting.js +21 -17
  583. package/Source/Scene/Imagery.js +6 -1
  584. package/Source/Scene/ImageryLayer.js +324 -73
  585. package/Source/Scene/ImageryLayerCollection.js +37 -11
  586. package/Source/Scene/ImageryLayerFeatureInfo.js +6 -6
  587. package/Source/Scene/ImageryProvider.js +151 -133
  588. package/Source/Scene/Implicit3DTileContent.js +128 -79
  589. package/Source/Scene/ImplicitAvailabilityBitstream.js +10 -10
  590. package/Source/Scene/ImplicitMetadataView.js +16 -16
  591. package/Source/Scene/ImplicitSubdivisionScheme.js +4 -4
  592. package/Source/Scene/ImplicitSubtree.js +113 -92
  593. package/Source/Scene/ImplicitSubtreeCache.js +6 -6
  594. package/Source/Scene/ImplicitSubtreeMetadata.js +16 -16
  595. package/Source/Scene/ImplicitTileCoordinates.js +27 -27
  596. package/Source/Scene/ImplicitTileset.js +10 -10
  597. package/Source/Scene/InstanceAttributeSemantic.js +5 -5
  598. package/Source/Scene/IonImageryProvider.js +493 -286
  599. package/Source/Scene/IonWorldImageryStyle.js +4 -4
  600. package/Source/Scene/JsonMetadataTable.js +11 -11
  601. package/Source/Scene/KeyframeNode.js +1 -1
  602. package/Source/Scene/Label.js +14 -14
  603. package/Source/Scene/LabelCollection.js +12 -11
  604. package/Source/Scene/LabelStyle.js +4 -4
  605. package/Source/Scene/Light.js +1 -1
  606. package/Source/Scene/MapMode2D.js +3 -3
  607. package/Source/Scene/MapboxImageryProvider.js +301 -141
  608. package/Source/Scene/MapboxStyleImageryProvider.js +301 -142
  609. package/Source/Scene/Material.js +47 -47
  610. package/Source/Scene/MaterialAppearance.js +21 -21
  611. package/Source/Scene/Megatexture.js +15 -15
  612. package/Source/Scene/MetadataClass.js +16 -16
  613. package/Source/Scene/MetadataClassProperty.js +41 -41
  614. package/Source/Scene/MetadataComponentType.js +21 -21
  615. package/Source/Scene/MetadataEntity.js +31 -31
  616. package/Source/Scene/MetadataEnum.js +14 -14
  617. package/Source/Scene/MetadataEnumValue.js +10 -10
  618. package/Source/Scene/MetadataSchema.js +16 -16
  619. package/Source/Scene/MetadataSchemaLoader.js +31 -41
  620. package/Source/Scene/MetadataSemantic.js +17 -17
  621. package/Source/Scene/MetadataTable.js +24 -24
  622. package/Source/Scene/MetadataTableProperty.js +9 -9
  623. package/Source/Scene/MetadataType.js +15 -15
  624. package/Source/Scene/Model/B3dmLoader.js +54 -58
  625. package/Source/Scene/Model/ClassificationModelDrawCommand.js +3 -3
  626. package/Source/Scene/Model/CustomShader.js +18 -18
  627. package/Source/Scene/Model/CustomShaderMode.js +4 -4
  628. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +4 -4
  629. package/Source/Scene/Model/GeoJsonLoader.js +12 -36
  630. package/Source/Scene/Model/I3dmLoader.js +58 -84
  631. package/Source/Scene/Model/LightingModel.js +3 -3
  632. package/Source/Scene/Model/MaterialPipelineStage.js +6 -6
  633. package/Source/Scene/Model/MetadataPipelineStage.js +25 -26
  634. package/Source/Scene/Model/Model.js +531 -193
  635. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  636. package/Source/Scene/Model/ModelAlphaOptions.js +1 -1
  637. package/Source/Scene/Model/ModelAnimation.js +11 -11
  638. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  639. package/Source/Scene/Model/ModelAnimationCollection.js +21 -21
  640. package/Source/Scene/Model/ModelArticulation.js +4 -4
  641. package/Source/Scene/Model/ModelArticulationStage.js +5 -5
  642. package/Source/Scene/Model/ModelDrawCommand.js +18 -29
  643. package/Source/Scene/Model/ModelFeature.js +12 -12
  644. package/Source/Scene/Model/ModelFeatureTable.js +5 -5
  645. package/Source/Scene/Model/ModelLightingOptions.js +1 -1
  646. package/Source/Scene/Model/ModelNode.js +3 -3
  647. package/Source/Scene/Model/ModelRenderResources.js +4 -4
  648. package/Source/Scene/Model/ModelRuntimeNode.js +7 -7
  649. package/Source/Scene/Model/ModelRuntimePrimitive.js +3 -3
  650. package/Source/Scene/Model/ModelSceneGraph.js +11 -11
  651. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +1 -1
  652. package/Source/Scene/Model/ModelSkin.js +1 -1
  653. package/Source/Scene/Model/ModelStatistics.js +7 -7
  654. package/Source/Scene/Model/ModelType.js +8 -8
  655. package/Source/Scene/Model/ModelUtility.js +26 -26
  656. package/Source/Scene/Model/NodeRenderResources.js +7 -7
  657. package/Source/Scene/Model/PntsLoader.js +32 -37
  658. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -1
  659. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +28 -28
  660. package/Source/Scene/Model/PrimitiveRenderResources.js +10 -10
  661. package/Source/Scene/Model/StyleCommandsNeeded.js +1 -1
  662. package/Source/Scene/Model/TextureManager.js +3 -3
  663. package/Source/Scene/Model/TextureUniform.js +6 -6
  664. package/Source/Scene/Model/UniformType.js +17 -17
  665. package/Source/Scene/Model/VaryingType.js +8 -8
  666. package/Source/Scene/ModelAnimationLoop.js +4 -4
  667. package/Source/Scene/ModelComponents.js +61 -61
  668. package/Source/Scene/Moon.js +8 -8
  669. package/Source/Scene/Multiple3DTileContent.js +146 -127
  670. package/Source/Scene/NeverTileDiscardPolicy.js +2 -2
  671. package/Source/Scene/OIT.js +9 -9
  672. package/Source/Scene/OctahedralProjectedCubeMap.js +28 -39
  673. package/Source/Scene/OpenStreetMapImageryProvider.js +6 -6
  674. package/Source/Scene/OrderedGroundPrimitiveCollection.js +9 -9
  675. package/Source/Scene/Particle.js +13 -13
  676. package/Source/Scene/ParticleBurst.js +8 -8
  677. package/Source/Scene/ParticleSystem.js +41 -36
  678. package/Source/Scene/PerInstanceColorAppearance.js +18 -18
  679. package/Source/Scene/PerformanceDisplay.js +2 -2
  680. package/Source/Scene/PntsParser.js +1 -1
  681. package/Source/Scene/PointCloud.js +11 -19
  682. package/Source/Scene/PointCloudEyeDomeLighting.js +1 -1
  683. package/Source/Scene/PointCloudShading.js +20 -20
  684. package/Source/Scene/PointPrimitive.js +6 -6
  685. package/Source/Scene/PointPrimitiveCollection.js +11 -11
  686. package/Source/Scene/Polyline.js +9 -9
  687. package/Source/Scene/PolylineCollection.js +11 -11
  688. package/Source/Scene/PolylineColorAppearance.js +13 -13
  689. package/Source/Scene/PolylineMaterialAppearance.js +13 -13
  690. package/Source/Scene/PostProcessStage.js +15 -15
  691. package/Source/Scene/PostProcessStageCollection.js +10 -10
  692. package/Source/Scene/PostProcessStageComposite.js +13 -13
  693. package/Source/Scene/PostProcessStageLibrary.js +8 -8
  694. package/Source/Scene/PostProcessStageSampleMode.js +3 -3
  695. package/Source/Scene/PostProcessStageTextureCache.js +4 -4
  696. package/Source/Scene/Primitive.js +50 -30
  697. package/Source/Scene/PrimitiveCollection.js +20 -20
  698. package/Source/Scene/PrimitiveLoadPlan.js +6 -6
  699. package/Source/Scene/PropertyAttribute.js +9 -9
  700. package/Source/Scene/PropertyAttributeProperty.js +6 -6
  701. package/Source/Scene/PropertyTable.js +34 -34
  702. package/Source/Scene/PropertyTexture.js +9 -9
  703. package/Source/Scene/PropertyTextureProperty.js +8 -8
  704. package/Source/Scene/QuadtreePrimitive.js +11 -9
  705. package/Source/Scene/QuadtreeTile.js +11 -11
  706. package/Source/Scene/QuadtreeTileLoadState.js +1 -1
  707. package/Source/Scene/QuadtreeTileProvider.js +10 -14
  708. package/Source/Scene/ResourceCache.js +85 -143
  709. package/Source/Scene/ResourceCacheKey.js +42 -42
  710. package/Source/Scene/ResourceCacheStatistics.js +26 -60
  711. package/Source/Scene/ResourceLoader.js +9 -21
  712. package/Source/Scene/ResourceLoaderState.js +16 -8
  713. package/Source/Scene/SDFSettings.js +4 -4
  714. package/Source/Scene/Scene.js +153 -88
  715. package/Source/Scene/SceneMode.js +6 -6
  716. package/Source/Scene/SceneTransitioner.js +1 -1
  717. package/Source/Scene/ScreenSpaceCameraController.js +41 -23
  718. package/Source/Scene/ShadowMap.js +22 -22
  719. package/Source/Scene/ShadowMapShader.js +1 -1
  720. package/Source/Scene/ShadowMode.js +5 -5
  721. package/Source/Scene/ShadowVolumeAppearance.js +17 -17
  722. package/Source/Scene/SingleTileImageryProvider.js +403 -230
  723. package/Source/Scene/SkyAtmosphere.js +10 -10
  724. package/Source/Scene/SkyBox.js +6 -6
  725. package/Source/Scene/SpatialNode.js +103 -87
  726. package/Source/Scene/SphereEmitter.js +2 -2
  727. package/Source/Scene/SplitDirection.js +4 -4
  728. package/Source/Scene/Splitter.js +2 -2
  729. package/Source/Scene/StencilFunction.js +9 -9
  730. package/Source/Scene/StencilOperation.js +9 -9
  731. package/Source/Scene/StructuralMetadata.js +11 -11
  732. package/Source/Scene/StyleExpression.js +8 -8
  733. package/Source/Scene/Sun.js +3 -3
  734. package/Source/Scene/SunLight.js +3 -3
  735. package/Source/Scene/SupportedImageFormats.js +3 -3
  736. package/Source/Scene/Terrain.js +196 -0
  737. package/Source/Scene/TextureAtlas.js +16 -16
  738. package/Source/Scene/TileBoundingRegion.js +6 -6
  739. package/Source/Scene/TileBoundingS2Cell.js +6 -6
  740. package/Source/Scene/TileBoundingSphere.js +5 -5
  741. package/Source/Scene/TileBoundingVolume.js +2 -2
  742. package/Source/Scene/TileCoordinatesImageryProvider.js +289 -126
  743. package/Source/Scene/TileDiscardPolicy.js +2 -2
  744. package/Source/Scene/TileImagery.js +3 -3
  745. package/Source/Scene/TileMapServiceImageryProvider.js +185 -93
  746. package/Source/Scene/TileMetadata.js +16 -16
  747. package/Source/Scene/TileOrientedBoundingBox.js +2 -2
  748. package/Source/Scene/TileReplacementQueue.js +1 -1
  749. package/Source/Scene/TileSelectionResult.js +1 -1
  750. package/Source/Scene/Tileset3DTileContent.js +47 -5
  751. package/Source/Scene/TilesetMetadata.js +15 -15
  752. package/Source/Scene/TimeDynamicImagery.js +8 -8
  753. package/Source/Scene/TimeDynamicPointCloud.js +24 -11
  754. package/Source/Scene/Tonemapper.js +5 -5
  755. package/Source/Scene/TranslucentTileClassification.js +1 -1
  756. package/Source/Scene/TweenCollection.js +31 -31
  757. package/Source/Scene/UrlTemplateImageryProvider.js +380 -252
  758. package/Source/Scene/Vector3DTileBatch.js +7 -7
  759. package/Source/Scene/Vector3DTileClampedPolylines.js +105 -93
  760. package/Source/Scene/Vector3DTileContent.js +47 -22
  761. package/Source/Scene/Vector3DTileGeometry.js +65 -60
  762. package/Source/Scene/Vector3DTilePoints.js +79 -75
  763. package/Source/Scene/Vector3DTilePolygons.js +128 -127
  764. package/Source/Scene/Vector3DTilePolylines.js +95 -91
  765. package/Source/Scene/Vector3DTilePrimitive.js +8 -9
  766. package/Source/Scene/VertexAttributeSemantic.js +15 -15
  767. package/Source/Scene/VerticalOrigin.js +5 -5
  768. package/Source/Scene/ViewportQuad.js +2 -2
  769. package/Source/Scene/VoxelBoxShape.js +27 -118
  770. package/Source/Scene/VoxelContent.js +63 -65
  771. package/Source/Scene/VoxelCylinderShape.js +21 -21
  772. package/Source/Scene/VoxelEllipsoidShape.js +13 -13
  773. package/Source/Scene/VoxelPrimitive.js +83 -135
  774. package/Source/Scene/VoxelProvider.js +15 -15
  775. package/Source/Scene/VoxelRenderResources.js +6 -3
  776. package/Source/Scene/VoxelShape.js +9 -9
  777. package/Source/Scene/VoxelShapeType.js +4 -4
  778. package/Source/Scene/VoxelTraversal.js +86 -144
  779. package/Source/Scene/WebMapServiceImageryProvider.js +313 -152
  780. package/Source/Scene/WebMapTileServiceImageryProvider.js +305 -142
  781. package/Source/Scene/buildVoxelDrawCommands.js +1 -0
  782. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  783. package/Source/Scene/createBillboardPointCallback.js +5 -5
  784. package/Source/Scene/createElevationBandMaterial.js +5 -5
  785. package/Source/Scene/createOsmBuildings.js +9 -3
  786. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  787. package/Source/Scene/createTangentSpaceDebugPrimitive.js +2 -2
  788. package/Source/Scene/createWorldImagery.js +15 -6
  789. package/Source/Scene/createWorldImageryAsync.js +39 -0
  790. package/Source/Scene/findContentMetadata.js +1 -1
  791. package/Source/Scene/findGroupMetadata.js +1 -1
  792. package/Source/Scene/findTileMetadata.js +1 -1
  793. package/Source/Scene/getClipAndStyleCode.js +4 -4
  794. package/Source/Scene/getClippingFunction.js +1 -1
  795. package/Source/Scene/hasExtension.js +3 -3
  796. package/Source/Scene/parseBatchTable.js +14 -14
  797. package/Source/Scene/parseBoundingVolumeSemantics.js +7 -7
  798. package/Source/Scene/parseFeatureMetadataLegacy.js +4 -4
  799. package/Source/Scene/parseStructuralMetadata.js +4 -4
  800. package/Source/Scene/preprocess3DTileContent.js +2 -2
  801. package/Source/Scene/processVoxelProperties.js +8 -7
  802. package/Source/Shaders/Voxels/IntersectBox.glsl +52 -58
  803. package/Source/Shaders/Voxels/IntersectBox.js +52 -58
  804. package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +38 -30
  805. package/Source/Shaders/Voxels/IntersectClippingPlanes.js +38 -30
  806. package/Source/Shaders/Voxels/IntersectDepth.glsl +1 -1
  807. package/Source/Shaders/Voxels/IntersectDepth.js +1 -1
  808. package/Source/Shaders/Voxels/Intersection.glsl +10 -12
  809. package/Source/Shaders/Voxels/Intersection.js +10 -12
  810. package/Source/Shaders/Voxels/IntersectionUtils.glsl +52 -59
  811. package/Source/Shaders/Voxels/IntersectionUtils.js +52 -59
  812. package/Source/Shaders/Voxels/Octree.glsl +72 -73
  813. package/Source/Shaders/Voxels/Octree.js +72 -73
  814. package/Source/Shaders/Voxels/VoxelFS.glsl +42 -22
  815. package/Source/Shaders/Voxels/VoxelFS.js +42 -22
  816. package/Source/Shaders/Voxels/convertUvToBox.glsl +13 -5
  817. package/Source/Shaders/Voxels/convertUvToBox.js +13 -5
  818. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +91 -91
  819. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  820. package/Source/Widget/CesiumWidget.js +78 -50
  821. package/Source/Workers/cesiumWorkerBootstrapper.js +18 -18
  822. package/Source/WorkersES6/createTaskProcessorWorker.js +3 -3
  823. package/index.d.ts +2172 -1432
  824. package/index.js +8 -3
  825. package/package.json +1 -1
  826. package/Source/Core/cancelAnimationFrame.js +0 -53
  827. package/Source/Core/requestAnimationFrame.js +0 -83
  828. /package/Build/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
@@ -151,6 +151,7 @@ function processVoxelProperties(renderResources, primitive) {
151
151
  shaderBuilder.addStructField(voxelStructId, "vec3", "positionUvLocal");
152
152
  shaderBuilder.addStructField(voxelStructId, "vec3", "viewDirUv");
153
153
  shaderBuilder.addStructField(voxelStructId, "vec3", "viewDirWorld");
154
+ shaderBuilder.addStructField(voxelStructId, "vec3", "surfaceNormal");
154
155
  shaderBuilder.addStructField(voxelStructId, "float", "travelDistance");
155
156
 
156
157
  // FragmentInput struct
@@ -355,7 +356,7 @@ function processVoxelProperties(renderResources, primitive) {
355
356
  * @function
356
357
  *
357
358
  * @param {MetadataType} type The {@link MetadataType}.
358
- * @returns {String} The GLSL type.
359
+ * @returns {string} The GLSL type.
359
360
  *
360
361
  * @private
361
362
  */
@@ -377,7 +378,7 @@ function getGlslType(type) {
377
378
  * @function
378
379
  *
379
380
  * @param {MetadataType} type The {@link MetadataType}.
380
- * @returns {String} The GLSL swizzle.
381
+ * @returns {string} The GLSL swizzle.
381
382
  *
382
383
  * @private
383
384
  */
@@ -399,7 +400,7 @@ function getGlslTextureSwizzle(type) {
399
400
  * @function
400
401
  *
401
402
  * @param {MetadataType} type The {@link MetadataType}.
402
- * @returns {String} The GLSL type.
403
+ * @returns {string} The GLSL type.
403
404
  *
404
405
  * @private
405
406
  */
@@ -421,8 +422,8 @@ function getGlslPartialDerivativeType(type) {
421
422
  *
422
423
  * @function
423
424
  *
424
- * @param {Number} number The number to convert.
425
- * @returns {String} The number as floating point in GLSL.
425
+ * @param {number} number The number to convert.
426
+ * @returns {string} The number as floating point in GLSL.
426
427
  *
427
428
  * @private
428
429
  */
@@ -440,8 +441,8 @@ function getGlslNumberAsFloat(number) {
440
441
  * @function
441
442
  *
442
443
  * @param {MetadataType} type
443
- * @param {Number} index
444
- * @returns {String}
444
+ * @param {number} index
445
+ * @returns {string}
445
446
  *
446
447
  * @private
447
448
  */
@@ -1,79 +1,73 @@
1
1
  // See IntersectionUtils.glsl for the definitions of Ray and NO_HIT
2
+ // See convertUvToBox.glsl for the definition of convertShapeUvToUvSpace
2
3
 
3
4
  /* Box defines (set in Scene/VoxelBoxShape.js)
4
5
  #define BOX_INTERSECTION_INDEX ### // always 0
5
- #define BOX_HAS_RENDER_BOUNDS
6
- #define BOX_IS_2D
7
6
  */
8
7
 
9
- #if defined(BOX_HAS_RENDER_BOUNDS)
10
- #if defined(BOX_IS_2D)
11
- // This matrix bakes in an axis conversion so that the math works for XY plane.
12
- uniform mat4 u_boxUvToRenderBoundsTransform;
13
- #else
14
- // Similar to u_boxTransformUvToBounds but fewer instructions needed.
15
- uniform vec3 u_boxUvToRenderBoundsScale;
16
- uniform vec3 u_boxUvToRenderBoundsTranslate;
17
- #endif
18
- #endif
8
+ uniform vec3 u_renderMinBounds;
9
+ uniform vec3 u_renderMaxBounds;
19
10
 
20
- vec2 intersectUnitCube(Ray ray) // Unit cube from [-1, +1]
11
+ struct Box {
12
+ vec3 p0;
13
+ vec3 p1;
14
+ };
15
+
16
+ Box constructVoxelBox(in ivec4 octreeCoords, in vec3 tileUv)
21
17
  {
22
- vec3 o = ray.pos;
23
- vec3 d = ray.dir;
18
+ // Find the min/max cornerpoints of the voxel in tile coordinates
19
+ vec3 tileOrigin = vec3(octreeCoords.xyz);
20
+ vec3 numSamples = vec3(u_dimensions);
21
+ vec3 voxelSize = 1.0 / numSamples;
22
+ vec3 coordP0 = floor(tileUv * numSamples) * voxelSize + tileOrigin;
23
+ vec3 coordP1 = coordP0 + voxelSize;
24
24
 
25
- vec3 dInv = 1.0 / d;
26
- vec3 od = -o * dInv;
27
- vec3 t0 = od - dInv;
28
- vec3 t1 = od + dInv;
29
- vec3 m0 = min(t0, t1);
30
- vec3 m1 = max(t0, t1);
31
- float tMin = max(max(m0.x, m0.y), m0.z);
32
- float tMax = min(min(m1.x, m1.y), m1.z);
25
+ // Transform to the UV coordinates of the scaled tileset
26
+ float tileSize = 1.0 / pow(2.0, float(octreeCoords.w));
27
+ vec3 p0 = convertShapeUvToUvSpace(coordP0 * tileSize);
28
+ vec3 p1 = convertShapeUvToUvSpace(coordP1 * tileSize);
33
29
 
34
- if (tMin >= tMax) {
35
- return vec2(NO_HIT);
36
- }
30
+ return Box(p0, p1);
31
+ }
37
32
 
38
- return vec2(tMin, tMax);
33
+ vec3 getBoxNormal(in Box box, in Ray ray, in float t)
34
+ {
35
+ vec3 hitPoint = ray.pos + t * ray.dir;
36
+ vec3 lower = step(hitPoint, box.p0);
37
+ vec3 upper = step(box.p1, hitPoint);
38
+ return normalize(upper - lower);
39
39
  }
40
40
 
41
- vec2 intersectUnitSquare(Ray ray) // Unit square from [-1, +1]
41
+ // Find the distances along a ray at which the ray intersects an axis-aligned box
42
+ // See https://tavianator.com/2011/ray_box.html
43
+ RayShapeIntersection intersectBox(in Ray ray, in Box box)
42
44
  {
43
- vec3 o = ray.pos;
44
- vec3 d = ray.dir;
45
+ // Consider the box as the intersection of the space between 3 pairs of parallel planes
46
+ // Compute the distance along the ray to each plane
47
+ vec3 t0 = (box.p0 - ray.pos) * ray.dInv;
48
+ vec3 t1 = (box.p1 - ray.pos) * ray.dInv;
45
49
 
46
- float t = -o.z / d.z;
47
- vec2 planePos = o.xy + d.xy * t;
48
- if (any(greaterThan(abs(planePos), vec2(1.0)))) {
49
- return vec2(NO_HIT);
50
+ // Identify candidate entries/exits based on distance from ray.pos
51
+ vec3 entries = min(t0, t1);
52
+ vec3 exits = max(t0, t1);
53
+
54
+ // The actual box intersection points are the furthest entry and the closest exit
55
+ float entryT = max(max(entries.x, entries.y), entries.z);
56
+ float exitT = min(min(exits.x, exits.y), exits.z);
57
+
58
+ vec3 entryNormal = getBoxNormal(box, ray, entryT - RAY_SHIFT);
59
+ vec3 exitNormal = getBoxNormal(box, ray, exitT + RAY_SHIFT);
60
+
61
+ if (entryT > exitT) {
62
+ entryT = NO_HIT;
63
+ exitT = NO_HIT;
50
64
  }
51
65
 
52
- return vec2(t, t);
66
+ return RayShapeIntersection(vec4(entryNormal, entryT), vec4(exitNormal, exitT));
53
67
  }
54
68
 
55
- void intersectShape(Ray ray, inout Intersections ix)
69
+ void intersectShape(in Ray ray, inout Intersections ix)
56
70
  {
57
- #if defined(BOX_HAS_RENDER_BOUNDS)
58
- #if defined(BOX_IS_2D)
59
- // Transform the ray into unit square space on Z plane
60
- // This matrix bakes in an axis conversion so that the math works for XY plane.
61
- ray.pos = vec3(u_boxUvToRenderBoundsTransform * vec4(ray.pos, 1.0));
62
- ray.dir = vec3(u_boxUvToRenderBoundsTransform * vec4(ray.dir, 0.0));
63
- vec2 entryExit = intersectUnitSquare(ray);
64
- #else
65
- // Transform the ray into unit cube space
66
- ray.pos = ray.pos * u_boxUvToRenderBoundsScale + u_boxUvToRenderBoundsTranslate;
67
- ray.dir *= u_boxUvToRenderBoundsScale;
68
- vec2 entryExit = intersectUnitCube(ray);
69
- #endif
70
- #else
71
- // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1].
72
- // Direction is scaled as well to be in sync with position.
73
- ray.pos = ray.pos * 2.0 - 1.0;
74
- ray.dir = ray.dir * 2.0;
75
- vec2 entryExit = intersectUnitCube(ray);
76
- #endif
77
-
78
- setIntersectionPair(ix, BOX_INTERSECTION_INDEX, entryExit);
71
+ RayShapeIntersection intersection = intersectBox(ray, Box(u_renderMinBounds, u_renderMaxBounds));
72
+ setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection);
79
73
  }
@@ -1,81 +1,75 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
2
  export default "// See IntersectionUtils.glsl for the definitions of Ray and NO_HIT\n\
3
+ // See convertUvToBox.glsl for the definition of convertShapeUvToUvSpace\n\
3
4
  \n\
4
5
  /* Box defines (set in Scene/VoxelBoxShape.js)\n\
5
6
  #define BOX_INTERSECTION_INDEX ### // always 0\n\
6
- #define BOX_HAS_RENDER_BOUNDS\n\
7
- #define BOX_IS_2D\n\
8
7
  */\n\
9
8
  \n\
10
- #if defined(BOX_HAS_RENDER_BOUNDS)\n\
11
- #if defined(BOX_IS_2D)\n\
12
- // This matrix bakes in an axis conversion so that the math works for XY plane.\n\
13
- uniform mat4 u_boxUvToRenderBoundsTransform;\n\
14
- #else\n\
15
- // Similar to u_boxTransformUvToBounds but fewer instructions needed.\n\
16
- uniform vec3 u_boxUvToRenderBoundsScale;\n\
17
- uniform vec3 u_boxUvToRenderBoundsTranslate;\n\
18
- #endif\n\
19
- #endif\n\
9
+ uniform vec3 u_renderMinBounds;\n\
10
+ uniform vec3 u_renderMaxBounds;\n\
20
11
  \n\
21
- vec2 intersectUnitCube(Ray ray) // Unit cube from [-1, +1]\n\
12
+ struct Box {\n\
13
+ vec3 p0;\n\
14
+ vec3 p1;\n\
15
+ };\n\
16
+ \n\
17
+ Box constructVoxelBox(in ivec4 octreeCoords, in vec3 tileUv)\n\
22
18
  {\n\
23
- vec3 o = ray.pos;\n\
24
- vec3 d = ray.dir;\n\
19
+ // Find the min/max cornerpoints of the voxel in tile coordinates\n\
20
+ vec3 tileOrigin = vec3(octreeCoords.xyz);\n\
21
+ vec3 numSamples = vec3(u_dimensions);\n\
22
+ vec3 voxelSize = 1.0 / numSamples;\n\
23
+ vec3 coordP0 = floor(tileUv * numSamples) * voxelSize + tileOrigin;\n\
24
+ vec3 coordP1 = coordP0 + voxelSize;\n\
25
25
  \n\
26
- vec3 dInv = 1.0 / d;\n\
27
- vec3 od = -o * dInv;\n\
28
- vec3 t0 = od - dInv;\n\
29
- vec3 t1 = od + dInv;\n\
30
- vec3 m0 = min(t0, t1);\n\
31
- vec3 m1 = max(t0, t1);\n\
32
- float tMin = max(max(m0.x, m0.y), m0.z);\n\
33
- float tMax = min(min(m1.x, m1.y), m1.z);\n\
26
+ // Transform to the UV coordinates of the scaled tileset\n\
27
+ float tileSize = 1.0 / pow(2.0, float(octreeCoords.w));\n\
28
+ vec3 p0 = convertShapeUvToUvSpace(coordP0 * tileSize);\n\
29
+ vec3 p1 = convertShapeUvToUvSpace(coordP1 * tileSize);\n\
34
30
  \n\
35
- if (tMin >= tMax) {\n\
36
- return vec2(NO_HIT);\n\
37
- }\n\
31
+ return Box(p0, p1);\n\
32
+ }\n\
38
33
  \n\
39
- return vec2(tMin, tMax);\n\
34
+ vec3 getBoxNormal(in Box box, in Ray ray, in float t)\n\
35
+ {\n\
36
+ vec3 hitPoint = ray.pos + t * ray.dir;\n\
37
+ vec3 lower = step(hitPoint, box.p0);\n\
38
+ vec3 upper = step(box.p1, hitPoint);\n\
39
+ return normalize(upper - lower);\n\
40
40
  }\n\
41
41
  \n\
42
- vec2 intersectUnitSquare(Ray ray) // Unit square from [-1, +1]\n\
42
+ // Find the distances along a ray at which the ray intersects an axis-aligned box\n\
43
+ // See https://tavianator.com/2011/ray_box.html\n\
44
+ RayShapeIntersection intersectBox(in Ray ray, in Box box)\n\
43
45
  {\n\
44
- vec3 o = ray.pos;\n\
45
- vec3 d = ray.dir;\n\
46
+ // Consider the box as the intersection of the space between 3 pairs of parallel planes\n\
47
+ // Compute the distance along the ray to each plane\n\
48
+ vec3 t0 = (box.p0 - ray.pos) * ray.dInv;\n\
49
+ vec3 t1 = (box.p1 - ray.pos) * ray.dInv;\n\
46
50
  \n\
47
- float t = -o.z / d.z;\n\
48
- vec2 planePos = o.xy + d.xy * t;\n\
49
- if (any(greaterThan(abs(planePos), vec2(1.0)))) {\n\
50
- return vec2(NO_HIT);\n\
51
+ // Identify candidate entries/exits based on distance from ray.pos\n\
52
+ vec3 entries = min(t0, t1);\n\
53
+ vec3 exits = max(t0, t1);\n\
54
+ \n\
55
+ // The actual box intersection points are the furthest entry and the closest exit\n\
56
+ float entryT = max(max(entries.x, entries.y), entries.z);\n\
57
+ float exitT = min(min(exits.x, exits.y), exits.z);\n\
58
+ \n\
59
+ vec3 entryNormal = getBoxNormal(box, ray, entryT - RAY_SHIFT);\n\
60
+ vec3 exitNormal = getBoxNormal(box, ray, exitT + RAY_SHIFT);\n\
61
+ \n\
62
+ if (entryT > exitT) {\n\
63
+ entryT = NO_HIT;\n\
64
+ exitT = NO_HIT;\n\
51
65
  }\n\
52
66
  \n\
53
- return vec2(t, t);\n\
67
+ return RayShapeIntersection(vec4(entryNormal, entryT), vec4(exitNormal, exitT));\n\
54
68
  }\n\
55
69
  \n\
56
- void intersectShape(Ray ray, inout Intersections ix)\n\
70
+ void intersectShape(in Ray ray, inout Intersections ix)\n\
57
71
  {\n\
58
- #if defined(BOX_HAS_RENDER_BOUNDS)\n\
59
- #if defined(BOX_IS_2D)\n\
60
- // Transform the ray into unit square space on Z plane\n\
61
- // This matrix bakes in an axis conversion so that the math works for XY plane.\n\
62
- ray.pos = vec3(u_boxUvToRenderBoundsTransform * vec4(ray.pos, 1.0));\n\
63
- ray.dir = vec3(u_boxUvToRenderBoundsTransform * vec4(ray.dir, 0.0));\n\
64
- vec2 entryExit = intersectUnitSquare(ray);\n\
65
- #else\n\
66
- // Transform the ray into unit cube space\n\
67
- ray.pos = ray.pos * u_boxUvToRenderBoundsScale + u_boxUvToRenderBoundsTranslate;\n\
68
- ray.dir *= u_boxUvToRenderBoundsScale;\n\
69
- vec2 entryExit = intersectUnitCube(ray);\n\
70
- #endif\n\
71
- #else\n\
72
- // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1].\n\
73
- // Direction is scaled as well to be in sync with position.\n\
74
- ray.pos = ray.pos * 2.0 - 1.0;\n\
75
- ray.dir = ray.dir * 2.0;\n\
76
- vec2 entryExit = intersectUnitCube(ray);\n\
77
- #endif\n\
78
- \n\
79
- setIntersectionPair(ix, BOX_INTERSECTION_INDEX, entryExit);\n\
72
+ RayShapeIntersection intersection = intersectBox(ray, Box(u_renderMinBounds, u_renderMaxBounds));\n\
73
+ setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection);\n\
80
74
  }\n\
81
75
  ";
@@ -11,60 +11,68 @@ uniform sampler2D u_clippingPlanesTexture;
11
11
  uniform mat4 u_clippingPlanesMatrix;
12
12
 
13
13
  // Plane is in Hessian Normal Form
14
- vec2 intersectPlane(Ray ray, vec4 plane) {
15
- vec3 o = ray.pos;
16
- vec3 d = ray.dir;
14
+ vec4 intersectPlane(in Ray ray, in vec4 plane) {
17
15
  vec3 n = plane.xyz; // normal
18
16
  float w = plane.w; // -dot(pointOnPlane, normal)
19
17
 
20
- float a = dot(o, n);
21
- float b = dot(d, n);
18
+ float a = dot(ray.pos, n);
19
+ float b = dot(ray.dir, n);
22
20
  float t = -(w + a) / b;
23
21
 
24
- if (dot(d, n) > 0.0) {
25
- return vec2(t, +INF_HIT);
26
- } else {
27
- return vec2(-INF_HIT, t);
28
- }
22
+ return vec4(n, t);
29
23
  }
30
24
 
31
- void intersectClippingPlanes(Ray ray, inout Intersections ix) {
25
+ void intersectClippingPlanes(in Ray ray, inout Intersections ix) {
26
+ vec4 backSide = vec4(-ray.dir, -INF_HIT);
27
+ vec4 farSide = vec4(ray.dir, +INF_HIT);
28
+ RayShapeIntersection clippingVolume;
29
+
32
30
  #if (CLIPPING_PLANES_COUNT == 1)
33
31
  // Union and intersection are the same when there's one clipping plane, and the code
34
32
  // is more simplified.
35
33
  vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix);
36
- vec2 intersection = intersectPlane(ray, planeUv);
37
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX, intersection);
34
+ vec4 intersection = intersectPlane(ray, planeUv);
35
+ bool reflects = dot(ray.dir, intersection.xyz) < 0.0;
36
+ clippingVolume.entry = reflects ? backSide : intersection;
37
+ clippingVolume.exit = reflects ? intersection : farSide;
38
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);
38
39
  #elif defined(CLIPPING_PLANES_UNION)
39
- float minPositiveT = +INF_HIT;
40
- float maxNegativeT = -INF_HIT;
40
+ vec4 firstTransmission = vec4(ray.dir, +INF_HIT);
41
+ vec4 lastReflection = vec4(-ray.dir, -INF_HIT);
41
42
  for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {
42
43
  vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);
43
- vec2 intersection = intersectPlane(ray, planeUv);
44
- if (intersection.y == +INF_HIT) {
45
- minPositiveT = min(minPositiveT, intersection.x);
44
+ vec4 intersection = intersectPlane(ray, planeUv);
45
+ if (dot(ray.dir, planeUv.xyz) > 0.0) {
46
+ firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission;
46
47
  } else {
47
- maxNegativeT = max(maxNegativeT, intersection.y);
48
+ lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection;
48
49
  }
49
50
  }
50
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, vec2(-INF_HIT, maxNegativeT));
51
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, vec2(minPositiveT, +INF_HIT));
51
+ clippingVolume.entry = backSide;
52
+ clippingVolume.exit = lastReflection;
53
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume);
54
+ clippingVolume.entry = firstTransmission;
55
+ clippingVolume.exit = farSide;
56
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume);
52
57
  #else // intersection
53
- float maxPositiveT = -INF_HIT;
54
- float minNegativeT = +INF_HIT;
58
+ vec4 lastTransmission = vec4(ray.dir, -INF_HIT);
59
+ vec4 firstReflection = vec4(-ray.dir, +INF_HIT);
55
60
  for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {
56
61
  vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);
57
- vec2 intersection = intersectPlane(ray, planeUv);
58
- if (intersection.y == +INF_HIT) {
59
- maxPositiveT = max(maxPositiveT, intersection.x);
62
+ vec4 intersection = intersectPlane(ray, planeUv);
63
+ if (dot(ray.dir, planeUv.xyz) > 0.0) {
64
+ lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission;
60
65
  } else {
61
- minNegativeT = min(minNegativeT, intersection.y);
66
+ firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection;
62
67
  }
63
68
  }
64
- if (maxPositiveT < minNegativeT) {
65
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX, vec2(maxPositiveT, minNegativeT));
69
+ if (lastTransmission.w < firstReflection.w) {
70
+ clippingVolume.entry = lastTransmission;
71
+ clippingVolume.exit = firstReflection;
66
72
  } else {
67
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX, vec2(NO_HIT));
73
+ clippingVolume.entry = vec4(-ray.dir, NO_HIT);
74
+ clippingVolume.exit = vec4(ray.dir, NO_HIT);
68
75
  }
76
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);
69
77
  #endif
70
78
  }
@@ -12,61 +12,69 @@ uniform sampler2D u_clippingPlanesTexture;\n\
12
12
  uniform mat4 u_clippingPlanesMatrix;\n\
13
13
  \n\
14
14
  // Plane is in Hessian Normal Form\n\
15
- vec2 intersectPlane(Ray ray, vec4 plane) {\n\
16
- vec3 o = ray.pos;\n\
17
- vec3 d = ray.dir;\n\
15
+ vec4 intersectPlane(in Ray ray, in vec4 plane) {\n\
18
16
  vec3 n = plane.xyz; // normal\n\
19
17
  float w = plane.w; // -dot(pointOnPlane, normal)\n\
20
18
  \n\
21
- float a = dot(o, n);\n\
22
- float b = dot(d, n);\n\
19
+ float a = dot(ray.pos, n);\n\
20
+ float b = dot(ray.dir, n);\n\
23
21
  float t = -(w + a) / b;\n\
24
22
  \n\
25
- if (dot(d, n) > 0.0) {\n\
26
- return vec2(t, +INF_HIT);\n\
27
- } else {\n\
28
- return vec2(-INF_HIT, t);\n\
29
- }\n\
23
+ return vec4(n, t);\n\
30
24
  }\n\
31
25
  \n\
32
- void intersectClippingPlanes(Ray ray, inout Intersections ix) {\n\
26
+ void intersectClippingPlanes(in Ray ray, inout Intersections ix) {\n\
27
+ vec4 backSide = vec4(-ray.dir, -INF_HIT);\n\
28
+ vec4 farSide = vec4(ray.dir, +INF_HIT);\n\
29
+ RayShapeIntersection clippingVolume;\n\
30
+ \n\
33
31
  #if (CLIPPING_PLANES_COUNT == 1)\n\
34
32
  // Union and intersection are the same when there's one clipping plane, and the code\n\
35
33
  // is more simplified.\n\
36
34
  vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix);\n\
37
- vec2 intersection = intersectPlane(ray, planeUv);\n\
38
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX, intersection);\n\
35
+ vec4 intersection = intersectPlane(ray, planeUv);\n\
36
+ bool reflects = dot(ray.dir, intersection.xyz) < 0.0;\n\
37
+ clippingVolume.entry = reflects ? backSide : intersection;\n\
38
+ clippingVolume.exit = reflects ? intersection : farSide;\n\
39
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);\n\
39
40
  #elif defined(CLIPPING_PLANES_UNION)\n\
40
- float minPositiveT = +INF_HIT;\n\
41
- float maxNegativeT = -INF_HIT;\n\
41
+ vec4 firstTransmission = vec4(ray.dir, +INF_HIT);\n\
42
+ vec4 lastReflection = vec4(-ray.dir, -INF_HIT);\n\
42
43
  for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {\n\
43
44
  vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);\n\
44
- vec2 intersection = intersectPlane(ray, planeUv);\n\
45
- if (intersection.y == +INF_HIT) {\n\
46
- minPositiveT = min(minPositiveT, intersection.x);\n\
45
+ vec4 intersection = intersectPlane(ray, planeUv);\n\
46
+ if (dot(ray.dir, planeUv.xyz) > 0.0) {\n\
47
+ firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission;\n\
47
48
  } else {\n\
48
- maxNegativeT = max(maxNegativeT, intersection.y);\n\
49
+ lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection;\n\
49
50
  }\n\
50
51
  }\n\
51
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, vec2(-INF_HIT, maxNegativeT));\n\
52
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, vec2(minPositiveT, +INF_HIT));\n\
52
+ clippingVolume.entry = backSide;\n\
53
+ clippingVolume.exit = lastReflection;\n\
54
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume);\n\
55
+ clippingVolume.entry = firstTransmission;\n\
56
+ clippingVolume.exit = farSide;\n\
57
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume);\n\
53
58
  #else // intersection\n\
54
- float maxPositiveT = -INF_HIT;\n\
55
- float minNegativeT = +INF_HIT;\n\
59
+ vec4 lastTransmission = vec4(ray.dir, -INF_HIT);\n\
60
+ vec4 firstReflection = vec4(-ray.dir, +INF_HIT);\n\
56
61
  for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {\n\
57
62
  vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);\n\
58
- vec2 intersection = intersectPlane(ray, planeUv);\n\
59
- if (intersection.y == +INF_HIT) {\n\
60
- maxPositiveT = max(maxPositiveT, intersection.x);\n\
63
+ vec4 intersection = intersectPlane(ray, planeUv);\n\
64
+ if (dot(ray.dir, planeUv.xyz) > 0.0) {\n\
65
+ lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission;\n\
61
66
  } else {\n\
62
- minNegativeT = min(minNegativeT, intersection.y);\n\
67
+ firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection;\n\
63
68
  }\n\
64
69
  }\n\
65
- if (maxPositiveT < minNegativeT) {\n\
66
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX, vec2(maxPositiveT, minNegativeT));\n\
70
+ if (lastTransmission.w < firstReflection.w) {\n\
71
+ clippingVolume.entry = lastTransmission;\n\
72
+ clippingVolume.exit = firstReflection;\n\
67
73
  } else {\n\
68
- setIntersectionPair(ix, CLIPPING_PLANES_INTERSECTION_INDEX, vec2(NO_HIT));\n\
74
+ clippingVolume.entry = vec4(-ray.dir, NO_HIT);\n\
75
+ clippingVolume.exit = vec4(ray.dir, NO_HIT);\n\
69
76
  }\n\
77
+ setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);\n\
70
78
  #endif\n\
71
79
  }\n\
72
80
  ";
@@ -7,7 +7,7 @@
7
7
 
8
8
  uniform mat4 u_transformPositionViewToUv;
9
9
 
10
- void intersectDepth(vec2 screenCoord, Ray ray, inout Intersections ix) {
10
+ void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) {
11
11
  float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord));
12
12
  if (logDepthOrDepth != 0.0) {
13
13
  // Calculate how far the ray must travel before it hits the depth buffer.
@@ -8,7 +8,7 @@ export default "// See IntersectionUtils.glsl for the definitions of Ray, Inters
8
8
  \n\
9
9
  uniform mat4 u_transformPositionViewToUv;\n\
10
10
  \n\
11
- void intersectDepth(vec2 screenCoord, Ray ray, inout Intersections ix) {\n\
11
+ void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) {\n\
12
12
  float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord));\n\
13
13
  if (logDepthOrDepth != 0.0) {\n\
14
14
  // Calculate how far the ray must travel before it hits the depth buffer.\n\
@@ -5,23 +5,21 @@
5
5
  // Scene/VoxelRenderResources.js.
6
6
  // See also IntersectClippingPlane.glsl and IntersectDepth.glsl.
7
7
  // See IntersectionUtils.glsl for the definitions of Ray, NO_HIT,
8
- // getIntersectionPair, initializeIntersections, nextIntersection.
8
+ // getFirstIntersection, initializeIntersections, nextIntersection.
9
9
 
10
10
  /* Intersection defines (set in Scene/VoxelRenderResources.js)
11
11
  #define INTERSECTION_COUNT ###
12
12
  */
13
13
 
14
- vec2 intersectScene(vec2 screenCoord, vec3 positionUv, vec3 directionUv, out Intersections ix) {
15
- Ray ray = Ray(positionUv, directionUv);
16
-
14
+ RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) {
17
15
  // Do a ray-shape intersection to find the exact starting and ending points.
18
16
  intersectShape(ray, ix);
19
17
 
20
18
  // Exit early if the positive shape was completely missed or behind the ray.
21
- vec2 entryExitT = getIntersectionPair(ix, 0);
22
- if (entryExitT.x == NO_HIT) {
19
+ RayShapeIntersection intersection = getFirstIntersection(ix);
20
+ if (intersection.entry.w == NO_HIT) {
23
21
  // Positive shape was completely missed - so exit early.
24
- return vec2(NO_HIT);
22
+ return intersection;
25
23
  }
26
24
 
27
25
  // Clipping planes
@@ -38,17 +36,17 @@ vec2 intersectScene(vec2 screenCoord, vec3 positionUv, vec3 directionUv, out Int
38
36
  #if (INTERSECTION_COUNT > 1)
39
37
  initializeIntersections(ix);
40
38
  for (int i = 0; i < INTERSECTION_COUNT; ++i) {
41
- entryExitT = nextIntersection(ix);
42
- if (entryExitT.y > 0.0) {
39
+ intersection = nextIntersection(ix);
40
+ if (intersection.exit.w > 0.0) {
43
41
  // Set start to 0.0 when ray is inside the shape.
44
- entryExitT.x = max(entryExitT.x, 0.0);
42
+ intersection.entry.w = max(intersection.entry.w, 0.0);
45
43
  break;
46
44
  }
47
45
  }
48
46
  #else
49
47
  // Set start to 0.0 when ray is inside the shape.
50
- entryExitT.x = max(entryExitT.x, 0.0);
48
+ intersection.entry.w = max(intersection.entry.w, 0.0);
51
49
  #endif
52
50
 
53
- return entryExitT;
51
+ return intersection;
54
52
  }
@@ -6,23 +6,21 @@ export default "// Main intersection function for Voxel scenes.\n\
6
6
  // Scene/VoxelRenderResources.js.\n\
7
7
  // See also IntersectClippingPlane.glsl and IntersectDepth.glsl.\n\
8
8
  // See IntersectionUtils.glsl for the definitions of Ray, NO_HIT,\n\
9
- // getIntersectionPair, initializeIntersections, nextIntersection.\n\
9
+ // getFirstIntersection, initializeIntersections, nextIntersection.\n\
10
10
  \n\
11
11
  /* Intersection defines (set in Scene/VoxelRenderResources.js)\n\
12
12
  #define INTERSECTION_COUNT ###\n\
13
13
  */\n\
14
14
  \n\
15
- vec2 intersectScene(vec2 screenCoord, vec3 positionUv, vec3 directionUv, out Intersections ix) {\n\
16
- Ray ray = Ray(positionUv, directionUv);\n\
17
- \n\
15
+ RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) {\n\
18
16
  // Do a ray-shape intersection to find the exact starting and ending points.\n\
19
17
  intersectShape(ray, ix);\n\
20
18
  \n\
21
19
  // Exit early if the positive shape was completely missed or behind the ray.\n\
22
- vec2 entryExitT = getIntersectionPair(ix, 0);\n\
23
- if (entryExitT.x == NO_HIT) {\n\
20
+ RayShapeIntersection intersection = getFirstIntersection(ix);\n\
21
+ if (intersection.entry.w == NO_HIT) {\n\
24
22
  // Positive shape was completely missed - so exit early.\n\
25
- return vec2(NO_HIT);\n\
23
+ return intersection;\n\
26
24
  }\n\
27
25
  \n\
28
26
  // Clipping planes\n\
@@ -39,18 +37,18 @@ vec2 intersectScene(vec2 screenCoord, vec3 positionUv, vec3 directionUv, out Int
39
37
  #if (INTERSECTION_COUNT > 1)\n\
40
38
  initializeIntersections(ix);\n\
41
39
  for (int i = 0; i < INTERSECTION_COUNT; ++i) {\n\
42
- entryExitT = nextIntersection(ix);\n\
43
- if (entryExitT.y > 0.0) {\n\
40
+ intersection = nextIntersection(ix);\n\
41
+ if (intersection.exit.w > 0.0) {\n\
44
42
  // Set start to 0.0 when ray is inside the shape.\n\
45
- entryExitT.x = max(entryExitT.x, 0.0);\n\
43
+ intersection.entry.w = max(intersection.entry.w, 0.0);\n\
46
44
  break;\n\
47
45
  }\n\
48
46
  }\n\
49
47
  #else\n\
50
48
  // Set start to 0.0 when ray is inside the shape.\n\
51
- entryExitT.x = max(entryExitT.x, 0.0);\n\
49
+ intersection.entry.w = max(intersection.entry.w, 0.0);\n\
52
50
  #endif\n\
53
51
  \n\
54
- return entryExitT;\n\
52
+ return intersection;\n\
55
53
  }\n\
56
54
  ";