Errant Biomes 1.12 adds support for Unreal's Nanite Foliage workflow, gives artists manual control over Species spawn locations, improves PCG integration, and brings a large set of generation, runtime spawning, landscape alignment, and commandlet fixes.
Features
Unreal Engine 5.8 Support
Errant Biomes now supports Unreal Engine 5.8. This release includes compilation updates for UE 5.8, readback API changes, and warning fixes for the updated engine headers. When installing the update, make sure you pick the package matching your engine version from the license download page.
Nanite Foliage Support
Errant Biomes can now spawn assets for Unreal's Nanite Foliage pipeline.
Epic currently marks Nanite Foliage as experimental. Treat this as support for projects evaluating or adopting that Unreal feature, and test your target platforms before shipping with it.
Spawn Point Sources
Species now use a new Spawn Point Sources system. The previous Spacing and pattern seed settings are migrated automatically into Tiled Blue Noise, so existing Species keep their current distribution.

The main addition is Manual Spawn Points, which lets artists place exact candidate points in the level with Biomes Manual Spawn Point Component and connect them to Species through tags. This is useful when a procedural mask is still wanted, but the available locations need to be hand-authored: flowers along a path, designed rock clusters, gameplay pickups, or any Species where placement is part of level design.
There is also a new Grid source for exact rows and columns.
Species can use more than one spawn point source at the same time. For example, you can combine a regular generated pattern with a small set of manual accent points, then let the Growth Mask, priority, transforms, and post-processes run normally.
Additional Spawning Support
Species spawning now supports more efficient asset paths:
- Non-hierarchical ISM components are supported for projects that want regular ISM behavior instead of HISM.
- Niagara systems are spawned as components in shared actors, reducing actor count for effect-heavy Species.
PCG Biome Mask Sampling
The Errant Biomes Mask PCG node can now sample the global Biome Mask directly. The node writes the biome index into the Biomes Index point attribute, so PCG graphs can branch or filter based on the biome under each point.
The PCG integration also reports a clear runtime error when Biome Masks are configured as editor-only but a runtime PCG graph tries to read them.
Landscape Height and Normal Texture Inputs
Material Masks can now use BiomesHeightTexture and BiomesNormalsTexture parameters. These expose landscape height and packed normals as texture inputs and support Include Neighbours, which helps masks that need to sample across generation component borders.
Improvements
Faster Offline Generation
Offline Generation has been reorganized around async readbacks and more parallel work. The offline processing step for runtime-spawned Species is split into multiple threads, Instanceable Blueprints are prepared during setup, mask rendering submits more work in batches, and several unnecessary FlushRenderingCommands calls were removed.
The practical result is less waiting during large builds and lower memory pressure in commandlets.
Runtime Spawning Buffer Compaction
Runtime spawning data now uses smaller compact buffers. During Offline Generation, Errant Biomes knows how many instances will actually be spawned, so it can avoid allocating runtime buffers for candidate instances that were already culled.
This can significantly reduce memory usage for densely spawned Species, especially when the candidate instance count reaches hundreds of thousands or millions. This area also gained additional counters and trace events for profiling.
Better Memory Cleanup
Errant Biomes now releases more temporary render and mask resources after they are no longer needed. Commandlet generation clears persistent data between cells, unused mask RHI data is removed after a timeout, unreferenced assets are cleaned up more reliably, and empty runtime spawners are skipped during compression.
This matters most on large World Partition maps and automated builds, where leaked or retained resources can accumulate across many generated cells.
More Reliable Landscape Alignment
Landscape Alignment now stores per-component alignment data in assets. This lets Errant Biomes read alignment data from neighboring components even when you regenerate only a small part of the level.
The main user-facing benefit is more reliable partial generation: alignment should no longer randomly disappear, break at component edges, or depend on whether nearby components happened to be regenerated in the same operation.
World Partition Builder and Commandlets
World Partition commandlet generation is more robust. The builder reports which components were built, skips cells without unique work, avoids getting stuck on shader compilation, saves all generated actors more reliably, and fixes package submission issues.
UI Workflow Improvements
The Biomes mode tools panel was cleaned up with icons and more useful ordering.

Mask lists in the Mask Painting and Material Mask Debug panels can now be resized, which makes it easier to work with projects that have many masks or long mask names. In the Material Mask Debug outliner, double-clicking a mask now opens its material, so you can jump from debug inspection to editing without browsing for the asset manually.
Biomes tools now include an action for deleting stray generated actors. This is intended for cleanup cases where generated actors were left without Biomes metadata and therefore could no longer be removed by normal generation cleanup.
Several disabled-generation states now explain why a button is unavailable instead of leaving the user to infer the setup problem.
Support Debug Tools
Runtime spawning can now be narrowed to a single Species or generation component with biomes.rt.SoloSpeciesDebug and biomes.rt.SoloComponentDebug. After both filters are set, biomes.rt.SoloDebugGPUCapture can capture only that isolated runtime spawning case.
For support and internal debugging, biomes.DebugDumpPersistentComponentTextures 1 saves persistent generation textures under Saved/ErrantBiomesDebugDump/<MapPath>/ComponentX#Y#/. The dump includes the component biome map, landscape height and normal textures, weightmaps, and generated Biome, Species, and Sub-Biome masks.
Additional diagnostic commands are available for specific cases:
errant.biomes.pcg.DebugDrawSpeciesPoints <SpeciesAssetPathOrName>: draws saved PCG Species points near the camera or a selected component.errant.biomes.DrawSelectedActorInstanceComponentXYDebug: labels which generation component owns instances in selected offline instance actors.errant.biomes.DrawLoadedSpawnerUnmappedInstanceArrows: marks loaded offline instances that no longer map back to Biomes metadata.errant.biomes.RemoveLoadedSpawnerUnmappedInstances: removes those unmapped instances.
Fixes
PCG
- Fixed PCG becoming unresponsive while Biomes generation was running.
- Fixed Biome Mask sampling not updating reliably.
- Fixed an infinite loop when cancelling PCG sampling.
- Fixed invalid execution-source crashes.
- Updated PCG nodes to newer point-data APIs while keeping compatibility with older supported engine versions.
- Fixed warnings and unnecessary empty data in PCG workflows.
Landscape Alignment
- Fixed alignment data not being cleared when generated content is cleared or when a Species stops writing alignment data.
- Fixed landscape alignment only updating the first Biome in some cases.
- Fixed align-to-mesh, align-to-bounding-box, and commandlet alignment failures.
- Fixed alignment for Instanceable Blueprints, custom meshes, and instanced skinned meshes.
- Fixed issues at generation-range edges and with negative alignment values.
- Fixed partial alignment after landscape resizing.
- Fixed selection visualization on scaled landscapes.
- Fixed cases where landscape proxies outside the generation range were modified.
Runtime Spawning
- Fixed runtime and editor generation choosing different duplicated spawn-point grid assets. This could make runtime-spawned Species use a different placement pattern than the editor-generated result.
- Fixed compact runtime data for Instanceable Blueprints so blueprint-expanded instances are assigned to the correct runtime partitions.
- Fixed runtime-spawned HISM components not rebuilding their instance tree after runtime updates, which could leave spawned instances rendered or culled incorrectly.
- Fixed runtime spawning defaults before map data is fully initialized, preventing runtime spawning from breaking in maps that have not finished setting up Biomes world information.
- Fixed empty runtime spawners being compressed unnecessarily.
- Fixed spawner locations not updating after landscapes move.
Material Masks and Generation
- Fixed mask data not updating after mask changes.
- Fixed masks being removed from the subsystem cache during garbage collection.
- Fixed malformed or empty mask data crashes.
- Fixed null render-target-resource crashes.
- Fixed masks created but not registered in the subsystem.
- Fixed
Include Neighboursproducing empty inputs. - Fixed missing pixel rows when copying landscape weightmaps.
- Fixed debug visualization not refreshing after regeneration.
- Fixed value-under-brush preview while landscape adjustment is enabled. It no longer returns
0.0incorrectly and now samples the pixel under the cursor more accurately. - Fixed Custom Material Masks created or reset to their default material state. Constant mask values in that default state no longer trigger ensures.
- Fixed two masks with the same name sampling incorrectly.
- Fixed crashes when garbage collection ran during generation.
Stability and Build Fixes
- Fixed crashes on very small landscapes.
- Fixed align-to-circle landscape alignment freezes or severe slowdowns with extreme radius and spacing settings.
- Fixed
Build All Levelscrashes in the editor. - Fixed non-source version build warnings.