@cesium/engine 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/Build/Workers/{AttributeCompression-4589338a.js → AttributeCompression-b646d393.js} +1 -1
  2. package/Build/Workers/{AxisAlignedBoundingBox-bfb1234f.js → AxisAlignedBoundingBox-47525601.js} +1 -1
  3. package/Build/Workers/{BoundingRectangle-7ffc2153.js → BoundingRectangle-93b263ac.js} +1 -1
  4. package/Build/Workers/{BoxGeometry-93f344a3.js → BoxGeometry-8c4b4125.js} +1 -1
  5. package/Build/Workers/{Color-0c5aaf47.js → Color-52c60ed7.js} +1 -1
  6. package/Build/Workers/{CoplanarPolygonGeometryLibrary-6597982a.js → CoplanarPolygonGeometryLibrary-33c4c1f8.js} +1 -1
  7. package/Build/Workers/{CorridorGeometryLibrary-2119580e.js → CorridorGeometryLibrary-5039cd8e.js} +1 -1
  8. package/Build/Workers/{CylinderGeometry-f9503c6d.js → CylinderGeometry-3ac44974.js} +1 -1
  9. package/Build/Workers/{EllipseGeometry-fedf72d5.js → EllipseGeometry-a9c9b3be.js} +1 -1
  10. package/Build/Workers/{EllipseGeometryLibrary-4ea68687.js → EllipseGeometryLibrary-855d4681.js} +1 -1
  11. package/Build/Workers/{EllipseOutlineGeometry-e2ae6a35.js → EllipseOutlineGeometry-017a5929.js} +1 -1
  12. package/Build/Workers/{EllipsoidGeodesic-16de63ea.js → EllipsoidGeodesic-98c62a56.js} +1 -1
  13. package/Build/Workers/{EllipsoidGeometry-95c0330e.js → EllipsoidGeometry-826e7bce.js} +1 -1
  14. package/Build/Workers/{EllipsoidOutlineGeometry-d6d2ceec.js → EllipsoidOutlineGeometry-784dcdb5.js} +1 -1
  15. package/Build/Workers/{EllipsoidRhumbLine-ae5e65e0.js → EllipsoidRhumbLine-19756602.js} +1 -1
  16. package/Build/Workers/{EllipsoidTangentPlane-bfc674bf.js → EllipsoidTangentPlane-ed9443a1.js} +1 -1
  17. package/Build/Workers/{EncodedCartesian3-f473ea18.js → EncodedCartesian3-81f70735.js} +1 -1
  18. package/Build/Workers/{FrustumGeometry-3bf2e4eb.js → FrustumGeometry-9f1ee4d8.js} +1 -1
  19. package/Build/Workers/{GeometryAttribute-df5f473e.js → GeometryAttribute-334718f8.js} +1 -1
  20. package/Build/Workers/{GeometryInstance-aa75b4cf.js → GeometryInstance-451dc1cd.js} +1 -1
  21. package/Build/Workers/{GeometryPipeline-f0e46c42.js → GeometryPipeline-8fb0db69.js} +1 -1
  22. package/Build/Workers/{IntersectionTests-9de29d51.js → IntersectionTests-27d49265.js} +1 -1
  23. package/Build/Workers/{Matrix2-ce637455.js → Matrix2-13178034.js} +4 -2
  24. package/Build/Workers/{Matrix3-4f4df527.js → Matrix3-315394f6.js} +2 -1
  25. package/Build/Workers/{OrientedBoundingBox-d3ff3d4d.js → OrientedBoundingBox-79ee7cbb.js} +5 -5
  26. package/Build/Workers/{Plane-b81241c2.js → Plane-900aa728.js} +1 -1
  27. package/Build/Workers/{PolygonGeometryLibrary-6f4937bb.js → PolygonGeometryLibrary-6b5a29e9.js} +1 -1
  28. package/Build/Workers/PolygonPipeline-21668b3f.js +1345 -0
  29. package/Build/Workers/{PolylinePipeline-2e2b015c.js → PolylinePipeline-5e2e1b21.js} +1 -1
  30. package/Build/Workers/{PolylineVolumeGeometryLibrary-7ee1d449.js → PolylineVolumeGeometryLibrary-97f0b94e.js} +1 -1
  31. package/Build/Workers/{PrimitivePipeline-a9b7aae0.js → PrimitivePipeline-5640850a.js} +1 -1
  32. package/Build/Workers/{RectangleGeometryLibrary-9aa6c8f6.js → RectangleGeometryLibrary-d5457f7b.js} +1 -1
  33. package/Build/Workers/{TerrainEncoding-b52dcfc5.js → TerrainEncoding-bfdf2021.js} +1 -1
  34. package/Build/Workers/{Transforms-2f755df8.js → Transforms-a05e5e6e.js} +114 -83
  35. package/Build/Workers/{WallGeometryLibrary-ab19a93d.js → WallGeometryLibrary-6db0ebb6.js} +1 -1
  36. package/Build/Workers/{WebMercatorProjection-9f25de49.js → WebMercatorProjection-13a90d41.js} +1 -1
  37. package/Build/Workers/cesiumWorkerBootstrapper.js +92 -2
  38. package/Build/Workers/combineGeometry.js +1 -1
  39. package/Build/Workers/createBoxGeometry.js +1 -1
  40. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  41. package/Build/Workers/createCircleGeometry.js +1 -1
  42. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  43. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  44. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  45. package/Build/Workers/createCorridorGeometry.js +1 -1
  46. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  47. package/Build/Workers/createCylinderGeometry.js +1 -1
  48. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  49. package/Build/Workers/createEllipseGeometry.js +1 -1
  50. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  51. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  52. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  53. package/Build/Workers/createFrustumGeometry.js +1 -1
  54. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  55. package/Build/Workers/createGeometry.js +1 -1
  56. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  57. package/Build/Workers/createPlaneGeometry.js +1 -1
  58. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  59. package/Build/Workers/createPolygonGeometry.js +1 -1
  60. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  61. package/Build/Workers/createPolylineGeometry.js +1 -1
  62. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  63. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  64. package/Build/Workers/createRectangleGeometry.js +1 -1
  65. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  66. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  67. package/Build/Workers/createSphereGeometry.js +1 -1
  68. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  69. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  70. package/Build/Workers/createVectorTileGeometries.js +1 -1
  71. package/Build/Workers/createVectorTilePoints.js +1 -1
  72. package/Build/Workers/createVectorTilePolygons.js +1 -1
  73. package/Build/Workers/createVectorTilePolylines.js +1 -1
  74. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  75. package/Build/Workers/createVerticesFromHeightmap.js +7 -3
  76. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -1
  77. package/Build/Workers/createWallGeometry.js +1 -1
  78. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  79. package/Build/Workers/decodeDraco.js +9 -1
  80. package/Build/Workers/decodeI3S.js +1 -1
  81. package/Build/Workers/package.js +25 -1
  82. package/Build/Workers/transcodeKTX2.js +22 -2
  83. package/Build/Workers/transferTypedArrayTest.js +25 -1
  84. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  85. package/README.md +14 -16
  86. package/Source/Core/EarthOrientationParameters.js +67 -63
  87. package/Source/Core/FeatureDetection.js +18 -0
  88. package/Source/Core/Ion.js +1 -2
  89. package/Source/Core/Matrix2.js +2 -1
  90. package/Source/Core/Matrix3.js +2 -1
  91. package/Source/Core/Matrix4.js +1 -0
  92. package/Source/Core/OrientedBoundingBox.js +4 -4
  93. package/Source/Core/PixelFormat.js +22 -2
  94. package/Source/Core/S2Cell.js +3 -3
  95. package/Source/Core/Transforms.js +3 -7
  96. package/Source/Core/sampleTerrain.js +5 -0
  97. package/Source/DataSources/GpxDataSource.js +4 -6
  98. package/Source/DataSources/KmlDataSource.js +3 -5
  99. package/Source/Renderer/AutomaticUniforms.js +3 -3
  100. package/Source/Renderer/Context.js +20 -12
  101. package/Source/Renderer/Pass.js +3 -2
  102. package/Source/Renderer/ShaderBuilder.js +13 -12
  103. package/Source/Renderer/ShaderSource.js +31 -26
  104. package/Source/Renderer/demodernizeShader.js +76 -0
  105. package/Source/Scene/AutoExposure.js +5 -5
  106. package/Source/Scene/BatchTable.js +5 -5
  107. package/Source/Scene/BillboardCollection.js +2 -2
  108. package/Source/Scene/BingMapsImageryProvider.js +1 -1
  109. package/Source/Scene/Cesium3DTile.js +8 -2
  110. package/Source/Scene/Cesium3DTileBatchTable.js +28 -28
  111. package/Source/Scene/Cesium3DTileContentType.js +19 -0
  112. package/Source/Scene/Cesium3DTilesVoxelProvider.js +494 -0
  113. package/Source/Scene/Cesium3DTileset.js +6 -1
  114. package/Source/Scene/Cesium3DTilesetMetadata.js +2 -2
  115. package/Source/Scene/ClassificationPrimitive.js +3 -8
  116. package/Source/Scene/ContentMetadata.js +2 -2
  117. package/Source/Scene/DebugAppearance.js +7 -9
  118. package/Source/Scene/DebugInspector.js +5 -5
  119. package/Source/Scene/DepthPlane.js +0 -6
  120. package/Source/Scene/DerivedCommand.js +15 -22
  121. package/Source/Scene/EllipsoidPrimitive.js +0 -7
  122. package/Source/Scene/Expression.js +1 -1
  123. package/Source/Scene/Globe.js +10 -0
  124. package/Source/Scene/GlobeSurfaceTileProvider.js +7 -0
  125. package/Source/Scene/GlobeTranslucencyState.js +6 -6
  126. package/Source/Scene/GltfImageLoader.js +1 -1
  127. package/Source/Scene/GltfVertexBufferLoader.js +10 -2
  128. package/Source/Scene/GroundPolylinePrimitive.js +2 -4
  129. package/Source/Scene/GroupMetadata.js +2 -2
  130. package/Source/Scene/ImplicitMetadataView.js +2 -2
  131. package/Source/Scene/ImplicitSubtreeCache.js +127 -0
  132. package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
  133. package/Source/Scene/ImplicitTileset.js +3 -2
  134. package/Source/Scene/InvertClassification.js +9 -10
  135. package/Source/Scene/KeyframeNode.js +47 -0
  136. package/Source/Scene/Material.js +6 -6
  137. package/Source/Scene/Megatexture.js +490 -0
  138. package/Source/Scene/MetadataClass.js +60 -25
  139. package/Source/Scene/MetadataClassProperty.js +132 -68
  140. package/Source/Scene/MetadataComponentType.js +78 -57
  141. package/Source/Scene/MetadataEnum.js +59 -23
  142. package/Source/Scene/MetadataEnumValue.js +49 -15
  143. package/Source/Scene/MetadataSchema.js +53 -24
  144. package/Source/Scene/MetadataSchemaLoader.js +2 -2
  145. package/Source/Scene/MetadataSemantic.js +8 -0
  146. package/Source/Scene/MetadataTableProperty.js +2 -2
  147. package/Source/Scene/MetadataType.js +6 -14
  148. package/Source/Scene/Model/CustomShader.js +1 -1
  149. package/Source/Scene/Model/FeatureIdPipelineStage.js +4 -4
  150. package/Source/Scene/Model/GeoJsonLoader.js +1 -1
  151. package/Source/Scene/Model/LightingModel.js +1 -1
  152. package/Source/Scene/Model/MetadataPipelineStage.js +1 -1
  153. package/Source/Scene/Model/Model.js +2 -3
  154. package/Source/Scene/Model/PickingPipelineStage.js +1 -1
  155. package/Source/Scene/Model/buildDrawCommand.js +19 -11
  156. package/Source/Scene/OIT.js +211 -119
  157. package/Source/Scene/PickDepth.js +2 -2
  158. package/Source/Scene/PointCloud.js +12 -12
  159. package/Source/Scene/PointCloudEyeDomeLighting.js +9 -4
  160. package/Source/Scene/PolylineCollection.js +2 -7
  161. package/Source/Scene/PolylineMaterialAppearance.js +2 -3
  162. package/Source/Scene/PostProcessStage.js +13 -13
  163. package/Source/Scene/PostProcessStageLibrary.js +3 -3
  164. package/Source/Scene/Primitive.js +22 -31
  165. package/Source/Scene/PropertyAttribute.js +2 -2
  166. package/Source/Scene/PropertyAttributeProperty.js +2 -2
  167. package/Source/Scene/PropertyTable.js +2 -2
  168. package/Source/Scene/PropertyTexture.js +2 -2
  169. package/Source/Scene/PropertyTextureProperty.js +2 -2
  170. package/Source/Scene/ResourceCache.js +9 -1
  171. package/Source/Scene/ResourceCacheKey.js +9 -1
  172. package/Source/Scene/Scene.js +17 -0
  173. package/Source/Scene/ShadowMap.js +7 -7
  174. package/Source/Scene/ShadowMapShader.js +9 -9
  175. package/Source/Scene/ShadowVolumeAppearance.js +1 -1
  176. package/Source/Scene/SpatialNode.js +375 -0
  177. package/Source/Scene/StructuralMetadata.js +2 -2
  178. package/Source/Scene/TextureAtlas.js +5 -3
  179. package/Source/Scene/TileMetadata.js +2 -2
  180. package/Source/Scene/TilesetMetadata.js +2 -2
  181. package/Source/Scene/Vector3DTilePolylines.js +1 -1
  182. package/Source/Scene/Vector3DTilePrimitive.js +2 -2
  183. package/Source/Scene/VoxelBoxShape.js +527 -0
  184. package/Source/Scene/VoxelContent.js +169 -0
  185. package/Source/Scene/VoxelCylinderShape.js +937 -0
  186. package/Source/Scene/VoxelEllipsoidShape.js +945 -0
  187. package/Source/Scene/VoxelPrimitive.js +1919 -0
  188. package/Source/Scene/VoxelProvider.js +255 -0
  189. package/Source/Scene/VoxelRenderResources.js +224 -0
  190. package/Source/Scene/VoxelShape.js +152 -0
  191. package/Source/Scene/VoxelShapeType.js +105 -0
  192. package/Source/Scene/VoxelTraversal.js +1144 -0
  193. package/Source/Scene/buildVoxelDrawCommands.js +116 -0
  194. package/Source/Scene/computeFlyToLocationForRectangle.js +10 -1
  195. package/Source/Scene/createElevationBandMaterial.js +10 -15
  196. package/Source/Scene/getClipAndStyleCode.js +1 -1
  197. package/Source/Scene/getClippingFunction.js +3 -3
  198. package/Source/Scene/parseBatchTable.js +18 -2
  199. package/Source/Scene/preprocess3DTileContent.js +8 -0
  200. package/Source/Scene/processVoxelProperties.js +455 -0
  201. package/Source/Shaders/AdjustTranslucentFS.glsl +9 -6
  202. package/Source/Shaders/AdjustTranslucentFS.js +9 -6
  203. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +7 -7
  204. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +7 -7
  205. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +12 -12
  206. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +12 -12
  207. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +4 -4
  208. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +4 -4
  209. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +6 -6
  210. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +6 -6
  211. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +5 -5
  212. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +5 -5
  213. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +7 -7
  214. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +7 -7
  215. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +4 -4
  216. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +4 -4
  217. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +8 -8
  218. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +8 -8
  219. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +2 -2
  220. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +2 -2
  221. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +5 -5
  222. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +5 -5
  223. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +10 -10
  224. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +10 -10
  225. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +12 -12
  226. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +12 -12
  227. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +5 -5
  228. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +5 -5
  229. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +8 -8
  230. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +8 -8
  231. package/Source/Shaders/BillboardCollectionFS.glsl +15 -15
  232. package/Source/Shaders/BillboardCollectionFS.js +15 -15
  233. package/Source/Shaders/BillboardCollectionVS.glsl +24 -24
  234. package/Source/Shaders/BillboardCollectionVS.js +24 -24
  235. package/Source/Shaders/BrdfLutGeneratorFS.glsl +2 -2
  236. package/Source/Shaders/BrdfLutGeneratorFS.js +2 -2
  237. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  238. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  239. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +9 -0
  240. package/Source/Shaders/Builtin/Constants/passVoxels.js +11 -0
  241. package/Source/Shaders/Builtin/CzmBuiltins.js +19 -15
  242. package/Source/Shaders/Builtin/Functions/depthClamp.glsl +3 -3
  243. package/Source/Shaders/Builtin/Functions/depthClamp.js +3 -3
  244. package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +4 -4
  245. package/Source/Shaders/Builtin/Functions/getWaterNoise.js +4 -4
  246. package/Source/Shaders/Builtin/Functions/phong.glsl +1 -1
  247. package/Source/Shaders/Builtin/Functions/phong.js +1 -1
  248. package/Source/Shaders/Builtin/Functions/readDepth.glsl +1 -1
  249. package/Source/Shaders/Builtin/Functions/readDepth.js +1 -1
  250. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +5 -5
  251. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +5 -5
  252. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +3 -3
  253. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +3 -3
  254. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +1 -1
  255. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +1 -1
  256. package/Source/Shaders/Builtin/Functions/textureCube.glsl +17 -0
  257. package/Source/Shaders/Builtin/Functions/textureCube.js +18 -0
  258. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +2 -2
  259. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +2 -2
  260. package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +2 -2
  261. package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +2 -2
  262. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +55 -43
  263. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +55 -43
  264. package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +5 -8
  265. package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +5 -8
  266. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +6 -6
  267. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +6 -6
  268. package/Source/Shaders/CloudCollectionFS.glsl +18 -18
  269. package/Source/Shaders/CloudCollectionFS.js +18 -18
  270. package/Source/Shaders/CloudCollectionVS.glsl +11 -11
  271. package/Source/Shaders/CloudCollectionVS.js +11 -11
  272. package/Source/Shaders/CloudNoiseFS.glsl +5 -5
  273. package/Source/Shaders/CloudNoiseFS.js +5 -5
  274. package/Source/Shaders/CloudNoiseVS.glsl +2 -2
  275. package/Source/Shaders/CloudNoiseVS.js +2 -2
  276. package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +4 -4
  277. package/Source/Shaders/CompareAndPackTranslucentDepth.js +4 -4
  278. package/Source/Shaders/CompositeOITFS.glsl +6 -6
  279. package/Source/Shaders/CompositeOITFS.js +6 -6
  280. package/Source/Shaders/DepthPlaneFS.glsl +2 -2
  281. package/Source/Shaders/DepthPlaneFS.js +2 -2
  282. package/Source/Shaders/DepthPlaneVS.glsl +2 -2
  283. package/Source/Shaders/DepthPlaneVS.js +2 -2
  284. package/Source/Shaders/EllipsoidFS.glsl +5 -13
  285. package/Source/Shaders/EllipsoidFS.js +6 -14
  286. package/Source/Shaders/EllipsoidVS.glsl +2 -2
  287. package/Source/Shaders/EllipsoidVS.js +2 -2
  288. package/Source/Shaders/FXAA3_11.glsl +4 -4
  289. package/Source/Shaders/FXAA3_11.js +4 -4
  290. package/Source/Shaders/GlobeFS.glsl +17 -16
  291. package/Source/Shaders/GlobeFS.js +17 -16
  292. package/Source/Shaders/GlobeVS.glsl +17 -17
  293. package/Source/Shaders/GlobeVS.js +17 -17
  294. package/Source/Shaders/Materials/AspectRampMaterial.glsl +1 -1
  295. package/Source/Shaders/Materials/AspectRampMaterial.js +1 -1
  296. package/Source/Shaders/Materials/BumpMapMaterial.glsl +3 -3
  297. package/Source/Shaders/Materials/BumpMapMaterial.js +3 -3
  298. package/Source/Shaders/Materials/ElevationBandMaterial.glsl +3 -3
  299. package/Source/Shaders/Materials/ElevationBandMaterial.js +3 -3
  300. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +2 -1
  301. package/Source/Shaders/Materials/ElevationContourMaterial.js +2 -1
  302. package/Source/Shaders/Materials/ElevationRampMaterial.glsl +1 -1
  303. package/Source/Shaders/Materials/ElevationRampMaterial.js +1 -1
  304. package/Source/Shaders/Materials/GridMaterial.glsl +3 -2
  305. package/Source/Shaders/Materials/GridMaterial.js +3 -2
  306. package/Source/Shaders/Materials/NormalMapMaterial.glsl +1 -1
  307. package/Source/Shaders/Materials/NormalMapMaterial.js +1 -1
  308. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +3 -2
  309. package/Source/Shaders/Materials/PolylineArrowMaterial.js +3 -2
  310. package/Source/Shaders/Materials/PolylineDashMaterial.glsl +1 -1
  311. package/Source/Shaders/Materials/PolylineDashMaterial.js +1 -1
  312. package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +1 -1
  313. package/Source/Shaders/Materials/PolylineOutlineMaterial.js +1 -1
  314. package/Source/Shaders/Materials/SlopeRampMaterial.glsl +1 -1
  315. package/Source/Shaders/Materials/SlopeRampMaterial.js +1 -1
  316. package/Source/Shaders/Materials/Water.glsl +1 -1
  317. package/Source/Shaders/Materials/Water.js +1 -1
  318. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +3 -3
  319. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +3 -3
  320. package/Source/Shaders/Model/MaterialStageFS.glsl +10 -10
  321. package/Source/Shaders/Model/MaterialStageFS.js +10 -10
  322. package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +3 -3
  323. package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +3 -3
  324. package/Source/Shaders/Model/ModelFS.glsl +1 -1
  325. package/Source/Shaders/Model/ModelFS.js +1 -1
  326. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +3 -3
  327. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +3 -3
  328. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +1 -1
  329. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +1 -1
  330. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +8 -8
  331. package/Source/Shaders/OctahedralProjectionAtlasFS.js +8 -8
  332. package/Source/Shaders/OctahedralProjectionFS.glsl +4 -4
  333. package/Source/Shaders/OctahedralProjectionFS.js +4 -4
  334. package/Source/Shaders/OctahedralProjectionVS.glsl +3 -3
  335. package/Source/Shaders/OctahedralProjectionVS.js +3 -3
  336. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +6 -6
  337. package/Source/Shaders/PointPrimitiveCollectionFS.js +6 -6
  338. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +17 -14
  339. package/Source/Shaders/PointPrimitiveCollectionVS.js +17 -14
  340. package/Source/Shaders/PolylineFS.glsl +3 -3
  341. package/Source/Shaders/PolylineFS.js +3 -3
  342. package/Source/Shaders/PolylineShadowVolumeFS.glsl +12 -16
  343. package/Source/Shaders/PolylineShadowVolumeFS.js +12 -16
  344. package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +8 -8
  345. package/Source/Shaders/PolylineShadowVolumeMorphFS.js +8 -8
  346. package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +20 -20
  347. package/Source/Shaders/PolylineShadowVolumeMorphVS.js +20 -20
  348. package/Source/Shaders/PolylineShadowVolumeVS.glsl +20 -20
  349. package/Source/Shaders/PolylineShadowVolumeVS.js +20 -20
  350. package/Source/Shaders/PolylineVS.glsl +17 -17
  351. package/Source/Shaders/PolylineVS.js +17 -17
  352. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -4
  353. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -4
  354. package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +4 -4
  355. package/Source/Shaders/PostProcessStages/AdditiveBlend.js +4 -4
  356. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +4 -4
  357. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +4 -4
  358. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +4 -4
  359. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +4 -4
  360. package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +4 -4
  361. package/Source/Shaders/PostProcessStages/BlackAndWhite.js +4 -4
  362. package/Source/Shaders/PostProcessStages/BloomComposite.glsl +5 -5
  363. package/Source/Shaders/PostProcessStages/BloomComposite.js +5 -5
  364. package/Source/Shaders/PostProcessStages/BrightPass.glsl +3 -3
  365. package/Source/Shaders/PostProcessStages/BrightPass.js +3 -3
  366. package/Source/Shaders/PostProcessStages/Brightness.glsl +3 -3
  367. package/Source/Shaders/PostProcessStages/Brightness.js +3 -3
  368. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +5 -5
  369. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +5 -5
  370. package/Source/Shaders/PostProcessStages/ContrastBias.glsl +3 -3
  371. package/Source/Shaders/PostProcessStages/ContrastBias.js +3 -3
  372. package/Source/Shaders/PostProcessStages/DepthOfField.glsl +2 -2
  373. package/Source/Shaders/PostProcessStages/DepthOfField.js +2 -2
  374. package/Source/Shaders/PostProcessStages/DepthView.glsl +2 -2
  375. package/Source/Shaders/PostProcessStages/DepthView.js +2 -2
  376. package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +3 -3
  377. package/Source/Shaders/PostProcessStages/DepthViewPacked.js +3 -3
  378. package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +7 -7
  379. package/Source/Shaders/PostProcessStages/EdgeDetection.js +7 -7
  380. package/Source/Shaders/PostProcessStages/FXAA.glsl +3 -3
  381. package/Source/Shaders/PostProcessStages/FXAA.js +3 -3
  382. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -4
  383. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -4
  384. package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +5 -5
  385. package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +5 -5
  386. package/Source/Shaders/PostProcessStages/LensFlare.glsl +13 -13
  387. package/Source/Shaders/PostProcessStages/LensFlare.js +13 -13
  388. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -4
  389. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -4
  390. package/Source/Shaders/PostProcessStages/NightVision.glsl +3 -3
  391. package/Source/Shaders/PostProcessStages/NightVision.js +3 -3
  392. package/Source/Shaders/PostProcessStages/PassThrough.glsl +2 -2
  393. package/Source/Shaders/PostProcessStages/PassThrough.js +2 -2
  394. package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +2 -2
  395. package/Source/Shaders/PostProcessStages/PassThroughDepth.js +2 -2
  396. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +7 -9
  397. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +8 -10
  398. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -4
  399. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -4
  400. package/Source/Shaders/PostProcessStages/Silhouette.glsl +4 -4
  401. package/Source/Shaders/PostProcessStages/Silhouette.js +4 -4
  402. package/Source/Shaders/ReprojectWebMercatorFS.glsl +2 -2
  403. package/Source/Shaders/ReprojectWebMercatorFS.js +2 -2
  404. package/Source/Shaders/ReprojectWebMercatorVS.glsl +3 -3
  405. package/Source/Shaders/ReprojectWebMercatorVS.js +3 -3
  406. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +19 -23
  407. package/Source/Shaders/ShadowVolumeAppearanceFS.js +20 -24
  408. package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +12 -12
  409. package/Source/Shaders/ShadowVolumeAppearanceVS.js +12 -12
  410. package/Source/Shaders/ShadowVolumeFS.glsl +2 -6
  411. package/Source/Shaders/ShadowVolumeFS.js +3 -7
  412. package/Source/Shaders/SkyAtmosphereFS.glsl +6 -6
  413. package/Source/Shaders/SkyAtmosphereFS.js +6 -6
  414. package/Source/Shaders/SkyAtmosphereVS.glsl +6 -6
  415. package/Source/Shaders/SkyAtmosphereVS.js +6 -6
  416. package/Source/Shaders/SkyBoxFS.glsl +3 -3
  417. package/Source/Shaders/SkyBoxFS.js +3 -3
  418. package/Source/Shaders/SkyBoxVS.glsl +2 -2
  419. package/Source/Shaders/SkyBoxVS.js +2 -2
  420. package/Source/Shaders/SunFS.glsl +3 -3
  421. package/Source/Shaders/SunFS.js +3 -3
  422. package/Source/Shaders/SunTextureFS.glsl +2 -2
  423. package/Source/Shaders/SunTextureFS.js +2 -2
  424. package/Source/Shaders/SunVS.glsl +2 -2
  425. package/Source/Shaders/SunVS.js +2 -2
  426. package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +9 -13
  427. package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +9 -13
  428. package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +12 -12
  429. package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +12 -12
  430. package/Source/Shaders/Vector3DTilePolylinesVS.glsl +5 -5
  431. package/Source/Shaders/Vector3DTilePolylinesVS.js +5 -5
  432. package/Source/Shaders/VectorTileVS.glsl +2 -2
  433. package/Source/Shaders/VectorTileVS.js +2 -2
  434. package/Source/Shaders/ViewportQuadFS.glsl +2 -2
  435. package/Source/Shaders/ViewportQuadFS.js +2 -2
  436. package/Source/Shaders/ViewportQuadVS.glsl +3 -3
  437. package/Source/Shaders/ViewportQuadVS.js +3 -3
  438. package/Source/Shaders/Voxels/IntersectBox.glsl +79 -0
  439. package/Source/Shaders/Voxels/IntersectBox.js +81 -0
  440. package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +70 -0
  441. package/Source/Shaders/Voxels/IntersectClippingPlanes.js +72 -0
  442. package/Source/Shaders/Voxels/IntersectCylinder.glsl +273 -0
  443. package/Source/Shaders/Voxels/IntersectCylinder.js +275 -0
  444. package/Source/Shaders/Voxels/IntersectDepth.glsl +23 -0
  445. package/Source/Shaders/Voxels/IntersectDepth.js +25 -0
  446. package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +347 -0
  447. package/Source/Shaders/Voxels/IntersectEllipsoid.js +349 -0
  448. package/Source/Shaders/Voxels/Intersection.glsl +54 -0
  449. package/Source/Shaders/Voxels/Intersection.js +56 -0
  450. package/Source/Shaders/Voxels/IntersectionUtils.glsl +151 -0
  451. package/Source/Shaders/Voxels/IntersectionUtils.js +153 -0
  452. package/Source/Shaders/Voxels/Megatexture.glsl +136 -0
  453. package/Source/Shaders/Voxels/Megatexture.js +138 -0
  454. package/Source/Shaders/Voxels/Octree.glsl +221 -0
  455. package/Source/Shaders/Voxels/Octree.js +223 -0
  456. package/Source/Shaders/Voxels/VoxelFS.glsl +150 -0
  457. package/Source/Shaders/Voxels/VoxelFS.js +152 -0
  458. package/Source/Shaders/Voxels/VoxelVS.glsl +11 -0
  459. package/Source/Shaders/Voxels/VoxelVS.js +13 -0
  460. package/Source/Shaders/Voxels/convertUvToBox.glsl +16 -0
  461. package/Source/Shaders/Voxels/convertUvToBox.js +18 -0
  462. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +75 -0
  463. package/Source/Shaders/Voxels/convertUvToCylinder.js +77 -0
  464. package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +130 -0
  465. package/Source/Shaders/Voxels/convertUvToEllipsoid.js +132 -0
  466. package/Source/ThirdParty/Workers/z-worker-pako.js +0 -0
  467. package/Source/WorkersES6/decodeDraco.js +9 -1
  468. package/index.d.ts +3148 -2297
  469. package/index.js +1118 -1085
  470. package/package.json +3 -4
  471. package/Build/Workers/PolygonPipeline-774a8aaf.js +0 -1341
  472. package/Source/Renderer/modernizeShader.js +0 -242
@@ -0,0 +1,375 @@
1
+ import binarySearch from "../Core/binarySearch.js";
2
+ import Cartesian3 from "../Core/Cartesian3.js";
3
+ import CesiumMath from "../Core/Math.js";
4
+ import defined from "../Core/defined.js";
5
+ import DeveloperError from "../Core/DeveloperError.js";
6
+ import KeyframeNode from "./KeyframeNode.js";
7
+ import Matrix3 from "../Core/Matrix3.js";
8
+ import OrientedBoundingBox from "../Core/OrientedBoundingBox.js";
9
+
10
+ /**
11
+ * @alias SpatialNode
12
+ * @constructor
13
+ *
14
+ * @param {Number} level
15
+ * @param {Number} x
16
+ * @param {Number} y
17
+ * @param {Number} z
18
+ * @param {SpatialNode} parent
19
+ * @param {VoxelShapeType} shape
20
+ * @param {Cartesian3} voxelDimensions
21
+ *
22
+ * @private
23
+ */
24
+ function SpatialNode(level, x, y, z, parent, shape, voxelDimensions) {
25
+ /**
26
+ * @ignore
27
+ * @type {SpatialNode[]}
28
+ */
29
+ this.children = undefined;
30
+ this.parent = parent;
31
+
32
+ this.level = level;
33
+ this.x = x;
34
+ this.y = y;
35
+ this.z = z;
36
+
37
+ /**
38
+ * @ignore
39
+ * @type {KeyframeNode[]}
40
+ */
41
+ this.keyframeNodes = [];
42
+ /**
43
+ * @ignore
44
+ * @type {KeyframeNode[]}
45
+ */
46
+ this.renderableKeyframeNodes = [];
47
+
48
+ this.renderableKeyframeNodeLerp = 0.0;
49
+ /**
50
+ * @ignore
51
+ * @type {KeyframeNode}
52
+ */
53
+ this.renderableKeyframeNodePrevious = undefined;
54
+ /**
55
+ * @ignore
56
+ * @type {KeyframeNode}
57
+ */
58
+ this.renderableKeyframeNodeNext = undefined;
59
+
60
+ this.orientedBoundingBox = new OrientedBoundingBox();
61
+ this.approximateVoxelSize = 0.0;
62
+ this.screenSpaceError = 0.0;
63
+ this.visitedFrameNumber = -1;
64
+
65
+ this.computeBoundingVolumes(shape, voxelDimensions);
66
+ }
67
+
68
+ /**
69
+ * @param {SpatialNode} a
70
+ * @param {SpatialNode} b
71
+ * @returns {Boolean}
72
+ */
73
+ SpatialNode.spatialComparator = function (a, b) {
74
+ // The higher of the two screen space errors is prioritized
75
+ return b.screenSpaceError - a.screenSpaceError;
76
+ };
77
+
78
+ const scratchObbHalfScale = new Cartesian3();
79
+
80
+ /**
81
+ * @param {VoxelShape} shape
82
+ * @param {Cartesian3} voxelDimensions
83
+ */
84
+ SpatialNode.prototype.computeBoundingVolumes = function (
85
+ shape,
86
+ voxelDimensions
87
+ ) {
88
+ this.orientedBoundingBox = shape.computeOrientedBoundingBoxForTile(
89
+ this.level,
90
+ this.x,
91
+ this.y,
92
+ this.z,
93
+ this.orientedBoundingBox
94
+ );
95
+
96
+ const halfScale = Matrix3.getScale(
97
+ this.orientedBoundingBox.halfAxes,
98
+ scratchObbHalfScale
99
+ );
100
+ const maximumScale = 2.0 * Cartesian3.maximumComponent(halfScale);
101
+ this.approximateVoxelSize =
102
+ maximumScale / Cartesian3.minimumComponent(voxelDimensions);
103
+ };
104
+
105
+ /**
106
+ * @param {FrameState} frameState
107
+ * @param {Number} visibilityPlaneMask
108
+ * @returns {Number} A plane mask as described in {@link CullingVolume#computeVisibilityWithPlaneMask}.
109
+ */
110
+ SpatialNode.prototype.visibility = function (frameState, visibilityPlaneMask) {
111
+ const obb = this.orientedBoundingBox;
112
+ const cullingVolume = frameState.cullingVolume;
113
+ return cullingVolume.computeVisibilityWithPlaneMask(obb, visibilityPlaneMask);
114
+ };
115
+
116
+ /**
117
+ * @param {Cartesian3} cameraPosition
118
+ * @param {Number} screenSpaceErrorMultiplier
119
+ */
120
+ SpatialNode.prototype.computeScreenSpaceError = function (
121
+ cameraPosition,
122
+ screenSpaceErrorMultiplier
123
+ ) {
124
+ const obb = this.orientedBoundingBox;
125
+
126
+ let distance = Math.sqrt(obb.distanceSquaredTo(cameraPosition));
127
+ // Avoid divide-by-zero when viewer is inside the tile.
128
+ distance = Math.max(distance, CesiumMath.EPSILON7);
129
+ const approximateVoxelSize = this.approximateVoxelSize;
130
+ const error = screenSpaceErrorMultiplier * (approximateVoxelSize / distance);
131
+ this.screenSpaceError = error;
132
+ };
133
+
134
+ // This object imitates a KeyframeNode. Only used for binary search function.
135
+ const scratchBinarySearchKeyframeNode = {
136
+ keyframe: 0,
137
+ };
138
+
139
+ /**
140
+ * Find the index of a given key frame position within an array of KeyframeNodes,
141
+ * or the complement (~) of the index where it would be in the sorted array.
142
+ * @param {Number} keyframe
143
+ * @param {KeyframeNode[]} keyframeNodes
144
+ * @returns {Number}
145
+ * @private
146
+ */
147
+ function findKeyframeIndex(keyframe, keyframeNodes) {
148
+ scratchBinarySearchKeyframeNode.keyframe = keyframe;
149
+ return binarySearch(
150
+ keyframeNodes,
151
+ scratchBinarySearchKeyframeNode,
152
+ KeyframeNode.searchComparator
153
+ );
154
+ }
155
+
156
+ /**
157
+ * Computes the most suitable keyframes for rendering, balancing between temporal and visual quality.
158
+ *
159
+ * @param {Number} keyframeLocation
160
+ */
161
+ SpatialNode.prototype.computeSurroundingRenderableKeyframeNodes = function (
162
+ keyframeLocation
163
+ ) {
164
+ let spatialNode = this;
165
+ const startLevel = spatialNode.level;
166
+
167
+ const targetKeyframePrev = Math.floor(keyframeLocation);
168
+ const targetKeyframeNext = Math.ceil(keyframeLocation);
169
+
170
+ let bestKeyframeNodePrev;
171
+ let bestKeyframeNodeNext;
172
+ let minimumDistancePrev = +Number.MAX_VALUE;
173
+ let minimumDistanceNext = +Number.MAX_VALUE;
174
+
175
+ while (defined(spatialNode)) {
176
+ const renderableKeyframeNodes = spatialNode.renderableKeyframeNodes;
177
+
178
+ if (renderableKeyframeNodes.length >= 1) {
179
+ let keyframeNodeIndexPrev = findKeyframeIndex(
180
+ targetKeyframePrev,
181
+ renderableKeyframeNodes
182
+ );
183
+ if (keyframeNodeIndexPrev < 0) {
184
+ keyframeNodeIndexPrev = CesiumMath.clamp(
185
+ ~keyframeNodeIndexPrev - 1,
186
+ 0,
187
+ renderableKeyframeNodes.length - 1
188
+ );
189
+ }
190
+ const keyframeNodePrev = renderableKeyframeNodes[keyframeNodeIndexPrev];
191
+ const keyframePrev = keyframeNodePrev.keyframe;
192
+
193
+ let keyframeNodeNext;
194
+ if (
195
+ targetKeyframeNext === targetKeyframePrev ||
196
+ targetKeyframePrev < keyframePrev
197
+ ) {
198
+ keyframeNodeNext = keyframeNodePrev;
199
+ } else {
200
+ const keyframeNodeIndexNext = Math.min(
201
+ keyframeNodeIndexPrev + 1,
202
+ renderableKeyframeNodes.length - 1
203
+ );
204
+ keyframeNodeNext = renderableKeyframeNodes[keyframeNodeIndexNext];
205
+ }
206
+ const keyframeNext = keyframeNodeNext.keyframe;
207
+
208
+ const keyframeDistancePrev = targetKeyframePrev - keyframePrev;
209
+ const keyframeDistanceNext = keyframeNext - targetKeyframeNext;
210
+ const levelDistance = startLevel - spatialNode.level;
211
+
212
+ // Balance temporal and visual quality
213
+ const levelWeight = Math.exp(levelDistance * 4.0);
214
+ const normalKeyframeWeight = 1.0;
215
+ const reverseKeyframeWeight = 200.0; // Keyframes on the opposite of the desired direction are deprioritized.
216
+ const distancePrev =
217
+ levelDistance * levelWeight +
218
+ (keyframeDistancePrev >= 0
219
+ ? keyframeDistancePrev * normalKeyframeWeight
220
+ : -keyframeDistancePrev * reverseKeyframeWeight);
221
+ const distanceNext =
222
+ levelDistance * levelWeight +
223
+ (keyframeDistanceNext >= 0
224
+ ? keyframeDistanceNext * normalKeyframeWeight
225
+ : -keyframeDistanceNext * reverseKeyframeWeight);
226
+
227
+ if (distancePrev < minimumDistancePrev) {
228
+ minimumDistancePrev = distancePrev;
229
+ bestKeyframeNodePrev = keyframeNodePrev;
230
+ }
231
+ if (distanceNext < minimumDistanceNext) {
232
+ minimumDistanceNext = distanceNext;
233
+ bestKeyframeNodeNext = keyframeNodeNext;
234
+ }
235
+ if (keyframeDistancePrev === 0 && keyframeDistanceNext === 0) {
236
+ // Nothing higher up will be better, so break early.
237
+ break;
238
+ }
239
+ }
240
+
241
+ spatialNode = spatialNode.parent;
242
+ }
243
+
244
+ this.renderableKeyframeNodePrevious = bestKeyframeNodePrev;
245
+ this.renderableKeyframeNodeNext = bestKeyframeNodeNext;
246
+ if (defined(bestKeyframeNodePrev) && defined(bestKeyframeNodeNext)) {
247
+ const bestKeyframePrev = bestKeyframeNodePrev.keyframe;
248
+ const bestKeyframeNext = bestKeyframeNodeNext.keyframe;
249
+ this.renderableKeyframeNodeLerp =
250
+ bestKeyframePrev === bestKeyframeNext
251
+ ? 0.0
252
+ : CesiumMath.clamp(
253
+ (keyframeLocation - bestKeyframePrev) /
254
+ (bestKeyframeNext - bestKeyframePrev),
255
+ 0.0,
256
+ 1.0
257
+ );
258
+ }
259
+ };
260
+
261
+ /**
262
+ * @param {Number} frameNumber
263
+ * @returns {Boolean}
264
+ */
265
+ SpatialNode.prototype.isVisited = function (frameNumber) {
266
+ return this.visitedFrameNumber === frameNumber;
267
+ };
268
+
269
+ /**
270
+ * @param {Number} keyframe
271
+ */
272
+ SpatialNode.prototype.createKeyframeNode = function (keyframe) {
273
+ let index = findKeyframeIndex(keyframe, this.keyframeNodes);
274
+ if (index < 0) {
275
+ index = ~index; // convert to insertion index
276
+ const keyframeNode = new KeyframeNode(this, keyframe);
277
+ this.keyframeNodes.splice(index, 0, keyframeNode);
278
+ }
279
+ };
280
+
281
+ /**
282
+ * @param {KeyframeNode} keyframeNode
283
+ * @param {Megatexture[]} megatextures
284
+ */
285
+ SpatialNode.prototype.destroyKeyframeNode = function (
286
+ keyframeNode,
287
+ megatextures
288
+ ) {
289
+ const keyframe = keyframeNode.keyframe;
290
+ const keyframeIndex = findKeyframeIndex(keyframe, this.keyframeNodes);
291
+ if (keyframeIndex < 0) {
292
+ throw new DeveloperError("Keyframe node does not exist.");
293
+ }
294
+
295
+ this.keyframeNodes.splice(keyframeIndex, 1);
296
+
297
+ if (keyframeNode.megatextureIndex !== -1) {
298
+ for (let i = 0; i < megatextures.length; i++) {
299
+ megatextures[i].remove(keyframeNode.megatextureIndex);
300
+ }
301
+
302
+ const renderableKeyframeNodeIndex = findKeyframeIndex(
303
+ keyframe,
304
+ this.renderableKeyframeNodes
305
+ );
306
+ if (renderableKeyframeNodeIndex < 0) {
307
+ throw new DeveloperError("Renderable keyframe node does not exist.");
308
+ }
309
+
310
+ this.renderableKeyframeNodes.splice(renderableKeyframeNodeIndex, 1);
311
+ }
312
+
313
+ keyframeNode.spatialNode = undefined;
314
+ keyframeNode.state = KeyframeNode.LoadState.UNLOADED;
315
+ keyframeNode.metadatas = {};
316
+ keyframeNode.megatextureIndex = -1;
317
+ keyframeNode.priority = -Number.MAX_VALUE;
318
+ keyframeNode.highPriorityFrameNumber = -1;
319
+ };
320
+
321
+ /**
322
+ * @param {KeyframeNode} keyframeNode
323
+ * @param {Megatexture[]} megatextures
324
+ */
325
+ SpatialNode.prototype.addKeyframeNodeToMegatextures = function (
326
+ keyframeNode,
327
+ megatextures
328
+ ) {
329
+ if (
330
+ keyframeNode.state !== KeyframeNode.LoadState.RECEIVED ||
331
+ keyframeNode.megatextureIndex !== -1 ||
332
+ keyframeNode.metadatas.length !== megatextures.length
333
+ ) {
334
+ throw new DeveloperError("Keyframe node cannot be added to megatexture");
335
+ }
336
+
337
+ for (let i = 0; i < megatextures.length; i++) {
338
+ const megatexture = megatextures[i];
339
+ keyframeNode.megatextureIndex = megatexture.add(keyframeNode.metadatas[i]);
340
+ keyframeNode.metadatas[i] = undefined; // data is in megatexture so no need to hold onto it
341
+ }
342
+
343
+ keyframeNode.state = KeyframeNode.LoadState.LOADED;
344
+
345
+ const renderableKeyframeNodes = this.renderableKeyframeNodes;
346
+ let renderableKeyframeNodeIndex = findKeyframeIndex(
347
+ keyframeNode.keyframe,
348
+ renderableKeyframeNodes
349
+ );
350
+ if (renderableKeyframeNodeIndex >= 0) {
351
+ throw new DeveloperError("Keyframe already renderable");
352
+ }
353
+ renderableKeyframeNodeIndex = ~renderableKeyframeNodeIndex;
354
+ renderableKeyframeNodes.splice(renderableKeyframeNodeIndex, 0, keyframeNode);
355
+ };
356
+
357
+ /**
358
+ * @param {Number} frameNumber
359
+ * @returns Boolean
360
+ */
361
+ SpatialNode.prototype.isRenderable = function (frameNumber) {
362
+ const previousNode = this.renderableKeyframeNodePrevious;
363
+ const nextNode = this.renderableKeyframeNodeNext;
364
+ const level = this.level;
365
+
366
+ return (
367
+ defined(previousNode) &&
368
+ defined(nextNode) &&
369
+ (previousNode.spatialNode.level === level ||
370
+ nextNode.spatialNode.level === level) &&
371
+ this.visitedFrameNumber === frameNumber
372
+ );
373
+ };
374
+
375
+ export default SpatialNode;
@@ -76,7 +76,7 @@ Object.defineProperties(StructuralMetadata.prototype, {
76
76
  },
77
77
 
78
78
  /**
79
- * Extras in the JSON object.
79
+ * Extra user-defined properties.
80
80
  *
81
81
  * @memberof StructuralMetadata.prototype
82
82
  * @type {*}
@@ -90,7 +90,7 @@ Object.defineProperties(StructuralMetadata.prototype, {
90
90
  },
91
91
 
92
92
  /**
93
- * Extensions in the JSON object.
93
+ * An object containing extensions.
94
94
  *
95
95
  * @memberof StructuralMetadata.prototype
96
96
  * @type {Object}
@@ -498,17 +498,19 @@ TextureAtlas.prototype.addSubRegion = function (id, subRegion) {
498
498
  }
499
499
  const atlasWidth = that._texture.width;
500
500
  const atlasHeight = that._texture.height;
501
- const numImages = that.numberOfImages;
502
501
 
503
502
  const baseRegion = that._textureCoordinates[index];
504
503
  const x = baseRegion.x + subRegion.x / atlasWidth;
505
504
  const y = baseRegion.y + subRegion.y / atlasHeight;
506
505
  const w = subRegion.width / atlasWidth;
507
506
  const h = subRegion.height / atlasHeight;
508
- that._textureCoordinates.push(new BoundingRectangle(x, y, w, h));
507
+ const newIndex =
508
+ that._textureCoordinates.push(new BoundingRectangle(x, y, w, h)) - 1;
509
+ that._indexHash[id] = newIndex;
510
+
509
511
  that._guid = createGuid();
510
512
 
511
- return numImages;
513
+ return newIndex;
512
514
  });
513
515
  };
514
516
 
@@ -50,7 +50,7 @@ Object.defineProperties(TileMetadata.prototype, {
50
50
  },
51
51
 
52
52
  /**
53
- * Extras in the JSON object.
53
+ * Extra user-defined properties.
54
54
  *
55
55
  * @memberof TileMetadata.prototype
56
56
  * @type {Object}
@@ -64,7 +64,7 @@ Object.defineProperties(TileMetadata.prototype, {
64
64
  },
65
65
 
66
66
  /**
67
- * Extensions in the JSON object.
67
+ * An object containing extensions.
68
68
  *
69
69
  * @memberof TileMetadata.prototype
70
70
  * @type {Object}
@@ -52,7 +52,7 @@ Object.defineProperties(TilesetMetadata.prototype, {
52
52
  },
53
53
 
54
54
  /**
55
- * Extras in the JSON object.
55
+ * Extra user-defined properties.
56
56
  *
57
57
  * @memberof TilesetMetadata.prototype
58
58
  * @type {*}
@@ -66,7 +66,7 @@ Object.defineProperties(TilesetMetadata.prototype, {
66
66
  },
67
67
 
68
68
  /**
69
- * Extensions in the JSON object.
69
+ * An object containing extensions.
70
70
  *
71
71
  * @memberof TilesetMetadata.prototype
72
72
  * @type {Object}
@@ -421,7 +421,7 @@ const PolylineFS =
421
421
  "uniform vec4 u_highlightColor; \n" +
422
422
  "void main()\n" +
423
423
  "{\n" +
424
- " gl_FragColor = u_highlightColor;\n" +
424
+ " out_FragColor = u_highlightColor;\n" +
425
425
  "}\n";
426
426
 
427
427
  function createShaders(primitive, context) {
@@ -283,7 +283,7 @@ function createShaders(primitive, context) {
283
283
  `${fragmentShaderSource}void main() \n` +
284
284
  `{ \n` +
285
285
  ` czm_non_pick_main(); \n` +
286
- ` gl_FragColor = ${pickId}; \n` +
286
+ ` out_FragColor = ${pickId}; \n` +
287
287
  `} \n`;
288
288
  primitive._spPick = ShaderProgram.fromCache({
289
289
  context: context,
@@ -343,7 +343,7 @@ function createShaders(primitive, context) {
343
343
  `void main() \n` +
344
344
  `{ \n` +
345
345
  ` czm_non_pick_main(); \n` +
346
- ` gl_FragColor = ${pickId}; \n` +
346
+ ` out_FragColor = ${pickId}; \n` +
347
347
  `} \n`;
348
348
 
349
349
  const pickVS = new ShaderSource({