@cesium/engine 24.0.0 → 26.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-6WLHJFD3.js → chunk-3VFEWOBI.js} +59 -32
- package/Build/Workers/{chunk-UQU4RXLT.js → chunk-424RNO3D.js} +50 -45
- package/Build/Workers/chunk-4MGMYHOO.js +147 -0
- package/Build/Workers/{chunk-AMIHNSST.js → chunk-4S7IE3LB.js} +2 -2
- package/Build/Workers/{chunk-J6AW5YHS.js → chunk-52JDLOEM.js} +14 -14
- package/Build/Workers/{chunk-6RMS4S72.js → chunk-54I6Y66F.js} +6 -6
- package/Build/Workers/{chunk-C6P4IG5P.js → chunk-6YEE6JDR.js} +6 -6
- package/Build/Workers/{chunk-72VYSVEW.js → chunk-7J2HKPRH.js} +11 -10
- package/Build/Workers/{chunk-7O5XJTVE.js → chunk-7WM2PX4V.js} +5 -5
- package/Build/Workers/{chunk-5A2SW66E.js → chunk-ACXQXN46.js} +16 -16
- package/Build/Workers/{chunk-VLDEUTOP.js → chunk-AYKR4VBR.js} +2 -2
- package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-C6J67V5A.js} +3 -2
- package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-C6KNZ7T4.js} +17 -17
- package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-CFQP6LYM.js} +4 -4
- package/Build/Workers/{chunk-YAOZMOFL.js → chunk-CXOYE2WM.js} +5 -5
- package/Build/Workers/{chunk-B6SCUUFP.js → chunk-CZEYZU4N.js} +10 -10
- package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DBOEKL43.js} +7 -7
- package/Build/Workers/{chunk-44EMEGKW.js → chunk-DDWSZVMY.js} +5 -5
- package/Build/Workers/{chunk-7X322WP2.js → chunk-DOBXCNC3.js} +13 -13
- package/Build/Workers/{chunk-JCI63T3K.js → chunk-E7VQ76KE.js} +6 -6
- package/Build/Workers/{chunk-7TYLCBGK.js → chunk-EBSIOBXY.js} +12 -10
- package/Build/Workers/{chunk-GQUNK2XC.js → chunk-EF2QYXGA.js} +14 -14
- package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-EPYXRCDB.js} +12 -12
- package/Build/Workers/{chunk-63SIWPLS.js → chunk-F6QDY6HU.js} +13 -13
- package/Build/Workers/{chunk-XY6HMDGI.js → chunk-FRQZECAO.js} +5 -5
- package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-G7PXZRVF.js} +7 -7
- package/Build/Workers/{chunk-N65BAKSH.js → chunk-INUEEEQA.js} +8 -8
- package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-IRBKFCEJ.js} +2 -2
- package/Build/Workers/{chunk-UIGVOKKI.js → chunk-IYOUHCZB.js} +3 -2
- package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-J6BWOHUF.js} +3 -3
- package/Build/Workers/{chunk-A47HVBC5.js → chunk-KFSTQKNM.js} +7 -7
- package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-KKOSKAZB.js} +17 -17
- package/Build/Workers/{chunk-6MPGQEHA.js → chunk-KSSWJIZW.js} +2 -2
- package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-M3B5JKSM.js} +3 -2
- package/Build/Workers/chunk-MPZHGZU6.js +2342 -0
- package/Build/Workers/{chunk-YJZGW74L.js → chunk-MYP774IS.js} +2213 -1349
- package/Build/Workers/{chunk-LIB2H534.js → chunk-O3EA5HS7.js} +12 -11
- package/Build/Workers/{chunk-ILMFADZA.js → chunk-P3CK7MCY.js} +27 -5
- package/Build/Workers/chunk-Q3PY526V.js +3201 -0
- package/Build/Workers/chunk-QN67VG36.js +973 -0
- package/Build/Workers/{chunk-XJRBB253.js → chunk-QRWGUWI6.js} +11 -11
- package/Build/Workers/{chunk-AF3MU2RL.js → chunk-S4MCOY6I.js} +7 -6
- package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-SMQZZOW6.js} +10 -10
- package/Build/Workers/{chunk-PVV64VFW.js → chunk-TKKIREQ6.js} +3 -2
- package/Build/Workers/{chunk-MKM27KGV.js → chunk-U3ZA64U7.js} +2 -2
- package/Build/Workers/{chunk-2N4KDHS3.js → chunk-UA25D5MX.js} +12 -11
- package/Build/Workers/{chunk-RQNJD3O4.js → chunk-UOOIQ3KX.js} +12 -12
- package/Build/Workers/{chunk-GOQBUCXH.js → chunk-V7VQKN6N.js} +709 -431
- package/Build/Workers/{chunk-LXMCPFFS.js → chunk-VQYETPWC.js} +4 -4
- package/Build/Workers/{chunk-NKT5K3K3.js → chunk-VWV2IJRB.js} +13 -12
- package/Build/Workers/chunk-XZMBNNDX.js +1287 -0
- package/Build/Workers/{chunk-ISY4EZCA.js → chunk-Y57HREW5.js} +4 -4
- package/Build/Workers/{chunk-EDXL4W76.js → chunk-Y5BF6AFU.js} +2 -2
- package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-YLY7NKAB.js} +4 -4
- package/Build/Workers/{chunk-4TIG36AW.js → chunk-ZK3CF7ZD.js} +12 -12
- package/Build/Workers/{chunk-AJLTU6PF.js → chunk-ZP7JMQV4.js} +4 -1
- package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-ZZ46LWL6.js} +1 -1
- 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 +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- 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 +1 -1
- package/Source/Core/Cartesian3.js +2 -3
- package/Source/Core/Cartesian4.js +1 -1
- 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 +844 -835
- package/Source/Core/ComponentDatatype.js +39 -1
- package/Source/Core/CornerType.js +6 -1
- package/Source/Core/Credit.js +121 -124
- 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/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 +40 -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/Resource.js +1 -1
- package/Source/Core/ScreenSpaceEventHandler.js +51 -41
- package/Source/Core/ScreenSpaceEventType.js +6 -1
- 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/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/createColorRamp.js +37 -0
- package/Source/Core/globalTypes.js +25 -0
- package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
- package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
- 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 +10 -3
- package/Source/Renderer/PickId.js +44 -0
- package/Source/Renderer/PixelDatatype.js +3 -1
- 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/createUniform.js +346 -239
- package/Source/Renderer/createUniformArray.js +494 -381
- 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/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 +1 -0
- package/Source/Scene/BufferPointCollection.js +17 -1
- package/Source/Scene/BufferPolygon.js +3 -2
- package/Source/Scene/BufferPolygonCollection.js +13 -1
- package/Source/Scene/BufferPolyline.js +1 -0
- package/Source/Scene/BufferPolylineCollection.js +5 -1
- package/Source/Scene/BufferPrimitiveCollection.js +210 -43
- package/Source/Scene/CameraEventAggregator.js +30 -18
- package/Source/Scene/CameraEventType.js +6 -1
- package/Source/Scene/Cesium3DTile.js +54 -1
- package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
- package/Source/Scene/Cesium3DTileContent.js +195 -254
- package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
- 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/Cesium3DTileVectorFeature.js +586 -0
- package/Source/Scene/Cesium3DTileset.js +46 -6
- package/Source/Scene/ClassificationType.js +3 -1
- package/Source/Scene/CloudType.js +3 -1
- package/Source/Scene/ColorBlendMode.js +4 -1
- package/Source/Scene/Composite3DTileContent.js +254 -292
- package/Source/Scene/CullFace.js +6 -1
- package/Source/Scene/DepthFunction.js +6 -1
- package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
- package/Source/Scene/EdgeDisplayMode.js +50 -0
- package/Source/Scene/Empty3DTileContent.js +100 -132
- package/Source/Scene/EquirectangularPanorama.js +1 -0
- package/Source/Scene/ExpressionNodeType.js +6 -1
- package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
- package/Source/Scene/GeoJsonPrimitive.js +874 -0
- package/Source/Scene/Geometry3DTileContent.js +151 -185
- 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 +109 -5
- package/Source/Scene/GltfLoaderUtil.js +14 -0
- package/Source/Scene/GltfSpzLoader.js +0 -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/ImageryProvider.js +1 -1
- package/Source/Scene/ImageryState.js +6 -1
- package/Source/Scene/Implicit3DTileContent.js +179 -214
- 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/LabelStyle.js +6 -1
- package/Source/Scene/MVTDataProvider.js +147 -0
- package/Source/Scene/MapMode2D.js +6 -1
- package/Source/Scene/MetadataComponentType.js +3 -1
- 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/CustomShaderTranslucencyMode.js +5 -1
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +78 -337
- 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 +184 -3
- package/Source/Scene/Model/Model.js +34 -0
- package/Source/Scene/Model/Model3DTileContent.js +424 -458
- package/Source/Scene/Model/ModelDrawCommand.js +31 -3
- package/Source/Scene/Model/ModelReader.js +474 -3
- package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
- package/Source/Scene/Model/ModelType.js +3 -1
- package/Source/Scene/Model/ModelUtility.js +4 -0
- 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 +500 -139
- 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 +47 -2
- package/Source/Scene/Multiple3DTileContent.js +291 -334
- 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/Scene.js +26 -0
- package/Source/Scene/SceneMode.js +4 -1
- package/Source/Scene/ShadowMode.js +3 -1
- package/Source/Scene/SkyBox.js +1 -1
- 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/TileState.js +7 -1
- package/Source/Scene/Tileset3DTileContent.js +113 -146
- package/Source/Scene/Tonemapper.js +5 -1
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
- package/Source/Scene/Vector3DTileContent.js +205 -234
- package/Source/Scene/VectorGltf3DTileContent.js +131 -61
- package/Source/Scene/VertexAttributeSemantic.js +3 -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/VoxelPrimitive.js +159 -175
- package/Source/Scene/VoxelProvider.js +64 -90
- package/Source/Scene/VoxelShapeType.js +3 -1
- package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
- package/Source/Scene/buildVoxelCustomShader.js +199 -0
- package/Source/Scene/decodeMVT.js +634 -0
- package/Source/Scene/renderBufferPointCollection.js +124 -127
- package/Source/Scene/renderBufferPolygonCollection.js +122 -122
- package/Source/Scene/renderBufferPolylineCollection.js +386 -238
- package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
- package/Source/Shaders/BufferPointMaterialFS.js +1 -0
- package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
- package/Source/Shaders/BufferPointMaterialVS.js +20 -10
- package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
- package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +4 -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/EdgeVisibilityStageVS.glsl +0 -1
- package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
- package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
- package/Source/Shaders/Model/MaterialStageFS.js +46 -20
- 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/index.d.ts +595 -343
- package/index.js +392 -378
- package/package.json +3 -3
- package/Build/Workers/chunk-DVB56LG7.js +0 -114
- package/Build/Workers/chunk-HKUES6UG.js +0 -2357
- package/Build/Workers/chunk-HRHRYFHS.js +0 -940
- package/Build/Workers/chunk-KLPGTXS3.js +0 -642
- package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
|
@@ -14,6 +14,7 @@ import BlendingState from "../BlendingState.js";
|
|
|
14
14
|
import CullFace from "../CullFace.js";
|
|
15
15
|
import SceneMode from "../SceneMode.js";
|
|
16
16
|
import ShadowMode from "../ShadowMode.js";
|
|
17
|
+
import EdgeDisplayMode from "../EdgeDisplayMode.js";
|
|
17
18
|
import StencilConstants from "../StencilConstants.js";
|
|
18
19
|
import StencilFunction from "../StencilFunction.js";
|
|
19
20
|
import StencilOperation from "../StencilOperation.js";
|
|
@@ -572,10 +573,22 @@ ModelDrawCommand.prototype.pushCommands = function (frameState, result) {
|
|
|
572
573
|
return;
|
|
573
574
|
}
|
|
574
575
|
|
|
576
|
+
// Skip surface rendering if EDGES_ONLY mode is enabled and this primitive
|
|
577
|
+
// has edge visibility data. Only the edges will render (via pushEdgeCommands).
|
|
578
|
+
if (
|
|
579
|
+
this._model.edgeDisplayMode === EdgeDisplayMode.EDGES_ONLY &&
|
|
580
|
+
this._needsEdgeCommands
|
|
581
|
+
) {
|
|
582
|
+
return result;
|
|
583
|
+
}
|
|
584
|
+
|
|
575
585
|
pushCommand(result, this._originalCommand, use2D);
|
|
576
586
|
|
|
577
587
|
// Push edge commands after the original command
|
|
578
|
-
if (
|
|
588
|
+
if (
|
|
589
|
+
this._needsEdgeCommands &&
|
|
590
|
+
this._model.edgeDisplayMode !== EdgeDisplayMode.SURFACES_ONLY
|
|
591
|
+
) {
|
|
579
592
|
pushCommand(result, this._edgeCommand, use2D);
|
|
580
593
|
}
|
|
581
594
|
|
|
@@ -623,6 +636,23 @@ ModelDrawCommand.prototype.pushEdgeCommands = function (frameState, result) {
|
|
|
623
636
|
return result;
|
|
624
637
|
}
|
|
625
638
|
|
|
639
|
+
// SURFACES_ONLY mode suppresses all edge rendering
|
|
640
|
+
if (this._model.edgeDisplayMode === EdgeDisplayMode.SURFACES_ONLY) {
|
|
641
|
+
return result;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// Use direct pass (renders to main framebuffer) when EDGES_ONLY mode is enabled,
|
|
645
|
+
// otherwise use MRT pass (renders to edge framebuffer for compositing)
|
|
646
|
+
const edgePass =
|
|
647
|
+
this._model.edgeDisplayMode === EdgeDisplayMode.EDGES_ONLY
|
|
648
|
+
? Pass.CESIUM_3D_TILE_EDGES_DIRECT
|
|
649
|
+
: Pass.CESIUM_3D_TILE_EDGES;
|
|
650
|
+
|
|
651
|
+
this._edgeCommand.command.pass = edgePass;
|
|
652
|
+
if (defined(this._edgeCommand.derivedCommand2D)) {
|
|
653
|
+
this._edgeCommand.derivedCommand2D.command.pass = edgePass;
|
|
654
|
+
}
|
|
655
|
+
|
|
626
656
|
const use2D = shouldUse2DCommands(this, frameState);
|
|
627
657
|
pushCommand(result, this._edgeCommand, use2D);
|
|
628
658
|
|
|
@@ -818,8 +848,6 @@ function deriveEdgeCommand(command, renderResources) {
|
|
|
818
848
|
uniformMap.u_isEdgePass = function () {
|
|
819
849
|
return true; // This is the edge pass
|
|
820
850
|
};
|
|
821
|
-
edgeCommand.uniformMap = uniformMap;
|
|
822
|
-
|
|
823
851
|
edgeCommand.uniformMap = uniformMap;
|
|
824
852
|
edgeCommand.castShadows = false;
|
|
825
853
|
edgeCommand.receiveShadows = false;
|
|
@@ -9,8 +9,13 @@ import AttributeCompression from "../../Core/AttributeCompression.js";
|
|
|
9
9
|
import IndexDatatype from "../../Core/IndexDatatype.js";
|
|
10
10
|
import PrimitiveType from "../../Core/PrimitiveType.js";
|
|
11
11
|
import Matrix4 from "../../Core/Matrix4.js";
|
|
12
|
+
import Quaternion from "../../Core/Quaternion.js";
|
|
13
|
+
import Transforms from "../../Core/Transforms.js";
|
|
12
14
|
|
|
13
15
|
import AttributeType from "../AttributeType.js";
|
|
16
|
+
import InstanceAttributeSemantic from "../InstanceAttributeSemantic.js";
|
|
17
|
+
import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
|
|
18
|
+
import ModelUtility from "./ModelUtility.js";
|
|
14
19
|
|
|
15
20
|
/**
|
|
16
21
|
* A class for reading the data from a <code>ModelComponents.Attribute</code>.
|
|
@@ -144,7 +149,20 @@ class ModelReader {
|
|
|
144
149
|
const byteStride = attribute.byteStride;
|
|
145
150
|
const bytesPerComponent = ComponentDatatype.getSizeInBytes(componentType);
|
|
146
151
|
const defaultByteStride = componentsPerElement * bytesPerComponent;
|
|
147
|
-
|
|
152
|
+
|
|
153
|
+
const isDefaultStride =
|
|
154
|
+
!defined(byteStride) || byteStride === defaultByteStride;
|
|
155
|
+
const hasTypedArray = defined(attribute.typedArray);
|
|
156
|
+
|
|
157
|
+
// If in-memory — return as-is
|
|
158
|
+
// Important: typedArray is already tightly-packed on creation (See: ModelComponents.typedArray and GltfLoader.getPackedTypedArray)
|
|
159
|
+
// byteOffset and byteStride should thus be ignored
|
|
160
|
+
if (hasTypedArray) {
|
|
161
|
+
return attribute.typedArray;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Non-interleaved — copy from typedArray or read from GPU
|
|
165
|
+
if (isDefaultStride) {
|
|
148
166
|
const typedArray = ComponentDatatype.createTypedArray(
|
|
149
167
|
componentType,
|
|
150
168
|
totalComponentCount,
|
|
@@ -161,6 +179,8 @@ class ModelReader {
|
|
|
161
179
|
// have ONE "TypedArray[] getThemFrom(buffer)" call that
|
|
162
180
|
// returns all of the (interleaved) attributes at once,
|
|
163
181
|
// but this requires abstractions that we don't have.
|
|
182
|
+
|
|
183
|
+
// Read back from GPU if not available in memory
|
|
164
184
|
const fullTypedArray = new Uint8Array(buffer.sizeInBytes);
|
|
165
185
|
buffer.getBufferData(fullTypedArray);
|
|
166
186
|
|
|
@@ -320,8 +340,8 @@ class ModelReader {
|
|
|
320
340
|
const c = new Cartesian3();
|
|
321
341
|
for (let i = 0; i < elementCount; i++) {
|
|
322
342
|
Cartesian3.unpack(quantizedTypedArray, i * 3, c);
|
|
323
|
-
AttributeCompression.octDecodeInRange(c, normalizationRange, c);
|
|
324
|
-
Cartesian3.pack(
|
|
343
|
+
AttributeCompression.octDecodeInRange(c.x, c.y, normalizationRange, c);
|
|
344
|
+
Cartesian3.pack(c, dequantizedTypedArray, i * 3);
|
|
325
345
|
}
|
|
326
346
|
return dequantizedTypedArray;
|
|
327
347
|
}
|
|
@@ -645,6 +665,33 @@ class ModelReader {
|
|
|
645
665
|
return result;
|
|
646
666
|
}
|
|
647
667
|
|
|
668
|
+
/**
|
|
669
|
+
* Reads feature IDs from an implicit range feature ID set into a typed array.
|
|
670
|
+
*
|
|
671
|
+
* Generates values using <code>offset + Math.floor(i / repeat)</code> for
|
|
672
|
+
* each vertex. If <code>repeat</code> is undefined, all values are set to
|
|
673
|
+
* <code>offset</code>.
|
|
674
|
+
*
|
|
675
|
+
* @param {FeatureIdImplicitRange} featureIdSet The implicit range feature ID set.
|
|
676
|
+
* @param {object} attributeOwner An object with an <code>attributes</code> array
|
|
677
|
+
* (a primitive or an instances object)
|
|
678
|
+
* @returns {Float32Array} The generated feature ID values.
|
|
679
|
+
*/
|
|
680
|
+
static readImplicitRangeAsTypedArray(featureIdSet, attributeOwner) {
|
|
681
|
+
const count = attributeOwner.attributes[0]?.count ?? 0;
|
|
682
|
+
const offset = featureIdSet.offset;
|
|
683
|
+
const repeat = featureIdSet.repeat;
|
|
684
|
+
const typedArray = new Float32Array(count);
|
|
685
|
+
if (defined(repeat)) {
|
|
686
|
+
for (let i = 0; i < count; i++) {
|
|
687
|
+
typedArray[i] = offset + Math.floor(i / repeat);
|
|
688
|
+
}
|
|
689
|
+
} else {
|
|
690
|
+
typedArray.fill(offset);
|
|
691
|
+
}
|
|
692
|
+
return typedArray;
|
|
693
|
+
}
|
|
694
|
+
|
|
648
695
|
/**
|
|
649
696
|
* Read the indices values from the given primitive indices, and
|
|
650
697
|
* return them as a typed array.
|
|
@@ -805,6 +852,430 @@ class ModelReader {
|
|
|
805
852
|
`UNSIGNED_INT (${IndexDatatype.UNSIGNED_INT}, but is ${indexDatatype}`,
|
|
806
853
|
);
|
|
807
854
|
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Per-instance data combining a transform matrix with an optional feature ID.
|
|
858
|
+
*
|
|
859
|
+
* @typedef {object} ModelReader.Instance
|
|
860
|
+
* @property {Matrix4} transform The instance transform matrix.
|
|
861
|
+
* @property {number} [featureId] The per-instance feature ID, or undefined.
|
|
862
|
+
*
|
|
863
|
+
* @private
|
|
864
|
+
*/
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* A callback invoked by {@link ModelReader.forEachPrimitive} for each
|
|
868
|
+
* runtime primitive in the model.
|
|
869
|
+
*
|
|
870
|
+
* @callback ModelReader.ForEachPrimitiveCallback
|
|
871
|
+
* @param {object} runtimePrimitive The runtime primitive wrapper.
|
|
872
|
+
* @param {object} primitive The underlying model primitive (runtimePrimitive.primitive).
|
|
873
|
+
* @param {ModelReader.Instance[]} instances Per-instance data (transforms and optional feature IDs).
|
|
874
|
+
* @param {Matrix4} computedModelMatrix The computed model matrix for the node.
|
|
875
|
+
*
|
|
876
|
+
* @private
|
|
877
|
+
*/
|
|
878
|
+
|
|
879
|
+
/**
|
|
880
|
+
* Iterates over every primitive in a model's scene graph, computing
|
|
881
|
+
* node transforms and instance transforms once per node and invoking
|
|
882
|
+
* a callback for each runtime primitive.
|
|
883
|
+
* <p>
|
|
884
|
+
* When a map projection is provided, the computed model matrix is
|
|
885
|
+
* projected to 2D via {@link Transforms.basisTo2D}.
|
|
886
|
+
* </p>
|
|
887
|
+
*
|
|
888
|
+
* @param {Model} model The model whose scene graph to traverse.
|
|
889
|
+
* @param {object} [options] Object with the following properties:
|
|
890
|
+
* @param {MapProjection} [options.mapProjection] The map projection for 2D mode. When defined, the computed model matrix is projected to 2D.
|
|
891
|
+
* @param {string} [options.instanceFeatureIdLabel] The label used to select which instance feature ID set to read. When defined, per-instance feature IDs are fetched. When undefined, feature IDs are not fetched.
|
|
892
|
+
* @param {ModelReader.ForEachPrimitiveCallback} callback The function invoked for each primitive.
|
|
893
|
+
*/
|
|
894
|
+
static forEachPrimitive(model, options, callback) {
|
|
895
|
+
const mapProjection = options?.mapProjection;
|
|
896
|
+
const instanceFeatureIdLabel = options?.instanceFeatureIdLabel;
|
|
897
|
+
const sceneGraph = model.sceneGraph;
|
|
898
|
+
if (!defined(sceneGraph)) {
|
|
899
|
+
return;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
const scratchNodeTransforms = {
|
|
903
|
+
nodeComputedTransform: new Matrix4(),
|
|
904
|
+
modelMatrix: new Matrix4(),
|
|
905
|
+
computedModelMatrix: new Matrix4(),
|
|
906
|
+
};
|
|
907
|
+
|
|
908
|
+
const nodes = sceneGraph._runtimeNodes;
|
|
909
|
+
const nodesLength = nodes.length;
|
|
910
|
+
|
|
911
|
+
for (let n = 0; n < nodesLength; n++) {
|
|
912
|
+
const runtimeNode = nodes[n];
|
|
913
|
+
|
|
914
|
+
const nodeTransforms = ModelReader.computeNodeTransforms(
|
|
915
|
+
runtimeNode,
|
|
916
|
+
sceneGraph,
|
|
917
|
+
model,
|
|
918
|
+
scratchNodeTransforms,
|
|
919
|
+
);
|
|
920
|
+
|
|
921
|
+
let computedModelMatrix = nodeTransforms.computedModelMatrix;
|
|
922
|
+
|
|
923
|
+
if (defined(mapProjection)) {
|
|
924
|
+
computedModelMatrix = Transforms.basisTo2D(
|
|
925
|
+
mapProjection,
|
|
926
|
+
computedModelMatrix,
|
|
927
|
+
computedModelMatrix,
|
|
928
|
+
);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
const instanceTransforms = ModelReader.computeInstanceTransforms(
|
|
932
|
+
runtimeNode,
|
|
933
|
+
computedModelMatrix,
|
|
934
|
+
nodeTransforms.nodeComputedTransform,
|
|
935
|
+
nodeTransforms.modelMatrix,
|
|
936
|
+
);
|
|
937
|
+
|
|
938
|
+
const instanceFeatureIds = defined(instanceFeatureIdLabel)
|
|
939
|
+
? ModelReader.computeInstanceFeatureIds(
|
|
940
|
+
runtimeNode,
|
|
941
|
+
instanceFeatureIdLabel,
|
|
942
|
+
)
|
|
943
|
+
: undefined;
|
|
944
|
+
|
|
945
|
+
const instances = [];
|
|
946
|
+
for (let i = 0; i < instanceTransforms.length; i++) {
|
|
947
|
+
instances.push({
|
|
948
|
+
transform: instanceTransforms[i],
|
|
949
|
+
featureId: defined(instanceFeatureIds)
|
|
950
|
+
? instanceFeatureIds[i]
|
|
951
|
+
: undefined,
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
const primitivesLength = runtimeNode.runtimePrimitives.length;
|
|
956
|
+
for (let p = 0; p < primitivesLength; p++) {
|
|
957
|
+
const runtimePrimitive = runtimeNode.runtimePrimitives[p];
|
|
958
|
+
callback(
|
|
959
|
+
runtimePrimitive,
|
|
960
|
+
runtimePrimitive.primitive,
|
|
961
|
+
instances,
|
|
962
|
+
computedModelMatrix,
|
|
963
|
+
);
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Computes the model matrix for a runtime node, accounting for instancing
|
|
970
|
+
* and world-space transforms.
|
|
971
|
+
*
|
|
972
|
+
* @param {object} runtimeNode The runtime node.
|
|
973
|
+
* @param {ModelSceneGraph} sceneGraph The model scene graph.
|
|
974
|
+
* @param {Model} model The model.
|
|
975
|
+
* @param {object} result An object with scratch matrices: { nodeComputedTransform: Matrix4, modelMatrix: Matrix4, computedModelMatrix: Matrix4 }.
|
|
976
|
+
* @returns {object} The result parameter, populated with the computed transforms.
|
|
977
|
+
*
|
|
978
|
+
*/
|
|
979
|
+
static computeNodeTransforms(runtimeNode, sceneGraph, model, result) {
|
|
980
|
+
const node = runtimeNode.node;
|
|
981
|
+
|
|
982
|
+
let nodeComputedTransform = Matrix4.clone(
|
|
983
|
+
runtimeNode.computedTransform,
|
|
984
|
+
result.nodeComputedTransform,
|
|
985
|
+
);
|
|
986
|
+
let modelMatrix = Matrix4.clone(
|
|
987
|
+
sceneGraph.computedModelMatrix,
|
|
988
|
+
result.modelMatrix,
|
|
989
|
+
);
|
|
990
|
+
|
|
991
|
+
const instances = node.instances;
|
|
992
|
+
if (defined(instances)) {
|
|
993
|
+
if (instances.transformInWorldSpace) {
|
|
994
|
+
// Replicate the multiplication order in LegacyInstancingStageVS.
|
|
995
|
+
modelMatrix = Matrix4.multiplyTransformation(
|
|
996
|
+
model.modelMatrix,
|
|
997
|
+
sceneGraph.components.transform,
|
|
998
|
+
modelMatrix,
|
|
999
|
+
);
|
|
1000
|
+
nodeComputedTransform = Matrix4.multiplyTransformation(
|
|
1001
|
+
sceneGraph.axisCorrectionMatrix,
|
|
1002
|
+
runtimeNode.computedTransform,
|
|
1003
|
+
nodeComputedTransform,
|
|
1004
|
+
);
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
const computedModelMatrix = Matrix4.multiplyTransformation(
|
|
1009
|
+
modelMatrix,
|
|
1010
|
+
nodeComputedTransform,
|
|
1011
|
+
result.computedModelMatrix,
|
|
1012
|
+
);
|
|
1013
|
+
|
|
1014
|
+
result.computedModelMatrix = computedModelMatrix;
|
|
1015
|
+
result.nodeComputedTransform = nodeComputedTransform;
|
|
1016
|
+
result.modelMatrix = modelMatrix;
|
|
1017
|
+
return result;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* Builds an array of instance transforms for a node.
|
|
1022
|
+
* If the node is not instanced, returns an array containing only the
|
|
1023
|
+
* computedModelMatrix.
|
|
1024
|
+
*
|
|
1025
|
+
* @param {object} runtimeNode The runtime node.
|
|
1026
|
+
* @param {Matrix4} computedModelMatrix The computed model matrix.
|
|
1027
|
+
* @param {Matrix4} nodeComputedTransform The node computed transform.
|
|
1028
|
+
* @param {Matrix4} modelMatrix The model matrix.
|
|
1029
|
+
* @returns {Matrix4[]}
|
|
1030
|
+
*/
|
|
1031
|
+
static computeInstanceTransforms(
|
|
1032
|
+
runtimeNode,
|
|
1033
|
+
computedModelMatrix,
|
|
1034
|
+
nodeComputedTransform,
|
|
1035
|
+
modelMatrix,
|
|
1036
|
+
) {
|
|
1037
|
+
const transforms = [];
|
|
1038
|
+
const node = runtimeNode.node;
|
|
1039
|
+
const instances = node.instances;
|
|
1040
|
+
|
|
1041
|
+
if (defined(instances)) {
|
|
1042
|
+
const transformsCount = instances.attributes[0].count;
|
|
1043
|
+
const instanceComponentDatatype =
|
|
1044
|
+
instances.attributes[0].componentDatatype;
|
|
1045
|
+
|
|
1046
|
+
const transformElements = 12;
|
|
1047
|
+
let transformsTypedArray = runtimeNode.transformsTypedArray;
|
|
1048
|
+
|
|
1049
|
+
if (!defined(transformsTypedArray)) {
|
|
1050
|
+
const instanceTransformsBuffer = runtimeNode.instancingTransformsBuffer;
|
|
1051
|
+
if (defined(instanceTransformsBuffer)) {
|
|
1052
|
+
transformsTypedArray = ComponentDatatype.createTypedArray(
|
|
1053
|
+
instanceComponentDatatype,
|
|
1054
|
+
transformsCount * transformElements,
|
|
1055
|
+
);
|
|
1056
|
+
instanceTransformsBuffer.getBufferData(transformsTypedArray);
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
if (defined(transformsTypedArray)) {
|
|
1061
|
+
ModelReader.computeInstanceTransformsFromTypedArray(
|
|
1062
|
+
transformsTypedArray,
|
|
1063
|
+
transformsCount,
|
|
1064
|
+
transforms,
|
|
1065
|
+
);
|
|
1066
|
+
} else {
|
|
1067
|
+
ModelReader.computeInstanceTransformsFromAttributes(
|
|
1068
|
+
instances,
|
|
1069
|
+
transformsCount,
|
|
1070
|
+
transforms,
|
|
1071
|
+
);
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
for (let i = 0; i < transforms.length; i++) {
|
|
1075
|
+
const transform = transforms[i];
|
|
1076
|
+
if (instances.transformInWorldSpace) {
|
|
1077
|
+
Matrix4.multiplyTransformation(
|
|
1078
|
+
transform,
|
|
1079
|
+
nodeComputedTransform,
|
|
1080
|
+
transform,
|
|
1081
|
+
);
|
|
1082
|
+
Matrix4.multiplyTransformation(modelMatrix, transform, transform);
|
|
1083
|
+
} else {
|
|
1084
|
+
Matrix4.multiplyTransformation(
|
|
1085
|
+
computedModelMatrix,
|
|
1086
|
+
transform,
|
|
1087
|
+
transform,
|
|
1088
|
+
);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
if (transforms.length === 0) {
|
|
1094
|
+
transforms.push(computedModelMatrix);
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
return transforms;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
/**
|
|
1101
|
+
* Builds an array of per-instance feature IDs for a node.
|
|
1102
|
+
* If the node is not instanced or has no matching feature ID set,
|
|
1103
|
+
* returns <code>undefined</code>.
|
|
1104
|
+
*
|
|
1105
|
+
* @param {object} runtimeNode The runtime node.
|
|
1106
|
+
* @param {string} instanceFeatureIdLabel The label used to select the feature ID set.
|
|
1107
|
+
* @returns {number[]|undefined} The per-instance feature IDs, or undefined.
|
|
1108
|
+
*/
|
|
1109
|
+
static computeInstanceFeatureIds(runtimeNode, instanceFeatureIdLabel) {
|
|
1110
|
+
const node = runtimeNode.node;
|
|
1111
|
+
const instances = node.instances;
|
|
1112
|
+
|
|
1113
|
+
if (!defined(instances)) {
|
|
1114
|
+
return undefined;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
const featureIdSet = ModelUtility.getFeatureIdsByLabel(
|
|
1118
|
+
instances.featureIds,
|
|
1119
|
+
instanceFeatureIdLabel,
|
|
1120
|
+
);
|
|
1121
|
+
|
|
1122
|
+
if (!defined(featureIdSet)) {
|
|
1123
|
+
return undefined;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
let typedArray;
|
|
1127
|
+
|
|
1128
|
+
// Case: FeatureIdAttribute
|
|
1129
|
+
if ("setIndex" in featureIdSet) {
|
|
1130
|
+
const attribute = ModelUtility.getAttributeBySemantic(
|
|
1131
|
+
instances,
|
|
1132
|
+
VertexAttributeSemantic.FEATURE_ID,
|
|
1133
|
+
featureIdSet.setIndex,
|
|
1134
|
+
);
|
|
1135
|
+
if (defined(attribute)) {
|
|
1136
|
+
typedArray = ModelReader.readAttributeAsTypedArray(attribute);
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
// Case: FeatureIdImplicitRange
|
|
1141
|
+
if ("offset" in featureIdSet) {
|
|
1142
|
+
typedArray = ModelReader.readImplicitRangeAsTypedArray(
|
|
1143
|
+
featureIdSet,
|
|
1144
|
+
instances,
|
|
1145
|
+
);
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
if (!defined(typedArray)) {
|
|
1149
|
+
return undefined;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
const featureIds = new Array(typedArray.length);
|
|
1153
|
+
for (let i = 0; i < typedArray.length; i++) {
|
|
1154
|
+
featureIds[i] = typedArray[i];
|
|
1155
|
+
}
|
|
1156
|
+
return featureIds;
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
/**
|
|
1160
|
+
* Builds instance transforms from a packed typed array where each instance
|
|
1161
|
+
* is stored as 12 floats (3 rows of 4 columns, row-major).
|
|
1162
|
+
*
|
|
1163
|
+
* @param {TypedArray} transformsTypedArray The packed transforms array.
|
|
1164
|
+
* @param {number} count The number of instances.
|
|
1165
|
+
* @param {Matrix4[]} transforms The output array to push transforms into.
|
|
1166
|
+
*/
|
|
1167
|
+
static computeInstanceTransformsFromTypedArray(
|
|
1168
|
+
transformsTypedArray,
|
|
1169
|
+
count,
|
|
1170
|
+
transforms,
|
|
1171
|
+
) {
|
|
1172
|
+
const transformElements = 12;
|
|
1173
|
+
for (let i = 0; i < count; i++) {
|
|
1174
|
+
const index = i * transformElements;
|
|
1175
|
+
|
|
1176
|
+
const transform = new Matrix4(
|
|
1177
|
+
transformsTypedArray[index],
|
|
1178
|
+
transformsTypedArray[index + 1],
|
|
1179
|
+
transformsTypedArray[index + 2],
|
|
1180
|
+
transformsTypedArray[index + 3],
|
|
1181
|
+
transformsTypedArray[index + 4],
|
|
1182
|
+
transformsTypedArray[index + 5],
|
|
1183
|
+
transformsTypedArray[index + 6],
|
|
1184
|
+
transformsTypedArray[index + 7],
|
|
1185
|
+
transformsTypedArray[index + 8],
|
|
1186
|
+
transformsTypedArray[index + 9],
|
|
1187
|
+
transformsTypedArray[index + 10],
|
|
1188
|
+
transformsTypedArray[index + 11],
|
|
1189
|
+
0,
|
|
1190
|
+
0,
|
|
1191
|
+
0,
|
|
1192
|
+
1,
|
|
1193
|
+
);
|
|
1194
|
+
|
|
1195
|
+
transforms.push(transform);
|
|
1196
|
+
}
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
/**
|
|
1200
|
+
* Builds instance transforms from individual TRANSLATION, ROTATION, and SCALE
|
|
1201
|
+
* attributes when no packed transformsTypedArray is available.
|
|
1202
|
+
*
|
|
1203
|
+
* @param {object} instances The instances object.
|
|
1204
|
+
* @param {number} count The number of instances.
|
|
1205
|
+
* @param {Matrix4[]} transforms The output array to push transforms into.
|
|
1206
|
+
*/
|
|
1207
|
+
static computeInstanceTransformsFromAttributes(instances, count, transforms) {
|
|
1208
|
+
const translationAttribute = ModelUtility.getAttributeBySemantic(
|
|
1209
|
+
instances,
|
|
1210
|
+
InstanceAttributeSemantic.TRANSLATION,
|
|
1211
|
+
);
|
|
1212
|
+
const rotationAttribute = ModelUtility.getAttributeBySemantic(
|
|
1213
|
+
instances,
|
|
1214
|
+
InstanceAttributeSemantic.ROTATION,
|
|
1215
|
+
);
|
|
1216
|
+
const scaleAttribute = ModelUtility.getAttributeBySemantic(
|
|
1217
|
+
instances,
|
|
1218
|
+
InstanceAttributeSemantic.SCALE,
|
|
1219
|
+
);
|
|
1220
|
+
|
|
1221
|
+
const hasTranslation = defined(translationAttribute);
|
|
1222
|
+
const hasRotation = defined(rotationAttribute);
|
|
1223
|
+
const hasScale = defined(scaleAttribute);
|
|
1224
|
+
|
|
1225
|
+
if (!hasTranslation && !hasRotation && !hasScale) {
|
|
1226
|
+
return;
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
let translationTypedArray, rotationTypedArray, scaleTypedArray;
|
|
1230
|
+
if (hasTranslation) {
|
|
1231
|
+
translationTypedArray =
|
|
1232
|
+
ModelReader.readAttributeAsRawCompactTypedArray(translationAttribute);
|
|
1233
|
+
}
|
|
1234
|
+
if (hasRotation) {
|
|
1235
|
+
rotationTypedArray =
|
|
1236
|
+
ModelReader.readAttributeAsRawCompactTypedArray(rotationAttribute);
|
|
1237
|
+
}
|
|
1238
|
+
if (hasScale) {
|
|
1239
|
+
scaleTypedArray =
|
|
1240
|
+
ModelReader.readAttributeAsRawCompactTypedArray(scaleAttribute);
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
for (let i = 0; i < count; i++) {
|
|
1244
|
+
const translation = hasTranslation
|
|
1245
|
+
? new Cartesian3(
|
|
1246
|
+
translationTypedArray[i * 3],
|
|
1247
|
+
translationTypedArray[i * 3 + 1],
|
|
1248
|
+
translationTypedArray[i * 3 + 2],
|
|
1249
|
+
)
|
|
1250
|
+
: Cartesian3.ZERO;
|
|
1251
|
+
|
|
1252
|
+
const rotation = hasRotation
|
|
1253
|
+
? new Quaternion(
|
|
1254
|
+
rotationTypedArray[i * 4],
|
|
1255
|
+
rotationTypedArray[i * 4 + 1],
|
|
1256
|
+
rotationTypedArray[i * 4 + 2],
|
|
1257
|
+
rotationTypedArray[i * 4 + 3],
|
|
1258
|
+
)
|
|
1259
|
+
: Quaternion.IDENTITY;
|
|
1260
|
+
|
|
1261
|
+
const scale = hasScale
|
|
1262
|
+
? new Cartesian3(
|
|
1263
|
+
scaleTypedArray[i * 3],
|
|
1264
|
+
scaleTypedArray[i * 3 + 1],
|
|
1265
|
+
scaleTypedArray[i * 3 + 2],
|
|
1266
|
+
)
|
|
1267
|
+
: Cartesian3.ONE;
|
|
1268
|
+
|
|
1269
|
+
const transform = Matrix4.fromTranslationQuaternionRotationScale(
|
|
1270
|
+
translation,
|
|
1271
|
+
rotation,
|
|
1272
|
+
scale,
|
|
1273
|
+
new Matrix4(),
|
|
1274
|
+
);
|
|
1275
|
+
|
|
1276
|
+
transforms.push(transform);
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
808
1279
|
}
|
|
809
1280
|
|
|
810
1281
|
export default ModelReader;
|
|
@@ -214,7 +214,8 @@ ModelRuntimePrimitive.prototype.configurePipeline = function (frameState) {
|
|
|
214
214
|
// Check whether the model is part of a `Model3DTileContent` that
|
|
215
215
|
// belongs to a tileset that has imagery layers. If this is the
|
|
216
216
|
// case, then the `ImageryPipelineStage` will be required.
|
|
217
|
-
const hasImageryLayers =
|
|
217
|
+
const hasImageryLayers =
|
|
218
|
+
defined(model.imageryLayers) && model.imageryLayers.length > 0;
|
|
218
219
|
|
|
219
220
|
const hasCustomShader = defined(customShader);
|
|
220
221
|
const hasCustomFragmentShader =
|
|
@@ -345,6 +345,7 @@ ModelUtility.sanitizeGlslIdentifier = function (identifier) {
|
|
|
345
345
|
|
|
346
346
|
ModelUtility.supportedExtensions = {
|
|
347
347
|
AGI_articulations: true,
|
|
348
|
+
CESIUM_mesh_vector: true,
|
|
348
349
|
CESIUM_primitive_outline: true,
|
|
349
350
|
CESIUM_RTC: true,
|
|
350
351
|
EXT_feature_metadata: true,
|
|
@@ -353,6 +354,8 @@ ModelUtility.supportedExtensions = {
|
|
|
353
354
|
EXT_instance_features: true,
|
|
354
355
|
EXT_mesh_features: true,
|
|
355
356
|
EXT_mesh_gpu_instancing: true,
|
|
357
|
+
EXT_mesh_polygon: true,
|
|
358
|
+
EXT_mesh_primitive_edge_visibility: true,
|
|
356
359
|
EXT_meshopt_compression: true,
|
|
357
360
|
EXT_primitive_voxels: true,
|
|
358
361
|
EXT_structural_metadata: true,
|
|
@@ -367,6 +370,7 @@ ModelUtility.supportedExtensions = {
|
|
|
367
370
|
KHR_materials_clearcoat: true,
|
|
368
371
|
KHR_materials_unlit: true,
|
|
369
372
|
KHR_mesh_quantization: true,
|
|
373
|
+
KHR_mesh_primitive_restart: true,
|
|
370
374
|
KHR_techniques_webgl: true,
|
|
371
375
|
KHR_texture_basisu: true,
|
|
372
376
|
KHR_texture_transform: true,
|
|
@@ -79,7 +79,6 @@ class PntsLoader extends ResourceLoader {
|
|
|
79
79
|
/**
|
|
80
80
|
* The cache key of the resource
|
|
81
81
|
*
|
|
82
|
-
* @memberof PntsLoader.prototype
|
|
83
82
|
*
|
|
84
83
|
* @type {string}
|
|
85
84
|
* @readonly
|
|
@@ -92,7 +91,6 @@ class PntsLoader extends ResourceLoader {
|
|
|
92
91
|
/**
|
|
93
92
|
* The loaded components.
|
|
94
93
|
*
|
|
95
|
-
* @memberof PntsLoader.prototype
|
|
96
94
|
*
|
|
97
95
|
* @type {ModelComponents.Components}
|
|
98
96
|
* @readonly
|
|
@@ -106,7 +104,6 @@ class PntsLoader extends ResourceLoader {
|
|
|
106
104
|
* A world-space transform to apply to the primitives.
|
|
107
105
|
* See {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/PointCloud#global-semantics}
|
|
108
106
|
*
|
|
109
|
-
* @memberof PntsLoader.prototype
|
|
110
107
|
*
|
|
111
108
|
* @type {Matrix4}
|
|
112
109
|
* @readonly
|
|
@@ -528,19 +525,23 @@ function makeAttributes(loader, parsedContent, context) {
|
|
|
528
525
|
|
|
529
526
|
if (defined(parsedContent.normals)) {
|
|
530
527
|
attribute = makeAttribute(loader, parsedContent.normals, context);
|
|
528
|
+
attribute.count = parsedContent.pointsLength;
|
|
531
529
|
attributes.push(attribute);
|
|
532
530
|
}
|
|
533
531
|
|
|
534
532
|
if (defined(parsedContent.colors)) {
|
|
535
533
|
attribute = makeAttribute(loader, parsedContent.colors, context);
|
|
534
|
+
attribute.count = parsedContent.pointsLength;
|
|
536
535
|
attributes.push(attribute);
|
|
537
536
|
} else {
|
|
538
537
|
attribute = makeAttribute(loader, defaultColorAttribute, context);
|
|
538
|
+
attribute.count = parsedContent.pointsLength;
|
|
539
539
|
attributes.push(attribute);
|
|
540
540
|
}
|
|
541
541
|
|
|
542
542
|
if (defined(parsedContent.batchIds)) {
|
|
543
543
|
attribute = makeAttribute(loader, parsedContent.batchIds, context);
|
|
544
|
+
attribute.count = parsedContent.pointsLength;
|
|
544
545
|
attributes.push(attribute);
|
|
545
546
|
}
|
|
546
547
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* An enum of the basic GLSL uniform types. These can be used with
|
|
3
5
|
* {@link CustomShader} to declare user-defined uniforms.
|
|
@@ -121,4 +123,6 @@ const UniformType = {
|
|
|
121
123
|
SAMPLER_CUBE: "samplerCube",
|
|
122
124
|
};
|
|
123
125
|
|
|
124
|
-
|
|
126
|
+
Object.freeze(UniformType);
|
|
127
|
+
|
|
128
|
+
export default UniformType;
|