@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
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "#ifdef HAS_EDGE_VISIBILITY\n\
|
|
3
|
+
void edgeVisibilityStageVS() {\n\
|
|
4
|
+
if (!u_isEdgePass) {\n\
|
|
5
|
+
return;\n\
|
|
6
|
+
}\n\
|
|
7
|
+
\n\
|
|
8
|
+
v_edgeType = a_edgeType;\n\
|
|
9
|
+
v_silhouetteNormalView = czm_normal * a_silhouetteNormal;\n\
|
|
10
|
+
v_faceNormalAView = czm_normal * a_faceNormalA;\n\
|
|
11
|
+
v_faceNormalBView = czm_normal * a_faceNormalB;\n\
|
|
12
|
+
v_edgeOffset = a_edgeOffset;\n\
|
|
13
|
+
\n\
|
|
14
|
+
// Silhouette detection: check both endpoints of the edge\n\
|
|
15
|
+
v_shouldDiscard = 0.0;\n\
|
|
16
|
+
float edgeTypeInt = a_edgeType * 255.0;\n\
|
|
17
|
+
if (edgeTypeInt > 0.5 && edgeTypeInt < 1.5) {\n\
|
|
18
|
+
vec3 normalA = normalize(v_faceNormalAView);\n\
|
|
19
|
+
vec3 normalB = normalize(v_faceNormalBView);\n\
|
|
20
|
+
const float perpTol = 2.5e-4;\n\
|
|
21
|
+
\n\
|
|
22
|
+
// Check at current vertex (first endpoint)\n\
|
|
23
|
+
vec4 currentPosEC = czm_modelView * vec4(v_positionMC, 1.0);\n\
|
|
24
|
+
vec3 toEye1 = normalize(-currentPosEC.xyz);\n\
|
|
25
|
+
float dotA1 = dot(normalA, toEye1);\n\
|
|
26
|
+
float dotB1 = dot(normalB, toEye1);\n\
|
|
27
|
+
\n\
|
|
28
|
+
// Check at other vertex (second endpoint)\n\
|
|
29
|
+
vec4 otherPosEC = czm_modelView * vec4(a_edgeOtherPos, 1.0);\n\
|
|
30
|
+
vec3 toEye2 = normalize(-otherPosEC.xyz);\n\
|
|
31
|
+
float dotA2 = dot(normalA, toEye2);\n\
|
|
32
|
+
float dotB2 = dot(normalB, toEye2);\n\
|
|
33
|
+
\n\
|
|
34
|
+
// Discard if EITHER endpoint is non-silhouette\n\
|
|
35
|
+
if (dotA1 * dotB1 > perpTol || dotA2 * dotB2 > perpTol) {\n\
|
|
36
|
+
v_shouldDiscard = 1.0;\n\
|
|
37
|
+
}\n\
|
|
38
|
+
}\n\
|
|
39
|
+
\n\
|
|
40
|
+
#ifdef HAS_EDGE_FEATURE_ID\n\
|
|
41
|
+
v_featureId_0 = a_edgeFeatureId;\n\
|
|
42
|
+
#endif\n\
|
|
43
|
+
\n\
|
|
44
|
+
#ifdef HAS_EDGE_COLOR_ATTRIBUTE\n\
|
|
45
|
+
v_edgeColor = a_edgeColor;\n\
|
|
46
|
+
#endif\n\
|
|
47
|
+
\n\
|
|
48
|
+
#ifdef HAS_LINE_PATTERN\n\
|
|
49
|
+
#ifdef HAS_EDGE_CUMULATIVE_DISTANCE\n\
|
|
50
|
+
v_lineCoord = a_edgeCumulativeDistance * u_pixelsPerWorld;\n\
|
|
51
|
+
#else\n\
|
|
52
|
+
vec4 currentClip = czm_modelViewProjection * vec4(v_positionMC, 1.0);\n\
|
|
53
|
+
vec2 currentScreen = ((currentClip.xy / currentClip.w) * 0.5 + 0.5) * czm_viewport.zw;\n\
|
|
54
|
+
\n\
|
|
55
|
+
vec4 otherClip = czm_modelViewProjection * vec4(a_edgeOtherPos, 1.0);\n\
|
|
56
|
+
vec2 otherScreen = ((otherClip.xy / otherClip.w) * 0.5 + 0.5) * czm_viewport.zw;\n\
|
|
57
|
+
vec2 windowDir = otherScreen - currentScreen;\n\
|
|
58
|
+
\n\
|
|
59
|
+
const float textureCoordinateBase = 8192.0;\n\
|
|
60
|
+
if (abs(windowDir.x) > abs(windowDir.y)) {\n\
|
|
61
|
+
v_lineCoord = textureCoordinateBase + currentScreen.x;\n\
|
|
62
|
+
} else {\n\
|
|
63
|
+
v_lineCoord = textureCoordinateBase + currentScreen.y;\n\
|
|
64
|
+
}\n\
|
|
65
|
+
#endif\n\
|
|
66
|
+
#endif\n\
|
|
67
|
+
\n\
|
|
68
|
+
// Expand vertex to form quad\n\
|
|
69
|
+
vec4 posClip = gl_Position;\n\
|
|
70
|
+
\n\
|
|
71
|
+
if (length(a_edgeOtherPos) > 0.0 && abs(a_edgeOffset) > 0.0) {\n\
|
|
72
|
+
vec4 currentClip = posClip;\n\
|
|
73
|
+
vec4 otherClip = czm_modelViewProjection * vec4(a_edgeOtherPos, 1.0);\n\
|
|
74
|
+
\n\
|
|
75
|
+
vec2 currentNDC = currentClip.xy / currentClip.w;\n\
|
|
76
|
+
vec2 otherNDC = otherClip.xy / otherClip.w;\n\
|
|
77
|
+
\n\
|
|
78
|
+
vec2 edgeDirNDC = otherNDC - currentNDC;\n\
|
|
79
|
+
\n\
|
|
80
|
+
// Ensure consistent edge direction\n\
|
|
81
|
+
if (edgeDirNDC.x < 0.0 || (abs(edgeDirNDC.x) < 0.001 && edgeDirNDC.y < 0.0)) {\n\
|
|
82
|
+
edgeDirNDC = -edgeDirNDC;\n\
|
|
83
|
+
}\n\
|
|
84
|
+
\n\
|
|
85
|
+
edgeDirNDC = normalize(edgeDirNDC);\n\
|
|
86
|
+
vec2 perpNDC = vec2(-edgeDirNDC.y, edgeDirNDC.x);\n\
|
|
87
|
+
\n\
|
|
88
|
+
// Convert line width from pixels to clip space\n\
|
|
89
|
+
float lineWidthPixels = u_lineWidth;\n\
|
|
90
|
+
vec2 viewportSize = czm_viewport.zw;\n\
|
|
91
|
+
vec2 clipPerPixel = (2.0 / viewportSize) * currentClip.w;\n\
|
|
92
|
+
vec2 offsetClip = perpNDC * lineWidthPixels * clipPerPixel * 0.5 * a_edgeOffset;\n\
|
|
93
|
+
\n\
|
|
94
|
+
posClip.xy += offsetClip;\n\
|
|
95
|
+
}\n\
|
|
96
|
+
\n\
|
|
97
|
+
gl_Position = posClip;\n\
|
|
98
|
+
}\n\
|
|
99
|
+
#endif\n\
|
|
100
|
+
";
|
|
@@ -11,17 +11,12 @@ vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend)
|
|
|
11
11
|
return color;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)
|
|
15
|
-
{
|
|
16
|
-
return vec2(textureTransform * vec3(texCoord, 1.0));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
14
|
#ifdef HAS_NORMAL_TEXTURE
|
|
20
15
|
vec2 getNormalTexCoords()
|
|
21
16
|
{
|
|
22
17
|
vec2 texCoord = TEXCOORD_NORMAL;
|
|
23
18
|
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM
|
|
24
|
-
texCoord =
|
|
19
|
+
texCoord = czm_computeTextureTransform(texCoord, u_normalTextureTransform);
|
|
25
20
|
#endif
|
|
26
21
|
return texCoord;
|
|
27
22
|
}
|
|
@@ -64,7 +59,18 @@ NormalInfo getNormalInfo(ProcessedAttributes attributes)
|
|
|
64
59
|
|
|
65
60
|
#ifdef HAS_NORMAL_TEXTURE
|
|
66
61
|
mat3 tbn = mat3(tangent, bitangent, geometryNormal);
|
|
67
|
-
|
|
62
|
+
|
|
63
|
+
vec3 normalSample;
|
|
64
|
+
#if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)
|
|
65
|
+
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM
|
|
66
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;
|
|
67
|
+
#else
|
|
68
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;
|
|
69
|
+
#endif
|
|
70
|
+
#else
|
|
71
|
+
normalSample = texture(u_normalTexture, normalTexCoords).rgb;
|
|
72
|
+
#endif
|
|
73
|
+
|
|
68
74
|
normalSample = 2.0 * normalSample - 1.0;
|
|
69
75
|
#ifdef HAS_NORMAL_TEXTURE_SCALE
|
|
70
76
|
normalSample.xy *= u_normalTextureScale;
|
|
@@ -109,7 +115,18 @@ vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)
|
|
|
109
115
|
#endif
|
|
110
116
|
|
|
111
117
|
mat3 tbn = mat3(t, b, geometryNormal);
|
|
112
|
-
|
|
118
|
+
|
|
119
|
+
vec3 normalSample;
|
|
120
|
+
#if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)
|
|
121
|
+
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM
|
|
122
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;
|
|
123
|
+
#else
|
|
124
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;
|
|
125
|
+
#endif
|
|
126
|
+
#else
|
|
127
|
+
normalSample = texture(u_normalTexture, normalTexCoords).rgb;
|
|
128
|
+
#endif
|
|
129
|
+
|
|
113
130
|
normalSample = 2.0 * normalSample - 1.0;
|
|
114
131
|
#ifdef HAS_NORMAL_TEXTURE_SCALE
|
|
115
132
|
normalSample.xy *= u_normalTextureScale;
|
|
@@ -171,10 +188,19 @@ vec4 getBaseColorFromTexture()
|
|
|
171
188
|
{
|
|
172
189
|
vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR;
|
|
173
190
|
#ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM
|
|
174
|
-
baseColorTexCoords =
|
|
191
|
+
baseColorTexCoords = czm_computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);
|
|
175
192
|
#endif
|
|
176
193
|
|
|
177
|
-
vec4 baseColorWithAlpha
|
|
194
|
+
vec4 baseColorWithAlpha;
|
|
195
|
+
#if defined(HAS_BASE_COLOR_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)
|
|
196
|
+
#ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM
|
|
197
|
+
baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams, u_baseColorTextureTransform));
|
|
198
|
+
#else
|
|
199
|
+
baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams));
|
|
200
|
+
#endif
|
|
201
|
+
#else
|
|
202
|
+
baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));
|
|
203
|
+
#endif
|
|
178
204
|
|
|
179
205
|
#ifdef HAS_BASE_COLOR_FACTOR
|
|
180
206
|
baseColorWithAlpha *= u_baseColorFactor;
|
|
@@ -189,7 +215,7 @@ vec3 getEmissiveFromTexture()
|
|
|
189
215
|
{
|
|
190
216
|
vec2 emissiveTexCoords = TEXCOORD_EMISSIVE;
|
|
191
217
|
#ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM
|
|
192
|
-
emissiveTexCoords =
|
|
218
|
+
emissiveTexCoords = czm_computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);
|
|
193
219
|
#endif
|
|
194
220
|
|
|
195
221
|
vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb);
|
|
@@ -207,7 +233,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)
|
|
|
207
233
|
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE
|
|
208
234
|
vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;
|
|
209
235
|
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM
|
|
210
|
-
specularGlossinessTexCoords =
|
|
236
|
+
specularGlossinessTexCoords = czm_computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);
|
|
211
237
|
#endif
|
|
212
238
|
|
|
213
239
|
vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords));
|
|
@@ -237,7 +263,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)
|
|
|
237
263
|
#ifdef HAS_DIFFUSE_TEXTURE
|
|
238
264
|
vec2 diffuseTexCoords = TEXCOORD_DIFFUSE;
|
|
239
265
|
#ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM
|
|
240
|
-
diffuseTexCoords =
|
|
266
|
+
diffuseTexCoords = czm_computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);
|
|
241
267
|
#endif
|
|
242
268
|
|
|
243
269
|
vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords));
|
|
@@ -266,7 +292,7 @@ float setMetallicRoughness(inout czm_modelMaterial material)
|
|
|
266
292
|
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE
|
|
267
293
|
vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS;
|
|
268
294
|
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM
|
|
269
|
-
metallicRoughnessTexCoords =
|
|
295
|
+
metallicRoughnessTexCoords = czm_computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);
|
|
270
296
|
#endif
|
|
271
297
|
|
|
272
298
|
vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb;
|
|
@@ -313,7 +339,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)
|
|
|
313
339
|
#ifdef HAS_SPECULAR_TEXTURE
|
|
314
340
|
vec2 specularTexCoords = TEXCOORD_SPECULAR;
|
|
315
341
|
#ifdef HAS_SPECULAR_TEXTURE_TRANSFORM
|
|
316
|
-
specularTexCoords =
|
|
342
|
+
specularTexCoords = czm_computeTextureTransform(specularTexCoords, u_specularTextureTransform);
|
|
317
343
|
#endif
|
|
318
344
|
float specularWeight = texture(u_specularTexture, specularTexCoords).a;
|
|
319
345
|
#ifdef HAS_SPECULAR_FACTOR
|
|
@@ -330,7 +356,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)
|
|
|
330
356
|
#ifdef HAS_SPECULAR_COLOR_TEXTURE
|
|
331
357
|
vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR;
|
|
332
358
|
#ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM
|
|
333
|
-
specularColorTexCoords =
|
|
359
|
+
specularColorTexCoords = czm_computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);
|
|
334
360
|
#endif
|
|
335
361
|
vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb;
|
|
336
362
|
vec3 specularColorFactor = czm_srgbToLinear(specularColorSample);
|
|
@@ -360,7 +386,7 @@ void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo)
|
|
|
360
386
|
#ifdef HAS_ANISOTROPY_TEXTURE
|
|
361
387
|
vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY;
|
|
362
388
|
#ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM
|
|
363
|
-
anisotropyTexCoords =
|
|
389
|
+
anisotropyTexCoords = czm_computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);
|
|
364
390
|
#endif
|
|
365
391
|
vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb;
|
|
366
392
|
direction = anisotropySample.rg * 2.0 - vec2(1.0);
|
|
@@ -383,7 +409,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
|
|
|
383
409
|
#ifdef HAS_CLEARCOAT_TEXTURE
|
|
384
410
|
vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT;
|
|
385
411
|
#ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM
|
|
386
|
-
clearcoatTexCoords =
|
|
412
|
+
clearcoatTexCoords = czm_computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);
|
|
387
413
|
#endif
|
|
388
414
|
float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r;
|
|
389
415
|
#ifdef HAS_CLEARCOAT_FACTOR
|
|
@@ -401,7 +427,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
|
|
|
401
427
|
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE
|
|
402
428
|
vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS;
|
|
403
429
|
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM
|
|
404
|
-
clearcoatRoughnessTexCoords =
|
|
430
|
+
clearcoatRoughnessTexCoords = czm_computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);
|
|
405
431
|
#endif
|
|
406
432
|
float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g;
|
|
407
433
|
#ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR
|
|
@@ -469,7 +495,7 @@ void materialStage(inout czm_modelMaterial material, ProcessedAttributes attribu
|
|
|
469
495
|
#ifdef HAS_OCCLUSION_TEXTURE
|
|
470
496
|
vec2 occlusionTexCoords = TEXCOORD_OCCLUSION;
|
|
471
497
|
#ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM
|
|
472
|
-
occlusionTexCoords =
|
|
498
|
+
occlusionTexCoords = czm_computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);
|
|
473
499
|
#endif
|
|
474
500
|
material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r;
|
|
475
501
|
#endif
|
|
@@ -12,17 +12,12 @@ vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend)\n\
|
|
|
12
12
|
return color;\n\
|
|
13
13
|
}\n\
|
|
14
14
|
\n\
|
|
15
|
-
vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)\n\
|
|
16
|
-
{\n\
|
|
17
|
-
return vec2(textureTransform * vec3(texCoord, 1.0));\n\
|
|
18
|
-
}\n\
|
|
19
|
-
\n\
|
|
20
15
|
#ifdef HAS_NORMAL_TEXTURE\n\
|
|
21
16
|
vec2 getNormalTexCoords()\n\
|
|
22
17
|
{\n\
|
|
23
18
|
vec2 texCoord = TEXCOORD_NORMAL;\n\
|
|
24
19
|
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM\n\
|
|
25
|
-
texCoord =
|
|
20
|
+
texCoord = czm_computeTextureTransform(texCoord, u_normalTextureTransform);\n\
|
|
26
21
|
#endif\n\
|
|
27
22
|
return texCoord;\n\
|
|
28
23
|
}\n\
|
|
@@ -65,7 +60,18 @@ NormalInfo getNormalInfo(ProcessedAttributes attributes)\n\
|
|
|
65
60
|
\n\
|
|
66
61
|
#ifdef HAS_NORMAL_TEXTURE\n\
|
|
67
62
|
mat3 tbn = mat3(tangent, bitangent, geometryNormal);\n\
|
|
68
|
-
|
|
63
|
+
\n\
|
|
64
|
+
vec3 normalSample;\n\
|
|
65
|
+
#if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)\n\
|
|
66
|
+
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM\n\
|
|
67
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;\n\
|
|
68
|
+
#else\n\
|
|
69
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;\n\
|
|
70
|
+
#endif\n\
|
|
71
|
+
#else\n\
|
|
72
|
+
normalSample = texture(u_normalTexture, normalTexCoords).rgb;\n\
|
|
73
|
+
#endif\n\
|
|
74
|
+
\n\
|
|
69
75
|
normalSample = 2.0 * normalSample - 1.0;\n\
|
|
70
76
|
#ifdef HAS_NORMAL_TEXTURE_SCALE\n\
|
|
71
77
|
normalSample.xy *= u_normalTextureScale;\n\
|
|
@@ -110,7 +116,18 @@ vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)\n
|
|
|
110
116
|
#endif\n\
|
|
111
117
|
\n\
|
|
112
118
|
mat3 tbn = mat3(t, b, geometryNormal);\n\
|
|
113
|
-
|
|
119
|
+
\n\
|
|
120
|
+
vec3 normalSample;\n\
|
|
121
|
+
#if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)\n\
|
|
122
|
+
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM\n\
|
|
123
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;\n\
|
|
124
|
+
#else\n\
|
|
125
|
+
normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;\n\
|
|
126
|
+
#endif\n\
|
|
127
|
+
#else\n\
|
|
128
|
+
normalSample = texture(u_normalTexture, normalTexCoords).rgb;\n\
|
|
129
|
+
#endif\n\
|
|
130
|
+
\n\
|
|
114
131
|
normalSample = 2.0 * normalSample - 1.0;\n\
|
|
115
132
|
#ifdef HAS_NORMAL_TEXTURE_SCALE\n\
|
|
116
133
|
normalSample.xy *= u_normalTextureScale;\n\
|
|
@@ -172,10 +189,19 @@ vec4 getBaseColorFromTexture()\n\
|
|
|
172
189
|
{\n\
|
|
173
190
|
vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR;\n\
|
|
174
191
|
#ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM\n\
|
|
175
|
-
baseColorTexCoords =
|
|
192
|
+
baseColorTexCoords = czm_computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);\n\
|
|
176
193
|
#endif\n\
|
|
177
194
|
\n\
|
|
178
|
-
vec4 baseColorWithAlpha
|
|
195
|
+
vec4 baseColorWithAlpha;\n\
|
|
196
|
+
#if defined(HAS_BASE_COLOR_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)\n\
|
|
197
|
+
#ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM\n\
|
|
198
|
+
baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams, u_baseColorTextureTransform));\n\
|
|
199
|
+
#else\n\
|
|
200
|
+
baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams));\n\
|
|
201
|
+
#endif\n\
|
|
202
|
+
#else\n\
|
|
203
|
+
baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));\n\
|
|
204
|
+
#endif\n\
|
|
179
205
|
\n\
|
|
180
206
|
#ifdef HAS_BASE_COLOR_FACTOR\n\
|
|
181
207
|
baseColorWithAlpha *= u_baseColorFactor;\n\
|
|
@@ -190,7 +216,7 @@ vec3 getEmissiveFromTexture()\n\
|
|
|
190
216
|
{\n\
|
|
191
217
|
vec2 emissiveTexCoords = TEXCOORD_EMISSIVE;\n\
|
|
192
218
|
#ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM\n\
|
|
193
|
-
emissiveTexCoords =
|
|
219
|
+
emissiveTexCoords = czm_computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);\n\
|
|
194
220
|
#endif\n\
|
|
195
221
|
\n\
|
|
196
222
|
vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb);\n\
|
|
@@ -208,7 +234,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)\n\
|
|
|
208
234
|
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE\n\
|
|
209
235
|
vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;\n\
|
|
210
236
|
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM\n\
|
|
211
|
-
specularGlossinessTexCoords =
|
|
237
|
+
specularGlossinessTexCoords = czm_computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);\n\
|
|
212
238
|
#endif\n\
|
|
213
239
|
\n\
|
|
214
240
|
vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords));\n\
|
|
@@ -238,7 +264,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)\n\
|
|
|
238
264
|
#ifdef HAS_DIFFUSE_TEXTURE\n\
|
|
239
265
|
vec2 diffuseTexCoords = TEXCOORD_DIFFUSE;\n\
|
|
240
266
|
#ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM\n\
|
|
241
|
-
diffuseTexCoords =
|
|
267
|
+
diffuseTexCoords = czm_computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);\n\
|
|
242
268
|
#endif\n\
|
|
243
269
|
\n\
|
|
244
270
|
vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords));\n\
|
|
@@ -267,7 +293,7 @@ float setMetallicRoughness(inout czm_modelMaterial material)\n\
|
|
|
267
293
|
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE\n\
|
|
268
294
|
vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS;\n\
|
|
269
295
|
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM\n\
|
|
270
|
-
metallicRoughnessTexCoords =
|
|
296
|
+
metallicRoughnessTexCoords = czm_computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);\n\
|
|
271
297
|
#endif\n\
|
|
272
298
|
\n\
|
|
273
299
|
vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb;\n\
|
|
@@ -314,7 +340,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)\n\
|
|
|
314
340
|
#ifdef HAS_SPECULAR_TEXTURE\n\
|
|
315
341
|
vec2 specularTexCoords = TEXCOORD_SPECULAR;\n\
|
|
316
342
|
#ifdef HAS_SPECULAR_TEXTURE_TRANSFORM\n\
|
|
317
|
-
specularTexCoords =
|
|
343
|
+
specularTexCoords = czm_computeTextureTransform(specularTexCoords, u_specularTextureTransform);\n\
|
|
318
344
|
#endif\n\
|
|
319
345
|
float specularWeight = texture(u_specularTexture, specularTexCoords).a;\n\
|
|
320
346
|
#ifdef HAS_SPECULAR_FACTOR\n\
|
|
@@ -331,7 +357,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)\n\
|
|
|
331
357
|
#ifdef HAS_SPECULAR_COLOR_TEXTURE\n\
|
|
332
358
|
vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR;\n\
|
|
333
359
|
#ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM\n\
|
|
334
|
-
specularColorTexCoords =
|
|
360
|
+
specularColorTexCoords = czm_computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);\n\
|
|
335
361
|
#endif\n\
|
|
336
362
|
vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb;\n\
|
|
337
363
|
vec3 specularColorFactor = czm_srgbToLinear(specularColorSample);\n\
|
|
@@ -361,7 +387,7 @@ void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo)\n
|
|
|
361
387
|
#ifdef HAS_ANISOTROPY_TEXTURE\n\
|
|
362
388
|
vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY;\n\
|
|
363
389
|
#ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM\n\
|
|
364
|
-
anisotropyTexCoords =
|
|
390
|
+
anisotropyTexCoords = czm_computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);\n\
|
|
365
391
|
#endif\n\
|
|
366
392
|
vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb;\n\
|
|
367
393
|
direction = anisotropySample.rg * 2.0 - vec2(1.0);\n\
|
|
@@ -384,7 +410,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
|
|
|
384
410
|
#ifdef HAS_CLEARCOAT_TEXTURE\n\
|
|
385
411
|
vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT;\n\
|
|
386
412
|
#ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM\n\
|
|
387
|
-
clearcoatTexCoords =
|
|
413
|
+
clearcoatTexCoords = czm_computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);\n\
|
|
388
414
|
#endif\n\
|
|
389
415
|
float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r;\n\
|
|
390
416
|
#ifdef HAS_CLEARCOAT_FACTOR\n\
|
|
@@ -402,7 +428,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
|
|
|
402
428
|
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE\n\
|
|
403
429
|
vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS;\n\
|
|
404
430
|
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM\n\
|
|
405
|
-
clearcoatRoughnessTexCoords =
|
|
431
|
+
clearcoatRoughnessTexCoords = czm_computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);\n\
|
|
406
432
|
#endif\n\
|
|
407
433
|
float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g;\n\
|
|
408
434
|
#ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR\n\
|
|
@@ -470,7 +496,7 @@ void materialStage(inout czm_modelMaterial material, ProcessedAttributes attribu
|
|
|
470
496
|
#ifdef HAS_OCCLUSION_TEXTURE\n\
|
|
471
497
|
vec2 occlusionTexCoords = TEXCOORD_OCCLUSION;\n\
|
|
472
498
|
#ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM\n\
|
|
473
|
-
occlusionTexCoords =
|
|
499
|
+
occlusionTexCoords = czm_computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);\n\
|
|
474
500
|
#endif\n\
|
|
475
501
|
material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r;\n\
|
|
476
502
|
#endif\n\
|
|
@@ -25,6 +25,19 @@ vec4 handleAlpha(vec3 color, float alpha)
|
|
|
25
25
|
return vec4(color, alpha);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
void lineStyleStage()
|
|
29
|
+
{
|
|
30
|
+
#if defined(HAS_LINE_PATTERN) && !defined(HAS_EDGE_VISIBILITY)
|
|
31
|
+
const float maskLength = 16.0;
|
|
32
|
+
float dashPosition = fract(v_lineCoord / maskLength);
|
|
33
|
+
float maskIndex = floor(dashPosition * maskLength);
|
|
34
|
+
float maskTest = floor(u_linePattern / pow(2.0, maskIndex));
|
|
35
|
+
if (mod(maskTest, 2.0) < 1.0) {
|
|
36
|
+
discard;
|
|
37
|
+
}
|
|
38
|
+
#endif
|
|
39
|
+
}
|
|
40
|
+
|
|
28
41
|
SelectedFeature selectedFeature;
|
|
29
42
|
|
|
30
43
|
void main()
|
|
@@ -107,6 +120,8 @@ void main()
|
|
|
107
120
|
// When picking metadata END
|
|
108
121
|
//========================================================================
|
|
109
122
|
|
|
123
|
+
lineStyleStage();
|
|
124
|
+
|
|
110
125
|
#ifdef HAS_CLIPPING_PLANES
|
|
111
126
|
modelClippingPlanesStage(color);
|
|
112
127
|
#endif
|
|
@@ -26,6 +26,19 @@ vec4 handleAlpha(vec3 color, float alpha)\n\
|
|
|
26
26
|
return vec4(color, alpha);\n\
|
|
27
27
|
}\n\
|
|
28
28
|
\n\
|
|
29
|
+
void lineStyleStage()\n\
|
|
30
|
+
{\n\
|
|
31
|
+
#if defined(HAS_LINE_PATTERN) && !defined(HAS_EDGE_VISIBILITY)\n\
|
|
32
|
+
const float maskLength = 16.0;\n\
|
|
33
|
+
float dashPosition = fract(v_lineCoord / maskLength);\n\
|
|
34
|
+
float maskIndex = floor(dashPosition * maskLength);\n\
|
|
35
|
+
float maskTest = floor(u_linePattern / pow(2.0, maskIndex));\n\
|
|
36
|
+
if (mod(maskTest, 2.0) < 1.0) {\n\
|
|
37
|
+
discard;\n\
|
|
38
|
+
}\n\
|
|
39
|
+
#endif\n\
|
|
40
|
+
}\n\
|
|
41
|
+
\n\
|
|
29
42
|
SelectedFeature selectedFeature;\n\
|
|
30
43
|
\n\
|
|
31
44
|
void main()\n\
|
|
@@ -107,6 +120,8 @@ void main()\n\
|
|
|
107
120
|
#endif\n\
|
|
108
121
|
// When picking metadata END\n\
|
|
109
122
|
//========================================================================\n\
|
|
123
|
+
\n\
|
|
124
|
+
lineStyleStage();\n\
|
|
110
125
|
\n\
|
|
111
126
|
#ifdef HAS_CLIPPING_PLANES\n\
|
|
112
127
|
modelClippingPlanesStage(color);\n\
|
|
@@ -110,6 +110,10 @@ void main()
|
|
|
110
110
|
// This returns the value that will be assigned to gl_Position.
|
|
111
111
|
vec4 positionClip = geometryStage(attributes, modelView, normal);
|
|
112
112
|
|
|
113
|
+
#if defined(HAS_LINE_CUMULATIVE_DISTANCE) || defined(HAS_LINE_PATTERN)
|
|
114
|
+
lineStyleStageVS(attributes);
|
|
115
|
+
#endif
|
|
116
|
+
|
|
113
117
|
// This must go after the geometry stage as it needs v_positionWC
|
|
114
118
|
#ifdef HAS_ATMOSPHERE
|
|
115
119
|
atmosphereStage(attributes);
|
|
@@ -157,6 +161,10 @@ void main()
|
|
|
157
161
|
// We will discard points with v_pointCloudShow == 0 in the fragment shader.
|
|
158
162
|
gl_Position = positionClip;
|
|
159
163
|
|
|
164
|
+
#ifdef HAS_EDGE_VISIBILITY
|
|
165
|
+
edgeVisibilityStageVS();
|
|
166
|
+
#endif
|
|
167
|
+
|
|
160
168
|
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
|
|
161
169
|
v_pointCloudShow = show;
|
|
162
170
|
#endif
|
|
@@ -110,6 +110,10 @@ void main()\n\
|
|
|
110
110
|
// Compute the final position in each coordinate system needed.\n\
|
|
111
111
|
// This returns the value that will be assigned to gl_Position.\n\
|
|
112
112
|
vec4 positionClip = geometryStage(attributes, modelView, normal);\n\
|
|
113
|
+
\n\
|
|
114
|
+
#if defined(HAS_LINE_CUMULATIVE_DISTANCE) || defined(HAS_LINE_PATTERN)\n\
|
|
115
|
+
lineStyleStageVS(attributes);\n\
|
|
116
|
+
#endif\n\
|
|
113
117
|
\n\
|
|
114
118
|
// This must go after the geometry stage as it needs v_positionWC\n\
|
|
115
119
|
#ifdef HAS_ATMOSPHERE\n\
|
|
@@ -157,6 +161,10 @@ void main()\n\
|
|
|
157
161
|
//\n\
|
|
158
162
|
// We will discard points with v_pointCloudShow == 0 in the fragment shader.\n\
|
|
159
163
|
gl_Position = positionClip;\n\
|
|
164
|
+
\n\
|
|
165
|
+
#ifdef HAS_EDGE_VISIBILITY\n\
|
|
166
|
+
edgeVisibilityStageVS();\n\
|
|
167
|
+
#endif\n\
|
|
160
168
|
\n\
|
|
161
169
|
#ifdef HAS_POINT_CLOUD_SHOW_STYLE\n\
|
|
162
170
|
v_pointCloudShow = show;\n\
|
|
@@ -52,48 +52,79 @@ void main() {
|
|
|
52
52
|
}
|
|
53
53
|
int regionIndex = getPolygonIndex(dimension, v_textureCoordinates);
|
|
54
54
|
|
|
55
|
+
if (regionIndex >= u_extentsLength) {
|
|
56
|
+
return; // done (no polygons in this region)
|
|
57
|
+
}
|
|
58
|
+
|
|
55
59
|
for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) {
|
|
56
60
|
ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex);
|
|
57
61
|
int positionsLength = positionsLengthAndExtents.x;
|
|
58
62
|
int polygonExtentsIndex = positionsLengthAndExtents.y;
|
|
59
63
|
lastPolygonIndex += 1;
|
|
60
64
|
|
|
65
|
+
// Read the individual polygon extent (2 pixels: south/west, latRange/lonRange)
|
|
66
|
+
vec2 extentsSouthWest = getPolygonPosition(lastPolygonIndex);
|
|
67
|
+
vec2 extentsRange = getPolygonPosition(lastPolygonIndex + 1);
|
|
68
|
+
vec4 polygonExtent = vec4(extentsSouthWest, extentsRange);
|
|
69
|
+
lastPolygonIndex += 2;
|
|
70
|
+
|
|
71
|
+
if (polygonExtentsIndex < regionIndex) {
|
|
72
|
+
lastPolygonIndex += positionsLength;
|
|
73
|
+
continue; // skip to next (TODO: could optimize further if we knew how many polygons to skip)
|
|
74
|
+
} else if (polygonExtentsIndex > regionIndex) {
|
|
75
|
+
break; // done (we know polygons are sorted by regionIndex)
|
|
76
|
+
}
|
|
77
|
+
|
|
61
78
|
// Only compute signed distance for the relevant part of the atlas
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
float clipAmount = czm_infinity;
|
|
80
|
+
vec4 extents = getExtents(polygonExtentsIndex);
|
|
81
|
+
vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension;
|
|
82
|
+
vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); // current pixel position
|
|
83
|
+
|
|
84
|
+
// Only consider polygons whos boundingbox includes current pixel (with a slight padding)
|
|
85
|
+
float padding = 0.05; // 5% of polygon extents
|
|
86
|
+
float polygonNorth = polygonExtent.x + polygonExtent.z;
|
|
87
|
+
float polygonEast = polygonExtent.y + polygonExtent.w;
|
|
88
|
+
float latPadding = padding * polygonExtent.z; // padding as fraction of latitude range
|
|
89
|
+
float lonPadding = padding * polygonExtent.w; // padding as fraction of longitude range
|
|
90
|
+
if (p.x < polygonExtent.x - latPadding || p.x > polygonNorth + latPadding ||
|
|
91
|
+
p.y < polygonExtent.y - lonPadding || p.y > polygonEast + lonPadding) {
|
|
92
|
+
lastPolygonIndex += positionsLength;
|
|
93
|
+
continue; // skip to next
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
float s = 1.0;
|
|
97
|
+
|
|
98
|
+
// Check each edge for absolute distance.
|
|
99
|
+
// Cache the previous vertex to halve the texture reads per iteration.
|
|
100
|
+
vec2 prev = getPolygonPosition(lastPolygonIndex + positionsLength - 1);
|
|
101
|
+
for (int i = 0; i < positionsLength; i++) {
|
|
102
|
+
vec2 a = getPolygonPosition(lastPolygonIndex + i);
|
|
103
|
+
vec2 b = prev;
|
|
104
|
+
prev = a;
|
|
105
|
+
|
|
106
|
+
vec2 ab = b - a;
|
|
107
|
+
vec2 pa = p - a;
|
|
108
|
+
float t = dot(pa, ab) / dot(ab, ab);
|
|
109
|
+
t = clamp(t, 0.0, 1.0);
|
|
110
|
+
|
|
111
|
+
vec2 pq = pa - t * ab;
|
|
112
|
+
float d = length(pq);
|
|
113
|
+
|
|
114
|
+
// Inside / outside computation to determine sign
|
|
115
|
+
bvec3 cond = bvec3(p.y >= a.y,
|
|
116
|
+
p.y < b.y,
|
|
117
|
+
ab.x * pa.y > ab.y * pa.x);
|
|
118
|
+
if (all(cond) || all(not(cond))) s = -s;
|
|
119
|
+
if (abs(d) < abs(clipAmount)) {
|
|
120
|
+
clipAmount = d;
|
|
90
121
|
}
|
|
122
|
+
}
|
|
91
123
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
124
|
+
// Normalize the range to [0,1]
|
|
125
|
+
vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5;
|
|
126
|
+
// In the case where we've iterated through multiple polygons, take the minimum
|
|
127
|
+
out_FragColor = min(out_FragColor, result);
|
|
97
128
|
|
|
98
129
|
lastPolygonIndex += positionsLength;
|
|
99
130
|
}
|