UE 5.8 Translucent material not covered by hair groom

Summary

Any translucent material will render over a hair groom asset unless the translucent material is set to Before DOF. Problem with doing this is Before DOF now causes the hair groom asset to render over the translucent material even if it is behind it. Issue was non-existent in 5.7 but exists in 5.8. This makes it impossible to cover niagara particle effects using translucency to be covered by hair groom and vice-versa at the same time. If you use Before DOF, niagara particle cannot cover hair groom. If you use After DOF, hair groom cannot cover niagara particle. Is there a way to add hair groom to the depth pass that translucent materials are using?

What Type of Bug are you experiencing?

Rendering (Graphics / Niagara)

Steps to Reproduce

Create a hair groom, create a translucent material, put one in front of the other to see the issue.

Expected Result

In 5.7 there is no issue. the hair covers the niagara particle when it is in front and the niagara particles cover the hair if it is in front.

Observed Result

In 5.8, the niagara particle using translucent sprite material always renders on top of the hair groom.

Affects Versions

5.8

Platform(s)

Windows

Additional Notes

This was not an issue in 5.7. You broke 5.8.

This looks like a 5.8 rendering regression rather than a setup problem. Since it worked correctly in 5.7, I’d compare the Hair Strands depth pass and translucency sorting changes between versions.

You could try checking hair depth-related CVars, Separate Translucency on the Niagara material, and any groom settings that affect depth output. If none restore the old behavior, it likely needs an engine fix so hair groom contributes properly to the depth information used by translucent materials. A small 5.7 vs 5.8 repro project would help confirm it.

I tried reviewing all of the groom related cvars that I used in 5.7 but none of them work in 5.8. I have them executing at runtime using the execute console bp node. Epic either broke it or added a setting somewhere that adds or removes groom from the depth pass for translucency sorting.

Fixed it using

r.HairStrands.WriteGBufferData 3

r.HairStrands.ComposeAfterTranslucency 3

For me r.HairStrands.WriteGBufferData 3 crashed the engine,

I was able to solve my issue by chaging Substrate GBuffer Format from adaptive to blendable