[Bug] Improper Z-Depth Sorting Carried From UE3

Version: 1711197

Install Path: C:\users\Markus\Rocket\

Specs: Win7, 16GB, GTX580, UAC: On

Description: So this is a huge problem in current UDK builds, and it appears to have carried over – at least for skeletal meshes.

Last week I did some translucency tests on static mesh actors, and found that the renderer correctly identified and sorted the z-depths and their shadows, particularly when translucent objects are rendered over each other in quick succession. So I had (incorrectly) assumed that skeletal meshes would adopt the same behavior, but this does not appear to be the case. Skeletal meshes still exhibit the same problematic z-sorting behavior that UDK currently does.

Repro Steps: Reproducing this particular problem is as simple as grabbing any skeletal mesh (preferably a human character) and putting a translucent material on it. Create a material in the editor and make sure to use the blend_translucent mode.

Results: Mesh will have really wonky sorting on it. Using a two-sided material does not fix this problem, either.

Expected: Correct Z-depth sorting on dynamic actors / characters.

The reason I list this as a bug is because so many of today’s major titles (even ones under UE3!) make ample use of translucency in dynamic objects. It’s become an essential thing for many of today’s scifi games. So to see this still rearing its ugly head in today’s technology is something of a major problem…

Hey Markus,

I was able to duplicate this on my end here and have submitted it for the team to look at.

Best Regards,

Ryan

Correctly sorted translucency is a really difficult problem. UE4 only sorts on a per-object granularity. In your case it would require per-triangle sorting, which would be a large amount of work. There’s a cheap trick that works with mostly convex objects - you render the backfaces first and then the frontfaces second. We had support for this in UE3 but the option appears to be gone from UE4 materials. That works well for something like a glass but I don’t think it would be enough for a character, since they have multiple overlapping frontfaces. Good to know that it would be useful, we will consider it.

Note that even if the triangles sorted correctly from the main view, you would run into a bunch of other problems with a translucent character - they’re not going to be shadowed properly, they’re not going to have reflections or specular, they’re not going to be affected by volumetric particles properly.

Do you have a physics asset on your skeletal mesh ?

From what I remember, the engine (under UE3) needed collisions to determine correctly the shadow frustum of the skeletal mesh. Without that, it gives flickering issues and bad shadows. Maybe it still the case under Rocket ?

It appears that when you import skeletal meshes, a physics asset is generated for it automatically. Nevertheless, in my character blueprint I tried using the physics asset override field and used the one generated on import. The shadows are still pretty abyssmal after its inclusion. So it doesn’t look like this is still the case in UE4 – at least for now.