@cesium/engine 23.0.1 → 25.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.
- package/Build/Workers/{chunk-ZEMJQKHD.js → chunk-35H3UBIO.js} +13 -12
- package/Build/Workers/{chunk-PQTSXJBJ.js → chunk-3LSD7OOA.js} +16 -16
- package/Build/Workers/{chunk-PUO7BYDY.js → chunk-3RFFPH4M.js} +1 -1
- package/Build/Workers/{chunk-PBECJOWF.js → chunk-3TKLDHV3.js} +2 -2
- package/Build/Workers/{chunk-TMCTZ5E3.js → chunk-3VDDRF2E.js} +14 -14
- package/Build/Workers/{chunk-FKU77FNM.js → chunk-3XY3MVPG.js} +4 -4
- package/Build/Workers/{chunk-2OBWHTIC.js → chunk-4GF4MVPY.js} +7 -7
- package/Build/Workers/{chunk-JUKGMJX7.js → chunk-4MTRQFJP.js} +3 -2
- package/Build/Workers/{chunk-66OWUDO7.js → chunk-4QQXGTCE.js} +8 -8
- package/Build/Workers/{chunk-ALTCIHRH.js → chunk-4XXHJI6Y.js} +17 -17
- package/Build/Workers/{chunk-K7UTK4OM.js → chunk-5T6QQAJW.js} +3 -2
- package/Build/Workers/{chunk-IJ3SUMK3.js → chunk-6SDGQI27.js} +3 -2
- package/Build/Workers/{chunk-FXSRA5UG.js → chunk-77RL3MBD.js} +6 -5
- package/Build/Workers/{chunk-G6MJ3ZW3.js → chunk-7LSFAEWF.js} +12 -11
- package/Build/Workers/{chunk-C6HHBKT5.js → chunk-A7A433MD.js} +5 -5
- package/Build/Workers/{chunk-PGZ3B6CB.js → chunk-A7ZBMVFS.js} +14 -14
- package/Build/Workers/{chunk-OZYB3AOR.js → chunk-ACFFCHHZ.js} +11 -11
- package/Build/Workers/{chunk-DNMASBMH.js → chunk-AEAVLYPS.js} +2 -2
- package/Build/Workers/{chunk-VPWYHFQA.js → chunk-AWFZHD2B.js} +4 -4
- package/Build/Workers/{chunk-TFPG3ZKW.js → chunk-BTX2NL3P.js} +59 -46
- package/Build/Workers/{chunk-TNXOPEIG.js → chunk-BVAIWR7O.js} +12 -12
- package/Build/Workers/chunk-CKQP3DSS.js +973 -0
- package/Build/Workers/{chunk-N6HRZLS6.js → chunk-CZ23Y3RM.js} +2 -2
- package/Build/Workers/{chunk-EIC3VAOZ.js → chunk-DFEI5MAV.js} +7 -7
- package/Build/Workers/{chunk-BTP3634E.js → chunk-DH26SNAB.js} +4 -1
- package/Build/Workers/{chunk-TXYQNXNW.js → chunk-DYT5NR6P.js} +3 -3
- package/Build/Workers/{chunk-O67UP5YO.js → chunk-EZARA5FJ.js} +13 -13
- package/Build/Workers/{chunk-YSJRB2UZ.js → chunk-FIBS5S7R.js} +2 -2
- package/Build/Workers/{chunk-2M7DKGLW.js → chunk-FVLVVOBQ.js} +10 -10
- package/Build/Workers/{chunk-B2VA6IEL.js → chunk-GL7DNVUS.js} +5 -5
- package/Build/Workers/{chunk-77DJBHMI.js → chunk-GPIGURCG.js} +59 -32
- package/Build/Workers/{chunk-QPXGGVHC.js → chunk-H2A4USJR.js} +10 -10
- package/Build/Workers/chunk-HSVQATK2.js +147 -0
- package/Build/Workers/{chunk-HXEPZWJN.js → chunk-HVMG6AG4.js} +11 -10
- package/Build/Workers/{chunk-H3TVRJLY.js → chunk-I3A6DXYZ.js} +4 -4
- package/Build/Workers/{chunk-UEWYSOFD.js → chunk-ITD2IN7N.js} +2 -2
- package/Build/Workers/{chunk-CYOPNGPX.js → chunk-J3OFS2RD.js} +12 -12
- package/Build/Workers/{chunk-RZX6LOG6.js → chunk-J647NNZW.js} +6 -6
- package/Build/Workers/{chunk-GLCPE2BJ.js → chunk-J7KQEKPK.js} +13 -13
- package/Build/Workers/{chunk-XPMXRJDD.js → chunk-K6NFIRFB.js} +5 -5
- package/Build/Workers/{chunk-CID5SY7L.js → chunk-LH5SF3XV.js} +7 -6
- package/Build/Workers/{chunk-UOQB7XQI.js → chunk-ND3NTTOF.js} +713 -435
- package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
- package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
- package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
- package/Build/Workers/{chunk-CJ7ZDY77.js → chunk-ST2UWDUU.js} +5 -5
- package/Build/Workers/{chunk-YDR5LX5Z.js → chunk-TA777BGS.js} +3 -2
- package/Build/Workers/{chunk-U4SWB6TI.js → chunk-TAI4HLII.js} +4 -4
- package/Build/Workers/{chunk-VX774SWE.js → chunk-URUCCIPS.js} +6 -6
- package/Build/Workers/{chunk-MNSNOONX.js → chunk-VQKLRBIK.js} +7 -7
- package/Build/Workers/{chunk-CVAAIRNP.js → chunk-WC57YYBN.js} +2 -2
- package/Build/Workers/{chunk-QNABVTTP.js → chunk-WN6P5UDH.js} +12 -12
- package/Build/Workers/{chunk-CNLXMOPM.js → chunk-WNN5D4W3.js} +12 -11
- package/Build/Workers/{chunk-4JJQRZYL.js → chunk-WTQGE7Q6.js} +17 -17
- package/Build/Workers/{chunk-FCJQO4NC.js → chunk-WUBKZFF6.js} +2213 -1349
- package/Build/Workers/{chunk-3UQ2YMPP.js → chunk-ZAPOS52G.js} +12 -10
- package/Build/Workers/{chunk-LHFC4R7Z.js → chunk-ZCCIIBZT.js} +6 -6
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +175 -118
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +24 -23
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +25 -25
- package/Build/Workers/createWallOutlineGeometry.js +24 -24
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +12 -12
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +12 -9
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/ArcType.js +6 -1
- package/Source/Core/ArticulationStageType.js +5 -1
- package/Source/Core/AssociativeArray.js +100 -94
- package/Source/Core/BoundingSphere.js +1296 -1300
- package/Source/Core/Cartesian2.js +7 -5
- package/Source/Core/Cartesian3.js +9 -8
- package/Source/Core/Cartesian4.js +8 -6
- package/Source/Core/Cartographic.js +257 -249
- package/Source/Core/ClockRange.js +6 -1
- package/Source/Core/ClockStep.js +6 -1
- package/Source/Core/Color.js +846 -835
- package/Source/Core/ComponentDatatype.js +4 -1
- package/Source/Core/CornerType.js +6 -1
- package/Source/Core/Credit.js +121 -124
- package/Source/Core/DeveloperError.js +2 -1
- package/Source/Core/Ellipsoid.js +637 -660
- package/Source/Core/ExtrapolationType.js +6 -1
- package/Source/Core/GeocodeType.js +6 -1
- package/Source/Core/GeographicProjection.js +74 -74
- package/Source/Core/GeographicTilingScheme.js +179 -198
- package/Source/Core/GeometryOffsetAttribute.js +7 -1
- package/Source/Core/GeometryType.js +7 -1
- package/Source/Core/HeightmapEncoding.js +6 -1
- package/Source/Core/ITwinPlatform.js +1 -0
- package/Source/Core/Iau2006XysData.js +24 -13
- package/Source/Core/IndexDatatype.js +3 -1
- package/Source/Core/InterpolationType.js +5 -1
- package/Source/Core/Intersect.js +6 -1
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonGeocodeProviderType.js +5 -1
- package/Source/Core/JulianDate.js +850 -848
- package/Source/Core/KeyboardEventModifier.js +6 -1
- package/Source/Core/MapProjection.js +39 -44
- package/Source/Core/Matrix2.js +906 -893
- package/Source/Core/Matrix3.js +1643 -1575
- package/Source/Core/Matrix4.js +2903 -2872
- package/Source/Core/PixelFormat.js +3 -1
- package/Source/Core/PrimitiveType.js +11 -1
- package/Source/Core/Ray.js +62 -60
- package/Source/Core/Rectangle.js +913 -904
- package/Source/Core/ReferenceFrame.js +6 -1
- package/Source/Core/RequestScheduler.js +8 -3
- package/Source/Core/RequestState.js +6 -1
- package/Source/Core/RequestType.js +6 -1
- package/Source/Core/S2Cell.js +2 -2
- package/Source/Core/ScreenSpaceEventType.js +6 -1
- package/Source/Core/TerrainMesh.js +10 -1
- package/Source/Core/TerrainPicker.js +1 -0
- package/Source/Core/TerrainQuantization.js +6 -1
- package/Source/Core/TilingScheme.js +100 -98
- package/Source/Core/TimeConstants.js +6 -1
- package/Source/Core/TimeStandard.js +6 -1
- package/Source/Core/TrackingReferenceFrame.js +6 -1
- package/Source/Core/Visibility.js +6 -1
- package/Source/Core/VulkanConstants.js +6 -1
- package/Source/Core/WallGeometry.js +1 -1
- package/Source/Core/WallOutlineGeometry.js +1 -1
- package/Source/Core/WebGLConstants.js +6 -1
- package/Source/Core/WebMercatorProjection.js +108 -109
- package/Source/Core/WebMercatorTilingScheme.js +246 -242
- package/Source/Core/WindingOrder.js +3 -1
- package/Source/Core/assert.js +27 -0
- package/Source/Core/globalTypes.js +4 -0
- package/Source/DataSources/CzmlDataSource.js +9 -0
- package/Source/DataSources/PathGraphics.js +13 -0
- package/Source/DataSources/PathVisualizer.js +330 -18
- package/Source/DataSources/StaticGeometryColorBatch.js +7 -2
- package/Source/DataSources/StaticGeometryPerMaterialBatch.js +7 -2
- package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +4 -1
- package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +4 -1
- package/Source/DataSources/StripeOrientation.js +6 -1
- package/Source/Renderer/BufferUsage.js +20 -9
- package/Source/Renderer/Context.js +2 -29
- package/Source/Renderer/DrawCommand.js +435 -403
- package/Source/Renderer/MipmapHint.js +5 -1
- package/Source/Renderer/Pass.js +7 -1
- package/Source/Renderer/PickId.js +44 -0
- package/Source/Renderer/PixelDatatype.js +3 -1
- package/Source/Renderer/RenderState.js +2 -2
- package/Source/Renderer/RenderbufferFormat.js +5 -1
- package/Source/Renderer/ShaderDestination.js +4 -1
- package/Source/Renderer/TextureMagnificationFilter.js +3 -1
- package/Source/Renderer/TextureMinificationFilter.js +3 -1
- package/Source/Renderer/TextureWrap.js +5 -1
- package/Source/Renderer/VertexArray.js +80 -0
- package/Source/Scene/AlphaMode.js +5 -1
- package/Source/Scene/ArcGisBaseMapType.js +6 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/AttributeType.js +3 -1
- package/Source/Scene/Axis.js +3 -1
- package/Source/Scene/BillboardCollection.js +65 -364
- package/Source/Scene/BingMapsStyle.js +6 -1
- package/Source/Scene/BlendEquation.js +6 -1
- package/Source/Scene/BlendFunction.js +6 -1
- package/Source/Scene/BlendOption.js +6 -1
- package/Source/Scene/BlendingState.js +6 -1
- package/Source/Scene/BufferLoader.js +0 -2
- package/Source/Scene/BufferPoint.js +148 -0
- package/Source/Scene/BufferPointCollection.js +138 -0
- package/Source/Scene/BufferPointMaterial.js +95 -0
- package/Source/Scene/BufferPolygon.js +516 -0
- package/Source/Scene/BufferPolygonCollection.js +370 -0
- package/Source/Scene/BufferPolygonMaterial.js +41 -0
- package/Source/Scene/BufferPolyline.js +185 -0
- package/Source/Scene/BufferPolylineCollection.js +138 -0
- package/Source/Scene/BufferPolylineMaterial.js +93 -0
- package/Source/Scene/BufferPrimitive.js +347 -0
- package/Source/Scene/BufferPrimitiveCollection.js +818 -0
- package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
- package/Source/Scene/CameraEventType.js +6 -1
- package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
- package/Source/Scene/Cesium3DTileContent.js +5 -1
- package/Source/Scene/Cesium3DTileContentFactory.js +9 -0
- package/Source/Scene/Cesium3DTileContentState.js +6 -1
- package/Source/Scene/Cesium3DTileContentType.js +3 -1
- package/Source/Scene/Cesium3DTileFeature.js +289 -306
- package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
- package/Source/Scene/Cesium3DTilePass.js +5 -1
- package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
- package/Source/Scene/Cesium3DTileRefine.js +6 -1
- package/Source/Scene/Cesium3DTileStyle.js +22 -0
- package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
- package/Source/Scene/Cesium3DTileset.js +2 -1
- package/Source/Scene/ClassificationType.js +3 -1
- package/Source/Scene/ClippingPolygonCollection.js +270 -101
- package/Source/Scene/CloudType.js +3 -1
- package/Source/Scene/ColorBlendMode.js +4 -1
- package/Source/Scene/CubeMapPanorama.js +4 -4
- package/Source/Scene/CullFace.js +6 -1
- package/Source/Scene/DepthFunction.js +6 -1
- package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
- package/Source/Scene/EquirectangularPanorama.js +1 -0
- package/Source/Scene/ExpressionNodeType.js +6 -1
- package/Source/Scene/GaussianSplat3DTileContent.js +40 -46
- package/Source/Scene/GaussianSplatPrimitive.js +413 -70
- package/Source/Scene/GetFeatureInfoFormat.js +3 -3
- package/Source/Scene/GltfBufferViewLoader.js +0 -2
- package/Source/Scene/GltfDracoLoader.js +0 -2
- package/Source/Scene/GltfImageLoader.js +0 -3
- package/Source/Scene/GltfIndexBufferLoader.js +0 -4
- package/Source/Scene/GltfJsonLoader.js +0 -2
- package/Source/Scene/GltfLoader.js +215 -39
- package/Source/Scene/GltfLoaderUtil.js +14 -0
- package/Source/Scene/GltfSpzLoader.js +109 -2
- package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
- package/Source/Scene/GltfTextureLoader.js +0 -2
- package/Source/Scene/GltfVertexBufferLoader.js +0 -4
- package/Source/Scene/HeightReference.js +5 -1
- package/Source/Scene/HorizontalOrigin.js +6 -1
- package/Source/Scene/ITwinData.js +1 -0
- package/Source/Scene/ImageryProvider.js +1 -1
- package/Source/Scene/ImageryState.js +6 -1
- package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
- package/Source/Scene/InstanceAttributeSemantic.js +3 -1
- package/Source/Scene/IonWorldImageryStyle.js +6 -1
- package/Source/Scene/JobType.js +6 -1
- package/Source/Scene/Label.js +32 -0
- package/Source/Scene/LabelCollection.js +14 -13
- package/Source/Scene/LabelStyle.js +6 -1
- package/Source/Scene/MapMode2D.js +6 -1
- package/Source/Scene/Material.js +2 -0
- package/Source/Scene/Megatexture.js +1 -0
- package/Source/Scene/MetadataClassProperty.js +24 -10
- package/Source/Scene/MetadataComponentType.js +118 -24
- package/Source/Scene/MetadataSchemaLoader.js +0 -2
- package/Source/Scene/MetadataSemantic.js +6 -2
- package/Source/Scene/MetadataType.js +3 -1
- package/Source/Scene/Model/B3dmLoader.js +0 -3
- package/Source/Scene/Model/CustomShaderMode.js +3 -1
- package/Source/Scene/Model/CustomShaderPipelineStage.js +3 -1
- package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +735 -264
- package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
- package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
- package/Source/Scene/Model/GeoJsonLoader.js +0 -2
- package/Source/Scene/Model/I3dmLoader.js +0 -3
- package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
- package/Source/Scene/Model/LightingModel.js +5 -1
- package/Source/Scene/Model/MaterialPipelineStage.js +331 -3
- package/Source/Scene/Model/MetadataPipelineStage.js +3 -3
- package/Source/Scene/Model/ModelDrawCommand.js +6 -0
- package/Source/Scene/Model/ModelReader.js +475 -4
- package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
- package/Source/Scene/Model/ModelType.js +3 -1
- package/Source/Scene/Model/ModelUtility.js +3 -1
- package/Source/Scene/Model/PntsLoader.js +4 -3
- package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
- package/Source/Scene/Model/UniformType.js +5 -1
- package/Source/Scene/Model/VaryingType.js +5 -1
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +375 -0
- package/Source/Scene/Model/pickModel.js +94 -299
- package/Source/Scene/ModelAnimationLoop.js +6 -1
- package/Source/Scene/ModelAnimationState.js +6 -1
- package/Source/Scene/ModelComponents.js +1639 -1542
- package/Source/Scene/PickedMetadataInfo.js +1 -0
- package/Source/Scene/PrimitiveState.js +7 -1
- package/Source/Scene/QuadtreeOccluders.js +20 -15
- package/Source/Scene/QuadtreeTile.js +547 -541
- package/Source/Scene/QuadtreeTileLoadState.js +6 -1
- package/Source/Scene/QuadtreeTileProvider.js +159 -175
- package/Source/Scene/ResourceLoader.js +0 -1
- package/Source/Scene/ResourceLoaderState.js +7 -1
- package/Source/Scene/SceneMode.js +4 -1
- package/Source/Scene/ScreenSpaceCameraController.js +13 -0
- package/Source/Scene/ShadowMode.js +3 -1
- package/Source/Scene/SkyBox.js +17 -8
- package/Source/Scene/SplitDirection.js +6 -1
- package/Source/Scene/StencilFunction.js +6 -1
- package/Source/Scene/StencilOperation.js +6 -1
- package/Source/Scene/TerrainState.js +7 -1
- package/Source/Scene/TileBoundingRegion.js +1 -1
- package/Source/Scene/TileBoundingS2Cell.js +1 -1
- package/Source/Scene/TileBoundingSphere.js +1 -1
- package/Source/Scene/TileState.js +7 -1
- package/Source/Scene/Tonemapper.js +5 -1
- package/Source/Scene/TweenCollection.js +7 -0
- package/Source/Scene/VectorGltf3DTileContent.js +403 -0
- package/Source/Scene/VertexAttributeSemantic.js +17 -1
- package/Source/Scene/VerticalOrigin.js +6 -1
- package/Source/Scene/VoxelBoxShape.js +12 -6
- package/Source/Scene/VoxelContent.js +2 -0
- package/Source/Scene/VoxelCylinderShape.js +39 -38
- package/Source/Scene/VoxelEllipsoidShape.js +46 -96
- package/Source/Scene/VoxelMetadataOrder.js +6 -1
- package/Source/Scene/VoxelProvider.js +1 -0
- package/Source/Scene/VoxelShapeType.js +3 -1
- package/Source/Scene/WebMapServiceImageryProvider.js +2 -2
- package/Source/Scene/WebMapTileServiceImageryProvider.js +366 -131
- package/Source/Scene/parseStructuralMetadata.js +97 -37
- package/Source/Scene/renderBufferPointCollection.js +285 -0
- package/Source/Scene/renderBufferPolygonCollection.js +339 -0
- package/Source/Scene/renderBufferPolylineCollection.js +478 -0
- package/Source/Shaders/BillboardCollectionFS.glsl +2 -77
- package/Source/Shaders/BillboardCollectionFS.js +2 -77
- package/Source/Shaders/BillboardCollectionVS.glsl +2 -60
- package/Source/Shaders/BillboardCollectionVS.js +2 -60
- package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
- package/Source/Shaders/BufferPointMaterialFS.js +29 -0
- package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
- package/Source/Shaders/BufferPointMaterialVS.js +50 -0
- package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
- package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
- package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
- package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
- package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
- package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
- package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
- package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
- package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
- package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
- package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
- package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +34 -48
- package/Source/Shaders/Model/EdgeVisibilityStageFS.js +34 -49
- package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
- package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
- package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
- package/Source/Shaders/Model/MaterialStageFS.js +46 -20
- package/Source/Shaders/Model/ModelFS.glsl +15 -0
- package/Source/Shaders/Model/ModelFS.js +15 -0
- package/Source/Shaders/Model/ModelVS.glsl +8 -0
- package/Source/Shaders/Model/ModelVS.js +8 -0
- package/Source/Shaders/PolygonSignedDistanceFS.glsl +64 -33
- package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
- package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +9 -2
- package/Source/Shaders/PrimitiveGaussianSplatVS.js +9 -2
- package/Source/Shaders/Voxels/VoxelFS.glsl +1 -1
- package/Source/Shaders/Voxels/VoxelFS.js +1 -1
- package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
- package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
- package/Source/Widget/CesiumWidget.js +11 -4
- package/Source/Workers/decodeDraco.js +3 -0
- package/Source/Workers/decodeI3S.js +5 -2
- package/index.d.ts +1332 -402
- package/index.js +111 -81
- package/package.json +3 -3
- package/Build/Workers/chunk-54O3AGOA.js +0 -642
- package/Build/Workers/chunk-6U5QMZU3.js +0 -940
- package/Build/Workers/chunk-HNDE73JK.js +0 -1829
- package/Build/Workers/chunk-PAFMAR7A.js +0 -2357
- package/Build/Workers/chunk-S53HSRT6.js +0 -114
|
@@ -20,6 +20,7 @@ import TextureWrap from "../Renderer/TextureWrap.js";
|
|
|
20
20
|
import ClippingPolygon from "./ClippingPolygon.js";
|
|
21
21
|
import ComputeCommand from "../Renderer/ComputeCommand.js";
|
|
22
22
|
import PolygonSignedDistanceFS from "../Shaders/PolygonSignedDistanceFS.js";
|
|
23
|
+
import Pass from "../Renderer/Pass.js";
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Specifies a set of clipping polygons. Clipping polygons selectively disable rendering in a region
|
|
@@ -34,6 +35,7 @@ import PolygonSignedDistanceFS from "../Shaders/PolygonSignedDistanceFS.js";
|
|
|
34
35
|
* @param {ClippingPolygon[]} [options.polygons=[]] An array of {@link ClippingPolygon} objects used to selectively disable rendering on the inside of each polygon.
|
|
35
36
|
* @param {boolean} [options.enabled=true] Determines whether the clipping polygons are active.
|
|
36
37
|
* @param {boolean} [options.inverse=false] If true, a region will be clipped if it is outside of every polygon in the collection. Otherwise, a region will only be clipped if it is on the inside of any polygon.
|
|
38
|
+
* @param {number} [options.quality=1.0] A scalar that controls the resolution of the signed distance texture used for clipping. Values greater than 1.0 increase quality, values less than 1.0 decrease it. Must be greater than 0.0.
|
|
37
39
|
*
|
|
38
40
|
* @example
|
|
39
41
|
* const positions = Cesium.Cartesian3.fromRadiansArray([
|
|
@@ -63,6 +65,8 @@ function ClippingPolygonCollection(options) {
|
|
|
63
65
|
this._polygons = [];
|
|
64
66
|
this._totalPositions = 0;
|
|
65
67
|
|
|
68
|
+
this.debugShowDistanceTexture = options.debugShowDistanceTexture ?? false;
|
|
69
|
+
|
|
66
70
|
/**
|
|
67
71
|
* If true, clipping will be enabled.
|
|
68
72
|
*
|
|
@@ -81,6 +85,15 @@ function ClippingPolygonCollection(options) {
|
|
|
81
85
|
*/
|
|
82
86
|
this.inverse = options.inverse ?? false;
|
|
83
87
|
|
|
88
|
+
/**
|
|
89
|
+
* A scalar that controls the resolution of the signed distance texture used for clipping.
|
|
90
|
+
* Values greater than 1.0 increase quality, values less than 1.0 decrease it. Must be greater than 0.0.
|
|
91
|
+
*
|
|
92
|
+
* @type {number}
|
|
93
|
+
* @default 1.0
|
|
94
|
+
*/
|
|
95
|
+
this.quality = options.quality ?? 1.0;
|
|
96
|
+
|
|
84
97
|
/**
|
|
85
98
|
* An event triggered when a new clipping polygon is added to the collection. Event handlers
|
|
86
99
|
* are passed the new polygon and the index at which it was added.
|
|
@@ -204,8 +217,8 @@ Object.defineProperties(ClippingPolygonCollection.prototype, {
|
|
|
204
217
|
pixelsNeededForPolygonPositions: {
|
|
205
218
|
get: function () {
|
|
206
219
|
// In an RG FLOAT texture, each polygon position is 2 floats packed to a RG.
|
|
207
|
-
// Each polygon
|
|
208
|
-
return this.totalPositions + this.length;
|
|
220
|
+
// Each polygon has a 1-pixel header + 2 pixels for individual extents + the list of positions
|
|
221
|
+
return this.totalPositions + 3 * this.length;
|
|
209
222
|
},
|
|
210
223
|
},
|
|
211
224
|
|
|
@@ -362,91 +375,160 @@ ClippingPolygonCollection.prototype.remove = function (polygon) {
|
|
|
362
375
|
return true;
|
|
363
376
|
};
|
|
364
377
|
|
|
365
|
-
|
|
378
|
+
/**
|
|
379
|
+
* Computes padded extents for a polygon's bounding rectangle, clamped to valid spherical ranges.
|
|
380
|
+
*
|
|
381
|
+
* @param {Rectangle} extents The original spherical extents to pad.
|
|
382
|
+
* @param {number} padding A multiplier applied to the extents' width and height to determine the padding amount.
|
|
383
|
+
* @param {Rectangle} [result] An optional rectangle to store the result in.
|
|
384
|
+
* @returns {Rectangle} The padded and clamped rectangle.
|
|
385
|
+
*
|
|
386
|
+
* @private
|
|
387
|
+
*/
|
|
388
|
+
function computePaddedExtents(extents, padding, result) {
|
|
389
|
+
const height = Math.max(extents.height * padding, 0);
|
|
390
|
+
const width = Math.max(extents.width * padding, 0);
|
|
391
|
+
const paddedExtents = Rectangle.clone(extents, result);
|
|
392
|
+
|
|
393
|
+
// Pad
|
|
394
|
+
paddedExtents.south -= height;
|
|
395
|
+
paddedExtents.west -= width;
|
|
396
|
+
paddedExtents.north += height;
|
|
397
|
+
paddedExtents.east += width;
|
|
398
|
+
|
|
399
|
+
// Clamp
|
|
400
|
+
paddedExtents.south = Math.max(paddedExtents.south, -Math.PI);
|
|
401
|
+
paddedExtents.west = Math.max(paddedExtents.west, -Math.PI);
|
|
402
|
+
paddedExtents.north = Math.min(paddedExtents.north, Math.PI);
|
|
403
|
+
paddedExtents.east = Math.min(paddedExtents.east, Math.PI);
|
|
404
|
+
|
|
405
|
+
return paddedExtents;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* @typedef {object} ExtentsResult
|
|
410
|
+
* @property {Rectangle[]} extentsList The list of merged padded extents, one per group.
|
|
411
|
+
* @property {Map<number, number>} extentsIndexByPolygon A map from polygon index to the index of its group in extentsList.
|
|
412
|
+
* @private
|
|
413
|
+
*/
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Groups nearby ClippingPolygons based on their spherical extents. Overlapping extents will be merged
|
|
417
|
+
* into a single encompassing extent. Each Extent will later map into one region in the SignedDistanceTexture (atlas).
|
|
418
|
+
*
|
|
419
|
+
* Definitions:
|
|
420
|
+
* n = number of polygons
|
|
421
|
+
* g = number of resulting extents (merged) (g <= n)
|
|
422
|
+
* absorb = merge two extents into one
|
|
423
|
+
* restart = redo intersection check with previous groups
|
|
424
|
+
*
|
|
425
|
+
* Algorithm:
|
|
426
|
+
* For each polygon we scan existing groups for a first overlap (O(g)),
|
|
427
|
+
* then on each subsequent overlap we absorb the group and restart the
|
|
428
|
+
* inner scan. Each group can be absorbed at most once per polygon, and
|
|
429
|
+
* each restart reduces the group count by one, so the absorb-loop does
|
|
430
|
+
* at most O(g) restarts per polygon. Overall: O(n * g) where g ≤ n,
|
|
431
|
+
* giving O(n²) worst case when all polygons overlap transitively, but
|
|
432
|
+
* typically much better when groups are few and disjoint.
|
|
433
|
+
*
|
|
434
|
+
* Note: Restarts are required because the new merged bounding box might
|
|
435
|
+
* be larger than the two individual that were merged and introduce new
|
|
436
|
+
* collisions. Example:
|
|
437
|
+
*
|
|
438
|
+
* Before merging A and B:
|
|
439
|
+
*
|
|
440
|
+
* ┌─────────┐
|
|
441
|
+
* │ A │
|
|
442
|
+
* │ ┌┼────────┐
|
|
443
|
+
* └─────────┘│ B │
|
|
444
|
+
* ┌────┐ │ │
|
|
445
|
+
* │ C │ └────────┘
|
|
446
|
+
* └────┘
|
|
447
|
+
*
|
|
448
|
+
* A overlaps B ✓
|
|
449
|
+
* A overlaps C ✗
|
|
450
|
+
* B overlaps C ✗
|
|
451
|
+
*
|
|
452
|
+
* After merging A ∪ B into one extent:
|
|
453
|
+
*
|
|
454
|
+
* ┌───────────────────┐
|
|
455
|
+
* │ │
|
|
456
|
+
* │ A ∪ B │
|
|
457
|
+
* ├────┐ │
|
|
458
|
+
* │ C │ │
|
|
459
|
+
* └────┘──────────────┘
|
|
460
|
+
*
|
|
461
|
+
* (A ∪ B) overlaps C ✓ ← new collision!
|
|
462
|
+
*
|
|
463
|
+
* @param {ClippingPolygon[]} polygons The array of clipping polygons to compute extents for.
|
|
464
|
+
* @param {Rectangle[]} polygonExtentsCache An array of pre-computed spherical extents for each polygon, indexed by polygon index.
|
|
465
|
+
* @returns {ExtentsResult} The merged extents and a mapping from polygon indices to their extent group indices.
|
|
466
|
+
*
|
|
467
|
+
* @private
|
|
468
|
+
*/
|
|
469
|
+
function getExtents(polygons, polygonExtentsCache) {
|
|
470
|
+
// Pad extents to avoid floating point error when fragment culling at edges.
|
|
471
|
+
const PADDING = 2.5;
|
|
366
472
|
|
|
367
|
-
//
|
|
368
|
-
|
|
369
|
-
function getExtents(polygons) {
|
|
370
|
-
const extentsList = [];
|
|
371
|
-
const polygonIndicesList = [];
|
|
473
|
+
// Each group: { extent: padded Rectangle, polygonIndices: number[] }
|
|
474
|
+
const groups = [];
|
|
372
475
|
|
|
373
476
|
const length = polygons.length;
|
|
374
477
|
for (let polygonIndex = 0; polygonIndex < length; ++polygonIndex) {
|
|
375
|
-
const
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
let
|
|
383
|
-
paddedExtents.south -= height;
|
|
384
|
-
paddedExtents.west -= width;
|
|
385
|
-
paddedExtents.north += height;
|
|
386
|
-
paddedExtents.east += width;
|
|
387
|
-
|
|
388
|
-
paddedExtents.south = Math.max(paddedExtents.south, -Math.PI);
|
|
389
|
-
paddedExtents.west = Math.max(paddedExtents.west, -Math.PI);
|
|
390
|
-
paddedExtents.north = Math.min(paddedExtents.north, Math.PI);
|
|
391
|
-
paddedExtents.east = Math.min(paddedExtents.east, Math.PI);
|
|
392
|
-
|
|
393
|
-
const polygonIndices = [polygonIndex];
|
|
394
|
-
for (let i = 0; i < extentsList.length; ++i) {
|
|
395
|
-
const e = extentsList[i];
|
|
478
|
+
const paddedExtent = computePaddedExtents(
|
|
479
|
+
polygonExtentsCache[polygonIndex],
|
|
480
|
+
PADDING,
|
|
481
|
+
);
|
|
482
|
+
|
|
483
|
+
// Pass 1: Find the first overlapping group
|
|
484
|
+
let targetIdx = -1;
|
|
485
|
+
for (let g = 0; g < groups.length; ++g) {
|
|
396
486
|
if (
|
|
397
|
-
defined(
|
|
398
|
-
defined(Rectangle.simpleIntersection(e, paddedExtents)) &&
|
|
399
|
-
!Rectangle.equals(e, paddedExtents)
|
|
487
|
+
defined(Rectangle.simpleIntersection(groups[g].extent, paddedExtent))
|
|
400
488
|
) {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
intersectingPolygons.reduce(
|
|
404
|
-
(extents, p) =>
|
|
405
|
-
Rectangle.union(
|
|
406
|
-
polygons[p].computeSphericalExtents(scratchRectangle),
|
|
407
|
-
extents,
|
|
408
|
-
extents,
|
|
409
|
-
),
|
|
410
|
-
extents,
|
|
411
|
-
);
|
|
412
|
-
|
|
413
|
-
extentsList[i] = undefined;
|
|
414
|
-
polygonIndicesList[i] = undefined;
|
|
415
|
-
|
|
416
|
-
height = Math.max(extents.height * 2.5, 0.001);
|
|
417
|
-
width = Math.max(extents.width * 2.5, 0.001);
|
|
418
|
-
|
|
419
|
-
paddedExtents = Rectangle.clone(extents, paddedExtents);
|
|
420
|
-
paddedExtents.south -= height;
|
|
421
|
-
paddedExtents.west -= width;
|
|
422
|
-
paddedExtents.north += height;
|
|
423
|
-
paddedExtents.east += width;
|
|
424
|
-
|
|
425
|
-
paddedExtents.south = Math.max(paddedExtents.south, -Math.PI);
|
|
426
|
-
paddedExtents.west = Math.max(paddedExtents.west, -Math.PI);
|
|
427
|
-
paddedExtents.north = Math.min(paddedExtents.north, Math.PI);
|
|
428
|
-
paddedExtents.east = Math.min(paddedExtents.east, Math.PI);
|
|
429
|
-
|
|
430
|
-
// Reiterate through the extents list until there are no more intersections
|
|
431
|
-
i = -1;
|
|
489
|
+
targetIdx = g;
|
|
490
|
+
break;
|
|
432
491
|
}
|
|
433
492
|
}
|
|
434
493
|
|
|
435
|
-
|
|
436
|
-
|
|
494
|
+
if (targetIdx === -1) {
|
|
495
|
+
// No overlap — start a new group
|
|
496
|
+
groups.push({ extent: paddedExtent, polygonIndices: [polygonIndex] });
|
|
497
|
+
} else {
|
|
498
|
+
// Overlap - Merge the polygon into the target group
|
|
499
|
+
const target = groups[targetIdx];
|
|
500
|
+
target.polygonIndices.push(polygonIndex);
|
|
501
|
+
Rectangle.union(target.extent, paddedExtent, target.extent);
|
|
502
|
+
|
|
503
|
+
// Pass 2: Absorb all other groups that overlap the (growing) target
|
|
504
|
+
// extent. After each absorption the target grows, so restart the scan
|
|
505
|
+
// to catch groups that now transitively overlap.
|
|
506
|
+
for (let g = 0; g < groups.length; ++g) {
|
|
507
|
+
if (g === targetIdx) {
|
|
508
|
+
continue;
|
|
509
|
+
}
|
|
510
|
+
if (
|
|
511
|
+
defined(Rectangle.simpleIntersection(groups[g].extent, target.extent))
|
|
512
|
+
) {
|
|
513
|
+
target.polygonIndices.push(...groups[g].polygonIndices);
|
|
514
|
+
Rectangle.union(target.extent, groups[g].extent, target.extent);
|
|
515
|
+
groups.splice(g, 1);
|
|
516
|
+
if (g < targetIdx) {
|
|
517
|
+
targetIdx--;
|
|
518
|
+
}
|
|
519
|
+
g = -1; // restart (loop increment brings it to 0)
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
437
523
|
}
|
|
438
524
|
|
|
525
|
+
const extentsList = groups.map((g) => g.extent);
|
|
439
526
|
const extentsIndexByPolygon = new Map();
|
|
440
|
-
|
|
441
|
-
.
|
|
442
|
-
|
|
443
|
-
polygonIndices.forEach((p) => extentsIndexByPolygon.set(p, e)),
|
|
444
|
-
);
|
|
527
|
+
groups.forEach((g, extentIndex) =>
|
|
528
|
+
g.polygonIndices.forEach((p) => extentsIndexByPolygon.set(p, extentIndex)),
|
|
529
|
+
);
|
|
445
530
|
|
|
446
|
-
return {
|
|
447
|
-
extentsList: extentsList.filter(defined),
|
|
448
|
-
extentsIndexByPolygon: extentsIndexByPolygon,
|
|
449
|
-
};
|
|
531
|
+
return { extentsList, extentsIndexByPolygon };
|
|
450
532
|
}
|
|
451
533
|
|
|
452
534
|
/**
|
|
@@ -471,15 +553,52 @@ function packPolygonsAsFloats(clippingPolygonCollection) {
|
|
|
471
553
|
const extentsFloat32View = clippingPolygonCollection._extentsFloat32View;
|
|
472
554
|
const polygons = clippingPolygonCollection._polygons;
|
|
473
555
|
|
|
474
|
-
|
|
556
|
+
/**
|
|
557
|
+
* Pre-calculate all polygon spherical extents as it an expensive operation
|
|
558
|
+
* @type {ReadonlyArray<Rectangle>}
|
|
559
|
+
* */
|
|
560
|
+
const polygonExtentsCache = polygons.map((polygon) =>
|
|
561
|
+
polygon.computeSphericalExtents(),
|
|
562
|
+
);
|
|
563
|
+
|
|
564
|
+
const { extentsList, extentsIndexByPolygon } = getExtents(
|
|
565
|
+
polygons,
|
|
566
|
+
polygonExtentsCache,
|
|
567
|
+
);
|
|
568
|
+
|
|
569
|
+
// Polygons are packed sequentially (ordered by extentsIndex) into polygonsFloat32View as follows:
|
|
570
|
+
// For each polygon:
|
|
571
|
+
// [0] vertexCount - the number of vertices in the polygon
|
|
572
|
+
// [1] extentsIndex - index into the extents texture for this polygon's bounding rectangle
|
|
573
|
+
// [2] south - southern boundary of the individual polygon extent (radians)
|
|
574
|
+
// [3] west - western boundary of the individual polygon extent (radians)
|
|
575
|
+
// [4] latitudeRange - (north - south) for the individual polygon extent
|
|
576
|
+
// [5] longitudeRange - (east - west) for the individual polygon extent
|
|
577
|
+
// [6..6+2*vertexCount-1] pairs of (latitude, longitude) for each vertex,
|
|
578
|
+
// computed as fastApproximateAtan2 values to match the shader
|
|
579
|
+
|
|
580
|
+
// Sort polygon indices by extentsIndex so polygons sharing the same extent are packed together
|
|
581
|
+
// Can enable optimizations in the shader
|
|
582
|
+
const sortedPolygonIndices = Array.from(polygons.keys()).sort(
|
|
583
|
+
(a, b) => extentsIndexByPolygon.get(a) - extentsIndexByPolygon.get(b),
|
|
584
|
+
);
|
|
475
585
|
|
|
476
586
|
let floatIndex = 0;
|
|
477
|
-
for (const
|
|
587
|
+
for (const polygonIndex of sortedPolygonIndices) {
|
|
588
|
+
const polygon = polygons[polygonIndex];
|
|
478
589
|
// Pack the length of the polygon into the polygon texture array buffer
|
|
479
590
|
const length = polygon.length;
|
|
480
591
|
polygonsFloat32View[floatIndex++] = length;
|
|
481
592
|
polygonsFloat32View[floatIndex++] = extentsIndexByPolygon.get(polygonIndex);
|
|
482
593
|
|
|
594
|
+
// Pack the individual polygon extent
|
|
595
|
+
const polygonExtent = polygonExtentsCache[polygonIndex];
|
|
596
|
+
polygonsFloat32View[floatIndex++] = polygonExtent.south;
|
|
597
|
+
polygonsFloat32View[floatIndex++] = polygonExtent.west;
|
|
598
|
+
polygonsFloat32View[floatIndex++] =
|
|
599
|
+
polygonExtent.north - polygonExtent.south;
|
|
600
|
+
polygonsFloat32View[floatIndex++] = polygonExtent.east - polygonExtent.west;
|
|
601
|
+
|
|
483
602
|
// Pack the polygon positions into the polygon texture array buffer
|
|
484
603
|
for (let i = 0; i < length; ++i) {
|
|
485
604
|
const spherePoint = polygon.positions[i];
|
|
@@ -502,7 +621,12 @@ function packPolygonsAsFloats(clippingPolygonCollection) {
|
|
|
502
621
|
}
|
|
503
622
|
}
|
|
504
623
|
|
|
505
|
-
//
|
|
624
|
+
// Extents are packed sequentially into extentsFloat32View as follows:
|
|
625
|
+
// For each extent (maps to one RGBA pixel in the extents texture):
|
|
626
|
+
// [0] south - the southern boundary of the bounding rectangle (radians)
|
|
627
|
+
// [1] west - the western boundary of the bounding rectangle (radians)
|
|
628
|
+
// [2] latitudeRangeInverse - 1.0 / (north - south)
|
|
629
|
+
// [3] longitudeRangeInverse - 1.0 / (east - west)
|
|
506
630
|
let extentsFloatIndex = 0;
|
|
507
631
|
for (const extents of extentsList) {
|
|
508
632
|
const longitudeRangeInverse = 1.0 / (extents.east - extents.west);
|
|
@@ -536,6 +660,16 @@ ClippingPolygonCollection.prototype.update = function (frameState) {
|
|
|
536
660
|
);
|
|
537
661
|
}
|
|
538
662
|
|
|
663
|
+
if (this.debugShowDistanceTexture && defined(this._signedDistanceTexture)) {
|
|
664
|
+
if (!defined(this.debugCommand)) {
|
|
665
|
+
this.debugCommand = createDebugCommand(
|
|
666
|
+
this._signedDistanceTexture,
|
|
667
|
+
frameState.context,
|
|
668
|
+
);
|
|
669
|
+
}
|
|
670
|
+
frameState.commandList.push(this.debugCommand);
|
|
671
|
+
}
|
|
672
|
+
|
|
539
673
|
// It'd be expensive to validate any individual position has changed. Instead verify if the list of polygon positions has had elements added or removed, which should be good enough for most cases.
|
|
540
674
|
const totalPositions = this._polygons.reduce(
|
|
541
675
|
(totalPositions, polygon) => totalPositions + polygon.length,
|
|
@@ -685,6 +819,35 @@ ClippingPolygonCollection.prototype.update = function (frameState) {
|
|
|
685
819
|
this._signedDistanceComputeCommand = createSignedDistanceTextureCommand(this);
|
|
686
820
|
};
|
|
687
821
|
|
|
822
|
+
function createDebugCommand(texture, context) {
|
|
823
|
+
const fs =
|
|
824
|
+
"uniform highp sampler2D billboard_texture; \n" +
|
|
825
|
+
"in vec2 v_textureCoordinates; \n" +
|
|
826
|
+
"float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { \n" +
|
|
827
|
+
" float signedDistance = texture(clippingDistance, uv).r; \n" +
|
|
828
|
+
" return (signedDistance - 0.5) * 2.0; \n" +
|
|
829
|
+
"} \n" +
|
|
830
|
+
"void main() \n" +
|
|
831
|
+
"{ \n" +
|
|
832
|
+
" float dist = texture(billboard_texture, v_textureCoordinates).r; \n" +
|
|
833
|
+
" if (dist > 0.5) { \n" +
|
|
834
|
+
" out_FragColor = vec4(dist, 0.0, 0.0, 1.0); \n" + // outside
|
|
835
|
+
" } else {\n" +
|
|
836
|
+
" out_FragColor = vec4(0.0, dist, 0.0, 1.0); \n" + // inside
|
|
837
|
+
" } \n" +
|
|
838
|
+
"} \n";
|
|
839
|
+
|
|
840
|
+
const drawCommand = context.createViewportQuadCommand(fs, {
|
|
841
|
+
uniformMap: {
|
|
842
|
+
billboard_texture: function () {
|
|
843
|
+
return texture;
|
|
844
|
+
},
|
|
845
|
+
},
|
|
846
|
+
});
|
|
847
|
+
drawCommand.pass = Pass.OVERLAY;
|
|
848
|
+
return drawCommand;
|
|
849
|
+
}
|
|
850
|
+
|
|
688
851
|
/**
|
|
689
852
|
* Called when {@link Viewer} or {@link CesiumWidget} render the scene to
|
|
690
853
|
* build the resources for clipping polygons.
|
|
@@ -731,6 +894,7 @@ function createSignedDistanceTextureCommand(collection) {
|
|
|
731
894
|
|
|
732
895
|
const scratchRectangleTile = new Rectangle();
|
|
733
896
|
const scratchRectangleIntersection = new Rectangle();
|
|
897
|
+
const scratchRectanglePolygon = new Rectangle();
|
|
734
898
|
/**
|
|
735
899
|
* Determines the type intersection with the polygons of this ClippingPolygonCollection instance and the specified {@link TileBoundingVolume}.
|
|
736
900
|
* @private
|
|
@@ -750,30 +914,33 @@ ClippingPolygonCollection.prototype.computeIntersectionWithBoundingVolume =
|
|
|
750
914
|
intersection = Intersect.INSIDE;
|
|
751
915
|
}
|
|
752
916
|
|
|
917
|
+
let tileBoundingRectangle = tileBoundingVolume.rectangle;
|
|
918
|
+
if (
|
|
919
|
+
!defined(tileBoundingRectangle) &&
|
|
920
|
+
defined(tileBoundingVolume.boundingVolume?.computeCorners)
|
|
921
|
+
) {
|
|
922
|
+
const points = tileBoundingVolume.boundingVolume.computeCorners();
|
|
923
|
+
tileBoundingRectangle = Rectangle.fromCartesianArray(
|
|
924
|
+
points,
|
|
925
|
+
ellipsoid,
|
|
926
|
+
scratchRectangleTile,
|
|
927
|
+
);
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
if (!defined(tileBoundingRectangle)) {
|
|
931
|
+
tileBoundingRectangle = Rectangle.fromBoundingSphere(
|
|
932
|
+
tileBoundingVolume.boundingSphere,
|
|
933
|
+
ellipsoid,
|
|
934
|
+
scratchRectangleTile,
|
|
935
|
+
);
|
|
936
|
+
}
|
|
937
|
+
|
|
753
938
|
for (let i = 0; i < length; ++i) {
|
|
754
939
|
const polygon = polygons[i];
|
|
755
940
|
|
|
756
|
-
const polygonBoundingRectangle = polygon.computeRectangle(
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
!defined(tileBoundingRectangle) &&
|
|
760
|
-
defined(tileBoundingVolume.boundingVolume?.computeCorners)
|
|
761
|
-
) {
|
|
762
|
-
const points = tileBoundingVolume.boundingVolume.computeCorners();
|
|
763
|
-
tileBoundingRectangle = Rectangle.fromCartesianArray(
|
|
764
|
-
points,
|
|
765
|
-
ellipsoid,
|
|
766
|
-
scratchRectangleTile,
|
|
767
|
-
);
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
if (!defined(tileBoundingRectangle)) {
|
|
771
|
-
tileBoundingRectangle = Rectangle.fromBoundingSphere(
|
|
772
|
-
tileBoundingVolume.boundingSphere,
|
|
773
|
-
ellipsoid,
|
|
774
|
-
scratchRectangleTile,
|
|
775
|
-
);
|
|
776
|
-
}
|
|
941
|
+
const polygonBoundingRectangle = polygon.computeRectangle(
|
|
942
|
+
scratchRectanglePolygon,
|
|
943
|
+
);
|
|
777
944
|
|
|
778
945
|
const result = Rectangle.simpleIntersection(
|
|
779
946
|
tileBoundingRectangle,
|
|
@@ -782,7 +949,7 @@ ClippingPolygonCollection.prototype.computeIntersectionWithBoundingVolume =
|
|
|
782
949
|
);
|
|
783
950
|
|
|
784
951
|
if (defined(result)) {
|
|
785
|
-
|
|
952
|
+
return Intersect.INTERSECTING;
|
|
786
953
|
}
|
|
787
954
|
}
|
|
788
955
|
|
|
@@ -885,8 +1052,10 @@ ClippingPolygonCollection.getClippingDistanceTextureResolution = function (
|
|
|
885
1052
|
return result;
|
|
886
1053
|
}
|
|
887
1054
|
|
|
888
|
-
|
|
889
|
-
|
|
1055
|
+
const quality = clippingPolygonCollection.quality;
|
|
1056
|
+
const baseSize = Math.max(128, Math.ceil(4096 * quality));
|
|
1057
|
+
result.x = Math.min(ContextLimits.maximumTextureSize, baseSize);
|
|
1058
|
+
result.y = Math.min(ContextLimits.maximumTextureSize, baseSize);
|
|
890
1059
|
|
|
891
1060
|
return result;
|
|
892
1061
|
};
|
|
@@ -30,4 +30,7 @@ ColorBlendMode.getColorBlend = function (colorBlendMode, colorBlendAmount) {
|
|
|
30
30
|
return CesiumMath.clamp(colorBlendAmount, CesiumMath.EPSILON4, 1.0);
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
|
|
34
|
+
Object.freeze(ColorBlendMode);
|
|
35
|
+
|
|
36
|
+
export default ColorBlendMode;
|
|
@@ -29,7 +29,7 @@ import Credit from "../Core/Credit.js";
|
|
|
29
29
|
* Initialization options for the CubeMapPanorama constructor
|
|
30
30
|
*
|
|
31
31
|
* @property {object} [options.sources] The source URL or <code>Image</code> object for each of the six cube map faces. See the example below.
|
|
32
|
-
* @property {
|
|
32
|
+
* @property {Matrix3} [options.transform] A 3x3 transformation matrix that defines the panorama’s orientation. If not specified, the default orientation is defined using the True Equator Mean Equinox (TEME) axes.
|
|
33
33
|
* @property {boolean} [options.show=true] Determines if this primitive will be shown.
|
|
34
34
|
* @property {Credit|string} [options.credit] A credit for the panorama, which is displayed on the canvas.
|
|
35
35
|
*
|
|
@@ -86,7 +86,7 @@ function CubeMapPanorama(options) {
|
|
|
86
86
|
this.sources = options.sources;
|
|
87
87
|
this._sources = undefined;
|
|
88
88
|
|
|
89
|
-
this._transform = options.transform
|
|
89
|
+
this._transform = options.transform;
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* Determines if the cube map panorama will be shown.
|
|
@@ -122,9 +122,9 @@ function CubeMapPanorama(options) {
|
|
|
122
122
|
|
|
123
123
|
Object.defineProperties(CubeMapPanorama.prototype, {
|
|
124
124
|
/**
|
|
125
|
-
* Gets the transform of the panorama.
|
|
125
|
+
* Gets the transform of the panorama. If undefined, the default orientation uses the True Equator Mean Equinox (TEME) axes.
|
|
126
126
|
* @memberof CubeMapPanorama.prototype
|
|
127
|
-
* @type {
|
|
127
|
+
* @type {Matrix3}
|
|
128
128
|
* @readonly
|
|
129
129
|
*/
|
|
130
130
|
transform: {
|
package/Source/Scene/CullFace.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
import WebGLConstants from "../Core/WebGLConstants.js";
|
|
2
4
|
|
|
3
5
|
/**
|
|
@@ -30,4 +32,7 @@ const CullFace = {
|
|
|
30
32
|
*/
|
|
31
33
|
FRONT_AND_BACK: WebGLConstants.FRONT_AND_BACK,
|
|
32
34
|
};
|
|
33
|
-
|
|
35
|
+
|
|
36
|
+
Object.freeze(CullFace);
|
|
37
|
+
|
|
38
|
+
export default CullFace;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
import WebGLConstants from "../Core/WebGLConstants.js";
|
|
2
4
|
|
|
3
5
|
/**
|
|
@@ -70,4 +72,7 @@ const DepthFunction = {
|
|
|
70
72
|
*/
|
|
71
73
|
ALWAYS: WebGLConstants.ALWAYS,
|
|
72
74
|
};
|
|
73
|
-
|
|
75
|
+
|
|
76
|
+
Object.freeze(DepthFunction);
|
|
77
|
+
|
|
78
|
+
export default DepthFunction;
|
|
@@ -53,4 +53,6 @@ DynamicAtmosphereLightingType.fromGlobeFlags = function (globe) {
|
|
|
53
53
|
return DynamicAtmosphereLightingType.SCENE_LIGHT;
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Object.freeze(DynamicAtmosphereLightingType);
|
|
57
|
+
|
|
58
|
+
export default DynamicAtmosphereLightingType;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* @private
|
|
3
5
|
*/
|
|
@@ -22,4 +24,7 @@ const ExpressionNodeType = {
|
|
|
22
24
|
LITERAL_UNDEFINED: 17,
|
|
23
25
|
BUILTIN_VARIABLE: 18,
|
|
24
26
|
};
|
|
25
|
-
|
|
27
|
+
|
|
28
|
+
Object.freeze(ExpressionNodeType);
|
|
29
|
+
|
|
30
|
+
export default ExpressionNodeType;
|