Download

Solution for translucent depth

As many of users would have known, Unreal4 has a serious issue when dealing with sorting order of any translucent materials. I understand how deferred rendering prevent Unreal from being able to render them correctly. However, there’s a solution to back culling and many people have been using it. So I was wondering why shouldn’t this be built into the Engine?

The current alternate solution is to create a shadow object that is render for its custom depth outside the main pass. Then using that custom depth, we can compare it to the pixel depth of the translucent material and do whatever we need to do.

Unreal can save users all this problem, only if you add another “render translucent depth” into the object (like custom depth.) and render it on its own pass and save us all the trouble of making another shadow object and all those jazz. It’s a partial but a good solution to all this translucent business, so I hope Unreal really consider doing this in the next version.

As for users, please support this tread and keep it alive. I believe this will come in very handy for many of you.

here’s its shadow copy on answer hub: Solution for translucent depth - UE4 AnswerHub

Epic employees have responded to this in the past. The main issue is that while there are methods to solve this, they are all too expensive to implement in a generic fashion. As such it tends to be better to try and avoid the problem in most cases and use specialized solutions in specific cases.

For example, your solution would solve two intersecting planes. So if this was implemented in general:

  • Nothing intersects: same result, less performance.
  • Two planes intersect: solved.
  • Intersection behind another translucent object: still not solved.

Yes, I understand Epic’s problem with this. However, my solution doesn’t really add anything to the translucent z-depth conflict, it only utilizes current Unreal’s feature to compute another custom depth in a separate pass (called it translucent depth).
So I really want Unreal to add this to solve all the hassle involving it.

It’d be nice to see at least some reasonable solution since at least in our case it’s an unavoidable problem, but yeah it’s complicated issue that doesn’t have any great solutions.