From d2984f6f14ba355925be15514437665261ab2cd3 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Fri, 22 Aug 2025 17:22:18 -0400 Subject: [PATCH 1/2] Add null check / nitialization for point cloud shading --- Runtime/Cesium3DTileset.cs | 2 +- Runtime/CesiumPointCloudRenderer.cs | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Runtime/Cesium3DTileset.cs b/Runtime/Cesium3DTileset.cs index 91f7a2bb..8ca3407e 100644 --- a/Runtime/Cesium3DTileset.cs +++ b/Runtime/Cesium3DTileset.cs @@ -617,7 +617,7 @@ public bool ignoreKhrMaterialsUnlit } [SerializeField] - private CesiumPointCloudShading _pointCloudShading; + private CesiumPointCloudShading _pointCloudShading = new CesiumPointCloudShading(); /// /// The CesiumPointCloudShading attached to this tileset. If the tileset diff --git a/Runtime/CesiumPointCloudRenderer.cs b/Runtime/CesiumPointCloudRenderer.cs index 098dc824..72c9f6a7 100644 --- a/Runtime/CesiumPointCloudRenderer.cs +++ b/Runtime/CesiumPointCloudRenderer.cs @@ -131,7 +131,9 @@ private void UpdateAttenuationParameters() 5.0f : this._tileset.maximumScreenSpaceError; - if (this._tileset.pointCloudShading.maximumAttenuation > 0.0f) + CesiumPointCloudShading pointCloudShading = this._tileset.pointCloudShading; + + if (pointCloudShading.maximumAttenuation > 0.0f) { maximumPointSize = this._tileset.pointCloudShading.maximumAttenuation; } @@ -142,8 +144,6 @@ private void UpdateAttenuationParameters() maximumPointSize *= Screen.dpi / 150; } - CesiumPointCloudShading pointCloudShading = this._tileset.pointCloudShading; - float geometricError = this.GetGeometricError(pointCloudShading); geometricError *= pointCloudShading.geometricErrorScale; @@ -227,7 +227,8 @@ private void DrawPointsWithAttenuation() void Update() { - if (this._tileset.pointCloudShading.attenuation) + CesiumPointCloudShading pointCloudShading = this._tileset.pointCloudShading; + if (pointCloudShading != null && pointCloudShading.attenuation) { this.DrawPointsWithAttenuation(); this._meshRenderer.enabled = false; From 7ba7d4082b5dc61e5709844cffab439372940fde Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Fri, 22 Aug 2025 17:39:55 -0400 Subject: [PATCH 2/2] Update changelog --- CHANGES.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 59c76673..1bd0d062 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,10 @@ - Added option to ignore the `KHR_material_unlit` extension to force default lighting on tilesets. +##### Fixes :wrench: + +- Fixed a bug where `CesiumPointCloudRenderer` could dereference a null `CesiumPointCloudShading` on `Cesium3DTileset`. + ## v1.17.0 - 2025-08-01 ##### Additions :tada: