Edit: So far I managed to narrow it down to Niagara as probable cause: Modifying WPO via ParticleColor or any Dynamic Parameter creates the artifacts, especially combined with rotation modules, but WPO animated without Niagara works fine. Any idea why?
I had this issue and it’s a nightmare - it wasn’t consistent across meshes, materials or use cases. In the end I just remade the mesh and it didn’t affect the new one. Would love to know what it was causing it though if you do find out!
At the moment I managed to animate VAT / Wind with ParticleColor with little to no glitch, but as soon as I add any Niagara random [Initial Mesh Orientation] or [Mesh Rotation Force] module, the meshes flick like crazy.
“Internally, some operations on GPU can be optimized, reshuffled and reordered. There is no guarantee that they will be the same for two different shaders or even two different draws. Since you are drawing opaque materials twice-thrice(once in early depth pass and once in base pass, or even velocity pass), vertex positions can get slightly different between two. Depending on which operations were performed, this slightly can be significant enough to cause depth to be sufficiently different for depth test to fail. Adding precise keyword disabled mentioned optimizations.”
@kmstu:
“Basically drivers are taking your byte code and optimizing it differently between shaders. Precise says don’t do this so your loosing some perf but that is immeasurable in the cases I looked at. D3D12 didn’t allow shader PGO by drivers initially so didn’t suffer from this but did suffer from games running slower on GPU because of lack of it, I believe drivers are allowed to do it in later releases.”