From f6abbe58d653382216081ad40b21a6ed36fea759 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 7 May 2024 11:26:22 -0400 Subject: [PATCH 1/5] Add extra setting check to material layer --- Content/Materials/Layers/ML_DitherFade.uasset | Bin 14583 -> 16568 bytes .../Private/CesiumGltfComponent.cpp | 11 +++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Content/Materials/Layers/ML_DitherFade.uasset b/Content/Materials/Layers/ML_DitherFade.uasset index a765e0fb8c2f66ba1eded0b652a505e1ccb6c1f5..162ba323ea4a7aa61a93c9dbbb82a866fc243dab 100644 GIT binary patch literal 16568 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�N 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 diff --git a/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp b/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp index 0b90ef7ff..6ae2de4d2 100644 --- a/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp +++ b/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp @@ -3135,10 +3135,17 @@ static void loadPrimitiveGameThreadPart( EMaterialParameterAssociation::LayerParameter, 0); - // Initialize fade uniform to fully visible, in case LOD transitions - // are off. int fadeLayerIndex = pCesiumData->LayerNames.Find("DitherFade"); if (fadeLayerIndex >= 0) { + pMaterial->SetScalarParameterValueByInfo( + FMaterialParameterInfo( + "EnableLodTransitions", + EMaterialParameterAssociation::LayerParameter, + fadeLayerIndex), + pTilesetActor->GetUseLodTransitions() ? 1.0f : 0.0f); + + // Initialize fade uniform to fully visible, in case LOD transitions + // are off. pMaterial->SetScalarParameterValueByInfo( FMaterialParameterInfo( "FadePercentage", From 31c64807d669dff5befd81c7d1d03495078b7959 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 7 May 2024 11:39:45 -0400 Subject: [PATCH 2/5] Use -> Enable LOD Transitions --- CHANGES.md | 3 ++- Config/Engine.ini | 5 ++++ Content/Materials/Layers/ML_DitherFade.uasset | Bin 16568 -> 16558 bytes .../CesiumRuntime/Private/Cesium3DTileset.cpp | 22 +++++++++--------- .../Private/CesiumGltfComponent.cpp | 6 ++--- Source/CesiumRuntime/Public/Cesium3DTileset.h | 19 +++++++++------ 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 716e992a5..b9178a2eb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,7 +4,8 @@ ##### Fixes :wrench: -- Fixed an issue with pixel dithering artifacts that could appear on tilesets. +- Fixed an issue with flickering pixel artifacts that could appear on tilesets. +- Fixed an issue with dithering artifacts that would appear on tilesets for non-temporal anti-aliasing methods. ### v2.5.0 - 2024-05-01 diff --git a/Config/Engine.ini b/Config/Engine.ini index d7044876c..059779532 100644 --- a/Config/Engine.ini +++ b/Config/Engine.ini @@ -152,3 +152,8 @@ AspectRatioAxisConstraint=AspectRatio_MaintainXFOV +EnumRedirects=(OldName="ECesiumMetadataPackedGpuType", NewName="ECesiumMetadataPackedGpuType_DEPRECATED", ValueChanges=(("None","Unknown_DEPRECATED"),("Uint8","Uint8_DEPRECATED"),("Float","Float_DEPRECATED"))) +FunctionRedirects=(OldName="CesiumFeatureIdTextureBlueprintLibrary.GetTextureCoordinateIndex", NewName="CesiumFeatureIdTextureBlueprintLibrary.GetUnrealUVChannel") + ++PropertyRedirects=(OldName="Cesium3DTileset.UseLodTransitions", NewName="EnableLodTransitions") ++FunctionRedirects=(OldName="Cesium3DTileset.GetUseLodTransitions", NewName="GetEnableLodTransitions") ++FunctionRedirects=(OldName="Cesium3DTileset.SetUseLodTransitions", NewName="SetEnableLodTransitions") ++PropertyRedirects=(OldName="Cesium3DTileset.SetUseLodTransitions.InUseLodTransitions", NewName="InEnableLodTransitions") \ No newline at end of file diff --git a/Content/Materials/Layers/ML_DitherFade.uasset b/Content/Materials/Layers/ML_DitherFade.uasset index 162ba323ea4a7aa61a93c9dbbb82a866fc243dab..be6ddcec37fbd7ff7767f4a786daf3104e06e2d1 100644 GIT binary patch delta 469 zcmdnd$hfYNal#aqTy+M9$vZhrCY}*sV&s_|=%8-H00fLY3=D!m`XV0#gAkN&C<>Bc zV2~Aq;61IiZQf)@#vH|aK#3{`uv$3r9|%Bp`2j`h7N28e z76Y2h;Fg$@>XKQMnp~2ZpU1F1J9*CJb1dSUf3W=GWXe^a{6JW0G9SMSQ;`OknFnMV zYl4~QfXo^#FjG&!h3S493vn$&*U|B#*-i0?GUKcq5ZUzQH1_p+6d<+aiKpMo?69qDW zKuQdP=c_U>7)N>kYhRz~wYf1j;`{6_^U02kIf}P|5-kp3wQ%A;5P+=l1B!GkKF7$c z#Sdh;C8neXq!uNo=9MI-r!p)m+Ik*n5lA>QFFmBPAeG_&zLqPSf3y7JWXziUjW3=t ze{vXqJfp$nZ9uYevY0?TUseLodTransitions) { - this->UseLodTransitions = InUseLodTransitions; +void ACesium3DTileset::SetEnableLodTransitions(bool InEnableLodTransitions) { + if (InEnableLodTransitions != this->EnableLodTransitions) { + this->EnableLodTransitions = InEnableLodTransitions; this->DestroyTileset(); } } @@ -442,13 +442,13 @@ void ACesium3DTileset::PlayMovieSequencer() { this->_beforeMoviePreloadAncestors = this->PreloadAncestors; this->_beforeMoviePreloadSiblings = this->PreloadSiblings; this->_beforeMovieLoadingDescendantLimit = this->LoadingDescendantLimit; - this->_beforeMovieUseLodTransitions = this->UseLodTransitions; + this->_beforeMovieEnableLodTransitions = this->EnableLodTransitions; this->_captureMovieMode = true; this->PreloadAncestors = false; this->PreloadSiblings = false; this->LoadingDescendantLimit = 10000; - this->UseLodTransitions = false; + this->EnableLodTransitions = false; } void ACesium3DTileset::StopMovieSequencer() { @@ -456,7 +456,7 @@ void ACesium3DTileset::StopMovieSequencer() { this->PreloadAncestors = this->_beforeMoviePreloadAncestors; this->PreloadSiblings = this->_beforeMoviePreloadSiblings; this->LoadingDescendantLimit = this->_beforeMovieLoadingDescendantLimit; - this->UseLodTransitions = this->_beforeMovieUseLodTransitions; + this->EnableLodTransitions = this->_beforeMovieEnableLodTransitions; } void ACesium3DTileset::PauseMovieSequencer() { this->StopMovieSequencer(); } @@ -1819,7 +1819,7 @@ void ACesium3DTileset::updateTilesetOptionsFromProperties() { options.enforceCulledScreenSpaceError = this->EnforceCulledScreenSpaceError; options.culledScreenSpaceError = static_cast(this->CulledScreenSpaceError); - options.enableLodTransitionPeriod = this->UseLodTransitions; + options.enableLodTransitionPeriod = this->EnableLodTransitions; options.lodTransitionLength = this->LodTransitionLength; // options.kickDescendantsWhileFadingIn = false; } @@ -2071,7 +2071,7 @@ void ACesium3DTileset::Tick(float DeltaTime) { for (Cesium3DTilesSelection::Tile* pTile : pResult->tilesFadingOut) { Cesium3DTilesSelection::TileRenderContent* pRenderContent = pTile->getContent().getRenderContent(); - if (!this->UseLodTransitions || + if (!this->EnableLodTransitions || (pRenderContent && pRenderContent->getLodTransitionFadePercentage() >= 1.0f)) { _tilesToHideNextFrame.push_back(pTile); @@ -2080,7 +2080,7 @@ void ACesium3DTileset::Tick(float DeltaTime) { showTilesToRender(pResult->tilesToRenderThisFrame); - if (this->UseLodTransitions) { + if (this->EnableLodTransitions) { TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::UpdateTileFades) for (Cesium3DTilesSelection::Tile* pTile : @@ -2180,7 +2180,7 @@ void ACesium3DTileset::PostEditChangeProperty( PropName == GET_MEMBER_NAME_CHECKED(ACesium3DTileset, EnableOcclusionCulling) || PropName == - GET_MEMBER_NAME_CHECKED(ACesium3DTileset, UseLodTransitions) || + GET_MEMBER_NAME_CHECKED(ACesium3DTileset, EnableLodTransitions) || PropName == GET_MEMBER_NAME_CHECKED(ACesium3DTileset, ShowCreditsOnScreen) || PropName == GET_MEMBER_NAME_CHECKED(ACesium3DTileset, Root) || diff --git a/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp b/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp index 6ae2de4d2..91ae59ff3 100644 --- a/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp +++ b/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp @@ -3142,9 +3142,9 @@ static void loadPrimitiveGameThreadPart( "EnableLodTransitions", EMaterialParameterAssociation::LayerParameter, fadeLayerIndex), - pTilesetActor->GetUseLodTransitions() ? 1.0f : 0.0f); + pTilesetActor->GetEnableLodTransitions() ? 1.0f : 0.0f); - // Initialize fade uniform to fully visible, in case LOD transitions + // Initialize fade uniforms to fully visible, in case LOD transitions // are off. pMaterial->SetScalarParameterValueByInfo( FMaterialParameterInfo( @@ -3154,7 +3154,7 @@ static void loadPrimitiveGameThreadPart( 1.0f); pMaterial->SetScalarParameterValueByInfo( FMaterialParameterInfo( - "FadingType", + "FadeDirection", EMaterialParameterAssociation::LayerParameter, fadeLayerIndex), 0.0f); diff --git a/Source/CesiumRuntime/Public/Cesium3DTileset.h b/Source/CesiumRuntime/Public/Cesium3DTileset.h index e398d7889..8599eaad5 100644 --- a/Source/CesiumRuntime/Public/Cesium3DTileset.h +++ b/Source/CesiumRuntime/Public/Cesium3DTileset.h @@ -616,17 +616,22 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { FCompletedLoadTrigger OnTilesetLoaded; /** - * Use a dithering effect when transitioning between tiles of different LODs. + * Whether to enable a dithering effect when transitioning between tiles of + * different LODs. + * + * This is only compatible with temporal anti-aliasing methods. Setting this + * to true for other anti-aliasing modes may result in unwanted visual + * artifacts. * * When this is set to true, Frustrum Culling and Fog Culling are always * disabled. */ UPROPERTY( EditAnywhere, - BlueprintGetter = GetUseLodTransitions, - BlueprintSetter = SetUseLodTransitions, + BlueprintGetter = GetEnableLodTransitions, + BlueprintSetter = SetEnableLodTransitions, Category = "Cesium|Rendering") - bool UseLodTransitions = false; + bool EnableLodTransitions = false; /** * How long dithered LOD transitions between different tiles should take, in @@ -904,10 +909,10 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { float GetLoadProgress() const { return LoadProgress; } UFUNCTION(BlueprintGetter, Category = "Cesium") - bool GetUseLodTransitions() const { return UseLodTransitions; } + bool GetEnableLodTransitions() const { return EnableLodTransitions; } UFUNCTION(BlueprintSetter, Category = "Cesium") - void SetUseLodTransitions(bool InUseLodTransitions); + void SetEnableLodTransitions(bool InEnableLodTransitions); UFUNCTION(BlueprintGetter, Category = "Cesium") ETilesetSource GetTilesetSource() const { return TilesetSource; } @@ -1207,7 +1212,7 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { bool _beforeMoviePreloadAncestors; bool _beforeMoviePreloadSiblings; int32_t _beforeMovieLoadingDescendantLimit; - bool _beforeMovieUseLodTransitions; + bool _beforeMovieEnableLodTransitions; bool _scaleUsingDPI; From 28b33c87d0373dff6519c9ba6007f81defcfa57f Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 7 May 2024 11:41:10 -0400 Subject: [PATCH 3/5] Update changelog for potentially breaking change --- CHANGES.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index b9178a2eb..4ad673568 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,10 @@ ### ? - ? +##### Breaking Changes :mega: + +- `UseLodTransitions` has been renamed to `EnableLodTransitions` on `Cesium3DTileset`. + ##### Fixes :wrench: - Fixed an issue with flickering pixel artifacts that could appear on tilesets. From 385078ad834cfeb1c7dd569fd836efc77f3a93b4 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 7 May 2024 12:16:44 -0400 Subject: [PATCH 4/5] Tweak wording --- CHANGES.md | 2 +- Source/CesiumRuntime/Public/Cesium3DTileset.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4ad673568..16025c308 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,7 +9,7 @@ ##### Fixes :wrench: - Fixed an issue with flickering pixel artifacts that could appear on tilesets. -- Fixed an issue with dithering artifacts that would appear on tilesets for non-temporal anti-aliasing methods. +- Fixed an issue with dithering artifacts that would appear on tilesets when using non-temporal anti-aliasing methods for Forward Rendering. ### v2.5.0 - 2024-05-01 diff --git a/Source/CesiumRuntime/Public/Cesium3DTileset.h b/Source/CesiumRuntime/Public/Cesium3DTileset.h index 8599eaad5..fd0fd0a30 100644 --- a/Source/CesiumRuntime/Public/Cesium3DTileset.h +++ b/Source/CesiumRuntime/Public/Cesium3DTileset.h @@ -619,12 +619,12 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { * Whether to enable a dithering effect when transitioning between tiles of * different LODs. * - * This is only compatible with temporal anti-aliasing methods. Setting this - * to true for other anti-aliasing modes may result in unwanted visual - * artifacts. - * * When this is set to true, Frustrum Culling and Fog Culling are always * disabled. + * + * When Forward Rendering is enabled for the project, LOD transitions are + * only compatible when used with temporal anti-aliasing methods. Setting this + * to true for other methods will result in dithering artifacts. */ UPROPERTY( EditAnywhere, From c7bb57bfc9a1e114fc84b2ef566200d94eb1915d Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 7 May 2024 16:20:17 -0400 Subject: [PATCH 5/5] Missed a few spots --- Source/CesiumRuntime/Public/Cesium3DTileset.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Source/CesiumRuntime/Public/Cesium3DTileset.h b/Source/CesiumRuntime/Public/Cesium3DTileset.h index fd0fd0a30..a29624a3c 100644 --- a/Source/CesiumRuntime/Public/Cesium3DTileset.h +++ b/Source/CesiumRuntime/Public/Cesium3DTileset.h @@ -425,13 +425,14 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { * This will cause more tiles to be loaded, but helps to avoid holes and * provides a more consistent mesh, which may be helpful for physics. * - * Note that this will always be disabled if UseLodTransitions is set to true. + * Note that this will always be disabled if Enable Lod Transitions is set to + * true. */ UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Cesium|Tile Culling", - Meta = (EditCondition = "!UseLodTransitions", EditConditionHides)) + Meta = (EditCondition = "!EnableLodTransitions", EditConditionHides)) bool EnableFrustumCulling = true; /** @@ -442,13 +443,14 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { * of the camera above the ground, tiles that are far away (close to * the horizon) will be culled when this flag is enabled. * - * Note that this will always be disabled if UseLodTransitions is set to true. + * Note that this will always be disabled if Enable Lod Transitions is set to + * true. */ UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Cesium|Tile Culling", - Meta = (EditCondition = "!UseLodTransitions", EditConditionHides)) + Meta = (EditCondition = "!EnableLodTransitions", EditConditionHides)) bool EnableFogCulling = true; /** @@ -634,16 +636,16 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor { bool EnableLodTransitions = false; /** - * How long dithered LOD transitions between different tiles should take, in + * How long the LOD transitions between different tiles should take, in * seconds. * - * Only relevant if UseLodTransitions is true. + * Only relevant if Enable Lod Transitions is true. */ UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Cesium|Rendering", - meta = (EditCondition = "UseLodTransitions", EditConditionHides)) + meta = (EditCondition = "EnableLodTransitions", EditConditionHides)) float LodTransitionLength = 0.5f; private: