Welcome to Planet Forge, the ultimate planet rendering system.
This asset is designed to work in Unity 2021 LTS, Unity 2022 LTS, Unity 2023, and Unity 6, with the Built-In Render Pipeline, URP, and HDRP.
This asset includes a custom planet LOD system with fully configurable biomes, a volumetric atmosphere and cloud system, and an ocean system with underwater effects.
All example scenes are in the Plugins/CW/Planet Forge/Scenes folder, which show you what a fully configured planet looks like.
Seamlessly Fly From Space
Through The Atmosphere
Through The Ocean
And Go Underwater
Before using Planet Forge, make sure the Burst and Collections packages are installed.
You can install them from the Window / Package Manager inside Unity.
Newer versions of Unity may automatically have these installed.
To make your own planet from scratch, you can either:
Right click in the Hierarchy tab, and select the βCW / Planet Forge / Planet (Radius = 500)β option.
Go to the menu bar, and select the βGameObject / CW / Planet Forge / Planet (Radius = 500)β option.
There are also options for 5,000 meter and 5,000,000 meter (similar to Earth) planets if you wish.
π‘ If you make a large planet, your main Camera componentβs Clipping Planes / Far setting must be large enough to render the whole planet.
π‘ If you make a large planet, it may spawn on top of the camera. If so, increase the planetβs Transform componentβs Position Z value.
This will create a new GameObject called βPlanetβ with 4 child GameObjects:
"Landscape" - This handles rendering of the planet surface.
"Sky" - This handles rendering of the atmosphere.
"Cloud" - This handles rendering of the clouds.
"Ocean" - This handles rendering of the ocean, and underwater effects.
If your planet doesnβt need an ocean/clouds/etc, then you can delete it. However, cloud rendering requires the sky (just like in real life).
π‘ To render the atmosphere and clouds, your scene must have the SgtVolumeManager component (auto added when creating a new planet).
π‘ To render the atmosphere and clouds, your scene main camera must have the SgtVolumeEffect component (auto added when creating a new planet).
π‘ To render lighting for the atmosphere and clouds, your scene main light must have the SgtLight component (auto added when creating a new planet).
The "Landscape" GameObject has the SgtSphereLandscape component, which handles LOD mesh generation for your planet. More info HERE.
The LOD is driven by the Detail setting relative to the Main Cameraβs position. However, if you want to override this, or have multiple cameras altering the LOD, then you can drag and drop them into the Observers list.
The landscape is generated using height and color textures, which are defined in the Bundle setting. If you want to create your own bundle, then you can add the SgtLandscapeBundle component to this GameObject (or in a prefab), and drag and drop it into the Bundle setting. By default, the βExample Bundleβ is used, which contains a few example textures.
The βAdd Colliderβ button will add the SgtLandscapeCollider component. This will generate colliders for the whole planet down to the specified MinimumTriangleSize in this component.
π‘ If you have a large planet, then Unity may output warnings that there are large colliders in your scene, but there doesnβt seem to be a way to disable thisβ¦
The βAdd Detailβ button will add a child GameObject with the SgtLandscapeDetail component. This can apply a layer of detail around the whole planet, or to a specific region. More info HERE.
The βAdd Flattenβ button will add a child GameObject with the SgtLandscapeFlatten component. This can flatten the landscape in specific regions. More info HERE.
The βAdd Colorβ button will add a child GameObject with the SgtLandscapeColor component. This can color the whole planet based on height and slope data, or to a specific region.
The βAdd Biomeβ button will add a child GameObject with the SgtLandscapeBiome component. This combines the features of SgtLandscapeDetail and SgtLandscapeColor into one component, simplifying configuration.
The βAdd Prefab Spawnerβ button will add a child GameObject with the SgtLandscapePrefabSpawner component. This will spawn prefabs on the surface of your planet as you approach.
The βAdd Static Spawnerβ button will add a child GameObject with the SgtLandscapeStaticSpawner component. This will spawn static meshes on the surface of your planet as you approach.
π‘ By default, your planet is given one biome, which is in the βSgtLandscapeBiomeβ child GameObject.
If you want the planet to be based on a pre-generated albedo or height texture, then you can set it in the AlbedoTex or HeightTex setting.
π‘ These must use cylindrical (equirectangular) projection, use the Single Channel Red format, and have Read/Write enabled.
The "Sky" GameObject has the SgtSky component, which handles rendering of the sky and (optional) clouds. More info HERE.
You can adjust the UpperColor and LowerColor settings to change its look.
The InnerMeshRadius setting should match the radius of your ocean, or your landscape radius if your planet doesn't have an ocean.
If you enable the Lighting setting, then the atmosphere can receive light from one SgtLight component.
π‘ When you create a planet, the SgtLight component will automatically be added to the Sun or brightest light in your scene. Otherwise you must manually add this component.
The "Cloud" GameObject has the SgtCloud component, which handles LOD mesh generation for your planet. More info HERE.
If you want the overall cloud coverage to have a specific shape, you can set it in the CoverageTex setting.
π‘ This texture must use cylindrical (equirectangular) projection. The R/G/B/A channels can all be used with the CloudLayers setting.
You can add up to 4 cloud layers, and control settings like the Height, Thickness and Density of each layer.
You can also erode each layer with a detail texture using the SgtCloudDetail component. More info HERE.
The "Ocean" GameObject has the SgtOcean, SgtOceanRays, and SgtOceanDebris components, which handle rendering of the ocean surface and underwater effects.
This component has the Radius setting, which should be greater than your landscape's radius.
More info HERE.
SourceMaterial β The material used to render this component.
π‘ This material must use the Space Graphics Toolkit/Sky shader. You cannot use a normal shader.
UpperColor β This allows you to set the color of the atmosphere at high altitudes.
LowerColor β This allows you to set the color of the atmosphere at low altitudes.
Brightness β The Color.rgb values will be multiplied by this.
InnerMeshRadius β The radius of the meshes set in the SgtSharedMaterial.
OuterMesh β This allows you to set the mesh used to render the atmosphere. This should be a sphere.
OuterMeshRadius β This allows you to set the radius of the OuterMesh.
π‘ If this is incorrectly set then the atmosphere will render incorrectly.
Clouds β If your planet has clouds, set it here so they can be rendered with the sky.
Height β This allows you to set how high the atmosphere extends above the surface of the planet in local space.
Density β This allows you to adjust the fog level of the atmosphere.
Weight β This allows you to set the weight of the atmosphere.
π‘ Higher values concentrate the particles toward the surface of the planet; lower values give a more even distribution.
ColorWeight β This allows you to set the weight of the atmosphere colors.
π‘ Higher values push the Upper Color lower in the atmosphere.
Detail β This allows you to adjust how many samples are used to ray march the atmosphere/clouds.
SurfaceScattering β This allows you to adjust how atmospheric scattering applies on top of the planet surface.
CameraOffset β This allows you to offset the camera distance in world space when rendering the atmosphere, giving fine control over the render order.
DepthOpaque β This allows you to control how fast the opacity of the sky increases as the camera descends.
Lighting β Enables or disables lighting on the atmosphere.
LightingStart β The start point of the day/sunset transition.
0 = dark side, 1 = light side
LightingEnd β The end point of the sunset/night transition.
0 = dark side, 1 = light side
LightingSharpnessR β The sharpness of the sunset red channel transition.
LightingSharpnessG β The sharpness of the sunset green channel transition.
LightingSharpnessB β The sharpness of the sunset blue channel transition.
Scattering - Always enabled.
ScatteringStart β The start point of the day/sunset transition.
0 = dark side, 1 = light side
ScatteringEnd β The end point of the sunset/night transition.
0 = dark side, 1 = light side
ScatteringSharpnessR β The sharpness of the sunset red channel transition.
ScatteringSharpnessG β The sharpness of the sunset green channel transition.
ScatteringSharpnessB β The sharpness of the sunset blue channel transition.
ScatteringTerms β The size of each atmospheric scattering halo.
π‘ Higher values make the halo smaller. Use negative values for back scattering.
ScatteringPower β The strength of each atmospheric scattering halo layer.
This component renders a layer of volumetric clouds around a planet.
SphereMesh β The mesh used to render the clouds.
π‘ This should have a radius of one.
Density β The maximum density of clouds.
Resolution β The width/height of the generated cloud texture.
HighPrecision β Use a high precision cloud texture for smoother results?
Warp - This allows you to increase cloud detail toward the camera, allowing you to use a lower resolution texture that still looks sharp up close.
Color β The color of the clouds.
ShadowDensity β The density of the clouds when calculating lighting.
ShadowOffset β The depth of the light samples, which changes how the lighting looks.
CoverageTex β This texture defines where clouds appear around the planet.
π‘ This texture should use the equirectangular/cylindrical projection.
Coverage β Not used.
Albedo β Not used.
CloudLayers β This allows you to control the settings for each cloud layer.
π‘ Cloud layers are defined in the CoverageTex texture's RGBA channels up to a maximum of 4 cloud layers.
This component allows you to add detail to the SgtCloud component. This can be added to a child GameObject.
CoverageTex β The texture used to define where clouds are, or how the clouds should be eroded.
π‘ This should be a single channel texture where the coverage is stored in the Red channel.
CarveEdge β This allows you to specify how much of the edges of the clouds will be carved by the CoverageTex.
CarveCore β This allows you to specify how much of the clouds overall will be carved by the CoverageTex.
Scale β The scale of the detail, where a lower number means more tiling.
Speed β The speed of the animation of this detail layer.
Offset β The rotational offset of this detail layer.
Channels β The cloud layers that will be eroded by this detail layer.
Radius β The radius of the ocean.
Detail β The overall detail of the ocean relative to the camera distance. The higher you set this, the more triangles it will have.
CloudShadow β If you want cloud shadows to appear on the surface of the ocean, specify them here.
Observers β The LOD will be based on these transform positions.
None/null = The GameObject with the MainCamera tag will be used.
SurfaceMaterial β The material used to render the fluid surface.
π‘ This must use the SGT/OceanSurface shader.
SurfaceColor β The color of the fluid when viewed from above the surface.
SurfaceDensity β The density of the water when viewed from above the surface.
SurfaceMinimumOpacity β The minimum opacity of the water when viewed from above the surface.
SurfaceSmoothness β The PBR smoothness of the surface material.
SurfaceTexture β The waves normal map texture.
SurfaceTiling β The wave texture gets tiled around the planet this many times.
X = First layer. Y = Second layer. Z = Third layer. W = Fourth layer.
π‘ The SurfaceMaterial has the Layers setting, which allows you to choose how many are used.
SurfaceRange β The wave texture gets tiled around the planet this many times.
X = First layer. Y = Second layer. Z = Third layer. W = Fourth layer.
π‘ The SurfaceMaterial has the Layers setting, which allows you to choose how many are used.
SurfaceStrength β The wave texture gets tiled around the planet this many times.
X = First layer. Y = Second layer. Z = Third layer. W = Fourth layer.
π‘ The SurfaceMaterial has the Layers setting, which allows you to choose how many are used.
UnderwaterColor β The color of the water when viewed from below the surface.
UnderwaterExtinction β The UnderwaterColor will fade out using these values.
X = Red Extinction. Y = Green Extinction. Z = Blue Extinction. W = RGB Multiplier.
UnderwaterExtinctionRange β The extinction amount will be calculated at this distance from the camera.
UnderwaterDensity β The density of the water when viewed from under the surface.
UnderwaterMinimumOpacity β The minimum opacity of the water when viewed from under the surface.
UnderwaterLightingSharpness β The sharpness of the underwater lighting.
UnderwaterShadowRange β The distance from the camera the cloud shadow calculations will use.
π‘ This should approximately be the underwater fog distance (4.6 * density).
WavesTexture β The waves normal map texture.
WavesOffset β The texture used to break up the tiling of the wave animation.
π‘ This should be a Red seamless texture.
WavesSpeed β The waves texture will animate at this speed.
WavesTiling β The wave texture gets tiled around the planet this many times.
WavesDisplacement β The waves will displace the ocean mesh by this distance.
π‘ This setting requires your SurfaceMaterial to have the Displacement setting enabled.
RipplesTiling β The ripple texture is tiled this many times relative to the WavesTiling value.
RipplesStrength β The ripples texture strength will be multiplied by this.
Caustics β Render underwater caustics effects?
π‘ This requires the SurfaceMaterial to have the CAUSTICS setting enabled.
CausticsTexture β If you want the ocean to apply caustics to the underlying geometry, specify it here.
CausticsLight β The light source for the caustics.
CausticsSpeed β The caustics texture will animate at this speed.
CausticsTiling β The caustics texture will be tiled this many times around the planet.
CausticsOpacity β The caustics texture will fade in/out by this amount.
CausticsPower β The caustics texture smoothness/sharpness.
CausticsMaxDepth β This allows you to control how deep below the surface caustics can reach.
CausticsSurfaceSharpness β This allows you to control how quickly caustics fade in based on ocean depth.
CausticsDeepSharpness β This allows you to control how quickly caustics fade out based on ocean depth.
This component can be added alongside SgtOcean to add marine snow like debris under the water surface.
Material β The material used to render the debris.
π‘ This must use the SGT / OceanDebris shader.
Brightness β The particle brightness will be multiplied by this.
Count β The amount of debris particles used to render the effect.
Range β The maximum camera distance debris particles can appear in world space.
Radius β The radius of debris particles in world space.
Drift β The maximum distance particles can drift in world space.
MaxDepth β The maximum depth the debris particles can reach below the surface.
SurfaceSharpness β This allows you to set how quickly debris particles fade out as they approach the ocean surface.
DeepSharpness β This allows you to set how quickly debris particles fade out as they approach the deep ocean.
BrightnessMin β The amount the Brightness value can flicker by.
This component can be added alongside SgtOcean to add sun light shafts under the water surface.
Material β The material used to render the rays.
π‘ This must use the SGT / OceanRays shader.
Brightness β The particle brightness will be multiplied by this.
RayLight β The light source for these rays.
Count β The amount of ray particles used to render the effect.
Range β The maximum camera distance ray particles can appear in world space.
Thickness β The thickness of ray particles in world space.
Length β The length of ray particles in world space.
Drift β The maximum distance particles can drift in world space.
MaxDepth β The maximum depth the debris particles can reach below the surface.
SurfaceSharpness β This allows you to set how quickly ray particles fade out as they approach the ocean surface.
DeepSharpness β This allows you to set how quickly ray particles fade out as they approach the deep ocean.
FlickerRateMin β The minimum rate at which a particle can flicker.
FlickerRateMax β The maximum rate at which a particle can flicker.
BrightnessMin β The amount the Brightness value can flicker by.
This component combines features from SgtLandscapeColorand multiple layers of SgtLandscapeDetail.
For efficient generation, all textures used by a landscape are combined into a texture bundle.
This component allows you to specify which textures go into the bundle, and handles any conversions.
π‘ If your scene has multiple bundles that share the same textures, you should combine the bundles together to save memory.
HeightTextures β This list stores all heightmaps used to deform the terrain. These should be square textures that are seamless.
π‘ Requires TextureType = SingleChannel
π‘ Requires Advanced / Read/Write to be enabled
π‘ Requires Channel = Red and Format = R8 or R16 bit
π‘ Requires Compression = None
MaskTextures β This list stores all masks used to restrict where detail or colors can appear.
π‘ Requires TextureType = SingleChannel
π‘ Requires Advanced / Read/Write to be enabled
π‘ Requires Channel = Red and Format = R8 or R16 bit
π‘ Requires Compression = None
GradientTextures β This list stores all gradients used to color the landscape. These can be pictures of landscapes.
π‘ Requires TextureType = SingleChannel
π‘ Requires Advanced / Read/Write to be enabled
π‘ Requires Channel = Red and Format = R8 or R16 bit
π‘ Requires Compression = None
DetailTextures β This list stores all detail textures used to modify masks. These should be square, seamless textures of some type of terrain (e.g. mountains).
π‘ Requires TextureType = SingleChannel
π‘ Requires Advanced / Read/Write to be enabled
π‘ Requires Channel = Red and Format = R8 or R16 bit
π‘ Requires Compression = None
This component can be added alongside a terrain to give it MeshColliders that match the visual mesh up to the specified LOD depth.
MinimumTriangleSize β Approximately the smallest triangle we want to be generated when you go to the landscape surface.
This component can be added to a child GameObject of your landscape. It will color the landscape based on its height and slope data using a gradient texture.
Space β Where should the color be applied?
Global = The whole landscape.
Local = A small section of the landscape defined by the Transform component's position, rotation, and scale.
Mask β Should this layer of detail be masked?
MaskIndex β The mask texture used by this component.
MaskInvert β This allows you to invert the mask.
MaskSharpness β This allows you to set how sharp or smooth the mask transition is.
(If space is Global)
MaskGlobalShift β This allows you to offset the mask based on the topology.
MaskDetail β This allows you to enhance the detail around the edges of the mask.
MaskDetailIndex β This allows you to enhance the detail around the edges of the mask.
MaskDetailTiling β This allows you to adjust the mask detail texture tiling.
MaskDetailOffset β This allows you to maximum amount the mask can be shifted based on the MaskDetail texture in UV space.
GradientIndex β This allows you to specify which gradient texture is used.
π‘ The actual texture is in the SgtLandscapeBundle component set in the parent landscape component's Bundle setting.
Variation β This allows you to adjust which part of the GradientTex is used.
Offset β This allows you to adjust which part of the GradientTex is used.
Occlusion β This allows you to adjust the amount of ambient occlusion darkening applied to the slopes of terrain features.
Strata β This allows you to adjust how many layers of strata appear in the terrain depending on its height.
Blur β This allows you to smooth out the strata colors.
SmoothnessMidpoint β The smoothness will reach its maximum value when the gradient color is at this luminosity.
SmoothnessStrength β This allows you to set the maximum smoothness value.
SmoothnessPower β This allows you to set the sharpness of the smoothness relative to how close the gradient color is to the SmoothnessMidpoint.
EmissionMidpoint β The emission will reach its maximum value when the gradient color is at this luminosity.
EmissionStrength β This allows you to set the maximum emission value.
EmissionPower β This allows you to set the sharpness of the emission relative to how close the gradient color is to the EmissionMidpoint.
This component modifies the height of your planet, either around the whole planet, or to a specific region.
Space β Where should the detail be applied?
Global = The whole landscape.
Local = A small section of the landscape defined by the Transform component's position, rotation, and scale.
SurfaceScale β The HeightRange and GlobalSize settings will be multiplied by this amount.
π‘ Useful if you're changing your planet size and want your detail to match.
Mask β Should this layer of detail be masked?
MaskIndex β The mask texture used by this component.
MaskInvert β This allows you to invert the mask.
MaskSharpness β This allows you to set how sharp or smooth the mask transition is.
MaskGlobalShift β This allows you to offset the mask based on the topology.
MaskDetail β This allows you to enhance the detail around the edges of the mask.
MaskDetailIndex β This allows you to specify which detail texture will be used.
MaskDetailTiling β This allows you to adjust the mask detail texture tiling.
MaskDetailOffset β This allows you to set the maximum amount the mask can be shifted based on the MaskDetail texture in UV space.
HeightIndex β This allows you to specify which height texture the detail uses.
HeightMidpoint β This allows you to define where in the heightmap the height is 0.
π‘ For example, if you want this heightmap to go down into the existing terrain, then you must increase this to where the ground is supposed to be flat.
HeightRange β This allows you to define the difference in height between the lowest and highest points.
Strata β This allows you to adjust how deep the heightmap penetrates into the terrain texture when it gets colored.
GlobalSize β (Shown only when space is set to Global)
π‘ This allows you to specify the size of this layer of detail, which is used to calculate the tiling.
LocalTiling β (Shown only when space is set to Local)
π‘ The detail will be tiled this many times around the landscape.
Displace β If you enable this, then this heightmap will modify the actual mesh geometry height values.
π‘ If not, it will just be a visual effect like a normal map.
This component flattens the height of your planet, either around the whole planet, or to a specific region.
Space β Where should the flattening be applied?
Global = The whole landscape.
Local = A small section of the landscape defined by the Transform component's position, rotation, and scale.
Mask - Always enabled.
MaskIndex - The mask texture used by this component.
MaskInvert - This allows you to invert the mask.
TargetHeight -Β This allows you to set the height value the landscape will be flattened to.
TargetStrata - This allows you to set the strata value the landscape will be flattened to.
FlattenHeight - This allows you to set the height value the landscape will be flattened to.
FlattenStrata - This allows you to set the strata value the landscape will be flattened to.
This component snaps or repels the current GameObject/Transform to a landscape. This can be used to place objects on the planet surface.
Landscape - The landscape this object will snap to.
None/null = Closest.
Offset - This allows you to move the object up based on the surface normal in world space.
Radius - The surface normal will be calculated using this sample radius in world space. Larger values = Smoother.
SnapIn - This allows you to control where in the game loop the object position will be snapped.
SnapPosition - When should the position be snapped?
SnapRotation- When should the rotation be snapped?
This component can be added alongside a terrain to procedurally spawn prefabs on its surface.
MaskTex β This allows you to define the spawn area.
π‘ This texture should be Single Channel using either the R8 or Alpha8 formats.
π‘ This texture should have read/write enabled.
InvertMask β Invert the mask, so 0 values become 255 values, and 255 values become 0 values?
TriangleSize β Prefabs will spawn at the LOD level where triangles are approximately this size.
Count β The amount of prefabs that will be spawned per LOD chunk.
Seed β The random seed when procedurally spawning the prefabs.
ScaleMin β The spawned prefabs will have their localScale multiplied by at least this number.
ScaleMax β The spawned prefabs will have their localScale multiplied by at most this number.
Rotate β How should the spawned prefabs be rotated?
Offset β The spawned prefabs will have their position offset by this local space distance.
This component can be added alongside a terrain to procedurally spawn a mesh and material on its surface. This works similarly to SgtLandscapePrefabSpawner, but it's much higher performance.
MaskTex β This allows you to define the spawn area.
π‘ This texture should be Single Channel using either the R8 or Alpha8 formats.
π‘ This texture should have read/write enabled.
InvertMask β Invert the mask, so 0 values become 255 values, and 255 values become 0 values?
TriangleSize β Prefabs will spawn at the LOD level where triangles are approximately this size.
Count β The amount of prefabs that will be spawned per LOD chunk.
Seed β The random seed when procedurally spawning the prefabs.
ScaleMin β The spawned prefabs will have their localScale multiplied by at least this number.
ScaleMax β The spawned prefabs will have their localScale multiplied by at most this number.
Rotate β How should the spawned prefabs be rotated?
Offset β The spawned prefabs will have their position offset by this local space distance.
Mesh β The mesh that will be rendered.
Material β The material that will be rendered.
π‘ This must use the SGT / Landscape Static shader.
This component allows you to create a landscape with a spherical topology.
EditorDetail β This allows you to control the LOD detail while in edit mode.
InitDetail β When entering play mode or running the actual game, the landscape will initialize with this level of detail.
π‘ 0 means it will initialize with the minimum amount of triangles and will generate very quickly. Higher values will make the planet immediately look better but may cause the scene to freeze until it's generated.
Detail β The overall detail of the landscape relative to the camera distance. The higher you set this, the more triangles it will have.
MinimumTriangleSize β The maximum LOD depth this landscape can have.
LodBudget β The maximum amount of seconds we can budget for LOD.
LodSteps β The maximum LOD chunks that can be generated between each LOD change.
π‘ For example, if your camera suddenly travels to the planet surface then many LOD chunks will need to be generated. If you set LOD Steps to a high value, then it will take a while for any changes to appear, whereas a low value means the landscape will constantly be updating to the final LOD state.
Observers β The landscape LOD will be based on these transform positions.
None/null = The GameObject with the MainCamera tag will be used.
Material β The landscape will be rendered using this Material.
π‘ This material must use a shader based on the SGT/Landscape shader.
Bundle β The landscape will use textures from this texture bundle.
GlobalSizes β To support massive planets, the global detail/biome UV sizes must be baked into the mesh. This allows you to set up to 4 different tile sizes.
CastShadows β Should the landscape cast Unity built-in shadows?
ReceiveShadows β Should the landscape receive Unity built-in shadows?
Radius β The base radius of the landscape in local space.
CloudShadow β If you want cloud shadows to appear on the surface of the planet, specify them here.
AlbedoTex β The albedo texture given to the landscape.
None = White.
π‘ This texture must use equirectangular (cylindrical) projection.
HeightTex β The landscape's Radius will be displaced by this heightmap.
π‘ This texture must have Read/Write enabled.
π‘ This texture must be Single Channel, and use the Alpha8, R8, or R16 format.
π‘ This texture must use equirectangular (cylindrical) projection.
This component creates a flat landscape in the shape of a square, similar to Unity's built-in terrain system.
Size β The size of the landscape along the X and Z axes in local space.
AlbedoTex β The albedo texture given to the landscape.
None = White.
HeightTex β The landscape's Radius will be displaced by this heightmap.
π‘ This texture must have Read/Write enabled.
π‘ This texture must be Single Channel, and use the Alpha8, R8, or R16 format.
HeightMidpoint β This allows you to set where in the heightmap's height data is 0.
0.0 = Displacement between 0 and HeightRange
0.5 = Displacement between -HeightRange/2 and HeightRange/2
1.0 = Displacement between -HeightRange and 0
HeightRange β The maximum difference in height displacement from the heightmap.
Strata β The height scale of the landscape when coloring it.