Hi,
We’ve come upon an issue with Niagara Sprite and Ribbon renderers which causes some shaking of the Particles when the NS is far from the world origin.
This appears to be similar to an issue that was occurring in the Niagara Mesh renderer: [Content removed]
We’ve successfully integrated the fix for the Mesh renderer a while ago and this fixes the issue for the mesh renderer.
Unfortunately this does help the Sprite and Ribbon renderers.
I’ve attached MyProject2.zip to repro the issue.
We’ve enabled LWC for the project AND for the NS.
This question was created in reference to: [Niagara mesh renderer precision issue with 5.5 and D3D12 [Content removed]
Best,
David
Steps to Reproduce
These are the steps to show the EXPECTED result
------------------------------------------------
1. In the attached MyProject2, Open FirstPersonMap in Editor
2. Change PIE settings to spawn at ‘Current Camera Location’
3. In Outliner, double-click on ‘BP_Pickup_Rifle’
4. Start PIE
5. Walk-up to the Rifle to pick it up
6. Press ‘7’ key to change FOV
7. Do not move or change look at, keeping player immobile.
8. Notice the relatively smooth movement of the green quad (NS Sprite), which follows the rifle idle animation (as expected)
9. Stop PIE
These are the steps to show SHAKING issue
------------------------------------------------
1. In Outliner, double-click on ‘BP_Pickup_Rifle2’
2. Start PIE
3. Walk-up to the Rifle to pick it up
4. Press ‘7’ key to change FOV
5. Do not move or change look at, keeping player immobile.
6. Notice the movement of the green quad (NS Sprite), which exhibits severe shaking (unexpected)
7. Stop PIE
Hey David,
I’ve looked at your project in both 5.5 and 5.6 and the shaking/jittering seems far less to me in 5.6. So I assume that there was a shader fix at some point similar to the one you linked, but unfortunately I don’t know which CL is responsible for the fix.
Even in 5.6, the far away sprite is a little bit more unstable than the one close to the origin, but that is to be expected und unavoidable because of the available float precision and error magnification from the zoom-in.
Regards,
Michael
Hi Michael,
Just tested in 5.6 with the repro project converted from 5.5 -> 5.6.
I am not seeing any significant improvements for this issue.
Also, if you notice the fact that the debug sphere and lines are not affected by this issue? Same for the Mesh renderer?
This seems to hint to the fact the numerical precision can be mitigated?
Best,
David
Hi Michael,
Well I would definitely be interested in knowing which CL is involved in 5.6, can you find out?
I thought LWC used Double Floats which increase the precision within each LWC Tile?
Best,
David
Hey!
So, I’ve looked at it again and have attached a video for you to see what kind of jitter I get with your project in 5.6. It looks pretty much the same to me for the mesh renderer, sprite renderer and debug sphere. The animation looks fine both close to the origin and away from the origin when not zoomed in, but there is noticeable jitter when away from the origin and zoomed in.
Again, that’s to be expected because the farther away you are from the origin, the less precision you have for your float-based positions. You also lose a bit of precision due to the conversion of different position formats (Blueprint uses double, Niagara uses float+tile offset and the renderer uses two floats in a struct). The problem is that you have tiny movements and also zoom in on them, both of which require more precision than you have available.
I’ll open a jira ticket internally to investigate if we can improve the stability of the rendered niagara system in this situation.
Regards,
Michael