Download

UE4.25.1 displacement flickering with raytracing on [VIDEO] [BUG]

I’ve just found this bug, it’s super easy to reproduce and super super annoying.
We have to re-create our scene in 4.24 because of this bug (yes, no automatic scene downgrading for UE4):

  1. create a new scene, with a postprocessing volume that turns on most raytracing features (so it’s easier to trigger the bug): RTAO, RTGI, RT Reflection
  2. create a plane, and assign a displacement material to it (or use Vertex Offset). The higher the displacement the easier to trigger. No displacement, no flickering bug.
  3. create another geometry, then drag it a little bit(move, rotate or scale). If bug is not triggered, add more geometries.
  4. fly around the displacement plane, there will be some angles to trigger the flicker bug.
    [5. optional] the more bugs are triggered, the easier to reproduce afterward. Change the displacement to 0 can cause the flickering to stop.

Video of the bug:

The displacement material used (flat tessellation, adaptive tess, no crack fixing):

NV driver and windows 10 are up to date.

I doubt it a bug (it could be but doubt it).
My guess is that its just poor understand of the engine that leads to it.

when you add displacement you increase geometry on the GPU only.
The engine - on the cpu - doesn’t know of this and attempts to cull the mesh because it is barely visible.

ergo, if you increase the bounds for the mesh, the problem should go away.
it does for most things.

Now if the issue persists with very large bounds, then it is a bug of some sort…

[USER=“3140864”]MostHost LA[/USER] I dont think so. Watch closely, the original mesh’s bound is clearly in the view frustum the whole time.

Give the bounds a try anyway. They should be matched to the highest displacement.

also, when you have an item selected the engine forces the rendering without culling or anything else. It’s the same for landscapes, hism, etc.
That may accont for why flickering starts after you select and move the other mesh.

Also, what happens if you plug in a value to the tessellation multiplier?
Should not make any difference, but it could. (And would prove you found a bug)

MostHost LA is correct in suggesting that you try and increase the bounds on the static mesh to see if it stops the flickering. UE4 uses a number of different algorithms to calculate what should and should not be seen. Since displacement works exclusively on the GPU the CPU has no idea about what it is doing so the algorithms that are used to calculate what can or can not be seen get confused which can result in the flickering that you are seeing. However, if you can reproduce this 100% of the time in a new UE4 project please do so and then submit a bug report explaining what is going on.