Error: Shader: Global/FHairInterpolationCS/207:/Engine/Private/HairStrands/HairStrandsInterpolation.usf|MainCS

After updating from version 5.5 to 5.7, we found that our AMD GPU players start crashing when starting games.

[2026.07.29-19.02.41:972][ 96]LogRHI: Error: Failed to create compute pipeline with hash CB48C76F7CC632151EF73615A78AAFCF0082836C.

[2026.07.29-19.02.41:972][ 96]LogRHI: Error: Shader: <unknown>

[2026.07.29-19.02.41:973][ 96]LogOutputDevice: Warning:

[2026.07.29-19.02.41:973][ 96]LogWindows: Error: appError called: Fatal error: [File:C:\Engine\UE_5.7\Engine\Source\Runtime\RHI\Private\PipelineStateCache.cpp [Line: 602]

Shader compilation failures are Fatal.

After a little research conducted by our developer, we found that the source of these failures was “Groom”, and if we change “Cards” from “Generated” to “Guide-Based”, then after that there will be no failures. But we want to keep “Generated”.

Also, after our developer generated the symbol,which we discovered:

[2026.07.29-14.49.51:475][309]LogD3D12RHI: Error: Failed to create pipeline state with combined hash 8A606FD1BF3BA010, error 80070057.

[2026.07.29-14.49.51:488][309]LogD3D12RHI: Warning: Failed to create compute PSO with combined hash 0x8A606FD1BF3BA010:

[2026.07.29-14.49.51:489][309]LogRHI: Error: Failed to create compute pipeline with hash 65F35E84186DE2D5CA10225BAFD0DD33425E91F7.

[2026.07.29-14.49.51:489][309]LogRHI: Error: Shader: Global/FHairInterpolationCS/207:/Engine/Private/HairStrands/HairStrandsInterpolation.usf|MainCS

[2026.07.29-14.49.51:490][309]LogOutputDevice: Warning:

Script Stack (0 frames) :

[2026.07.29-14.49.51:491][309]LogWindows: Error: appError called: Fatal error: [File:D:\Rep\ue\Engine\Source\Runtime\RHI\Private\PipelineStateCache.cpp] [Line: 602]

Shader compilation failures are Fatal.

Perhaps someone knows a specific fix for this problem, or do our groom assets have any problems? We only use cards & meshes. Strands are disabled. Both through LOD of each Groom Asset and through r.HairStrands.Strands

[Attachment Removed]

A small update. We found that switching to “Guide based” does not help, and apparently it only helped the developer in the editor because of the incorrect bindings

[Attachment Removed]

Hi Artem,

Your issue is a known bug in 5.7 and it is not actually about wave ops being used, it is about the wave size the shader demands. It is fixed in 5.8, and the fix should cleanly integrate into 5.7.

On D3D12 SM6, the WAVESIZE(N) macro expands to the HLSL [WaveSize(N)] attribute (Engine/Shaders/Public/Platform/D3D/D3DCommon.ush:16-17). That attribute is a hard requirement baked into the DXIL, not a hint, so CreateComputePipelineState fails with E_INVALIDARG (0x80070057) on any GPU that cannot run that wave size. HairStrandsInterpolation.usf:634-636 applies WAVESIZE(32) to MainCS whenever PERMUTATION_WAVEOPS is set, and your RX 590 is GCN/Polaris, which is wave64 only. Your log confirms it: “Wave Operations are supported (wave size: min=64 max=64)”.

The fix is CL 53630446. It splits the check into compile-time and runtime variants so the permutation still cooks. Still, it is never selected on hardware that cannot run it, and it adds matching ShouldPrecachePermutation gating to the three Lumen sites that had the same precache noise.

[Attachment Removed]

Ok, that’s good to hear! Then I will consider this case closed. Please feel free to file another ticket if you have any further questions.

[Attachment Removed]

Hi, Tim! Thank you! Our developer discovered the same thing and made some temporary fixes. We’ll use this fix and check it out as well.

[Attachment Removed]