@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.
- package/Build/Workers/{AttributeCompression-4589338a.js → AttributeCompression-b646d393.js} +1 -1
- package/Build/Workers/{AxisAlignedBoundingBox-bfb1234f.js → AxisAlignedBoundingBox-47525601.js} +1 -1
- package/Build/Workers/{BoundingRectangle-7ffc2153.js → BoundingRectangle-93b263ac.js} +1 -1
- package/Build/Workers/{BoxGeometry-93f344a3.js → BoxGeometry-8c4b4125.js} +1 -1
- package/Build/Workers/{Color-0c5aaf47.js → Color-52c60ed7.js} +1 -1
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-6597982a.js → CoplanarPolygonGeometryLibrary-33c4c1f8.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-2119580e.js → CorridorGeometryLibrary-5039cd8e.js} +1 -1
- package/Build/Workers/{CylinderGeometry-f9503c6d.js → CylinderGeometry-3ac44974.js} +1 -1
- package/Build/Workers/{EllipseGeometry-fedf72d5.js → EllipseGeometry-a9c9b3be.js} +1 -1
- package/Build/Workers/{EllipseGeometryLibrary-4ea68687.js → EllipseGeometryLibrary-855d4681.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-e2ae6a35.js → EllipseOutlineGeometry-017a5929.js} +1 -1
- package/Build/Workers/{EllipsoidGeodesic-16de63ea.js → EllipsoidGeodesic-98c62a56.js} +1 -1
- package/Build/Workers/{EllipsoidGeometry-95c0330e.js → EllipsoidGeometry-826e7bce.js} +1 -1
- package/Build/Workers/{EllipsoidOutlineGeometry-d6d2ceec.js → EllipsoidOutlineGeometry-784dcdb5.js} +1 -1
- package/Build/Workers/{EllipsoidRhumbLine-ae5e65e0.js → EllipsoidRhumbLine-19756602.js} +1 -1
- package/Build/Workers/{EllipsoidTangentPlane-bfc674bf.js → EllipsoidTangentPlane-ed9443a1.js} +1 -1
- package/Build/Workers/{EncodedCartesian3-f473ea18.js → EncodedCartesian3-81f70735.js} +1 -1
- package/Build/Workers/{FrustumGeometry-3bf2e4eb.js → FrustumGeometry-9f1ee4d8.js} +1 -1
- package/Build/Workers/{GeometryAttribute-df5f473e.js → GeometryAttribute-334718f8.js} +1 -1
- package/Build/Workers/{GeometryInstance-aa75b4cf.js → GeometryInstance-451dc1cd.js} +1 -1
- package/Build/Workers/{GeometryPipeline-f0e46c42.js → GeometryPipeline-8fb0db69.js} +1 -1
- package/Build/Workers/{IntersectionTests-9de29d51.js → IntersectionTests-27d49265.js} +1 -1
- package/Build/Workers/{Matrix2-ce637455.js → Matrix2-13178034.js} +4 -2
- package/Build/Workers/{Matrix3-4f4df527.js → Matrix3-315394f6.js} +2 -1
- package/Build/Workers/{OrientedBoundingBox-d3ff3d4d.js → OrientedBoundingBox-79ee7cbb.js} +5 -5
- package/Build/Workers/{Plane-b81241c2.js → Plane-900aa728.js} +1 -1
- package/Build/Workers/{PolygonGeometryLibrary-6f4937bb.js → PolygonGeometryLibrary-6b5a29e9.js} +1 -1
- package/Build/Workers/PolygonPipeline-21668b3f.js +1345 -0
- package/Build/Workers/{PolylinePipeline-2e2b015c.js → PolylinePipeline-5e2e1b21.js} +1 -1
- package/Build/Workers/{PolylineVolumeGeometryLibrary-7ee1d449.js → PolylineVolumeGeometryLibrary-97f0b94e.js} +1 -1
- package/Build/Workers/{PrimitivePipeline-a9b7aae0.js → PrimitivePipeline-5640850a.js} +1 -1
- package/Build/Workers/{RectangleGeometryLibrary-9aa6c8f6.js → RectangleGeometryLibrary-d5457f7b.js} +1 -1
- package/Build/Workers/{TerrainEncoding-b52dcfc5.js → TerrainEncoding-bfdf2021.js} +1 -1
- package/Build/Workers/{Transforms-2f755df8.js → Transforms-a05e5e6e.js} +114 -83
- package/Build/Workers/{WallGeometryLibrary-ab19a93d.js → WallGeometryLibrary-6db0ebb6.js} +1 -1
- package/Build/Workers/{WebMercatorProjection-9f25de49.js → WebMercatorProjection-13a90d41.js} +1 -1
- package/Build/Workers/cesiumWorkerBootstrapper.js +92 -2
- package/Build/Workers/combineGeometry.js +1 -1
- package/Build/Workers/createBoxGeometry.js +1 -1
- package/Build/Workers/createBoxOutlineGeometry.js +1 -1
- package/Build/Workers/createCircleGeometry.js +1 -1
- package/Build/Workers/createCircleOutlineGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createCorridorGeometry.js +1 -1
- package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
- package/Build/Workers/createCylinderGeometry.js +1 -1
- package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipseGeometry.js +1 -1
- package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipsoidGeometry.js +1 -1
- package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/Build/Workers/createFrustumGeometry.js +1 -1
- package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
- package/Build/Workers/createGeometry.js +1 -1
- package/Build/Workers/createGroundPolylineGeometry.js +1 -1
- package/Build/Workers/createPlaneGeometry.js +1 -1
- package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
- package/Build/Workers/createPolygonGeometry.js +1 -1
- package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createPolylineGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
- package/Build/Workers/createRectangleGeometry.js +1 -1
- package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
- package/Build/Workers/createSimplePolylineGeometry.js +1 -1
- package/Build/Workers/createSphereGeometry.js +1 -1
- package/Build/Workers/createSphereOutlineGeometry.js +1 -1
- package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +1 -1
- package/Build/Workers/createVectorTilePoints.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVectorTilePolylines.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +7 -3
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -1
- package/Build/Workers/createWallGeometry.js +1 -1
- package/Build/Workers/createWallOutlineGeometry.js +1 -1
- package/Build/Workers/decodeDraco.js +9 -1
- package/Build/Workers/decodeI3S.js +1 -1
- package/Build/Workers/package.js +25 -1
- package/Build/Workers/transcodeKTX2.js +22 -2
- package/Build/Workers/transferTypedArrayTest.js +25 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
- package/README.md +14 -16
- package/Source/Core/EarthOrientationParameters.js +67 -63
- package/Source/Core/FeatureDetection.js +18 -0
- package/Source/Core/Ion.js +1 -2
- package/Source/Core/Matrix2.js +2 -1
- package/Source/Core/Matrix3.js +2 -1
- package/Source/Core/Matrix4.js +1 -0
- package/Source/Core/OrientedBoundingBox.js +4 -4
- package/Source/Core/PixelFormat.js +22 -2
- package/Source/Core/S2Cell.js +3 -3
- package/Source/Core/Transforms.js +3 -7
- package/Source/Core/sampleTerrain.js +5 -0
- package/Source/DataSources/GpxDataSource.js +4 -6
- package/Source/DataSources/KmlDataSource.js +3 -5
- package/Source/Renderer/AutomaticUniforms.js +3 -3
- package/Source/Renderer/Context.js +20 -12
- package/Source/Renderer/Pass.js +3 -2
- package/Source/Renderer/ShaderBuilder.js +13 -12
- package/Source/Renderer/ShaderSource.js +31 -26
- package/Source/Renderer/demodernizeShader.js +76 -0
- package/Source/Scene/AutoExposure.js +5 -5
- package/Source/Scene/BatchTable.js +5 -5
- package/Source/Scene/BillboardCollection.js +2 -2
- package/Source/Scene/BingMapsImageryProvider.js +1 -1
- package/Source/Scene/Cesium3DTile.js +8 -2
- package/Source/Scene/Cesium3DTileBatchTable.js +28 -28
- package/Source/Scene/Cesium3DTileContentType.js +19 -0
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +494 -0
- package/Source/Scene/Cesium3DTileset.js +6 -1
- package/Source/Scene/Cesium3DTilesetMetadata.js +2 -2
- package/Source/Scene/ClassificationPrimitive.js +3 -8
- package/Source/Scene/ContentMetadata.js +2 -2
- package/Source/Scene/DebugAppearance.js +7 -9
- package/Source/Scene/DebugInspector.js +5 -5
- package/Source/Scene/DepthPlane.js +0 -6
- package/Source/Scene/DerivedCommand.js +15 -22
- package/Source/Scene/EllipsoidPrimitive.js +0 -7
- package/Source/Scene/Expression.js +1 -1
- package/Source/Scene/Globe.js +10 -0
- package/Source/Scene/GlobeSurfaceTileProvider.js +7 -0
- package/Source/Scene/GlobeTranslucencyState.js +6 -6
- package/Source/Scene/GltfImageLoader.js +1 -1
- package/Source/Scene/GltfVertexBufferLoader.js +10 -2
- package/Source/Scene/GroundPolylinePrimitive.js +2 -4
- package/Source/Scene/GroupMetadata.js +2 -2
- package/Source/Scene/ImplicitMetadataView.js +2 -2
- package/Source/Scene/ImplicitSubtreeCache.js +127 -0
- package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
- package/Source/Scene/ImplicitTileset.js +3 -2
- package/Source/Scene/InvertClassification.js +9 -10
- package/Source/Scene/KeyframeNode.js +47 -0
- package/Source/Scene/Material.js +6 -6
- package/Source/Scene/Megatexture.js +490 -0
- package/Source/Scene/MetadataClass.js +60 -25
- package/Source/Scene/MetadataClassProperty.js +132 -68
- package/Source/Scene/MetadataComponentType.js +78 -57
- package/Source/Scene/MetadataEnum.js +59 -23
- package/Source/Scene/MetadataEnumValue.js +49 -15
- package/Source/Scene/MetadataSchema.js +53 -24
- package/Source/Scene/MetadataSchemaLoader.js +2 -2
- package/Source/Scene/MetadataSemantic.js +8 -0
- package/Source/Scene/MetadataTableProperty.js +2 -2
- package/Source/Scene/MetadataType.js +6 -14
- package/Source/Scene/Model/CustomShader.js +1 -1
- package/Source/Scene/Model/FeatureIdPipelineStage.js +4 -4
- package/Source/Scene/Model/GeoJsonLoader.js +1 -1
- package/Source/Scene/Model/LightingModel.js +1 -1
- package/Source/Scene/Model/MetadataPipelineStage.js +1 -1
- package/Source/Scene/Model/Model.js +2 -3
- package/Source/Scene/Model/PickingPipelineStage.js +1 -1
- package/Source/Scene/Model/buildDrawCommand.js +19 -11
- package/Source/Scene/OIT.js +211 -119
- package/Source/Scene/PickDepth.js +2 -2
- package/Source/Scene/PointCloud.js +12 -12
- package/Source/Scene/PointCloudEyeDomeLighting.js +9 -4
- package/Source/Scene/PolylineCollection.js +2 -7
- package/Source/Scene/PolylineMaterialAppearance.js +2 -3
- package/Source/Scene/PostProcessStage.js +13 -13
- package/Source/Scene/PostProcessStageLibrary.js +3 -3
- package/Source/Scene/Primitive.js +22 -31
- package/Source/Scene/PropertyAttribute.js +2 -2
- package/Source/Scene/PropertyAttributeProperty.js +2 -2
- package/Source/Scene/PropertyTable.js +2 -2
- package/Source/Scene/PropertyTexture.js +2 -2
- package/Source/Scene/PropertyTextureProperty.js +2 -2
- package/Source/Scene/ResourceCache.js +9 -1
- package/Source/Scene/ResourceCacheKey.js +9 -1
- package/Source/Scene/Scene.js +17 -0
- package/Source/Scene/ShadowMap.js +7 -7
- package/Source/Scene/ShadowMapShader.js +9 -9
- package/Source/Scene/ShadowVolumeAppearance.js +1 -1
- package/Source/Scene/SpatialNode.js +375 -0
- package/Source/Scene/StructuralMetadata.js +2 -2
- package/Source/Scene/TextureAtlas.js +5 -3
- package/Source/Scene/TileMetadata.js +2 -2
- package/Source/Scene/TilesetMetadata.js +2 -2
- package/Source/Scene/Vector3DTilePolylines.js +1 -1
- package/Source/Scene/Vector3DTilePrimitive.js +2 -2
- package/Source/Scene/VoxelBoxShape.js +527 -0
- package/Source/Scene/VoxelContent.js +169 -0
- package/Source/Scene/VoxelCylinderShape.js +937 -0
- package/Source/Scene/VoxelEllipsoidShape.js +945 -0
- package/Source/Scene/VoxelPrimitive.js +1919 -0
- package/Source/Scene/VoxelProvider.js +255 -0
- package/Source/Scene/VoxelRenderResources.js +224 -0
- package/Source/Scene/VoxelShape.js +152 -0
- package/Source/Scene/VoxelShapeType.js +105 -0
- package/Source/Scene/VoxelTraversal.js +1144 -0
- package/Source/Scene/buildVoxelDrawCommands.js +116 -0
- package/Source/Scene/computeFlyToLocationForRectangle.js +10 -1
- package/Source/Scene/createElevationBandMaterial.js +10 -15
- package/Source/Scene/getClipAndStyleCode.js +1 -1
- package/Source/Scene/getClippingFunction.js +3 -3
- package/Source/Scene/parseBatchTable.js +18 -2
- package/Source/Scene/preprocess3DTileContent.js +8 -0
- package/Source/Scene/processVoxelProperties.js +455 -0
- package/Source/Shaders/AdjustTranslucentFS.glsl +9 -6
- package/Source/Shaders/AdjustTranslucentFS.js +9 -6
- package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +7 -7
- package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +7 -7
- package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +12 -12
- package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +12 -12
- package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +4 -4
- package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +4 -4
- package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +6 -6
- package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +6 -6
- package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +5 -5
- package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +5 -5
- package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +7 -7
- package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +7 -7
- package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +4 -4
- package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +4 -4
- package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +8 -8
- package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +8 -8
- package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +2 -2
- package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +2 -2
- package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +5 -5
- package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +5 -5
- package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +10 -10
- package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +10 -10
- package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +12 -12
- package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +12 -12
- package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +5 -5
- package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +5 -5
- package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +8 -8
- package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +8 -8
- package/Source/Shaders/BillboardCollectionFS.glsl +15 -15
- package/Source/Shaders/BillboardCollectionFS.js +15 -15
- package/Source/Shaders/BillboardCollectionVS.glsl +24 -24
- package/Source/Shaders/BillboardCollectionVS.js +24 -24
- package/Source/Shaders/BrdfLutGeneratorFS.glsl +2 -2
- package/Source/Shaders/BrdfLutGeneratorFS.js +2 -2
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passVoxels.js +11 -0
- package/Source/Shaders/Builtin/CzmBuiltins.js +19 -15
- package/Source/Shaders/Builtin/Functions/depthClamp.glsl +3 -3
- package/Source/Shaders/Builtin/Functions/depthClamp.js +3 -3
- package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +4 -4
- package/Source/Shaders/Builtin/Functions/getWaterNoise.js +4 -4
- package/Source/Shaders/Builtin/Functions/phong.glsl +1 -1
- package/Source/Shaders/Builtin/Functions/phong.js +1 -1
- package/Source/Shaders/Builtin/Functions/readDepth.glsl +1 -1
- package/Source/Shaders/Builtin/Functions/readDepth.js +1 -1
- package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +5 -5
- package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +5 -5
- package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +3 -3
- package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +3 -3
- package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +1 -1
- package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +1 -1
- package/Source/Shaders/Builtin/Functions/textureCube.glsl +17 -0
- package/Source/Shaders/Builtin/Functions/textureCube.js +18 -0
- package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +2 -2
- package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +2 -2
- package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +2 -2
- package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +2 -2
- package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +55 -43
- package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +55 -43
- package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +5 -8
- package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +5 -8
- package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +6 -6
- package/Source/Shaders/Builtin/Functions/writeLogDepth.js +6 -6
- package/Source/Shaders/CloudCollectionFS.glsl +18 -18
- package/Source/Shaders/CloudCollectionFS.js +18 -18
- package/Source/Shaders/CloudCollectionVS.glsl +11 -11
- package/Source/Shaders/CloudCollectionVS.js +11 -11
- package/Source/Shaders/CloudNoiseFS.glsl +5 -5
- package/Source/Shaders/CloudNoiseFS.js +5 -5
- package/Source/Shaders/CloudNoiseVS.glsl +2 -2
- package/Source/Shaders/CloudNoiseVS.js +2 -2
- package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +4 -4
- package/Source/Shaders/CompareAndPackTranslucentDepth.js +4 -4
- package/Source/Shaders/CompositeOITFS.glsl +6 -6
- package/Source/Shaders/CompositeOITFS.js +6 -6
- package/Source/Shaders/DepthPlaneFS.glsl +2 -2
- package/Source/Shaders/DepthPlaneFS.js +2 -2
- package/Source/Shaders/DepthPlaneVS.glsl +2 -2
- package/Source/Shaders/DepthPlaneVS.js +2 -2
- package/Source/Shaders/EllipsoidFS.glsl +5 -13
- package/Source/Shaders/EllipsoidFS.js +6 -14
- package/Source/Shaders/EllipsoidVS.glsl +2 -2
- package/Source/Shaders/EllipsoidVS.js +2 -2
- package/Source/Shaders/FXAA3_11.glsl +4 -4
- package/Source/Shaders/FXAA3_11.js +4 -4
- package/Source/Shaders/GlobeFS.glsl +17 -16
- package/Source/Shaders/GlobeFS.js +17 -16
- package/Source/Shaders/GlobeVS.glsl +17 -17
- package/Source/Shaders/GlobeVS.js +17 -17
- package/Source/Shaders/Materials/AspectRampMaterial.glsl +1 -1
- package/Source/Shaders/Materials/AspectRampMaterial.js +1 -1
- package/Source/Shaders/Materials/BumpMapMaterial.glsl +3 -3
- package/Source/Shaders/Materials/BumpMapMaterial.js +3 -3
- package/Source/Shaders/Materials/ElevationBandMaterial.glsl +3 -3
- package/Source/Shaders/Materials/ElevationBandMaterial.js +3 -3
- package/Source/Shaders/Materials/ElevationContourMaterial.glsl +2 -1
- package/Source/Shaders/Materials/ElevationContourMaterial.js +2 -1
- package/Source/Shaders/Materials/ElevationRampMaterial.glsl +1 -1
- package/Source/Shaders/Materials/ElevationRampMaterial.js +1 -1
- package/Source/Shaders/Materials/GridMaterial.glsl +3 -2
- package/Source/Shaders/Materials/GridMaterial.js +3 -2
- package/Source/Shaders/Materials/NormalMapMaterial.glsl +1 -1
- package/Source/Shaders/Materials/NormalMapMaterial.js +1 -1
- package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +3 -2
- package/Source/Shaders/Materials/PolylineArrowMaterial.js +3 -2
- package/Source/Shaders/Materials/PolylineDashMaterial.glsl +1 -1
- package/Source/Shaders/Materials/PolylineDashMaterial.js +1 -1
- package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +1 -1
- package/Source/Shaders/Materials/PolylineOutlineMaterial.js +1 -1
- package/Source/Shaders/Materials/SlopeRampMaterial.glsl +1 -1
- package/Source/Shaders/Materials/SlopeRampMaterial.js +1 -1
- package/Source/Shaders/Materials/Water.glsl +1 -1
- package/Source/Shaders/Materials/Water.js +1 -1
- package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +3 -3
- package/Source/Shaders/Model/ImageBasedLightingStageFS.js +3 -3
- package/Source/Shaders/Model/MaterialStageFS.glsl +10 -10
- package/Source/Shaders/Model/MaterialStageFS.js +10 -10
- package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +3 -3
- package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +3 -3
- package/Source/Shaders/Model/ModelFS.glsl +1 -1
- package/Source/Shaders/Model/ModelFS.js +1 -1
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +3 -3
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +3 -3
- package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +1 -1
- package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +1 -1
- package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +8 -8
- package/Source/Shaders/OctahedralProjectionAtlasFS.js +8 -8
- package/Source/Shaders/OctahedralProjectionFS.glsl +4 -4
- package/Source/Shaders/OctahedralProjectionFS.js +4 -4
- package/Source/Shaders/OctahedralProjectionVS.glsl +3 -3
- package/Source/Shaders/OctahedralProjectionVS.js +3 -3
- package/Source/Shaders/PointPrimitiveCollectionFS.glsl +6 -6
- package/Source/Shaders/PointPrimitiveCollectionFS.js +6 -6
- package/Source/Shaders/PointPrimitiveCollectionVS.glsl +17 -14
- package/Source/Shaders/PointPrimitiveCollectionVS.js +17 -14
- package/Source/Shaders/PolylineFS.glsl +3 -3
- package/Source/Shaders/PolylineFS.js +3 -3
- package/Source/Shaders/PolylineShadowVolumeFS.glsl +12 -16
- package/Source/Shaders/PolylineShadowVolumeFS.js +12 -16
- package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +8 -8
- package/Source/Shaders/PolylineShadowVolumeMorphFS.js +8 -8
- package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +20 -20
- package/Source/Shaders/PolylineShadowVolumeMorphVS.js +20 -20
- package/Source/Shaders/PolylineShadowVolumeVS.glsl +20 -20
- package/Source/Shaders/PolylineShadowVolumeVS.js +20 -20
- package/Source/Shaders/PolylineVS.glsl +17 -17
- package/Source/Shaders/PolylineVS.js +17 -17
- package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -4
- package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -4
- package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +4 -4
- package/Source/Shaders/PostProcessStages/AdditiveBlend.js +4 -4
- package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +4 -4
- package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +4 -4
- package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +4 -4
- package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +4 -4
- package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +4 -4
- package/Source/Shaders/PostProcessStages/BlackAndWhite.js +4 -4
- package/Source/Shaders/PostProcessStages/BloomComposite.glsl +5 -5
- package/Source/Shaders/PostProcessStages/BloomComposite.js +5 -5
- package/Source/Shaders/PostProcessStages/BrightPass.glsl +3 -3
- package/Source/Shaders/PostProcessStages/BrightPass.js +3 -3
- package/Source/Shaders/PostProcessStages/Brightness.glsl +3 -3
- package/Source/Shaders/PostProcessStages/Brightness.js +3 -3
- package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +5 -5
- package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +5 -5
- package/Source/Shaders/PostProcessStages/ContrastBias.glsl +3 -3
- package/Source/Shaders/PostProcessStages/ContrastBias.js +3 -3
- package/Source/Shaders/PostProcessStages/DepthOfField.glsl +2 -2
- package/Source/Shaders/PostProcessStages/DepthOfField.js +2 -2
- package/Source/Shaders/PostProcessStages/DepthView.glsl +2 -2
- package/Source/Shaders/PostProcessStages/DepthView.js +2 -2
- package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +3 -3
- package/Source/Shaders/PostProcessStages/DepthViewPacked.js +3 -3
- package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +7 -7
- package/Source/Shaders/PostProcessStages/EdgeDetection.js +7 -7
- package/Source/Shaders/PostProcessStages/FXAA.glsl +3 -3
- package/Source/Shaders/PostProcessStages/FXAA.js +3 -3
- package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -4
- package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -4
- package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +5 -5
- package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +5 -5
- package/Source/Shaders/PostProcessStages/LensFlare.glsl +13 -13
- package/Source/Shaders/PostProcessStages/LensFlare.js +13 -13
- package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -4
- package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -4
- package/Source/Shaders/PostProcessStages/NightVision.glsl +3 -3
- package/Source/Shaders/PostProcessStages/NightVision.js +3 -3
- package/Source/Shaders/PostProcessStages/PassThrough.glsl +2 -2
- package/Source/Shaders/PostProcessStages/PassThrough.js +2 -2
- package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +2 -2
- package/Source/Shaders/PostProcessStages/PassThroughDepth.js +2 -2
- package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +7 -9
- package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +8 -10
- package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -4
- package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -4
- package/Source/Shaders/PostProcessStages/Silhouette.glsl +4 -4
- package/Source/Shaders/PostProcessStages/Silhouette.js +4 -4
- package/Source/Shaders/ReprojectWebMercatorFS.glsl +2 -2
- package/Source/Shaders/ReprojectWebMercatorFS.js +2 -2
- package/Source/Shaders/ReprojectWebMercatorVS.glsl +3 -3
- package/Source/Shaders/ReprojectWebMercatorVS.js +3 -3
- package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +19 -23
- package/Source/Shaders/ShadowVolumeAppearanceFS.js +20 -24
- package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +12 -12
- package/Source/Shaders/ShadowVolumeAppearanceVS.js +12 -12
- package/Source/Shaders/ShadowVolumeFS.glsl +2 -6
- package/Source/Shaders/ShadowVolumeFS.js +3 -7
- package/Source/Shaders/SkyAtmosphereFS.glsl +6 -6
- package/Source/Shaders/SkyAtmosphereFS.js +6 -6
- package/Source/Shaders/SkyAtmosphereVS.glsl +6 -6
- package/Source/Shaders/SkyAtmosphereVS.js +6 -6
- package/Source/Shaders/SkyBoxFS.glsl +3 -3
- package/Source/Shaders/SkyBoxFS.js +3 -3
- package/Source/Shaders/SkyBoxVS.glsl +2 -2
- package/Source/Shaders/SkyBoxVS.js +2 -2
- package/Source/Shaders/SunFS.glsl +3 -3
- package/Source/Shaders/SunFS.js +3 -3
- package/Source/Shaders/SunTextureFS.glsl +2 -2
- package/Source/Shaders/SunTextureFS.js +2 -2
- package/Source/Shaders/SunVS.glsl +2 -2
- package/Source/Shaders/SunVS.js +2 -2
- package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +9 -13
- package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +9 -13
- package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +12 -12
- package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +12 -12
- package/Source/Shaders/Vector3DTilePolylinesVS.glsl +5 -5
- package/Source/Shaders/Vector3DTilePolylinesVS.js +5 -5
- package/Source/Shaders/VectorTileVS.glsl +2 -2
- package/Source/Shaders/VectorTileVS.js +2 -2
- package/Source/Shaders/ViewportQuadFS.glsl +2 -2
- package/Source/Shaders/ViewportQuadFS.js +2 -2
- package/Source/Shaders/ViewportQuadVS.glsl +3 -3
- package/Source/Shaders/ViewportQuadVS.js +3 -3
- package/Source/Shaders/Voxels/IntersectBox.glsl +79 -0
- package/Source/Shaders/Voxels/IntersectBox.js +81 -0
- package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +70 -0
- package/Source/Shaders/Voxels/IntersectClippingPlanes.js +72 -0
- package/Source/Shaders/Voxels/IntersectCylinder.glsl +273 -0
- package/Source/Shaders/Voxels/IntersectCylinder.js +275 -0
- package/Source/Shaders/Voxels/IntersectDepth.glsl +23 -0
- package/Source/Shaders/Voxels/IntersectDepth.js +25 -0
- package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +347 -0
- package/Source/Shaders/Voxels/IntersectEllipsoid.js +349 -0
- package/Source/Shaders/Voxels/Intersection.glsl +54 -0
- package/Source/Shaders/Voxels/Intersection.js +56 -0
- package/Source/Shaders/Voxels/IntersectionUtils.glsl +151 -0
- package/Source/Shaders/Voxels/IntersectionUtils.js +153 -0
- package/Source/Shaders/Voxels/Megatexture.glsl +136 -0
- package/Source/Shaders/Voxels/Megatexture.js +138 -0
- package/Source/Shaders/Voxels/Octree.glsl +221 -0
- package/Source/Shaders/Voxels/Octree.js +223 -0
- package/Source/Shaders/Voxels/VoxelFS.glsl +150 -0
- package/Source/Shaders/Voxels/VoxelFS.js +152 -0
- package/Source/Shaders/Voxels/VoxelVS.glsl +11 -0
- package/Source/Shaders/Voxels/VoxelVS.js +13 -0
- package/Source/Shaders/Voxels/convertUvToBox.glsl +16 -0
- package/Source/Shaders/Voxels/convertUvToBox.js +18 -0
- package/Source/Shaders/Voxels/convertUvToCylinder.glsl +75 -0
- package/Source/Shaders/Voxels/convertUvToCylinder.js +77 -0
- package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +130 -0
- package/Source/Shaders/Voxels/convertUvToEllipsoid.js +132 -0
- package/Source/ThirdParty/Workers/z-worker-pako.js +0 -0
- package/Source/WorkersES6/decodeDraco.js +9 -1
- package/index.d.ts +3148 -2297
- package/index.js +1118 -1085
- package/package.json +3 -4
- package/Build/Workers/PolygonPipeline-774a8aaf.js +0 -1341
- package/Source/Renderer/modernizeShader.js +0 -242
|
@@ -126,19 +126,18 @@ const rsDefault = {
|
|
|
126
126
|
};
|
|
127
127
|
|
|
128
128
|
const translucentFS =
|
|
129
|
-
"#extension GL_EXT_frag_depth : enable\n" +
|
|
130
129
|
"uniform sampler2D colorTexture;\n" +
|
|
131
130
|
"uniform sampler2D depthTexture;\n" +
|
|
132
131
|
"uniform sampler2D classifiedTexture;\n" +
|
|
133
|
-
"
|
|
132
|
+
"in vec2 v_textureCoordinates;\n" +
|
|
134
133
|
"void main()\n" +
|
|
135
134
|
"{\n" +
|
|
136
|
-
" vec4 color =
|
|
135
|
+
" vec4 color = texture(colorTexture, v_textureCoordinates);\n" +
|
|
137
136
|
" if (color.a == 0.0)\n" +
|
|
138
137
|
" {\n" +
|
|
139
138
|
" discard;\n" +
|
|
140
139
|
" }\n" +
|
|
141
|
-
" bool isClassified = all(equal(
|
|
140
|
+
" bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0)));\n" +
|
|
142
141
|
"#ifdef UNCLASSIFIED\n" +
|
|
143
142
|
" vec4 highlightColor = czm_invertClassificationColor;\n" +
|
|
144
143
|
" if (isClassified)\n" +
|
|
@@ -152,24 +151,24 @@ const translucentFS =
|
|
|
152
151
|
" discard;\n" +
|
|
153
152
|
" }\n" +
|
|
154
153
|
"#endif\n" +
|
|
155
|
-
"
|
|
156
|
-
"
|
|
154
|
+
" out_FragColor = color * highlightColor;\n" +
|
|
155
|
+
" gl_FragDepth = texture(depthTexture, v_textureCoordinates).r;\n" +
|
|
157
156
|
"}\n";
|
|
158
157
|
|
|
159
158
|
const opaqueFS =
|
|
160
159
|
"uniform sampler2D colorTexture;\n" +
|
|
161
|
-
"
|
|
160
|
+
"in vec2 v_textureCoordinates;\n" +
|
|
162
161
|
"void main()\n" +
|
|
163
162
|
"{\n" +
|
|
164
|
-
" vec4 color =
|
|
163
|
+
" vec4 color = texture(colorTexture, v_textureCoordinates);\n" +
|
|
165
164
|
" if (color.a == 0.0)\n" +
|
|
166
165
|
" {\n" +
|
|
167
166
|
" discard;\n" +
|
|
168
167
|
" }\n" +
|
|
169
168
|
"#ifdef UNCLASSIFIED\n" +
|
|
170
|
-
"
|
|
169
|
+
" out_FragColor = color * czm_invertClassificationColor;\n" +
|
|
171
170
|
"#else\n" +
|
|
172
|
-
"
|
|
171
|
+
" out_FragColor = color;\n" +
|
|
173
172
|
"#endif\n" +
|
|
174
173
|
"}\n";
|
|
175
174
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const LoadState = Object.freeze({
|
|
2
|
+
UNLOADED: 0, // Has no data and is in dormant state
|
|
3
|
+
RECEIVING: 1, // Is waiting on data from the provider
|
|
4
|
+
RECEIVED: 2, // Received data from the provider
|
|
5
|
+
LOADED: 3, // Processed data from provider
|
|
6
|
+
FAILED: 4, // Failed to receive data from the provider
|
|
7
|
+
UNAVAILABLE: 5, // No data available for this tile
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @alias KeyframeNode
|
|
12
|
+
* @constructor
|
|
13
|
+
*
|
|
14
|
+
* @param {SpatialNode} spatialNode
|
|
15
|
+
* @param {Number} keyframe
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
function KeyframeNode(spatialNode, keyframe) {
|
|
20
|
+
this.spatialNode = spatialNode;
|
|
21
|
+
this.keyframe = keyframe;
|
|
22
|
+
this.state = LoadState.UNLOADED;
|
|
23
|
+
this.metadatas = [];
|
|
24
|
+
this.megatextureIndex = -1;
|
|
25
|
+
this.priority = -Number.MAX_VALUE;
|
|
26
|
+
this.highPriorityFrameNumber = -1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @param {KeyframeNode} a
|
|
31
|
+
* @param {KeyframeNode} b
|
|
32
|
+
*/
|
|
33
|
+
KeyframeNode.priorityComparator = function (a, b) {
|
|
34
|
+
return a.priority - b.priority;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @param {KeyframeNode} a
|
|
39
|
+
* @param {KeyframeNode} b
|
|
40
|
+
*/
|
|
41
|
+
KeyframeNode.searchComparator = function (a, b) {
|
|
42
|
+
return a.keyframe - b.keyframe;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
KeyframeNode.LoadState = LoadState;
|
|
46
|
+
|
|
47
|
+
export default KeyframeNode;
|
package/Source/Scene/Material.js
CHANGED
|
@@ -1264,8 +1264,8 @@ Material._materialCache.addMaterial(Material.ImageType, {
|
|
|
1264
1264
|
},
|
|
1265
1265
|
components: {
|
|
1266
1266
|
diffuse:
|
|
1267
|
-
"
|
|
1268
|
-
alpha: "
|
|
1267
|
+
"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",
|
|
1268
|
+
alpha: "texture(image, fract(repeat * materialInput.st)).a * color.a",
|
|
1269
1269
|
},
|
|
1270
1270
|
},
|
|
1271
1271
|
translucent: function (material) {
|
|
@@ -1288,7 +1288,7 @@ Material._materialCache.addMaterial(Material.DiffuseMapType, {
|
|
|
1288
1288
|
repeat: new Cartesian2(1.0, 1.0),
|
|
1289
1289
|
},
|
|
1290
1290
|
components: {
|
|
1291
|
-
diffuse: "
|
|
1291
|
+
diffuse: "texture(image, fract(repeat * materialInput.st)).channels",
|
|
1292
1292
|
},
|
|
1293
1293
|
},
|
|
1294
1294
|
translucent: false,
|
|
@@ -1309,7 +1309,7 @@ Material._materialCache.addMaterial(Material.AlphaMapType, {
|
|
|
1309
1309
|
repeat: new Cartesian2(1.0, 1.0),
|
|
1310
1310
|
},
|
|
1311
1311
|
components: {
|
|
1312
|
-
alpha: "
|
|
1312
|
+
alpha: "texture(image, fract(repeat * materialInput.st)).channel",
|
|
1313
1313
|
},
|
|
1314
1314
|
},
|
|
1315
1315
|
translucent: true,
|
|
@@ -1330,7 +1330,7 @@ Material._materialCache.addMaterial(Material.SpecularMapType, {
|
|
|
1330
1330
|
repeat: new Cartesian2(1.0, 1.0),
|
|
1331
1331
|
},
|
|
1332
1332
|
components: {
|
|
1333
|
-
specular: "
|
|
1333
|
+
specular: "texture(image, fract(repeat * materialInput.st)).channel",
|
|
1334
1334
|
},
|
|
1335
1335
|
},
|
|
1336
1336
|
translucent: false,
|
|
@@ -1351,7 +1351,7 @@ Material._materialCache.addMaterial(Material.EmissionMapType, {
|
|
|
1351
1351
|
repeat: new Cartesian2(1.0, 1.0),
|
|
1352
1352
|
},
|
|
1353
1353
|
components: {
|
|
1354
|
-
emission: "
|
|
1354
|
+
emission: "texture(image, fract(repeat * materialInput.st)).channels",
|
|
1355
1355
|
},
|
|
1356
1356
|
},
|
|
1357
1357
|
translucent: false,
|
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
import Cartesian2 from "../Core/Cartesian2.js";
|
|
2
|
+
import Cartesian3 from "../Core/Cartesian3.js";
|
|
3
|
+
import ComponentDatatype from "../Core/ComponentDatatype.js";
|
|
4
|
+
import ContextLimits from "../Renderer/ContextLimits.js";
|
|
5
|
+
import defaultValue from "../Core/defaultValue.js";
|
|
6
|
+
import defined from "../Core/defined.js";
|
|
7
|
+
import destroyObject from "../Core/destroyObject.js";
|
|
8
|
+
import DeveloperError from "../Core/DeveloperError.js";
|
|
9
|
+
import CesiumMath from "../Core/Math.js";
|
|
10
|
+
import MetadataComponentType from "./MetadataComponentType.js";
|
|
11
|
+
import PixelDatatype from "../Renderer/PixelDatatype.js";
|
|
12
|
+
import PixelFormat from "../Core/PixelFormat.js";
|
|
13
|
+
import RuntimeError from "../Core/RuntimeError.js";
|
|
14
|
+
import Sampler from "../Renderer/Sampler.js";
|
|
15
|
+
import Texture from "../Renderer/Texture.js";
|
|
16
|
+
import TextureMagnificationFilter from "../Renderer/TextureMagnificationFilter.js";
|
|
17
|
+
import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
|
|
18
|
+
import TextureWrap from "../Renderer/TextureWrap.js";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @alias Megatexture
|
|
22
|
+
* @constructor
|
|
23
|
+
*
|
|
24
|
+
* @param {Context} context
|
|
25
|
+
* @param {Cartesian3} dimensions
|
|
26
|
+
* @param {Number} channelCount
|
|
27
|
+
* @param {MetadataComponentType} componentType
|
|
28
|
+
* @param {Number} [textureMemoryByteLength]
|
|
29
|
+
*
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
function Megatexture(
|
|
33
|
+
context,
|
|
34
|
+
dimensions,
|
|
35
|
+
channelCount,
|
|
36
|
+
componentType,
|
|
37
|
+
textureMemoryByteLength
|
|
38
|
+
) {
|
|
39
|
+
// TODO there are a lot of texture packing rules, see https://github.com/CesiumGS/cesium/issues/9572
|
|
40
|
+
// Unsigned short textures not allowed in webgl 1, so treat as float
|
|
41
|
+
if (componentType === MetadataComponentType.UNSIGNED_SHORT) {
|
|
42
|
+
componentType = MetadataComponentType.FLOAT32;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const supportsFloatingPointTexture = context.floatingPointTexture;
|
|
46
|
+
if (
|
|
47
|
+
componentType === MetadataComponentType.FLOAT32 &&
|
|
48
|
+
!supportsFloatingPointTexture
|
|
49
|
+
) {
|
|
50
|
+
throw new RuntimeError("Floating point texture not supported");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// TODO support more
|
|
54
|
+
let pixelType;
|
|
55
|
+
if (
|
|
56
|
+
componentType === MetadataComponentType.FLOAT32 ||
|
|
57
|
+
componentType === MetadataComponentType.FLOAT64
|
|
58
|
+
) {
|
|
59
|
+
pixelType = PixelDatatype.FLOAT;
|
|
60
|
+
} else if (componentType === MetadataComponentType.UINT8) {
|
|
61
|
+
pixelType = PixelDatatype.UNSIGNED_BYTE;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let pixelFormat;
|
|
65
|
+
if (channelCount === 1) {
|
|
66
|
+
pixelFormat = context.webgl2 ? PixelFormat.RED : PixelFormat.LUMINANCE;
|
|
67
|
+
} else if (channelCount === 2) {
|
|
68
|
+
pixelFormat = context.webgl2 ? PixelFormat.RG : PixelFormat.LUMINANCE_ALPHA;
|
|
69
|
+
} else if (channelCount === 3) {
|
|
70
|
+
pixelFormat = PixelFormat.RGB;
|
|
71
|
+
} else if (channelCount === 4) {
|
|
72
|
+
pixelFormat = PixelFormat.RGBA;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const maximumTextureMemoryByteLength = 512 * 1024 * 1024;
|
|
76
|
+
const defaultTextureMemoryByteLength = 128 * 1024 * 1024;
|
|
77
|
+
textureMemoryByteLength = Math.min(
|
|
78
|
+
defaultValue(textureMemoryByteLength, defaultTextureMemoryByteLength),
|
|
79
|
+
maximumTextureMemoryByteLength
|
|
80
|
+
);
|
|
81
|
+
const maximumTextureDimensionContext = ContextLimits.maximumTextureSize;
|
|
82
|
+
const componentTypeByteLength = MetadataComponentType.getSizeInBytes(
|
|
83
|
+
componentType
|
|
84
|
+
);
|
|
85
|
+
const texelCount = Math.floor(
|
|
86
|
+
textureMemoryByteLength / (channelCount * componentTypeByteLength)
|
|
87
|
+
);
|
|
88
|
+
const textureDimension = Math.min(
|
|
89
|
+
maximumTextureDimensionContext,
|
|
90
|
+
CesiumMath.previousPowerOfTwo(Math.floor(Math.sqrt(texelCount)))
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const sliceCountPerRegionX = Math.ceil(Math.sqrt(dimensions.x));
|
|
94
|
+
const sliceCountPerRegionY = Math.ceil(dimensions.z / sliceCountPerRegionX);
|
|
95
|
+
const voxelCountPerRegionX = sliceCountPerRegionX * dimensions.x;
|
|
96
|
+
const voxelCountPerRegionY = sliceCountPerRegionY * dimensions.y;
|
|
97
|
+
const regionCountPerMegatextureX = Math.floor(
|
|
98
|
+
textureDimension / voxelCountPerRegionX
|
|
99
|
+
);
|
|
100
|
+
const regionCountPerMegatextureY = Math.floor(
|
|
101
|
+
textureDimension / voxelCountPerRegionY
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
if (regionCountPerMegatextureX === 0 || regionCountPerMegatextureY === 0) {
|
|
105
|
+
throw new RuntimeError("Tileset is too large to fit into megatexture");
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @type {Number}
|
|
110
|
+
* @readonly
|
|
111
|
+
*/
|
|
112
|
+
this.channelCount = channelCount;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @type {MetadataComponentType}
|
|
116
|
+
* @readonly
|
|
117
|
+
*/
|
|
118
|
+
this.componentType = componentType;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @type {Cartesian3}
|
|
122
|
+
* @readonly
|
|
123
|
+
*/
|
|
124
|
+
this.voxelCountPerTile = Cartesian3.clone(dimensions, new Cartesian3());
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @type {Number}
|
|
128
|
+
* @readonly
|
|
129
|
+
*/
|
|
130
|
+
this.maximumTileCount =
|
|
131
|
+
regionCountPerMegatextureX * regionCountPerMegatextureY;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @type {Cartesian2}
|
|
135
|
+
* @readonly
|
|
136
|
+
*/
|
|
137
|
+
this.regionCountPerMegatexture = new Cartesian2(
|
|
138
|
+
regionCountPerMegatextureX,
|
|
139
|
+
regionCountPerMegatextureY
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @type {Cartesian2}
|
|
144
|
+
* @readonly
|
|
145
|
+
*/
|
|
146
|
+
this.voxelCountPerRegion = new Cartesian2(
|
|
147
|
+
voxelCountPerRegionX,
|
|
148
|
+
voxelCountPerRegionY
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @type {Cartesian2}
|
|
153
|
+
* @readonly
|
|
154
|
+
*/
|
|
155
|
+
this.sliceCountPerRegion = new Cartesian2(
|
|
156
|
+
sliceCountPerRegionX,
|
|
157
|
+
sliceCountPerRegionY
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @type {Cartesian2}
|
|
162
|
+
* @readonly
|
|
163
|
+
*/
|
|
164
|
+
this.voxelSizeUv = new Cartesian2(
|
|
165
|
+
1.0 / textureDimension,
|
|
166
|
+
1.0 / textureDimension
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @type {Cartesian2}
|
|
171
|
+
* @readonly
|
|
172
|
+
*/
|
|
173
|
+
this.sliceSizeUv = new Cartesian2(
|
|
174
|
+
dimensions.x / textureDimension,
|
|
175
|
+
dimensions.y / textureDimension
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* @type {Cartesian2}
|
|
180
|
+
* @readonly
|
|
181
|
+
*/
|
|
182
|
+
this.regionSizeUv = new Cartesian2(
|
|
183
|
+
voxelCountPerRegionX / textureDimension,
|
|
184
|
+
voxelCountPerRegionY / textureDimension
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @type {Texture}
|
|
189
|
+
* @readonly
|
|
190
|
+
*/
|
|
191
|
+
this.texture = new Texture({
|
|
192
|
+
context: context,
|
|
193
|
+
pixelFormat: pixelFormat,
|
|
194
|
+
pixelDatatype: pixelType,
|
|
195
|
+
flipY: false,
|
|
196
|
+
width: textureDimension,
|
|
197
|
+
height: textureDimension,
|
|
198
|
+
sampler: new Sampler({
|
|
199
|
+
wrapS: TextureWrap.CLAMP_TO_EDGE,
|
|
200
|
+
wrapT: TextureWrap.CLAMP_TO_EDGE,
|
|
201
|
+
minificationFilter: TextureMinificationFilter.LINEAR,
|
|
202
|
+
magnificationFilter: TextureMagnificationFilter.LINEAR,
|
|
203
|
+
}),
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
const componentDatatype = MetadataComponentType.toComponentDatatype(
|
|
207
|
+
componentType
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @type {Array}
|
|
212
|
+
*/
|
|
213
|
+
this.tileVoxelDataTemp = ComponentDatatype.createTypedArray(
|
|
214
|
+
componentDatatype,
|
|
215
|
+
voxelCountPerRegionX * voxelCountPerRegionY * channelCount
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* @type {MegatextureNode[]}
|
|
220
|
+
* @readonly
|
|
221
|
+
*/
|
|
222
|
+
this.nodes = new Array(this.maximumTileCount);
|
|
223
|
+
for (let tileIndex = 0; tileIndex < this.maximumTileCount; tileIndex++) {
|
|
224
|
+
this.nodes[tileIndex] = new MegatextureNode(tileIndex);
|
|
225
|
+
}
|
|
226
|
+
for (let tileIndex = 0; tileIndex < this.maximumTileCount; tileIndex++) {
|
|
227
|
+
const node = this.nodes[tileIndex];
|
|
228
|
+
node.previousNode = tileIndex > 0 ? this.nodes[tileIndex - 1] : undefined;
|
|
229
|
+
node.nextNode =
|
|
230
|
+
tileIndex < this.maximumTileCount - 1
|
|
231
|
+
? this.nodes[tileIndex + 1]
|
|
232
|
+
: undefined;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @type {MegatextureNode}
|
|
237
|
+
* @readonly
|
|
238
|
+
*/
|
|
239
|
+
this.occupiedList = undefined;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* @type {MegatextureNode}
|
|
243
|
+
* @readonly
|
|
244
|
+
*/
|
|
245
|
+
this.emptyList = this.nodes[0];
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* @type {Number}
|
|
249
|
+
* @readonly
|
|
250
|
+
*/
|
|
251
|
+
this.occupiedCount = 0;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* @alias MegatextureNode
|
|
256
|
+
* @constructor
|
|
257
|
+
*
|
|
258
|
+
* @param {Number} index
|
|
259
|
+
*
|
|
260
|
+
* @private
|
|
261
|
+
*/
|
|
262
|
+
function MegatextureNode(index) {
|
|
263
|
+
/**
|
|
264
|
+
* @type {Number}
|
|
265
|
+
*/
|
|
266
|
+
this.index = index;
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* @type {MegatextureNode}
|
|
270
|
+
*/
|
|
271
|
+
this.nextNode = undefined;
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* @type {MegatextureNode}
|
|
275
|
+
*/
|
|
276
|
+
this.previousNode = undefined;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* @param {Array} data
|
|
281
|
+
* @returns {Number}
|
|
282
|
+
*/
|
|
283
|
+
Megatexture.prototype.add = function (data) {
|
|
284
|
+
if (this.isFull()) {
|
|
285
|
+
throw new DeveloperError("Trying to add when there are no empty spots");
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// remove head of empty list
|
|
289
|
+
const node = this.emptyList;
|
|
290
|
+
this.emptyList = this.emptyList.nextNode;
|
|
291
|
+
if (defined(this.emptyList)) {
|
|
292
|
+
this.emptyList.previousNode = undefined;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// make head of occupied list
|
|
296
|
+
node.nextNode = this.occupiedList;
|
|
297
|
+
if (defined(node.nextNode)) {
|
|
298
|
+
node.nextNode.previousNode = node;
|
|
299
|
+
}
|
|
300
|
+
this.occupiedList = node;
|
|
301
|
+
|
|
302
|
+
const index = node.index;
|
|
303
|
+
this.writeDataToTexture(index, data);
|
|
304
|
+
|
|
305
|
+
this.occupiedCount++;
|
|
306
|
+
return index;
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* @param {Number} index
|
|
311
|
+
*/
|
|
312
|
+
Megatexture.prototype.remove = function (index) {
|
|
313
|
+
if (index < 0 || index >= this.maximumTileCount) {
|
|
314
|
+
throw new DeveloperError("Megatexture index out of bounds");
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// remove from list
|
|
318
|
+
const node = this.nodes[index];
|
|
319
|
+
if (defined(node.previousNode)) {
|
|
320
|
+
node.previousNode.nextNode = node.nextNode;
|
|
321
|
+
}
|
|
322
|
+
if (defined(node.nextNode)) {
|
|
323
|
+
node.nextNode.previousNode = node.previousNode;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// make head of empty list
|
|
327
|
+
node.nextNode = this.emptyList;
|
|
328
|
+
if (defined(node.nextNode)) {
|
|
329
|
+
node.nextNode.previousNode = node;
|
|
330
|
+
}
|
|
331
|
+
node.previousNode = undefined;
|
|
332
|
+
this.emptyList = node;
|
|
333
|
+
this.occupiedCount--;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* @returns {Boolean}
|
|
338
|
+
*/
|
|
339
|
+
Megatexture.prototype.isFull = function () {
|
|
340
|
+
return this.emptyList === undefined;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* @param {Number} tileCount
|
|
345
|
+
* @param {Cartesian3} dimensions
|
|
346
|
+
* @param {Number} channelCount number of channels in the metadata. Must be 1 to 4.
|
|
347
|
+
* @param {MetadataComponentType} componentType
|
|
348
|
+
* @returns {Number}
|
|
349
|
+
*/
|
|
350
|
+
Megatexture.getApproximateTextureMemoryByteLength = function (
|
|
351
|
+
tileCount,
|
|
352
|
+
dimensions,
|
|
353
|
+
channelCount,
|
|
354
|
+
componentType
|
|
355
|
+
) {
|
|
356
|
+
// TODO there's a lot of code duplicate with Megatexture constructor
|
|
357
|
+
|
|
358
|
+
// Unsigned short textures not allowed in webgl 1, so treat as float
|
|
359
|
+
if (componentType === MetadataComponentType.UNSIGNED_SHORT) {
|
|
360
|
+
componentType = MetadataComponentType.FLOAT32;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
const datatypeSizeInBytes = MetadataComponentType.getSizeInBytes(
|
|
364
|
+
componentType
|
|
365
|
+
);
|
|
366
|
+
const voxelCountTotal =
|
|
367
|
+
tileCount * dimensions.x * dimensions.y * dimensions.z;
|
|
368
|
+
|
|
369
|
+
const sliceCountPerRegionX = Math.ceil(Math.sqrt(dimensions.z));
|
|
370
|
+
const sliceCountPerRegionY = Math.ceil(dimensions.z / sliceCountPerRegionX);
|
|
371
|
+
const voxelCountPerRegionX = sliceCountPerRegionX * dimensions.x;
|
|
372
|
+
const voxelCountPerRegionY = sliceCountPerRegionY * dimensions.y;
|
|
373
|
+
|
|
374
|
+
// Find the power of two that can fit all tile data, accounting for slices.
|
|
375
|
+
// There's probably a non-iterative solution for this, but this is good enough for now.
|
|
376
|
+
let textureDimension = CesiumMath.previousPowerOfTwo(
|
|
377
|
+
Math.floor(Math.sqrt(voxelCountTotal))
|
|
378
|
+
);
|
|
379
|
+
for (;;) {
|
|
380
|
+
const regionCountX = Math.floor(textureDimension / voxelCountPerRegionX);
|
|
381
|
+
const regionCountY = Math.floor(textureDimension / voxelCountPerRegionY);
|
|
382
|
+
const regionCount = regionCountX * regionCountY;
|
|
383
|
+
if (regionCount >= tileCount) {
|
|
384
|
+
break;
|
|
385
|
+
} else {
|
|
386
|
+
textureDimension *= 2;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
const textureMemoryByteLength =
|
|
391
|
+
textureDimension * textureDimension * channelCount * datatypeSizeInBytes;
|
|
392
|
+
return textureMemoryByteLength;
|
|
393
|
+
};
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* @param {Number} index
|
|
397
|
+
* @param {Float32Array|Uint16Array|Uint8Array} data
|
|
398
|
+
*/
|
|
399
|
+
Megatexture.prototype.writeDataToTexture = function (index, data) {
|
|
400
|
+
// Unsigned short textures not allowed in webgl 1, so treat as float
|
|
401
|
+
const tileData =
|
|
402
|
+
data.constructor === Uint16Array ? new Float32Array(data) : data;
|
|
403
|
+
|
|
404
|
+
const voxelDimensionsPerTile = this.voxelCountPerTile;
|
|
405
|
+
const sliceDimensionsPerRegion = this.sliceCountPerRegion;
|
|
406
|
+
const voxelDimensionsPerRegion = this.voxelCountPerRegion;
|
|
407
|
+
const channelCount = this.channelCount;
|
|
408
|
+
|
|
409
|
+
const tileVoxelData = this.tileVoxelDataTemp;
|
|
410
|
+
for (let z = 0; z < voxelDimensionsPerTile.z; z++) {
|
|
411
|
+
const sliceVoxelOffsetX =
|
|
412
|
+
(z % sliceDimensionsPerRegion.x) * voxelDimensionsPerTile.x;
|
|
413
|
+
const sliceVoxelOffsetY =
|
|
414
|
+
Math.floor(z / sliceDimensionsPerRegion.x) * voxelDimensionsPerTile.y;
|
|
415
|
+
for (let y = 0; y < voxelDimensionsPerTile.y; y++) {
|
|
416
|
+
for (let x = 0; x < voxelDimensionsPerTile.x; x++) {
|
|
417
|
+
const readIndex =
|
|
418
|
+
z * voxelDimensionsPerTile.y * voxelDimensionsPerTile.x +
|
|
419
|
+
y * voxelDimensionsPerTile.x +
|
|
420
|
+
x;
|
|
421
|
+
const writeIndex =
|
|
422
|
+
(sliceVoxelOffsetY + y) * voxelDimensionsPerRegion.x +
|
|
423
|
+
(sliceVoxelOffsetX + x);
|
|
424
|
+
for (let c = 0; c < channelCount; c++) {
|
|
425
|
+
tileVoxelData[writeIndex * channelCount + c] =
|
|
426
|
+
tileData[readIndex * channelCount + c];
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const regionDimensionsPerMegatexture = this.regionCountPerMegatexture;
|
|
433
|
+
const voxelWidth = voxelDimensionsPerRegion.x;
|
|
434
|
+
const voxelHeight = voxelDimensionsPerRegion.y;
|
|
435
|
+
const voxelOffsetX =
|
|
436
|
+
(index % regionDimensionsPerMegatexture.x) * voxelDimensionsPerRegion.x;
|
|
437
|
+
const voxelOffsetY =
|
|
438
|
+
Math.floor(index / regionDimensionsPerMegatexture.x) *
|
|
439
|
+
voxelDimensionsPerRegion.y;
|
|
440
|
+
|
|
441
|
+
const source = {
|
|
442
|
+
arrayBufferView: tileVoxelData,
|
|
443
|
+
width: voxelWidth,
|
|
444
|
+
height: voxelHeight,
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
const copyOptions = {
|
|
448
|
+
source: source,
|
|
449
|
+
xOffset: voxelOffsetX,
|
|
450
|
+
yOffset: voxelOffsetY,
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
this.texture.copyFrom(copyOptions);
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Returns true if this object was destroyed; otherwise, false.
|
|
458
|
+
* <br /><br />
|
|
459
|
+
* If this object was destroyed, it should not be used; calling any function other than
|
|
460
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
|
|
461
|
+
*
|
|
462
|
+
* @returns {Boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
|
|
463
|
+
*
|
|
464
|
+
* @see Megatexture#destroy
|
|
465
|
+
*/
|
|
466
|
+
Megatexture.prototype.isDestroyed = function () {
|
|
467
|
+
return false;
|
|
468
|
+
};
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
|
|
472
|
+
* release of WebGL resources, instead of relying on the garbage collector to destroy this object.
|
|
473
|
+
* <br /><br />
|
|
474
|
+
* Once an object is destroyed, it should not be used; calling any function other than
|
|
475
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
|
|
476
|
+
* assign the return value (<code>undefined</code>) to the object as done in the example.
|
|
477
|
+
*
|
|
478
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
479
|
+
*
|
|
480
|
+
* @see Megatexture#isDestroyed
|
|
481
|
+
*
|
|
482
|
+
* @example
|
|
483
|
+
* megatexture = megatexture && megatexture.destroy();
|
|
484
|
+
*/
|
|
485
|
+
Megatexture.prototype.destroy = function () {
|
|
486
|
+
this.texture = this.texture && this.texture.destroy();
|
|
487
|
+
return destroyObject(this);
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
export default Megatexture;
|