On nanite meshes we are seeing temporal instability in the normals from the mesh. So the same pixel will alternate between two values without the object moving. This manifest as strobing in the specular. For us, this is creating a lot of temporal noise in our pre AA edge detect. On any given frame is seems that some of the normals can be in one of two states, and it will alternate between them every few frames. This only seems to happen with nanite enabled meshes.
Is there some setting we are missing that could be configured to create temporal stability? Even without the outlines, hard specular shows a really distracting flicker. We’d prefer not to have to just jettison nanite in order to have a static scene not shimmer.
[Attachment Removed]
Steps to Reproduce
Drag any nanite mesh into a scene and set its material to fixed base color, specular 1, roughness 0. Observe that the tight specular highlights will flicker. This matches exactly what we are seeing in the gbuffer.
See attached example built using editor assets.
[Attachment Removed]
Hi there,
Thanks for documenting this issue and providing the repro video, that makes the issue you are facing very clear.
I have set up a test scene with the same engine mesh and a material the same as you have described, but so far I have been unable to reproduce the issue. Are you able to reproduce this issue in a new 5.5 EGL project? If so, it would be very helpful if you could send that through a minimal repro project.
At the very least, having your DefaultEngine.ini that reproduces the issue would help narrow things down, but the full repro project would be preferred just to cover all of our bases with the mesh settings, material settings, etc.
Thanks,
Hayden
[Attachment Removed]
Hi, thanks, that was actually quite helpful. I was able to reproduce this in vanilla, and there are definitely some configuration changes that have to happen to cause it. Here is the defaultEngine.ini I used to reproduce it. I have a full project in vanilla 5.5.4 that I can share as well, I’m not sure whether that would be useful at this point.
[Attachment Removed]
Thanks for sharing that ini, I was able to reproduce the issue you are seeing (although not quite as egregious in the tests I was able to put together). It seems to be that temporal AA methods’ jitters are canceling out, or otherwise hiding, the issue present on the nanite mesh.
I don’t think I can reproduce the issue in an EGL version of 5.7, and there have been a number of potentially relevant changes to Nanite in 5.6 and 5.7. However, I am just slightly hesitant to start looking for the responsible CL since my reproductions have been a bit less definitive than the video you were able to capture. Would you be able to attempt a repro in 5.7?
This behaviour looks like a bug to me and some rendering-focused colleagues I have consulted with, but the outcome of your repro may determine whether the issue is still unresolved.
Thanks,
Hayden
[Attachment Removed]
Yeah, I can attempt a repro in 5.7. We are scheduled to upgrade so long term maybe that provides a solution.
[Attachment Removed]
Ok, I have to really play around with the camera in 5.7 to get it to happen, and the magnitude seems to be lower.
The key settings that appear to trigger it is:
- Nanite enabled
- GI set to none
- (and then because I have to pick something) Reflection method None
I’m going to do a capture with render doc on 5.7 and see if the flicker I’m seen is the underlying normal instability
[Attachment Removed]
That’s great, thanks for doing the repro in 5.7 and providing those key settings.
I don’t believe this issue is currently being tracked, so I will submit a new bug report. If you could also let me know the findings from render doc, that would also be very valuable for me to include in the report.
Thanks,
Hayden
[Attachment Removed]