From 87ea91d5f4fd7ec35b6b0aec8ad5db3ec4c9fd73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=97=B6=E6=97=BA?= <3454201525@qq.com> Date: Tue, 5 Aug 2025 18:32:41 +0800 Subject: [PATCH 1/3] Improve the flickering issue of Gaussian splashes --- packages/engine/Source/Scene/GaussianSplatPrimitive.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/engine/Source/Scene/GaussianSplatPrimitive.js b/packages/engine/Source/Scene/GaussianSplatPrimitive.js index 555bd2bae6e..d1f9f853839 100644 --- a/packages/engine/Source/Scene/GaussianSplatPrimitive.js +++ b/packages/engine/Source/Scene/GaussianSplatPrimitive.js @@ -537,7 +537,7 @@ GaussianSplatPrimitive.generateSplatTexture = function (primitive, frameState) { }, }); } - + primitive._vertexArray = undefined; primitive._lastTextureHeight = splatTextureData.height; primitive._lastTextureWidth = splatTextureData.width; @@ -603,8 +603,9 @@ GaussianSplatPrimitive.buildGSplatDrawCommand = function ( const uniformMap = renderResources.uniformMap; + const textureCache = primitive.gaussianSplatTexture; uniformMap.u_splatAttributeTexture = function () { - return primitive.gaussianSplatTexture; + return textureCache; }; uniformMap.u_splitDirection = function () { @@ -682,12 +683,13 @@ GaussianSplatPrimitive.buildGSplatDrawCommand = function ( scratchMatrix4B, ); + const vertexArrayCache = primitive._vertexArray; const command = new DrawCommand({ boundingVolume: tileset.boundingSphere, modelMatrix: modelMatrix, uniformMap: uniformMap, renderState: renderState, - vertexArray: primitive._vertexArray, + vertexArray: vertexArrayCache, shaderProgram: shaderProgram, cull: renderStateOptions.cull.enabled, pass: Pass.GAUSSIAN_SPLATS, From af8530a00ee4f33a6ea672fe311bb3d204557e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=97=B6=E6=97=BA?= <3454201525@qq.com> Date: Tue, 5 Aug 2025 18:51:04 +0800 Subject: [PATCH 2/3] update CONTRIBUTORS.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index bd0a308cbce..cdab9e46848 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -428,3 +428,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to Cesiu - [Matt Schwartz](https://github.com/mzschwartz5) - [Easy Mahaffey](https://github.com/easymaahffey) - [Pamela Augustine](https://github.com/pamelaAugustine) +- [宋时旺](https://github.com/BlockCnFuture) From e60a89aab6cdf01681254ac35a43ee550634b822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=97=B6=E6=97=BA?= <3454201525@qq.com> Date: Wed, 27 Aug 2025 09:57:03 +0800 Subject: [PATCH 3/3] update CHANGES.md --- CHANGES.md | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 39e64d35c51..2eb6af127cd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,15 +12,13 @@ #### Fixes :wrench: - Removes the minimum tile threshold of four for WMTS. [#4372](https://github.com/CesiumGS/cesium/issues/4372) +- Fixed a crash that could happen when loading PNTS (point cloud) data that contained a batch table without a binary part [#11166](https://github.com/CesiumGS/cesium/issues/11166) +- Fix the issue of sorting artifacts in the 3D Gaussian model caused by using incorrect sorting results. [#12662](https://github.com/CesiumGS/cesium/issues/12662) #### Additions :tada: - Added support for the [EXT_mesh_primitive_restart](https://github.com/KhronosGroup/glTF/pull/2478) glTF extension. [#12764](https://github.com/CesiumGS/cesium/issues/12764) -#### Fixes :wrench: - -- Fixed a crash that could happen when loading PNTS (point cloud) data that contained a batch table without a binary part [#11166](https://github.com/CesiumGS/cesium/issues/11166) - ## 1.132 - 2025-08-01 ### @cesium/engine @@ -2468,6 +2466,7 @@ _This is an npm-only release to fix a publishing issue_. ### Breaking Changes :mega: - Clipping planes on tilesets now use the root tile's transform, or the root tile's bounding sphere if a transform is not defined. [#7034](https://github.com/CesiumGS/cesium/pull/7034) + - This is to make clipping planes' coordinates always relative to the object they're attached to. So if you were positioning the clipping planes as in the example below, this is no longer necessary: ```javascript @@ -2475,6 +2474,7 @@ _This is an npm-only release to fix a publishing issue_. tileset.boundingSphere.center, ); ``` + - This also fixes several issues with clipping planes not using the correct transform for tilesets with children. ### Additions :tada: @@ -4121,8 +4121,10 @@ _This is an npm-only release to fix a publishing issue_. ## 1.0 - 2014-08-01 - Breaking changes ([why so many?](https://community.cesium.com/t/moving-towards-cesium-1-0/1209)) + - All `Matrix2`, `Matrix3`, `Matrix4` and `Quaternion` functions that take a `result` parameter now require the parameter, except functions starting with `from`. - Removed `Billboard.imageIndex` and `BillboardCollection.textureAtlas`. Instead, use `Billboard.image`. + - Code that looked like: var billboards = new Cesium.BillboardCollection(); @@ -4259,6 +4261,7 @@ _This is an npm-only release to fix a publishing issue_. ## b30 - 2014-07-01 - Breaking changes ([why so many?](https://community.cesium.com/t/moving-towards-cesium-1-0/1209)) + - CZML property references now use a `#` symbol to separate identifier from property path. `objectId.position` should now be `objectId#position`. - All `Cartesian2`, `Cartesian3`, `Cartesian4`, `TimeInterval`, and `JulianDate` functions that take a `result` parameter now require the parameter (except for functions starting with `from`). - Modified `Transforms.pointToWindowCoordinates` and `SceneTransforms.wgs84ToWindowCoordinates` to return window coordinates with origin at the top left corner. @@ -4307,6 +4310,7 @@ _This is an npm-only release to fix a publishing issue_. - `date.greaterThan(right)` -> `JulianDate.greaterThan(left, right)` - `date.greaterThanOrEquals(right)` -> `JulianDate.greaterThanOrEquals(left, right)` - Refactored `TimeInterval` to be in line with other Core types. + - The constructor no longer requires parameters and now takes a single options parameter. Code that looked like: new TimeInterval(startTime, stopTime, true, true, data); @@ -4320,6 +4324,7 @@ _This is an npm-only release to fix a publishing issue_. isStopIncluded : true, data : data }); + - `TimeInterval.fromIso8601` now takes a single options parameter. Code that looked like: TimeInterval.fromIso8601(intervalString, true, true, data); @@ -4332,6 +4337,7 @@ _This is an npm-only release to fix a publishing issue_. isStopIncluded : true, data : data }); + - `interval.intersect(otherInterval)` -> `TimeInterval.intersect(interval, otherInterval)` - `interval.contains(date)` -> `TimeInterval.contains(interval, date)` @@ -4388,6 +4394,7 @@ _This is an npm-only release to fix a publishing issue_. ## b29 - 2014-06-02 - Breaking changes ([why so many?](https://community.cesium.com/t/moving-towards-cesium-1-0/1209)) + - Replaced `Scene.createTextureAtlas` with `new TextureAtlas`. - Removed `CameraFlightPath.createAnimationCartographic`. Code that looked like: @@ -4505,6 +4512,7 @@ _This is an npm-only release to fix a publishing issue_. ## b27 - 2014-04-01 - Breaking changes: + - All `CameraController` functions have been moved up to the `Camera`. Removed `CameraController`. For example, code that looked like: scene.camera.controller.viewExtent(extent); @@ -4814,6 +4822,7 @@ _This is an npm-only release to fix a publishing issue_. ## b24 - 2014-01-06 - Breaking changes: + - Added `allowTextureFilterAnisotropic` (default: `true`) and `failIfMajorPerformanceCaveat` (default: `true`) properties to the `contextOptions` property passed to `Viewer`, `CesiumWidget`, and `Scene` constructors and moved the existing properties to a new `webgl` sub-property. For example, code that looked like: var viewer = new Viewer('cesiumContainer', { @@ -4861,6 +4870,7 @@ _This is an npm-only release to fix a publishing issue_. ## b23 - 2013-12-02 - Breaking changes: + - Changed the `CatmullRomSpline` and `HermiteSpline` constructors from taking an array of structures to a structure of arrays. For example, code that looked like: var controlPoints = [ @@ -4974,6 +4984,7 @@ _This is an npm-only release to fix a publishing issue_. ## b21 - 2013-10-01 - Breaking changes: + - Cesium now prints a reminder to the console if your application uses Bing Maps imagery and you do not supply a Bing Maps key for your application. This is a reminder that you should create a Bing Maps key for your application as soon as possible and prior to deployment. You can generate a Bing Maps key by visiting [https://www.bingmapsportal.com/](https://www.bingmapsportal.com/). Set the `BingMapsApi.defaultKey` property to the value of your application's key before constructing the `CesiumWidget` or any other types that use the Bing Maps API. BingMapsApi.defaultKey = 'my-key-generated-with-bingmapsportal.com'; @@ -4995,6 +5006,7 @@ _This is an npm-only release to fix a publishing issue_. - Removed `getViewMatrix`, `getInverseViewMatrix`, `getInverseTransform`, `getPositionWC`, `getDirectionWC`, `getUpWC` and `getRightWC` from `Camera`. Instead, use the `viewMatrix`, `inverseViewMatrix`, `inverseTransform`, `positionWC`, `directionWC`, `upWC`, and `rightWC` properties. - Removed `getProjectionMatrix` and `getInfiniteProjectionMatrix` from `PerspectiveFrustum`, `PerspectiveOffCenterFrustum` and `OrthographicFrustum`. Instead, use the `projectionMatrix` and `infiniteProjectionMatrix` properties. - The following prototype functions were removed: + - From `Quaternion`: `conjugate`, `magnitudeSquared`, `magnitude`, `normalize`, `inverse`, `add`, `subtract`, `negate`, `dot`, `multiply`, `multiplyByScalar`, `divideByScalar`, `getAxis`, `getAngle`, `lerp`, `slerp`, `equals`, `equalsEpsilon` - From `Cartesian2`, `Cartesian3`, and `Cartesian4`: `getMaximumComponent`, `getMinimumComponent`, `magnitudeSquared`, `magnitude`, `normalize`, `dot`, `multiplyComponents`, `add`, `subtract`, `multiplyByScalar`, `divideByScalar`, `negate`, `abs`, `lerp`, `angleBetween`, `mostOrthogonalAxis`, `equals`, and `equalsEpsilon`. - From `Cartesian3`: `cross` @@ -5049,6 +5061,7 @@ _This is an npm-only release to fix a publishing issue_. _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https://github.com/CesiumGS/cesium/issues/1002) and [#1047](https://github.com/CesiumGS/cesium/issues/1047))._ - Breaking changes: + - The `CameraFlightPath` functions `createAnimation`, `createAnimationCartographic`, and `createAnimationExtent` now take `scene` as their first parameter instead of `frameState`. - Completely refactored the `DynamicScene` property system to vastly improve the API. See [#1080](https://github.com/CesiumGS/cesium/pull/1080) for complete details. - Removed `CzmlBoolean`, `CzmlCartesian2`, `CzmlCartesian3`, `CzmlColor`, `CzmlDefaults`, `CzmlDirection`, `CzmlHorizontalOrigin`, `CzmlImage`, `CzmlLabelStyle`, `CzmlNumber`, `CzmlPosition`, `CzmlString`, `CzmlUnitCartesian3`, `CzmlUnitQuaternion`, `CzmlUnitSpherical`, and `CzmlVerticalOrigin` since they are no longer needed. @@ -5226,6 +5239,7 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https ## b16 - 2013-05-01 - Breaking changes: + - Removed the color, outline color, and outline width properties of polylines. Instead, use materials for polyline color and outline properties. Code that looked like: var polyline = polylineCollection.add({ @@ -5343,6 +5357,7 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https ## b12a - 2013-01-18 - Breaking changes: + - Renamed the `server` property to `url` when constructing a `BingMapsImageryProvider`. Likewise, renamed `BingMapsImageryProvider.getServer` to `BingMapsImageryProvider.getUrl`. Code that looked like var bing = new BingMapsImageryProvider({ @@ -5470,6 +5485,7 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https ## b8 - 2012-09-05 - Breaking changes: + - Materials are now created through a centralized Material class using a JSON schema called [Fabric](https://github.com/CesiumGS/cesium/wiki/Fabric). For example, change: polygon.material = new BlobMaterial({repeat : 10.0}); @@ -5535,6 +5551,7 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https ## b7 - 2012-08-01 - Breaking changes: + - Removed keyboard input handling from `EventHandler`. - `TextureAtlas` takes an object literal in its constructor instead of separate parameters. Code that previously looked like: @@ -5645,6 +5662,7 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https ## b5 - 2012-05-15 - Breaking changes: + - Renamed Geoscope to Cesium. To update your code, change all `Geoscope.*` references to `Cesium.*`, and reference Cesium.js instead of Geoscope.js. - `CompositePrimitive.addGround` was removed; use `CompositePrimitive.add` instead. For example, change @@ -5724,6 +5742,7 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https ## b4 - 2012-03-01 - Breaking changes: + - Replaced `Geoscope.SkyFromSpace` object with `CentralBody.showSkyAtmosphere` property. - For mouse click and double click events, replaced `event.x` and `event.y` with `event.position`. - For mouse move events, replaced `movement.startX` and `startY` with `movement.startPosition`. Replaced `movement.endX` and `movement.endY` with `movement.endPosition`. @@ -5784,11 +5803,13 @@ _This releases fixes 2D and other issues with Chrome 29.0.1547.57 ([#1002](https - Added CameraFlightController to zoom smoothly from one point to another. See the new camera examples in the Sandbox. - Added row and column assessors to Matrix2, Matrix3, and Matrix4. - Added Scene, which reduces the amount of code required to use Geoscope. See the Skeleton. We recommend using this instead of explicitly calling update() and render() for individual or composite primitives. Existing code will need minor changes: + - Calls to Context.pick() should be replaced with Scene.pick(). - Primitive constructors no longer require a context argument. - Primitive update() and render() functions now require a context argument. However, when using the new Scene object, these functions do not need to be called directly. - TextureAtlas should no longer be created directly; instead, call Scene.getContext().createTextureAtlas(). - Other breaking changes: + - Camera get/set functions, e.g., getPosition/setPosition were replaced with properties, e.g., position. - Replaced CompositePrimitive, Polygon, and Polyline getShow/setShow functions with a show property. - Replaced Polyline, Polygon, BillboardCollection, and LabelCollection getBufferUsage/setBufferUsage functions with a bufferUsage property.