Description

When a Niagara System is placed at around 10^8 units away from the origin, the movements of the mesh particles aren't smooth as expected, but jumpy. These particles behave as if they are using a float vector to represent position, instead of LWC vectors.

We furthermore have two additional insights:

  • The issue appears to not exist in UE5.3, but does exist in UE5.4 and UE5.5.
  • The issue only appears when global shaders are optimized. When r.Shaders.Optimize is set to 0, the particles behave as expected.

This issue appears to be caused by reassociation performed by the compiler on float4x4 DFMultiplyTranslationDemote(FDFMatrix Lhs, float3 Rhs) in DoubleFloat.ush:375.

Steps to Reproduce

Create a new Niagara System using the Empty Emitter template as a base, then modify as follows:

  • Add Spawn Rate Module to Emitter Update, and set SpawnRate to 5.0,
  • In Initialize Particle Module, set Sprite Size to Uniform 0.5, and Mesh Size to Uniform 0.1,
  • Add Add Velocity Module to Particle Spawn, and set Velocity to (5.0, 0.0, 5.0),
  • Add Solve Forces and Velocity to Particle Update
  • Add Mesh Renderer to Render

Set the location of this system to (99999990.0, 0.0, 0.0), and observe the behavior of the mesh particles, relative to the sprite particles.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-231741 in the post.

1
Login to Vote

Fixed
ComponentUE - Graphics Features
Affects Versions5.45.5
Target Fix5.6
Fix Commit38477070
CreatedNov 28, 2024
ResolvedNov 29, 2024
UpdatedDec 2, 2024
View Jira Issue