Request: Add an opt-in Project Setting for USE_HAIR_COMPLEX_TRANSMITTANCE=1 and Backlit

Hello!

On our project we are using traditional hair cards utilizing the Hair Shading Model. We noticed recently that the Melanin, Redness, and Dye controls we were setting in the material instances of our parent material were not matching up with what were previously seeing with Groom. After digging into the code, we noticed that non-groom does not use the complex hair transmittance and instead uses the Kajiya Kay diffuse attenuation to approximate the multi-scattering.

We have an engine modification to SceneVisibility.cpp that adds an uninitialized value to non-groom assets so that they will properly take the route of using USE_HAIR_COMPLEX_TRANSMITTANCE=1. We would like to not have to make that engine edit so that future integrations are easier and instead be able to set this via a project setting. Is this something Epic could support? It might also be a good place to expose the Backlit material pin to users as well.

Also we do understand that hair cards will never quite be able to match Groom rendering, as there is a lot more going on than just this. But making this change did have significant quality improvements and it seems like a feature other projects might want to make use of for non-groom workflows.

Thanks!

Andrew Morris

[Attachment Removed]

Hi Andrew,

Yes, that sounds like a good idea. I will add that in our mainline. I’ll let you know once this is in.

/Charles.

[Attachment Removed]

Hi,

This is now exposed as a project setting for enabling hair transmittance on all hair surfaces in our mainline at CL 54969194. The project setting is backed by the CVar: r.Material.HairComplexTransmittance. It is disabled by default.

Cheers,

/Charles.

[Attachment Removed]