DFAO with characters

Hi I’m new to UE4 so I hope some more experienced members can help out. I have a problem with some black artifacts on the hair that move when using dfao as seen in the video. Does anyone know a fix this?

Also, what is the right way to light an outdoor scene with characters like in paragon as seen in this level, this and these paragon character overview videos?

Here is what the dfao visualizer looks like:

DFAO and TemporalAA both use “earlier” rendered frames. This causes blur and ghosting effects. Atleast TemporalAA is ****** implemented in UE.
Don’t know why DFAO needs multiple frames.
Try to disable TemporalAA or both.

DFAO does not work for skeletal meshes though, because Skeletal Meshes don’t generate Distance Fields. If you want to use this mesh for a character, DFAO won’t work.

There are many options you can tweak for your outdoor scene.
I usually use a more unsaturated Directional Light colour with RayTraced Shadows.

Thanks for clearing this up for me. I am just going to use the ambient occlusion in the post processing volume then.

May I ask you, how you made this hair? it looks awesome and I’m having a hard time figuring out how to best aproach character hair…

I use 3dsmax’s hair and fur hair system and vray, but any hair system and renderer will probably work. I place clumps of hair onto a flat plane and just render out different maps. I then UV map these onto planes and then place these in 3dsmax with the move tool.

You probably dont need to use some of these such as the tangent map since if you zoom in only a few strands are yellow the rest is green, so you can try out which ones can be replaced with a solid color.

Currently there is a problem with the backlit parameter with the shader. See here
To stop the hair from glowing when it is being lit from the backside you need to edit a line of code in the ShadingModels.usf found in “Epic Games\4.14\Engine\Shaders”.

return HairShading( GBuffer, L, V, N, Shadow, 1, 0, Random );


return HairShading( GBuffer, L, V, N, Shadow, GBuffer.CustomData.z, 0, Random );

The line is right at the bottom.

Backlit from 0.2 to 1.0

Roughness also affects the backlit 0.2 to 1.0.

For the tangents: green stretches the specular horizontally, red vertically, yellow (mixing green and red) diagonally, and blue inverts the direction.
Heres a gif showing just the specular highlights and how it shifts.

When you use blue as the tangent you end up with the specular on the wrong side as seen here:

For coloured hair you need to increase the scatter.

You can also add tiling noise to break up the specular

One thing I have not tried yet is to transfer normals from another mesh onto the hair planes. Maybe this will help with the visible intersections of the planes and problems with the consistency of the specular highlights across different hair planes:

Thank you for the detailed answer. This gives me a really good starting point.

Hello, stororokw! Could you please tell me how to generate “unique strand variation map” in 3ds max? Thank you!

Hi there.

It seems that the problem with broken backlight on the hair shader model is still here, which is just crazy weird, considering Metahumans were introduced. Solution provided above (changing code in ShadingModels.usf doens’t change anything in UE 4.26.2.

Does anyone have and idea how to fix this problem in the current engine version?

The fix also applies to the latest 4.26 version.

**Shadow.HairTransmittance **parameter. Replace, the constant “1” value by “GBuffer.CustomData.z”

I don’t recommend adding the “bEvalMultiScatter” from the thread. It stopped my editor from loading

Change this line in Engine\Shaders\Private\ShadingModels.ush:
const float3 BsdfValue = HairShading(GBuffer, L, V, N, Shadow.TransmissionShadow, Shadow.HairTransmittance, 1, 0, uint2(0, 0));

To this:
const float3 BsdfValue = HairShading(GBuffer, L, V, N, Shadow.TransmissionShadow, Shadow.HairTransmittance, GBuffer.CustomData.z, 0, uint2(0, 0));