Biomes Guide
Create reusable surfaces and understand how textures, colours and blend settings work together.
On a small screen, scroll wide tables sideways to read every column.
A biome is one reusable ground surface: grass, sand, snow, rock, metal, or another look you create. Painting chooses where that surface appears. The biome inspector chooses what the surface looks like.
A biome describes a surface. Choose it in a terrain generator to give a new shape its starting appearance, or target it from a scatter object to place vegetation. Naming a preset “Forest” alone does not place trees, and naming one “River” does not create flowing water geometry. Use the 3D Scatter Guide when you want biome-driven grass, flowers, mushrooms, pebbles or custom meshes placed on top of Terrain Atlas surfaces.
Create a useful first biome
- Choose a Biome Library and the Terrain Atlas pipeline in the terrain editor.
- Add a biome and give it a clear name, such as Dry Sand or Dark Rock.
- Assign its base-colour image to Source RGB. If you have a compatible texture set, Auto Folder can help populate its inputs; check each assignment afterwards.
- For a first test, keep normal, metallic and emissive detail restrained. Set the generation strengths you want before using Auto Generate. A strength of zero excludes that generated map.
- Check the generated texture and colour ramp. Paint a test patch large enough to inspect at your expected camera distance.
- Adjust Scale for the texture size, then the ramp for colour. Add normal and PBR inputs if your surface needs them.
- Inspect it in both light and shade, from close up and farther away. Duplicate the biome before experimenting with a very different look.
Start with one clear goal: for matte sand, first get the colour and grain size right. Then add a modest normal effect. Keep metallic at zero and smoothness low. It is easier to judge each setting when you change one thing at a time.
The library and biome inspector
The library is the palette shared by your terrain objects. The inspector edits the selected preset. Choose a biome card to see its settings; selecting several cards opens shared editing controls. A mixed-value field means the selected presets currently have different values.
Texture assignments use compact inline fields. Surface properties share paired rows where space allows, with Rotation and Pulse together. On/off settings are highlighted buttons. The palette’s Set Active button reads Active for the active palette page.
| Action | What it does | When to use it |
|---|---|---|
| Add | Creates a new preset in the current pipeline’s list. | Use for a new surface that does not already have a suitable starting point. |
| Biome Name | A human-readable label for the preset. | Use names that describe the appearance. User-created names are kept as entered when you change the editor language. |
| Auto Folder | Helps find related texture inputs in the selected source’s folder. | Useful for an organised texture set. Verify the results, especially roughness versus smoothness and packed-channel layout. |
| Duplicate | Copies the preset’s settings while retaining references to its source textures. | Make a lighter, darker, wetter-looking or differently rotated variant without importing the same files again. |
| Delete | Removes a preset and updates the library’s indexing. | Check any separately stored biome IDs in gameplay components and rebake surface data where necessary. |
| Reorder / swap | Changes the palette’s order and therefore its numeric IDs. | Organise the palette, then recheck explicit IDs used outside the editor workflow. |
| Multi-selection | Lets you apply shared settings to several selected presets. | Adjust a family of rocks together. Changing a mixed field gives the selected presets the value you enter. |
Names and IDs are different. A name helps you recognise a surface; an ID is its position in the current pipeline’s list. ID 6 might be snow in a demo library and rock in yours. Always read the IDs from your current library before configuring live slots, scatter Target Biomes or gameplay scripts.
Editing a shared library can change several terrains at once. Use the terrain tool’s standalone-copy workflow when one result should keep its own material and texture assets.
Which texture goes in which field?
Different images describe different parts of a surface. You do not need every map for every biome. A plain stylised surface may only need a colour source and a good ramp; a more detailed surface may benefit from normal and PBR maps.
| Input | What the image contains | What it changes |
|---|---|---|
| Source RGB | The original coloured base image, often called base colour, albedo or diffuse. | Provides source colour information for generating the biome’s detail and ramp. The finished surface is not simply this image pasted unchanged onto the mesh. |
| Generated | The processed detail texture used by the terrain system. | Works with the ramp to produce the surface detail. Assign a suitable existing generated texture here only when you intend to supply that processed input yourself. |
| Source Height | A greyscale image describing high and low parts of the material. | Feeds the generated height/detail workflow. It can support the illusion of relief and blending, but does not raise terrain vertices. |
| Invert Height | Reverses which end of the source is treated as high or low. | Useful if crevices look raised or raised details look recessed. Compare a small patch before and after. |
| Normal | A tangent-space normal map, usually with blue/purple colours. | Changes how small bumps catch the light. Import it as a Normal Map in Unity. It does not change collision or silhouette. |
| AO | An ambient-occlusion map: sheltered areas are darker. | Adds material-scale shading in crevices. This is separate from baking geometry AO on a Direct Vertex Color terrain. |
| Metallic | A mask showing which parts behave as metal. | Changes the material response. Most grass, soil, snow and stone should have little or no metallic response. |
| Smoothness / Roughness | A map describing how polished or rough different parts are. | Changes the spread of highlights. Smoothness and roughness run in opposite directions; enable the roughness interpretation when that is the map you have. |
| Emissive | A mask for areas that should glow. | Works with the emissive controls and compiled surface data. Use a defined glow mask for cracks or veins; emission does not create a light source for nearby objects by itself. |
| Packed PBR | Several material masks stored in separate colour channels of one image. | Supplies multiple inputs through a single file. The channel mapping must match how the image was authored. |
Separate textures or packed PBR?
Use Separate Textures when you have individual AO, metallic and smoothness/roughness maps. Use Packed Texture when the supplier has combined those masks into one image. The filename alone is not enough to establish its channel layout; check the texture set’s specification.
| Mapping | Red channel | Green channel | Blue channel | Alpha channel |
|---|---|---|---|---|
| Standard Unity MRAO | Metallic | AO | Ignored | Smoothness |
| MRAO + Height (B) | Metallic | AO | Authored height | Smoothness |
| Standard Unity MRAR | Metallic | AO | Not used for these masks | Roughness, inverted to smoothness |
| Unreal ORM | AO | Roughness, inverted to smoothness | Metallic | Not used for these masks |
| Custom | Metallic | Smoothness | AO | Not used for these masks |
Here, Custom means the listed fixed layout; it does not open a free-form channel picker. If your texture uses another layout, repack it or use separate source maps.
Use height stored in packed blue
- Choose PBR Mode → Packed Texture and assign the Packed PBR map.
- Set Mapping → MRAO + Height (B) when its channels are R metallic, G AO, B height and A smoothness.
- Set the intended surface strengths, including Parallax, then run Auto Generate. Packed B supplies the height source; Parallax controls its influence during generation and zero excludes it.
- Inspect the generated Detail texture and colour ramp together, then compile terrain textures as needed.
This mapping is optional. Ordinary Standard Unity MRAO ignores blue, so existing biomes keep their result until you deliberately change the mapping and regenerate. Choose it only when B contains height, rather than a different detail mask. An existing Source Height assignment is kept, but Auto Generate uses packed B while this mapping is selected.
Atlas compilation prefers an assigned/generated Detail texture. If no Detail texture is assigned, MRAO + Height can supply packed B directly. Merely switching Mapping will therefore not replace an existing generated result; regenerate when you want the packed height to affect it. The option uses the existing detail texture slice.
What Auto Generate changes
Auto Generate builds the processed surface inputs and the colour ramp from the source setup. The current Normal, AO, Smoothness, Metallic, Emissive and Parallax strengths influence what is generated; zero excludes the relevant map. Assigning a new Source RGB can also initialise generated detail and ramp information.
Set your intended strengths first, generate, then inspect. If you excluded a map during generation and later decide you need it, regenerate from a suitable source. A shader multiplier cannot reveal useful detail that was never included.
Before regenerating a finished biome: duplicate it if you want to keep its authored ramp. Auto Generate can replace colour work you made by hand. The ramp transform’s Reset button is not a general undo for all generation and texture assignments.
Colour ramps and ramp transforms
The colour ramp maps the biome’s detail values to colours. Its left side colours the darker or lower-valued parts of that detail; its right side colours the brighter or higher-valued parts. It can turn one rock detail source into brown sandstone, cold grey stone or a stylised blue surface.
This is not a world-altitude gradient. Putting white at the right end does not automatically put snow on mountain peaks. Use the terrain’s Gradient tool for a rule based on terrain height or slope.
- Open the ramp editor and adjust the colour keys.
- Use a dark colour for recessed detail and a lighter colour for highlighted detail as a starting point.
- Add intermediate keys when the material needs several colour bands.
- Compare the painted surface under normal scene lighting. A very narrow bright band can produce speckled highlights.
- Enable Fixed for stepped colour changes, or leave it off for smooth transitions.
| Transform | What it does | Starting point |
|---|---|---|
| Hue | Rotates the colours around the hue wheel. The range −1 to +1 corresponds to approximately −180° to +180°. | 0 preserves the captured ramp’s hue. Small changes make related variants. |
| Saturation | Reduces or increases colour intensity relative to the captured ramp. | 0 preserves it; −1 removes colour; +1 doubles saturation before the colour limits are applied. |
| Brightness | Darkens or lightens the ramp colours, subject to colour limits. | 0 preserves the captured brightness. Try small changes rather than moving directly to an extreme. |
| Reset | Restores the ramp baseline captured for the transform operation. | Use to undo those transform adjustments. It does not necessarily restore the original imported texture’s first generated ramp. |
Ramp transforms preserve the keys’ positions and alpha. If you want to change which detail values receive a colour, move or add keys rather than only changing Hue or Brightness.
Rock variation: duplicate a grey rock biome. Make one copy slightly warmer and darker using the ramp transforms. Keep their texture scale similar and rotate one copy by 90°. Painting both creates variation while retaining a consistent type of rock.
Understand each surface setting
These controls belong to the selected biome. The material has another set of global controls that can affect many biomes together. Get the individual surface looking right before using a global multiplier to change the entire terrain. Scatter placement is configured separately in the 3D Scatter Guide, where one reusable scatter object can target several of these biome IDs.
| Control | Lower value | Higher value | Useful guidance |
|---|---|---|---|
| Scale: 0.02–10 | Larger-looking texture features and less frequent repetition. | Smaller-looking features and more repeats. | This is texture tiling, not the GameObject’s size. Compare it next to a character or another known-size object. |
| Normal: 0–2 | Flatter-looking lighting detail. | More pronounced lighting bumps. | The control is relevant when a normal source is assigned. Strong normals can make a surface noisy without improving the mesh shape. |
| AO Strength: 0–1 | Less material crevice shading. | Stronger crevice shading. | Avoid using AO to fix a lighting problem across the entire scene. |
| Parallax: 0–2 | Less apparent relief; zero removes that contribution. | Deeper-looking surface detail. | Inspect at a shallow viewing angle. It does not create steps, holes or collision depth. |
| Smoothness | Broader, rougher-looking highlights. | Tighter, more polished highlights. | Without a map the range is 0–1; with a map it extends to 2. Around 1 preserves the mapped response; values above 1 push it toward a more uniformly smooth result. |
| Metallic | Less metal-like response. | More metal-like response. | Without a map the range is 0–1; with a map it extends to 2. Above 1 expands the metal response rather than behaving as a simple neutral map multiplier. |
| Emissive: 0–1 | Less glow. | Stronger glow from the emissive setup. | Check the source mask and material’s emissive strength if it does nothing. Bloom is a separate scene/post-processing choice. |
| Pulse | Off keeps the biome’s emission steady. | On enables its pulse behaviour. | Pulsing emission and dusting are incompatible on the same vertices. Disable Pulse when using dusting there. The runtime demo’s Slot 4 pulse is a separate material-control example. |
| Rotation: 0°, 90°, 180°, 270° | Changes the orientation of the biome’s texture detail. | Useful for matching a direction or varying copies of the same texture. It does not rotate the terrain mesh. | |
| Anti-Tiling: 0–1 | Less procedural variation; zero removes this biome’s anti-tiling contribution. | More variation to disguise repeated detail. | Combine it with the material’s patch and colour controls. Excessive variation can obscure an intentional directional pattern. |
| Seam Blend: 0–1 | Less blending between texture projections. | Softer joins between projections. | World-oriented blending does not stay locked to moving or rotating objects. Lower the material’s Seam Blend Fade Distance to hide the mismatch. It cannot weld vertices or close gaps. |
| Priority: 0–100 | Lower preference when baking a representative gameplay biome. | Greater preference among sufficiently represented candidates. | It does not make the biome render in front. The static bake considers candidates with at least about 10% coverage; live weight-based queries use a different selection rule. |
Keep visual and gameplay settings separate. Changing Priority may change the representative biome returned from baked surface data without changing the visible blend. If you use surface-based footsteps or effects, inspect the baked result with the raycast tester.
Make variants without losing a good preset
Duplicate is the safest starting point for a related surface. The copies have their own settings while sharing references to their source images. Compatible copies can reuse compiled source data; you do not need a separate image import merely to change the ramp or rotation.
- Dry versus wet-looking rock: keep the source detail, darken the ramp slightly and increase smoothness on the wet-looking copy. This is an appearance change, not a physical wetness simulation.
- Clean versus worn stone: use the same base detail with different colours and restrained changes to normal/parallax.
- Repeated material with variation: create a few related ramps and rotations, then paint a weighted mix rather than duplicating an identical-looking preset many times.
When changing a setting for several variants, use multi-selection. Check which fields are mixed before editing them so you do not accidentally erase useful differences.
Merge two surfaces into a new biome
Merge creates a new generated surface from exactly two selected biomes. It is useful when you want a reusable composite, such as stone with soil patches, rather than painting the two biomes separately everywhere. The source presets remain available.
| Control | Meaning | How to judge it |
|---|---|---|
| Mix Ratio: 0.1–0.9 | The balance between the two inputs. | Near the middle gives a more balanced mix; moving toward an end favours one source. Check the preview to confirm which source is increasing. |
| Softness: 0–1 | How gradually the source patches meet. | Low values make distinct patches; high values soften their edges. |
| Patch size | The size of the mixed regions. | Larger regions read as broad material patches; smaller regions read as scattered detail. |
| Irregularity | How uneven the patch shapes are. | Use restrained values for rounded patches and higher values for more broken or jagged boundaries. |
Inspect the merged surface at its actual tiling scale. A pleasing preview may look busy when tiled tightly across a terrain. Use ordinary biome painting instead if you need to control exactly where the two source surfaces meet on the landform.
Biomes in Direct Vertex Color
Direct Vertex Color is a colour-based workflow with its own preset list. Use the biome’s base colour and the available direct-pipeline controls to build the look. The colours are stored with the mesh, so vertex density determines how detailed a painted transition can be.
A texture normal, packed PBR image or parallax illusion from Terrain Atlas should not be expected to carry over as the same textured appearance. Choose this pipeline because you want its colour-based result, then inspect it under your scene lighting.
For additional contact shading, use the Direct Vertex Color AO baker after finishing the major geometry. See saving and optimisation for that workflow.
Texture quality, memory and shared assets
The library compiles source inputs into textures used by the terrain material. The compilation settings balance sharpness, memory use and platform support.
| Option | Effect | Practical choice |
|---|---|---|
| Resolution | Sets the compiled texture size, with Auto and explicit sizes from 256 up to 8192. | Start with a moderate size and inspect from the game camera. Higher resolution costs more memory; it cannot invent detail absent from the source. |
| Compression | Uses the selected compiled format, including high-quality compressed options or RGBA32. | Compare detail and colour quality on the target platform. Uncompressed output generally uses more memory. |
| Mipmaps | Provides lower-resolution versions for smaller on-screen texture detail. | Usually useful for terrain viewed over a range of distances. Compare distant shimmer and sharpness when changing this option. |
| Unique sources | Different source sets can require additional compiled data. | Reuse a source for related variants where appropriate. Check actual compiled assets rather than estimating cost only from the number of biome cards. |
Library editing refreshes compiled data through the tool’s normal workflow. If the material appears out of sync, use Compile Terrain Textures and confirm that the terrain uses the intended library/material. Rebaking gameplay surface data is a different operation; compiling textures does not update a stale triangle-to-biome bake.
Common biome problems
See the material FAQ for Stylized Lighting and AO, pulse/dusting compatibility, and seam blending on moving terrain.
| Problem | Likely checks |
|---|---|
| The material is too dark with Stylized Lighting | AO is treated as shadow in this mode. Reduce the biome’s AO Strength or material’s Surface AO Strength. If height is interpreted backwards, try Invert Height and regenerate as needed. |
| Pulse stops working where I paint dusting | Pulsing emission and dusting cannot share the same vertices. Choose one effect for that area; disable Pulse when using dusting. |
| The imported colours do not match the finished surface | Check the generated detail and ramp. The source RGB feeds generation, while the ramp controls the resulting palette. Also inspect scene lighting and material multipliers. |
| Raised details look recessed | Compare Invert Height, check the height source and reduce exaggerated parallax while testing. |
| Packed blue height makes no visible difference | Choose MRAO + Height (B), check that B contains height and Parallax is above zero, then Auto Generate. An existing generated Detail texture takes priority during compilation. |
| The surface is shiny or metallic everywhere | Check the PBR mapping, roughness interpretation and slider values. In mapped mode, values above 1 push toward a more uniform response. |
| Normal detail is missing | Check the normal assignment/import type, biome strength, generation setup, global normal strength and normal fade controls. |
| Auto Generate removed my colours | It can rebuild the ramp. Undo the generation if available or return to a saved/duplicated preset. Duplicate before regenerating an authored ramp. |
| A colour ramp does not create a snow line | Use the terrain Gradient tool. The biome ramp colours local detail; it does not select terrain by world height. |
| The pattern repeats obviously | Check Scale, enable the biome’s Anti-Tiling and adjust the material’s variation controls. Try related rotated/ramp variants as well. |
| A map looks wrong after using Auto Folder | Verify every detected input and the packed-channel layout. A roughness map interpreted as smoothness reverses the intended result. |
| Changing Priority does not change the visible surface | Priority is for choosing a representative baked gameplay biome. It is not a visual layer-order setting. |
| A runtime effect changes the wrong surface | Recheck current biome IDs after adding, deleting or reordering presets. The demo’s example IDs are not names or universal constants. |
Support
If you need help, describe the result you expected, the control you used, and what appeared instead. Include your Unity version, the selected surface pipeline, and a screenshot of the relevant settings. For a runtime query problem, also include the collider type and when you last baked surface data.
Use the DPT Games contact form or join the DPT Games Discord.