I am investigating the use of Cesium in a VR project in Unreal 5.1 (soon to upgrade to 5.2)
I have noticed that there are strange artifacts (dithering?) on the terrain when running with forward rendering and MSAA enabled. (Note this issue occurs in the editor / pc standalone also so isn’t specific to VR)
Is this a known issue, and, if so, is there a fix/solution for this?
TAA doesn’t seem to have the same issue, but is looking unsuitable for our needs.
We haven’t noticed that, but also don’t often switch to Forward Rendering and MSAA. Would you mind giving us some instructions for reproducing the problem, preferably starting with the Cesium for Unreal Samples project? That will make it much easier for us to take a look and debug it.
It’s very easy to reproduce. If you just create a new Unreal project using the VR template and then add Cesium to it and run you will be able to see the dithering effect + black squares where the terrain meets the base of the sky. There is dithering all over the terrain, and particularly noticable at close distances.
The issue only seems to be apparent with MSAA and Forward rendering (which are the default configuration when using the VR template)
Setting up a new project based on the VR template with a working Cesium for Unreal development environment is a fair bit of work. Can you please tell me what settings to change (and where to find them) in the Samples project instead?
Certainly. You just need to enable the following -
Edit | Project Settings | Engine - Rendering | Forward Renderer | Forward shading → Tick/enable
Edit | Project Settings | Engine - Rendering | Anti-Aliasing Method → Select Multisample anti aliasing (MSAA)
Thanks! I can reproduce this, and I have a workaround.
Materials/Instances/MI_CesiumThreeOverlaysAndClipping with the UE Editor. It’s inside the Cesium for Unreal plugin folder, so you might have to enable “Show Plugin Content” in the Content Browser.
Then find the
DitherFade material layer and delete it by pressing the X:
Save the material, and the dithering artifact should go away.
The problem is caused by the use of the engine-provided
DitherTemporalAA node. As the name implies, it’s meant to be used with temporal anti-aliasing. But why it causes that dithering artifact with MSAA - when the dithering should be inactive anyway! - is a mystery to me. I’ll investigate further.
I wrote an issue to track this:
Thank you for the swift reply. I have tested locally and can confirm that does indeed fix it. A huge help!
Thanks so much for the support.