ErodeIterationNum
ErodeIterationNum
#Overview
name: ErodeIterationNum
The value of this variable can be defined or overridden in .ini config files. 1
.ini config file referencing this setting variable.
It is referenced in 5
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ErodeIterationNum is to control the number of erosion iterations in the Unreal Engine 5 Landscape system. It is specifically used in the landscape erosion tool to determine how many times the erosion algorithm should be applied to the terrain.
This setting variable is primarily used by the Landscape Editor module in Unreal Engine 5. It is part of the landscape editing tools, specifically the erosion tool.
The value of this variable is set in multiple places:
- It is initialized in the ULandscapeEditorObject constructor with a default value of 28.
- It can be loaded from the project’s configuration file using the GConfig system.
- It can be modified through the Unreal Editor interface, as it is exposed as an editable property with UI constraints (ClampMin=“1”, ClampMax=“300”, UIMin=“1”, UIMax=“150”).
ErodeIterationNum interacts with other erosion-related variables such as ErodeSurfaceThickness, ErodeThresh, and ErosionNoiseMode. These variables collectively control the behavior of the landscape erosion tool.
Developers should be aware that:
- Increasing ErodeIterationNum will result in more pronounced erosion effects but will also increase computation time.
- The value is clamped between 1 and 300, with a recommended range of 1 to 150 in the UI.
Best practices when using this variable include:
- Start with lower values and gradually increase to find the right balance between visual quality and performance.
- Consider the size and complexity of your landscape when setting this value, as larger landscapes may require more iterations for noticeable effects.
- Use in conjunction with other erosion settings to achieve the desired terrain appearance.
- Remember to save the settings if you want to persist changes across editor sessions.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:740, section: [LandscapeEdit]
- INI Section:
LandscapeEdit
- Raw value:
28
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEdModeErosionTools.cpp:105
Scope (from outer to inner):
file
class class FLandscapeToolStrokeErosion : public FLandscapeToolStrokeErosionBase
function void Apply
Source code excerpt:
const int32 NeighborNum = 4;
const int32 Iteration = UISettings->ErodeIterationNum;
const int32 Thickness = UISettings->ErodeSurfaceThickness;
const int32 LayerNum = this->LandscapeInfo->Layers.Num();
TArray<uint16> HeightData;
LayerHeightDataCache.Initialize(this->LandscapeInfo, bCombinedLayerOperation);
LayerHeightDataCache.Read(X1, Y1, X2, Y2, HeightData);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:57
Scope (from outer to inner):
file
function ULandscapeEditorObject::ULandscapeEditorObject
Source code excerpt:
, ErodeThresh(64)
, ErodeSurfaceThickness(256)
, ErodeIterationNum(28)
, ErosionNoiseMode(ELandscapeToolErosionMode::Lower)
, ErosionNoiseScale(60.0f)
, bErosionUseLayerHardness(false)
, RainAmount(128)
, SedimentCapacity(0.3f)
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:270
Scope (from outer to inner):
file
function void ULandscapeEditorObject::Load
Source code excerpt:
GConfig->GetInt(TEXT("LandscapeEdit"), TEXT("ErodeThresh"), ErodeThresh, GEditorPerProjectIni);
GConfig->GetInt(TEXT("LandscapeEdit"), TEXT("ErodeIterationNum"), ErodeIterationNum, GEditorPerProjectIni);
GConfig->GetInt(TEXT("LandscapeEdit"), TEXT("ErodeSurfaceThickness"), ErodeSurfaceThickness, GEditorPerProjectIni);
int32 InErosionNoiseMode = (int32)ErosionNoiseMode;
GConfig->GetInt(TEXT("LandscapeEdit"), TEXT("ErosionNoiseMode"), InErosionNoiseMode, GEditorPerProjectIni);
ErosionNoiseMode = (ELandscapeToolErosionMode)InErosionNoiseMode;
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("ErosionNoiseScale"), ErosionNoiseScale, GEditorPerProjectIni);
GConfig->GetBool(TEXT("LandscapeEdit"), TEXT("bErosionUseLayerHardness"), bErosionUseLayerHardness, GEditorPerProjectIni);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:423
Scope (from outer to inner):
file
function void ULandscapeEditorObject::Save
Source code excerpt:
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("ErodeThresh"), ErodeThresh, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("ErodeIterationNum"), ErodeIterationNum, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("ErodeSurfaceThickness"), ErodeSurfaceThickness, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("ErosionNoiseMode"), (int32)ErosionNoiseMode, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("ErosionNoiseScale"), ErosionNoiseScale, GEditorPerProjectIni);
GConfig->SetBool(TEXT("LandscapeEdit"), TEXT("bErosionUseLayerHardness"), bErosionUseLayerHardness, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("RainAmount"), RainAmount, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("SedimentCapacity"), SedimentCapacity, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("HErodeIterationNum"), ErodeIterationNum, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("RainDistMode"), (int32)RainDistMode, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("RainDistScale"), RainDistScale, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("HErosionDetailScale"), HErosionDetailScale, GEditorPerProjectIni);
GConfig->SetBool(TEXT("LandscapeEdit"), TEXT("bHErosionDetailSmooth"), bHErosionDetailSmooth, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("NoiseMode"), (int32)NoiseMode, GEditorPerProjectIni);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Public/LandscapeEditorObject.h:383
Scope (from outer to inner):
file
class class ULandscapeEditorObject : public UObject
Source code excerpt:
// Number of erosion iterations, more means more erosion but is slower
UPROPERTY(Category="Tool Settings", EditAnywhere, NonTransactional, meta=(DisplayName="Iterations", ShowForTools="Erosion", ClampMin="1", ClampMax="300", UIMin="1", UIMax="150"))
int32 ErodeIterationNum;
// Whether to erode by lowering, raising, or both
UPROPERTY(Category="Tool Settings", EditAnywhere, NonTransactional, meta=(DisplayName="Noise Mode", ShowForTools="Erosion"))
ELandscapeToolErosionMode ErosionNoiseMode;
// The size of the perlin noise filter used