@cesium/engine 24.0.0 → 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-NKT5K3K3.js → chunk-35H3UBIO.js} +13 -12
- package/Build/Workers/{chunk-5A2SW66E.js → chunk-3LSD7OOA.js} +16 -16
- package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-3RFFPH4M.js} +1 -1
- package/Build/Workers/{chunk-EDXL4W76.js → chunk-3TKLDHV3.js} +2 -2
- package/Build/Workers/{chunk-GQUNK2XC.js → chunk-3VDDRF2E.js} +14 -14
- package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-3XY3MVPG.js} +4 -4
- package/Build/Workers/{chunk-A47HVBC5.js → chunk-4GF4MVPY.js} +7 -7
- package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-4MTRQFJP.js} +3 -2
- package/Build/Workers/{chunk-N65BAKSH.js → chunk-4QQXGTCE.js} +8 -8
- package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-4XXHJI6Y.js} +17 -17
- package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-5T6QQAJW.js} +3 -2
- package/Build/Workers/{chunk-UIGVOKKI.js → chunk-6SDGQI27.js} +3 -2
- package/Build/Workers/{chunk-ILMFADZA.js → chunk-77RL3MBD.js} +6 -5
- package/Build/Workers/{chunk-2N4KDHS3.js → chunk-7LSFAEWF.js} +12 -11
- package/Build/Workers/{chunk-44EMEGKW.js → chunk-A7A433MD.js} +5 -5
- package/Build/Workers/{chunk-J6AW5YHS.js → chunk-A7ZBMVFS.js} +14 -14
- package/Build/Workers/{chunk-XJRBB253.js → chunk-ACFFCHHZ.js} +11 -11
- package/Build/Workers/{chunk-MKM27KGV.js → chunk-AEAVLYPS.js} +2 -2
- package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-AWFZHD2B.js} +4 -4
- package/Build/Workers/{chunk-UQU4RXLT.js → chunk-BTX2NL3P.js} +50 -45
- package/Build/Workers/{chunk-4TIG36AW.js → chunk-BVAIWR7O.js} +12 -12
- package/Build/Workers/chunk-CKQP3DSS.js +973 -0
- package/Build/Workers/{chunk-VLDEUTOP.js → chunk-CZ23Y3RM.js} +2 -2
- package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DFEI5MAV.js} +7 -7
- package/Build/Workers/{chunk-AJLTU6PF.js → chunk-DH26SNAB.js} +4 -1
- package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-DYT5NR6P.js} +3 -3
- package/Build/Workers/{chunk-63SIWPLS.js → chunk-EZARA5FJ.js} +13 -13
- package/Build/Workers/{chunk-AMIHNSST.js → chunk-FIBS5S7R.js} +2 -2
- package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-FVLVVOBQ.js} +10 -10
- package/Build/Workers/{chunk-XY6HMDGI.js → chunk-GL7DNVUS.js} +5 -5
- package/Build/Workers/{chunk-6WLHJFD3.js → chunk-GPIGURCG.js} +59 -32
- package/Build/Workers/{chunk-B6SCUUFP.js → chunk-H2A4USJR.js} +10 -10
- package/Build/Workers/chunk-HSVQATK2.js +147 -0
- package/Build/Workers/{chunk-72VYSVEW.js → chunk-HVMG6AG4.js} +11 -10
- package/Build/Workers/{chunk-LXMCPFFS.js → chunk-I3A6DXYZ.js} +4 -4
- package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-ITD2IN7N.js} +2 -2
- package/Build/Workers/{chunk-RQNJD3O4.js → chunk-J3OFS2RD.js} +12 -12
- package/Build/Workers/{chunk-C6P4IG5P.js → chunk-J647NNZW.js} +6 -6
- package/Build/Workers/{chunk-7X322WP2.js → chunk-J7KQEKPK.js} +13 -13
- package/Build/Workers/{chunk-7O5XJTVE.js → chunk-K6NFIRFB.js} +5 -5
- package/Build/Workers/{chunk-AF3MU2RL.js → chunk-LH5SF3XV.js} +7 -6
- package/Build/Workers/{chunk-GOQBUCXH.js → chunk-ND3NTTOF.js} +708 -430
- 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-YAOZMOFL.js → chunk-ST2UWDUU.js} +5 -5
- package/Build/Workers/{chunk-PVV64VFW.js → chunk-TA777BGS.js} +3 -2
- package/Build/Workers/{chunk-ISY4EZCA.js → chunk-TAI4HLII.js} +4 -4
- package/Build/Workers/{chunk-JCI63T3K.js → chunk-URUCCIPS.js} +6 -6
- package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-VQKLRBIK.js} +7 -7
- package/Build/Workers/{chunk-6MPGQEHA.js → chunk-WC57YYBN.js} +2 -2
- package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-WN6P5UDH.js} +12 -12
- package/Build/Workers/{chunk-LIB2H534.js → chunk-WNN5D4W3.js} +12 -11
- package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-WTQGE7Q6.js} +17 -17
- package/Build/Workers/{chunk-YJZGW74L.js → chunk-WUBKZFF6.js} +2213 -1349
- package/Build/Workers/{chunk-7TYLCBGK.js → chunk-ZAPOS52G.js} +12 -10
- package/Build/Workers/{chunk-6RMS4S72.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 +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/Cartesian3.js +1 -2
- 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 +4 -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 +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/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/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 +7 -1
- 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/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/BufferPointCollection.js +4 -1
- package/Source/Scene/BufferPolygonCollection.js +3 -1
- package/Source/Scene/BufferPolylineCollection.js +3 -1
- package/Source/Scene/BufferPrimitiveCollection.js +140 -24
- package/Source/Scene/CameraEventType.js +6 -1
- package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
- 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 +1 -1
- package/Source/Scene/ClassificationType.js +3 -1
- package/Source/Scene/CloudType.js +3 -1
- package/Source/Scene/ColorBlendMode.js +4 -1
- 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/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 +0 -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/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/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 +44 -71
- 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/ModelReader.js +474 -3
- package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
- package/Source/Scene/Model/ModelType.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 +73 -28
- 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 +8 -1
- 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/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/Tonemapper.js +5 -1
- package/Source/Scene/VectorGltf3DTileContent.js +72 -51
- 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/VoxelProvider.js +1 -0
- package/Source/Scene/VoxelShapeType.js +3 -1
- package/Source/Scene/renderBufferPointCollection.js +17 -66
- package/Source/Scene/renderBufferPolygonCollection.js +21 -68
- package/Source/Scene/renderBufferPolylineCollection.js +22 -73
- 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/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 +343 -309
- package/index.js +443 -438
- package/package.json +2 -2
- 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
|
@@ -67,6 +67,14 @@ function VoxelEllipsoidShape() {
|
|
|
67
67
|
*/
|
|
68
68
|
this._rotation = new Matrix3();
|
|
69
69
|
|
|
70
|
+
/**
|
|
71
|
+
* UV space transformation translations (JS-only, not shader uniforms)
|
|
72
|
+
* Components: [longitude, latitude, height] translation
|
|
73
|
+
* @type {Cartesian3}
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
this._localToShapeUvTranslate = new Cartesian3();
|
|
77
|
+
|
|
70
78
|
this._shaderUniforms = {
|
|
71
79
|
cameraPositionCartographic: new Cartesian3(),
|
|
72
80
|
ellipsoidEcToEastNorthUp: new Matrix3(),
|
|
@@ -78,10 +86,8 @@ function VoxelEllipsoidShape() {
|
|
|
78
86
|
ellipsoidRenderLongitudeMinMax: new Cartesian2(),
|
|
79
87
|
ellipsoidShapeUvLongitudeRangeOrigin: 0.0,
|
|
80
88
|
ellipsoidShapeUvLongitudeMinMaxMid: new Cartesian3(),
|
|
81
|
-
|
|
82
|
-
ellipsoidLocalToShapeUvLatitude: new Cartesian2(),
|
|
89
|
+
ellipsoidLocalToShapeUvScale: new Cartesian3(),
|
|
83
90
|
ellipsoidRenderLatitudeSinMinMax: new Cartesian2(),
|
|
84
|
-
ellipsoidInverseHeightDifference: 0.0,
|
|
85
91
|
clipMinMaxHeight: new Cartesian2(),
|
|
86
92
|
};
|
|
87
93
|
|
|
@@ -90,10 +96,7 @@ function VoxelEllipsoidShape() {
|
|
|
90
96
|
ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO: undefined,
|
|
91
97
|
ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF: undefined,
|
|
92
98
|
ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF: undefined,
|
|
93
|
-
ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY: undefined,
|
|
94
|
-
ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY: undefined,
|
|
95
99
|
ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE: undefined,
|
|
96
|
-
ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED: undefined,
|
|
97
100
|
ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF: undefined,
|
|
98
101
|
ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF: undefined,
|
|
99
102
|
ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF: undefined,
|
|
@@ -245,7 +248,6 @@ VoxelEllipsoidShape.prototype.update = function (
|
|
|
245
248
|
//>>includeEnd('debug');
|
|
246
249
|
|
|
247
250
|
const epsilonZeroScale = CesiumMath.EPSILON10;
|
|
248
|
-
const epsilonLongitudeDiscontinuity = CesiumMath.EPSILON3; // 0.001 radians = 0.05729578 degrees
|
|
249
251
|
const epsilonLongitude = CesiumMath.EPSILON10;
|
|
250
252
|
const epsilonLatitude = CesiumMath.EPSILON10;
|
|
251
253
|
const epsilonLatitudeFlat = CesiumMath.EPSILON3; // 0.001 radians = 0.05729578 degrees
|
|
@@ -519,10 +521,7 @@ VoxelEllipsoidShape.prototype.update = function (
|
|
|
519
521
|
|
|
520
522
|
// The percent of space that is between the inner and outer ellipsoid.
|
|
521
523
|
const thickness = shapeMaxBounds.z - shapeMinBounds.z;
|
|
522
|
-
|
|
523
|
-
if (shapeMinBounds.z === shapeMaxBounds.z) {
|
|
524
|
-
shaderUniforms.ellipsoidInverseHeightDifference = 0.0;
|
|
525
|
-
}
|
|
524
|
+
const heightScale = thickness === 0.0 ? 0.0 : 1.0 / thickness;
|
|
526
525
|
|
|
527
526
|
// Intersects a wedge for the min and max longitude.
|
|
528
527
|
if (renderHasLongitude) {
|
|
@@ -550,6 +549,10 @@ VoxelEllipsoidShape.prototype.update = function (
|
|
|
550
549
|
);
|
|
551
550
|
}
|
|
552
551
|
|
|
552
|
+
// Defaults are for the case where shapeLongitudeRange is zero, to avoid division by zero.
|
|
553
|
+
let longitudeScale = 0.0;
|
|
554
|
+
let longitudeOffset = 1.0;
|
|
555
|
+
|
|
553
556
|
if (shapeHasLongitude) {
|
|
554
557
|
shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE"] = true;
|
|
555
558
|
|
|
@@ -565,73 +568,15 @@ VoxelEllipsoidShape.prototype.update = function (
|
|
|
565
568
|
shaderUniforms.ellipsoidShapeUvLongitudeRangeOrigin =
|
|
566
569
|
uvLongitudeRangeOrigin;
|
|
567
570
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED"] =
|
|
571
|
-
true;
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
if (shapeLongitudeRange <= epsilonLongitude) {
|
|
575
|
-
shaderUniforms.ellipsoidLocalToShapeUvLongitude = Cartesian2.fromElements(
|
|
576
|
-
0.0,
|
|
577
|
-
1.0,
|
|
578
|
-
shaderUniforms.ellipsoidLocalToShapeUvLongitude,
|
|
579
|
-
);
|
|
580
|
-
} else {
|
|
581
|
-
const scale = defaultLongitudeRange / shapeLongitudeRange;
|
|
571
|
+
if (shapeLongitudeRange > epsilonLongitude) {
|
|
572
|
+
longitudeScale = defaultLongitudeRange / shapeLongitudeRange;
|
|
582
573
|
const shiftedMinLongitude = uvShapeMinLongitude - uvLongitudeRangeOrigin;
|
|
583
|
-
|
|
584
|
-
-
|
|
585
|
-
|
|
586
|
-
scale,
|
|
587
|
-
offset,
|
|
588
|
-
shaderUniforms.ellipsoidLocalToShapeUvLongitude,
|
|
589
|
-
);
|
|
574
|
+
longitudeOffset =
|
|
575
|
+
-longitudeScale *
|
|
576
|
+
(shiftedMinLongitude - Math.floor(shiftedMinLongitude));
|
|
590
577
|
}
|
|
591
578
|
}
|
|
592
579
|
|
|
593
|
-
if (renderHasLongitude) {
|
|
594
|
-
const renderIsMinLongitudeDiscontinuity = CesiumMath.equalsEpsilon(
|
|
595
|
-
renderMinBounds.x,
|
|
596
|
-
DefaultMinBounds.x,
|
|
597
|
-
undefined,
|
|
598
|
-
epsilonLongitudeDiscontinuity,
|
|
599
|
-
);
|
|
600
|
-
const renderIsMaxLongitudeDiscontinuity = CesiumMath.equalsEpsilon(
|
|
601
|
-
renderMaxBounds.x,
|
|
602
|
-
DefaultMaxBounds.x,
|
|
603
|
-
undefined,
|
|
604
|
-
epsilonLongitudeDiscontinuity,
|
|
605
|
-
);
|
|
606
|
-
|
|
607
|
-
if (renderIsMinLongitudeDiscontinuity) {
|
|
608
|
-
shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY"] =
|
|
609
|
-
true;
|
|
610
|
-
}
|
|
611
|
-
if (renderIsMaxLongitudeDiscontinuity) {
|
|
612
|
-
shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY"] =
|
|
613
|
-
true;
|
|
614
|
-
}
|
|
615
|
-
const uvShapeMinLongitude =
|
|
616
|
-
(shapeMinBounds.x - DefaultMinBounds.x) / defaultLongitudeRange;
|
|
617
|
-
const uvShapeMaxLongitude =
|
|
618
|
-
(shapeMaxBounds.x - DefaultMinBounds.x) / defaultLongitudeRange;
|
|
619
|
-
|
|
620
|
-
const uvRenderMaxLongitude =
|
|
621
|
-
(renderMaxBounds.x - DefaultMinBounds.x) / defaultLongitudeRange;
|
|
622
|
-
const uvRenderLongitudeRangeZero =
|
|
623
|
-
1.0 - renderLongitudeRange / defaultLongitudeRange;
|
|
624
|
-
const uvRenderLongitudeRangeZeroMid =
|
|
625
|
-
(uvRenderMaxLongitude + 0.5 * uvRenderLongitudeRangeZero) % 1.0;
|
|
626
|
-
|
|
627
|
-
shaderUniforms.ellipsoidShapeUvLongitudeMinMaxMid = Cartesian3.fromElements(
|
|
628
|
-
uvShapeMinLongitude,
|
|
629
|
-
uvShapeMaxLongitude,
|
|
630
|
-
uvRenderLongitudeRangeZeroMid,
|
|
631
|
-
shaderUniforms.ellipsoidShapeUvLongitudeMinMaxMid,
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
|
-
|
|
635
580
|
if (renderHasLatitude) {
|
|
636
581
|
// Intersects a cone for min latitude
|
|
637
582
|
if (renderHasLatitudeMin) {
|
|
@@ -682,28 +627,36 @@ VoxelEllipsoidShape.prototype.update = function (
|
|
|
682
627
|
);
|
|
683
628
|
}
|
|
684
629
|
|
|
630
|
+
// Defaults are for the case where shapeLatitudeRange is zero, to avoid division by zero.
|
|
631
|
+
let latitudeScale = 0.0;
|
|
632
|
+
let latitudeOffset = 1.0;
|
|
633
|
+
|
|
685
634
|
if (shapeHasLatitude) {
|
|
686
635
|
shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE"] = true;
|
|
687
636
|
|
|
688
|
-
if (shapeLatitudeRange
|
|
689
|
-
shaderUniforms.ellipsoidLocalToShapeUvLatitude = Cartesian2.fromElements(
|
|
690
|
-
0.0,
|
|
691
|
-
1.0,
|
|
692
|
-
shaderUniforms.ellipsoidLocalToShapeUvLatitude,
|
|
693
|
-
);
|
|
694
|
-
} else {
|
|
637
|
+
if (shapeLatitudeRange > epsilonLatitude) {
|
|
695
638
|
const defaultLatitudeRange = DefaultMaxBounds.y - DefaultMinBounds.y;
|
|
696
|
-
|
|
697
|
-
|
|
639
|
+
latitudeScale = defaultLatitudeRange / shapeLatitudeRange;
|
|
640
|
+
latitudeOffset =
|
|
698
641
|
(DefaultMinBounds.y - shapeMinBounds.y) / shapeLatitudeRange;
|
|
699
|
-
shaderUniforms.ellipsoidLocalToShapeUvLatitude = Cartesian2.fromElements(
|
|
700
|
-
scale,
|
|
701
|
-
offset,
|
|
702
|
-
shaderUniforms.ellipsoidLocalToShapeUvLatitude,
|
|
703
|
-
);
|
|
704
642
|
}
|
|
705
643
|
}
|
|
706
644
|
|
|
645
|
+
// Store scales in shader uniforms (GPU) and translates in private property (JS-only)
|
|
646
|
+
shaderUniforms.ellipsoidLocalToShapeUvScale = Cartesian3.fromElements(
|
|
647
|
+
longitudeScale,
|
|
648
|
+
latitudeScale,
|
|
649
|
+
heightScale,
|
|
650
|
+
shaderUniforms.ellipsoidLocalToShapeUvScale,
|
|
651
|
+
);
|
|
652
|
+
|
|
653
|
+
this._localToShapeUvTranslate = Cartesian3.fromElements(
|
|
654
|
+
longitudeOffset,
|
|
655
|
+
latitudeOffset,
|
|
656
|
+
0.0, // Height translate not used (always 1.0 + height * scale)
|
|
657
|
+
this._localToShapeUvTranslate,
|
|
658
|
+
);
|
|
659
|
+
|
|
707
660
|
this._shaderMaximumIntersectionsLength = intersectionCount;
|
|
708
661
|
|
|
709
662
|
return true;
|
|
@@ -943,11 +896,10 @@ VoxelEllipsoidShape.prototype.convertLocalToShapeUvSpace = function (
|
|
|
943
896
|
ellipsoidRadii,
|
|
944
897
|
evoluteScale,
|
|
945
898
|
ellipsoidInverseRadiiSquared,
|
|
946
|
-
ellipsoidInverseHeightDifference,
|
|
947
899
|
ellipsoidShapeUvLongitudeRangeOrigin,
|
|
948
|
-
|
|
949
|
-
ellipsoidLocalToShapeUvLatitude,
|
|
900
|
+
ellipsoidLocalToShapeUvScale,
|
|
950
901
|
} = this._shaderUniforms;
|
|
902
|
+
const localToShapeUvTranslate = this._localToShapeUvTranslate;
|
|
951
903
|
|
|
952
904
|
const distanceFromZAxis = Math.hypot(positionLocal.x, positionLocal.y);
|
|
953
905
|
const posEllipse = Cartesian2.fromElements(
|
|
@@ -999,19 +951,17 @@ VoxelEllipsoidShape.prototype.convertLocalToShapeUvSpace = function (
|
|
|
999
951
|
longitude = longitude - Math.floor(longitude);
|
|
1000
952
|
// Scale and shift so [0, 1] covers the occupied space.
|
|
1001
953
|
longitude =
|
|
1002
|
-
longitude *
|
|
1003
|
-
ellipsoidLocalToShapeUvLongitude.y;
|
|
954
|
+
longitude * ellipsoidLocalToShapeUvScale.x + localToShapeUvTranslate.x;
|
|
1004
955
|
}
|
|
1005
956
|
|
|
1006
957
|
latitude = (latitude + Math.PI / 2.0) / Math.PI;
|
|
1007
958
|
if (defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)) {
|
|
1008
959
|
// Scale and shift so [0, 1] covers the occupied space.
|
|
1009
960
|
latitude =
|
|
1010
|
-
latitude *
|
|
1011
|
-
ellipsoidLocalToShapeUvLatitude.y;
|
|
961
|
+
latitude * ellipsoidLocalToShapeUvScale.y + localToShapeUvTranslate.y;
|
|
1012
962
|
}
|
|
1013
963
|
|
|
1014
|
-
height = 1.0 + height *
|
|
964
|
+
height = 1.0 + height * ellipsoidLocalToShapeUvScale.z;
|
|
1015
965
|
|
|
1016
966
|
return Cartesian3.fromElements(longitude, latitude, height, result);
|
|
1017
967
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Metadata ordering for voxel content.
|
|
3
5
|
* In all cases, x data is contiguous in strides along the y axis,
|
|
@@ -21,4 +23,7 @@ const VoxelMetadataOrder = {
|
|
|
21
23
|
*/
|
|
22
24
|
Y_UP: 1,
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
|
|
27
|
+
Object.freeze(VoxelMetadataOrder);
|
|
28
|
+
|
|
29
|
+
export default VoxelMetadataOrder;
|
|
@@ -19,13 +19,11 @@ import BufferPointMaterialVS from "../Shaders/BufferPointMaterialVS.js";
|
|
|
19
19
|
import BufferPointMaterialFS from "../Shaders/BufferPointMaterialFS.js";
|
|
20
20
|
import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
|
|
21
21
|
import AttributeCompression from "../Core/AttributeCompression.js";
|
|
22
|
-
import Matrix4 from "../Core/Matrix4.js";
|
|
23
|
-
import BoundingSphere from "../Core/BoundingSphere.js";
|
|
24
22
|
import BufferPointMaterial from "./BufferPointMaterial.js";
|
|
25
23
|
|
|
26
24
|
/** @import FrameState from "./FrameState.js"; */
|
|
27
25
|
/** @import BufferPointCollection from "./BufferPointCollection.js"; */
|
|
28
|
-
/** @import {
|
|
26
|
+
/** @import {TypedArray} from "../Core/globalTypes.js"; */
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
29
|
* TODO(PR#13211): Need 'keyof' syntax to avoid duplicating attribute names.
|
|
@@ -52,7 +50,6 @@ const BufferPointAttributeLocations = {
|
|
|
52
50
|
* @property {RenderState} [renderState]
|
|
53
51
|
* @property {ShaderProgram} [shaderProgram]
|
|
54
52
|
* @property {DrawCommand} [command]
|
|
55
|
-
* @property {Destroyable[]} [pickIds] Unordered list of collection PickIds.
|
|
56
53
|
* @property {Function} destroy
|
|
57
54
|
* @ignore
|
|
58
55
|
*/
|
|
@@ -87,12 +84,8 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
87
84
|
};
|
|
88
85
|
}
|
|
89
86
|
|
|
90
|
-
if (!defined(renderContext.pickIds)) {
|
|
91
|
-
renderContext.pickIds = [];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
87
|
if (collection._dirtyCount > 0) {
|
|
95
|
-
const { attributeArrays
|
|
88
|
+
const { attributeArrays } = renderContext;
|
|
96
89
|
|
|
97
90
|
const positionHighArray = attributeArrays.positionHigh;
|
|
98
91
|
const positionLowArray = attributeArrays.positionLow;
|
|
@@ -110,19 +103,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
110
103
|
continue;
|
|
111
104
|
}
|
|
112
105
|
|
|
113
|
-
if (collection._allowPicking && point._pickId === 0) {
|
|
114
|
-
const pickId = context.createPickId({
|
|
115
|
-
collection,
|
|
116
|
-
index: i,
|
|
117
|
-
get primitive() {
|
|
118
|
-
// Cannot reuse primitives; scene.drillPick() appends to a list.
|
|
119
|
-
return collection.get(this.index, new BufferPoint());
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
point._pickId = pickId.key;
|
|
123
|
-
pickIds.push(pickId);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
106
|
point.getPosition(cartesian);
|
|
127
107
|
EncodedCartesian3.fromCartesian(cartesian, encodedCartesian);
|
|
128
108
|
point.getMaterial(material);
|
|
@@ -168,7 +148,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
168
148
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
169
149
|
typedArray: attributeArrays.positionHigh,
|
|
170
150
|
context,
|
|
171
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
172
151
|
usage: BufferUsage.STATIC_DRAW,
|
|
173
152
|
}),
|
|
174
153
|
},
|
|
@@ -179,7 +158,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
179
158
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
180
159
|
typedArray: attributeArrays.positionLow,
|
|
181
160
|
context,
|
|
182
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
183
161
|
usage: BufferUsage.STATIC_DRAW,
|
|
184
162
|
}),
|
|
185
163
|
},
|
|
@@ -190,7 +168,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
190
168
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
191
169
|
typedArray: attributeArrays.pickColor,
|
|
192
170
|
context,
|
|
193
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
194
171
|
usage: BufferUsage.STATIC_DRAW,
|
|
195
172
|
}),
|
|
196
173
|
},
|
|
@@ -201,7 +178,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
201
178
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
202
179
|
typedArray: attributeArrays.showSizeAndColor,
|
|
203
180
|
context,
|
|
204
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
205
181
|
usage: BufferUsage.STATIC_DRAW,
|
|
206
182
|
}),
|
|
207
183
|
},
|
|
@@ -212,7 +188,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
212
188
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
213
189
|
typedArray: attributeArrays.outlineWidthAndOutlineColor,
|
|
214
190
|
context,
|
|
215
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
216
191
|
usage: BufferUsage.STATIC_DRAW,
|
|
217
192
|
}),
|
|
218
193
|
},
|
|
@@ -252,26 +227,33 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
252
227
|
});
|
|
253
228
|
}
|
|
254
229
|
|
|
255
|
-
if (
|
|
256
|
-
!defined(renderContext.command) ||
|
|
257
|
-
isCommandDirty(collection, renderContext.command)
|
|
258
|
-
) {
|
|
230
|
+
if (!defined(renderContext.command)) {
|
|
259
231
|
renderContext.command = new DrawCommand({
|
|
260
232
|
vertexArray: renderContext.vertexArray,
|
|
261
233
|
renderState: renderContext.renderState,
|
|
262
234
|
shaderProgram: renderContext.shaderProgram,
|
|
263
235
|
primitiveType: PrimitiveType.POINTS,
|
|
264
236
|
pass: Pass.OPAQUE,
|
|
265
|
-
pickId: "v_pickColor",
|
|
237
|
+
pickId: collection._allowPicking ? "v_pickColor" : undefined,
|
|
266
238
|
owner: collection,
|
|
267
239
|
count: collection.primitiveCount,
|
|
268
|
-
modelMatrix: collection.modelMatrix,
|
|
269
|
-
boundingVolume: collection.boundingVolumeWC,
|
|
240
|
+
modelMatrix: collection.modelMatrix, // shared reference
|
|
241
|
+
boundingVolume: collection.boundingVolumeWC, // shared reference
|
|
270
242
|
debugShowBoundingVolume: collection.debugShowBoundingVolume,
|
|
271
243
|
});
|
|
272
244
|
}
|
|
273
245
|
|
|
274
|
-
|
|
246
|
+
const command = renderContext.command;
|
|
247
|
+
|
|
248
|
+
if (command.count !== collection.primitiveCount) {
|
|
249
|
+
command.count = collection.primitiveCount;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (command.debugShowBoundingVolume !== collection.debugShowBoundingVolume) {
|
|
253
|
+
command.debugShowBoundingVolume = collection.debugShowBoundingVolume;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
frameState.commandList.push(command);
|
|
275
257
|
|
|
276
258
|
collection._dirtyCount = 0;
|
|
277
259
|
collection._dirtyOffset = 0;
|
|
@@ -279,31 +261,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
279
261
|
return renderContext;
|
|
280
262
|
}
|
|
281
263
|
|
|
282
|
-
/**
|
|
283
|
-
* Returns true if DrawCommand is out of date for the given collection.
|
|
284
|
-
* @param {BufferPointCollection} collection
|
|
285
|
-
* @param {DrawCommand} command
|
|
286
|
-
* @ignore
|
|
287
|
-
*/
|
|
288
|
-
function isCommandDirty(collection, command) {
|
|
289
|
-
const isModelMatrixEqual = Matrix4.equals(
|
|
290
|
-
collection.modelMatrix,
|
|
291
|
-
command._modelMatrix,
|
|
292
|
-
);
|
|
293
|
-
|
|
294
|
-
const isBoundingVolumeEqual = BoundingSphere.equals(
|
|
295
|
-
collection.boundingVolumeWC,
|
|
296
|
-
command._boundingVolume,
|
|
297
|
-
);
|
|
298
|
-
|
|
299
|
-
return (
|
|
300
|
-
collection.primitiveCount !== command._count ||
|
|
301
|
-
collection.debugShowBoundingVolume !== command.debugShowBoundingVolume ||
|
|
302
|
-
!isModelMatrixEqual ||
|
|
303
|
-
!isBoundingVolumeEqual
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
264
|
/**
|
|
308
265
|
* Destroys render context resources. Deleting properties from the context
|
|
309
266
|
* object isn't necessary, as collection.destroy() will discard the object.
|
|
@@ -323,12 +280,6 @@ function destroyRenderContext() {
|
|
|
323
280
|
if (defined(context.renderState)) {
|
|
324
281
|
RenderState.removeFromCache(context.renderState);
|
|
325
282
|
}
|
|
326
|
-
|
|
327
|
-
if (defined(context.pickIds)) {
|
|
328
|
-
for (const pickId of context.pickIds) {
|
|
329
|
-
pickId.destroy();
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
283
|
}
|
|
333
284
|
|
|
334
285
|
export default renderBufferPointCollection;
|
|
@@ -20,11 +20,9 @@ import BufferPolygonMaterialFS from "../Shaders/BufferPolygonMaterialFS.js";
|
|
|
20
20
|
import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
|
|
21
21
|
import AttributeCompression from "../Core/AttributeCompression.js";
|
|
22
22
|
import IndexDatatype from "../Core/IndexDatatype.js";
|
|
23
|
-
import BoundingSphere from "../Core/BoundingSphere.js";
|
|
24
|
-
import Matrix4 from "../Core/Matrix4.js";
|
|
25
23
|
import BufferPolygonMaterial from "./BufferPolygonMaterial.js";
|
|
26
24
|
|
|
27
|
-
/** @import {
|
|
25
|
+
/** @import {TypedArray} from "../Core/globalTypes.js"; */
|
|
28
26
|
/** @import FrameState from "./FrameState.js"; */
|
|
29
27
|
/** @import BufferPolygonCollection from "./BufferPolygonCollection.js"; */
|
|
30
28
|
|
|
@@ -53,7 +51,6 @@ const BufferPolygonAttributeLocations = {
|
|
|
53
51
|
* @property {RenderState} [renderState]
|
|
54
52
|
* @property {ShaderProgram} [shaderProgram]
|
|
55
53
|
* @property {DrawCommand} [command]
|
|
56
|
-
* @property {Destroyable[]} [pickIds]
|
|
57
54
|
* @property {Function} destroy
|
|
58
55
|
* @ignore
|
|
59
56
|
*/
|
|
@@ -96,12 +93,8 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
96
93
|
};
|
|
97
94
|
}
|
|
98
95
|
|
|
99
|
-
if (!defined(renderContext.pickIds)) {
|
|
100
|
-
renderContext.pickIds = [];
|
|
101
|
-
}
|
|
102
|
-
|
|
103
96
|
if (collection._dirtyCount > 0) {
|
|
104
|
-
const { attributeArrays
|
|
97
|
+
const { attributeArrays } = renderContext;
|
|
105
98
|
const { _dirtyOffset, _dirtyCount } = collection;
|
|
106
99
|
|
|
107
100
|
const indexArray = renderContext.indexArray;
|
|
@@ -117,19 +110,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
117
110
|
continue;
|
|
118
111
|
}
|
|
119
112
|
|
|
120
|
-
if (collection._allowPicking && polygon._pickId === 0) {
|
|
121
|
-
const pickId = context.createPickId({
|
|
122
|
-
collection,
|
|
123
|
-
index: i,
|
|
124
|
-
get primitive() {
|
|
125
|
-
// Cannot reuse primitives; scene.drillPick() appends to a list.
|
|
126
|
-
return collection.get(i, new BufferPolygon());
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
polygon._pickId = pickId.key;
|
|
130
|
-
pickIds.push(pickId);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
113
|
let tOffset = polygon.triangleOffset;
|
|
134
114
|
let vOffset = polygon.vertexOffset;
|
|
135
115
|
|
|
@@ -188,9 +168,8 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
188
168
|
indexBuffer: Buffer.createIndexBuffer({
|
|
189
169
|
context,
|
|
190
170
|
typedArray: renderContext.indexArray,
|
|
191
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
192
171
|
usage: BufferUsage.STATIC_DRAW,
|
|
193
|
-
// @ts-expect-error
|
|
172
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/issues/13420
|
|
194
173
|
indexDatatype: IndexDatatype.fromTypedArray(renderContext.indexArray),
|
|
195
174
|
}),
|
|
196
175
|
|
|
@@ -202,7 +181,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
202
181
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
203
182
|
typedArray: attributeArrays.positionHigh,
|
|
204
183
|
context,
|
|
205
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
206
184
|
usage: BufferUsage.STATIC_DRAW,
|
|
207
185
|
}),
|
|
208
186
|
},
|
|
@@ -213,7 +191,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
213
191
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
214
192
|
typedArray: attributeArrays.positionLow,
|
|
215
193
|
context,
|
|
216
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
217
194
|
usage: BufferUsage.STATIC_DRAW,
|
|
218
195
|
}),
|
|
219
196
|
},
|
|
@@ -224,7 +201,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
224
201
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
225
202
|
typedArray: attributeArrays.pickColor,
|
|
226
203
|
context,
|
|
227
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
228
204
|
usage: BufferUsage.STATIC_DRAW,
|
|
229
205
|
}),
|
|
230
206
|
},
|
|
@@ -235,7 +211,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
235
211
|
vertexBuffer: Buffer.createVertexBuffer({
|
|
236
212
|
typedArray: attributeArrays.showAndColor,
|
|
237
213
|
context,
|
|
238
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
239
214
|
usage: BufferUsage.STATIC_DRAW,
|
|
240
215
|
}),
|
|
241
216
|
},
|
|
@@ -284,26 +259,35 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
284
259
|
});
|
|
285
260
|
}
|
|
286
261
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
) {
|
|
262
|
+
const drawCount = collection.triangleCount * 3;
|
|
263
|
+
|
|
264
|
+
if (!defined(renderContext.command)) {
|
|
291
265
|
renderContext.command = new DrawCommand({
|
|
292
266
|
vertexArray: renderContext.vertexArray,
|
|
293
267
|
renderState: renderContext.renderState,
|
|
294
268
|
shaderProgram: renderContext.shaderProgram,
|
|
295
269
|
primitiveType: PrimitiveType.TRIANGLES,
|
|
296
270
|
pass: Pass.OPAQUE,
|
|
297
|
-
pickId: "v_pickColor",
|
|
271
|
+
pickId: collection._allowPicking ? "v_pickColor" : undefined,
|
|
298
272
|
owner: collection,
|
|
299
|
-
count:
|
|
300
|
-
modelMatrix: collection.modelMatrix,
|
|
301
|
-
boundingVolume: collection.boundingVolumeWC,
|
|
273
|
+
count: drawCount,
|
|
274
|
+
modelMatrix: collection.modelMatrix, // shared reference
|
|
275
|
+
boundingVolume: collection.boundingVolumeWC, // shared reference
|
|
302
276
|
debugShowBoundingVolume: collection.debugShowBoundingVolume,
|
|
303
277
|
});
|
|
304
278
|
}
|
|
305
279
|
|
|
306
|
-
|
|
280
|
+
const command = renderContext.command;
|
|
281
|
+
|
|
282
|
+
if (command.count !== drawCount) {
|
|
283
|
+
command.count = drawCount;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
if (command.debugShowBoundingVolume !== collection.debugShowBoundingVolume) {
|
|
287
|
+
command.debugShowBoundingVolume = collection.debugShowBoundingVolume;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
frameState.commandList.push(command);
|
|
307
291
|
|
|
308
292
|
collection._dirtyCount = 0;
|
|
309
293
|
collection._dirtyOffset = 0;
|
|
@@ -311,31 +295,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
311
295
|
return renderContext;
|
|
312
296
|
}
|
|
313
297
|
|
|
314
|
-
/**
|
|
315
|
-
* Returns true if DrawCommand is out of date for the given collection.
|
|
316
|
-
* @param {BufferPolygonCollection} collection
|
|
317
|
-
* @param {DrawCommand} command
|
|
318
|
-
* @ignore
|
|
319
|
-
*/
|
|
320
|
-
function isCommandDirty(collection, command) {
|
|
321
|
-
const isModelMatrixEqual = Matrix4.equals(
|
|
322
|
-
collection.modelMatrix,
|
|
323
|
-
command._modelMatrix,
|
|
324
|
-
);
|
|
325
|
-
|
|
326
|
-
const isBoundingVolumeEqual = BoundingSphere.equals(
|
|
327
|
-
collection.boundingVolumeWC,
|
|
328
|
-
command._boundingVolume,
|
|
329
|
-
);
|
|
330
|
-
|
|
331
|
-
return (
|
|
332
|
-
collection.triangleCount * 3 !== command._count ||
|
|
333
|
-
collection.debugShowBoundingVolume !== command.debugShowBoundingVolume ||
|
|
334
|
-
!isModelMatrixEqual ||
|
|
335
|
-
!isBoundingVolumeEqual
|
|
336
|
-
);
|
|
337
|
-
}
|
|
338
|
-
|
|
339
298
|
/**
|
|
340
299
|
* Computes dirty ranges for attribute and index buffers in a collection.
|
|
341
300
|
* @param {BufferPolygonCollection} collection
|
|
@@ -375,12 +334,6 @@ function destroyRenderContext() {
|
|
|
375
334
|
if (defined(context.renderState)) {
|
|
376
335
|
RenderState.removeFromCache(context.renderState);
|
|
377
336
|
}
|
|
378
|
-
|
|
379
|
-
if (defined(context.pickIds)) {
|
|
380
|
-
for (const pickId of context.pickIds) {
|
|
381
|
-
pickId.destroy();
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
337
|
}
|
|
385
338
|
|
|
386
339
|
export default renderBufferPolygonCollection;
|