Description

In 5.8, weightmap layer allocations of a landscape component leak into its left, top and top-left neighbor components when Edit Layers are merged. Neighbors end up with layers that were never painted on them (all-zero weights). Because the landscape material is compiled per component with all allocated layers, components can exceed the 64 SRV limit ("Shader is using too many SRVs") and fall back to the Default Material. The same content works correctly in 5.7.

This looks like a side effect of CL 53528838, which widened the input area of the persistent edit layer's weightmap render items to (1,-1)(0,0). In ALandscape::PrepareEditLayersMergeRenderContext, the output target layers are added to every component in the input area, not only the output component. They end up in the final layer allocations through ReallocateLayersWeightmaps.

Here’s a work around:

UE::Landscape::EditLayers::FMergeRenderContext ALandscape::PrepareEditLayersMergeRenderContext(const UE::Landscape::EditLayers::FMergeContext& InMergeContext, const UE::Landscape::EditLayers::FMergeRenderParams& InMergeRenderParams)
{

...

// Iterate on all the required components :
					for (TConstSetBitIterator It(*ComponentsToIterateBitIndices); It; ++It)
					{
						const int32 ComponentToRenderIndex = It.GetIndex();
						FComponentToRenderInfo& ComponentToRenderInfo = AllComponentsToRenderInfos[ComponentToRenderIndex];
						check(ComponentToRenderInfo.Component != nullptr);

#if 1 //work around
						// In the SpecificComponent case (asymmetric input/output areas), skip neighbor components that are only part of the input area.
						const bool bIsOutputComponent = (OutputWorldArea.GetType() != FOutputWorldArea::EType::SpecificComponent)
							|| (ComponentToRenderInfo.Component->GetComponentKey() == OutputWorldArea.GetSpecificComponentKey());
						if (bAffectsOutputLayerBitIndices && bIsOutputComponent)
#else
						if (bAffectsOutputLayerBitIndices)
#endif
						{
							ComponentToRenderInfo.TargetLayerBitIndices.CombineWithBitwiseOR(OutputLayerBitIndices, EBitwiseOperatorFlags::MinSize);
						}
Steps to Reproduce
  1. Create a World Partition landscape that uses Edit Layers (e.g. 4x4 components).
  2. Create a landscape material with 10 weight-blended layers. Each layer samples 6 unique textures with shared Wrap samplers. ( ~5 layers fit within 64 SRVs but 10 do not )
  3. Create LayerInfos with "Weight Blending (Legacy)".
  4. Paint 5 layers (A) on component (1,1) only, and the other 5 layers (B) on its right neighbor (2,1) only.
  5. Re-enter Landscape Mode (or reload the map) to trigger a full Edit Layers update.
  6. Run landscape.DumpTargetLayerAllocations -details, and check View Mode > Landscape > Layer Usage.

I attached the repro in this ticket to skip step 1~4.

Actual Result:

Component A has 10 weightmaps, so it triggers “Shader is using too many SRVs: 68 (only 64 supported)” error.

see attached layerusage_actual.png

Expected Result:

Each component has only 5 weightmaps.

see attached layerusage_expected.png

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-402265 in the post.

0
Login to Vote

Unresolved
ComponentUE - Graphics Tools - Terrain - Landscape
Affects Versions5.8
Target Fix5.8.5
CreatedOct 13, 2026
UpdatedOct 19, 2026
View Jira Issue