Can the Velocity pass be disabled in Defered rendering?

Even though Motion Blur and TAA are not used in my scene, I can see using the GPU Analayzer or Unreal Insights that some time is spent on the Velocity Pass in the Render Thread (>0.5ms, in a dev build, but still unnecessary).

So far, the only way I found to get this number down was to:

  • on every static mesh, disable World Position Offset Writes Velocity (checked by default)
  • on every Niagara System renderer, disable the motion vector output (automatic by default)
  • just in case disable Output velocities due to vertex deformation in the project settings



Isn’t there a switch or setting to disable globally the velocity pass? If there is such a switch, could it be per scene or something? There is a specefic scene in which I want to use motion blur.

I tried looking at the console commands, forum and documentation, but I didn’t find anything.

Disabling Motion Blur globally in the project doesn’t seems to help either.

After looking at the code in FDeferredShadingsceneRenderer::ShouldRenderVelocities, I found out that the Velocity Pass will always be enabled if r.VelocityOutputPass was equal to 0, which means Renders during the depth pass. This splits the depth pass into 2 phases: with and without velocity. .

So I changed r.VelocityOutputPass to 2, made sure Motion Blur, TAA, SSR were disabled, and now it looks like it working, I don’t see any VelocityPass in Insights. This setting is also availble from the editor in the Project Settings under Engine - Rendering.

1 Like