Heterogeneous Volume Actor causes ensures to trigger in Debug builds.

This issue has existed since at least 5.4, so far as I can tell it seems like the ensures are spurious (it’s the validation that is the issue, rather than the actual rendering code), but as the shader bindings system in Unreal is quite complex it is hard for me to say for sure.

We are running into the same issue with our own custom rendering which also uses a material with a compute shader similarly to the Heterogeneous Volumes.

The following log is produced:

Ensure condition failed: UniformBufferValue || EnumHasAnyFlags(AutomaticallyBoundUniformBufferStruct->GetBindingFlags(), EUniformBufferBindingFlags::Static) || EnumHasAnyFlags(AutomaticallyBoundUniformBufferStruct->GetUsageFlags(), FShaderParametersMetadata::EUsageFlags::ManuallyBoundByPass) [File:D:\develop\UnrealEngineVanilla\Engine\Source\Runtime\Renderer\Private\MeshPassProcessor.cpp] [Line: 827]

Shader FRenderLightingCacheWithLiveShadingCS with vertex factory FLocalVertexFactory never set automatically bound uniform buffer at BaseIndex 4. Expected buffer of type FLumenTranslucencyLightingUniforms. This can cause GPU hangs, depending on how the shader uses it.

[2025.08.21-11.05.45:664][ 78]LogOutputDevice: Error: Ensure condition failed: UniformBufferValue || EnumHasAnyFlags(AutomaticallyBoundUniformBufferStruct->GetBindingFlags(), EUniformBufferBindingFlags::Static) || EnumHasAnyFlags(AutomaticallyBoundUniformBufferStruct->GetUsageFlags(), FShaderParametersMetadata::EUsageFlags::ManuallyBoundByPass) [File:D:\develop\UnrealEngineVanilla\Engine\Source\Runtime\Renderer\Private\MeshPassProcessor.cpp] [Line: 827]

Shader FRenderLightingCacheWithLiveShadingCS with vertex factory FLocalVertexFactory never set automatically bound uniform buffer at BaseIndex 4. Expected buffer of type FLumenTranslucencyLightingUniforms. This can cause GPU hangs, depending on how the shader uses it.

[2025.08.21-11.05.45:664][ 78]LogStats: FDebug::EnsureFailed - 0.001 s

A breakpoint instruction (__debugbreak() statement or a similar call) was executed in UnrealEditor-Win64-Debug.exe.

Ensure condition failed: Texture [File:D:\develop\UnrealEngineVanilla\Engine\Source\Runtime\Renderer\Private\MeshPassProcessor.cpp] [Line: 882]

Shader FRenderLightingCacheWithLiveShadingCS with vertex factory FLocalVertexFactory never set texture at BaseIndex 6. This can cause GPU hangs, depending on how the shader uses it.

[2025.08.21-11.11.59:084][ 78]LogOutputDevice: Error: Ensure condition failed: Texture [File:D:\develop\UnrealEngineVanilla\Engine\Source\Runtime\Renderer\Private\MeshPassProcessor.cpp] [Line: 882]

Shader FRenderLightingCacheWithLiveShadingCS with vertex factory FLocalVertexFactory never set texture at BaseIndex 6. This can cause GPU hangs, depending on how the shader uses it.

Steps to Reproduce
Build the engine with Debug Editor configuration, create blank project, place Heterogeneous Volume actor and assign it a volume material.

Hi there,

I will raise this to Epic as a bug report.

In the meantime, unless you’re having some related issues, you probably shouldn’t be too concerned about these validation warnings as they are mostly for the legacy binding method. All the pass parameters should be automatically bound later on anyway in the UE::MeshPassUtils::Dispatch call.

For your reference, any UniformBuffers, SRVs, Textures in your shader parameter declarations should be manually bound before calling FMeshDrawShaderBindings::Finalize (Note that this only does validation and only in debug). I’ve attached a git patch showing the changes that would need to be made to the HeterogeneousVolumesLiveShadingPipeline.cpp file in order to fix these validation warnings. You should be able to use a similar flow to fix these in any custom shader code.

Regards,

Lance Chaney

Thanks Lance. I will add the manual bindings. Although these validation warnings are harmless, they are still important for us to fix because they show up as false positives in our automated smoke tests, which gets in the way of detecting real issues.

I’ve submitted the bug report and will post the link to the public bug tracker here once it becomes available.

Public bug tracker link: UE-315187