How did SE do the hair work in FF7Re?





Did they do some special tricks? Or does PS4 just do taa better?

Edit: Sorry, I didn’t ask my question clearly.
I want to know why after several frames the hair in the game became smooth and crisp. Is it because of texture streaming? or just the way taa works?

This is the best result I know how to achieve in UE4:


(From Johan Lithvall’s online courses.)

It never changes in the Engine though.

A better texture with a proper hair shader will look about the same.

a full head of long hair cards probably has around 10 different strands that the artist can pick from.

The unreal docs and info on how to generate the textures are lacuster at best.

I had luck using a custom setup in blender to render hair strands into cards with random ID, normals, and all the other bells and whistles that other sources use.

The hair shader in the content examples needs work put in to make it work right, including some USF file changes to get the hair not to light up like a light bulb near point light.

Overall, there are much better made hair in other games. Naughty dog’s usually in the top range for character realism.
and they did publish a few videos showing how they do it.

Old stuff too. 2016, still useful.
https://www.artstation.com/artwork/JOY4A

Thank you for your kindly reply. I didn’t ask my question properly. Just edited it.
I think Naughty Dog’s game engine uses forward rendering at that time. So the hair looks great with MSAA. Correct me if I’m wrong. :smiley:

Yes, TAA takes a few frames to kick in. As for the PS4 and FF7Re, it’s possible they’re doing something special but I doubt it. This is a screenshot of Sparrow from Paragon using the built-in Hair shader:

Looks pretty in-line with your screenshots from FF7R. You shouldn’t be trying to visualize your hair cards on spheres and planes. Make an actual hair mesh.

Also 8k for a hair card material is absolutely ridiculous. You may well be ending up with a more aliased result due to more dithered areas simply because of the mip generation since it is almost certainly displaying a higher mip.