Niagara Data Channels and particle sorting issue

Hello,

Because of performance issues, we use mostly NDC. Since Unreal lacks good OIT solution, we tried the depth sorting option. Am I correct in my observation, that when using NDC, the sorting and rendering also is global, not per system? What I see is:

  • noticeable performance drop (nearly 10% on high end hardware). It seems that Unreal is trying to sort quite a lot of particles at once
  • Systems using different NDCs are rendered in random order. I.e. you can’t assume that Unreal will sort systems per bounding box if they are using different NDC

Can you give us advice how to render a lot of smoke particles in Unreal? While we now have robust solution for particle simulation - NDC, the deficiencies in the rendering department become bigger and bigger. This is definitely not unsolvable problem, other engines have robust OIT solutions that can render particles properly.

Thannks,

Ivo

[Attachment Removed]

Hi,

The engine will sort between different NDC systems the same as it would other Niagara systems or primitive components, though it won’t sort internally between emitters.

It’s also known that sorting issues may crop up if multiple NDCs are placed on the exact same coordinates.

In what situation were you seeing that performance drop / difference? Is that 10% between NDC and non-NDC, or when multiple NDCs are in the same area vs spread out, etc?

[Attachment Removed]

The performance drop is just from enabling sorting. I will try to find time to properly compare the sorting and performance with and without NDC . Maybe it will be best to create test scene that I can send. But no, there is no overlapping between NDC instances.

[Attachment Removed]

Hello Camille,

Sorry for the delay, I had other work, and some issues reproducing this using simple test scene. Originally I used the legacy “Write To Niagara Data Channel” BP node and sorting worked as expected. Then I switched to the new NDC nodes for UE 5.7, and the sorting broke. Maybe the issue is related to the NDC setup, but we noticed the sorting issue in UE 5.6.

Note that in-game we don’t use Blueprints, but C++ and automatic batching via the now legacy InitWrite(). I’m still not familiar with the new system in UE 5.7, but the attached test scene shows exactly what I see in-game.

I doubled check this, but sorting works fine if we use Niagara Components, and only breaks with NDC.

Best regards,

Ivo

[Attachment Removed]

Thanks for sending this over, and the additional context. I’ll take a look and get back to you!

[Attachment Removed]

Hello,

Any new information on this issue?

Thanks,

Ivo

[Attachment Removed]

Hey, thanks for your patience on this. The repro you sent with the sorting was helpful in getting a sense of the issue; it’s unexpected. I’ve talked with the rest of the team about it, and logged a ticket. Unfortunately, I don’t have a fix to share yet. The following link will show the status of the issue: https://issues.unrealengine.com/issue/UE\-369663

[Attachment Removed]