UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PostProcessMotionBlur.cpp File Reference

Classes

class  FMotionBlurShader
 
class  FMotionBlurVelocityFlattenCS
 
class  FMotionBlurVelocityDilateGatherCS
 
class  FMotionBlurVelocityDilateScatterVS
 
class  FMotionBlurVelocityDilateScatterPS
 
class  FMotionBlurFilterTileClassifyCS
 
class  FSetupMotionBlurFilterCS
 
class  FMotionBlurFilterCS
 
class  FMotionBlurVisualizePS
 
struct  FMotionBlurViewports
 

Enumerations

enum class  EMotionBlurVelocityScatterPass : uint32 { DrawMin , DrawMax , MAX }
 
enum class  EMotionBlurFilterPass : uint32 { Separable0 , Separable1 , Unified , MAX }
 

Functions

bool IsMotionBlurEnabled (const FViewInfo &View)
 
bool IsVisualizeMotionBlurEnabled (const FViewInfo &View)
 
bool IsMotionBlurScatterRequired (const FViewInfo &View, const FScreenPassTextureViewport &SceneViewport)
 
FIntPoint GetMotionBlurTileCount (FIntPoint SizeInPixels)
 
bool DoesMotionBlurNeedsHalfResInput ()
 
EMotionBlurQuality GetMotionBlurQuality ()
 
EMotionBlurFilter GetMotionBlurFilter ()
 
int32 GetMotionBlurDirections ()
 
FRHISamplerStateGetMotionBlurColorSampler ()
 
FRHISamplerStateGetMotionBlurVelocitySampler ()
 
FRHISamplerStateGetPostMotionBlurTranslucencySampler (bool bUpscale)
 
FRDGTextureUAVRef CreateDebugUAV (FRDGBuilder &GraphBuilder, const FIntPoint &Extent, const TCHAR *DebugName)
 
FRDGTextureRef CreateVelocityTileTexture (FRDGBuilder &GraphBuilder, FIntPoint VelocityTileCount, int32 BlurDirections, const TCHAR *DebugName, bool ScatterDilatation=false)
 
FVecocityTileTextureSRVs CreateVelocityTileTextureSRVs (FRDGBuilder &GraphBuilder, FRDGTextureRef VecocityTileArray)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurVelocityFlattenCS, "/Engine/Private/MotionBlur/MotionBlurVelocityFlatten.usf", "MainCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurVelocityDilateGatherCS, "/Engine/Private/MotionBlur/MotionBlurTileGather.usf", "MainCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurVelocityDilateScatterVS, "/Engine/Private/MotionBlur/MotionBlurTileScatter.usf", "MainVS", SF_Vertex)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurVelocityDilateScatterPS, "/Engine/Private/MotionBlur/MotionBlurTileScatter.usf", "MainPS", SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurFilterTileClassifyCS, "/Engine/Private/MotionBlur/MotionBlurFilterTileClassify.usf", "MainCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FSetupMotionBlurFilterCS, "/Engine/Private/MotionBlur/MotionBlurFilterTileClassify.usf", "MainCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurFilterCS, "/Engine/Private/MotionBlur/MotionBlurApply.usf", "MainCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FMotionBlurVisualizePS, "/Engine/Private/MotionBlur/MotionBlurVisualize.usf", "MainPS", SF_Pixel)
 
FVelocityFlattenParameters GetVelocityFlattenParameters (const FViewInfo &View)
 
void AddMotionBlurVelocityPass (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FMotionBlurViewports &Viewports, const FMotionBlurInputs &Inputs, FRDGTextureRef *VelocityFlatTextureOutput, FVecocityTileTextureSRVs *VelocityTileTexturesOutput)
 
FMotionBlurOutputs AddMotionBlurFilterPass (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FMotionBlurInputs &Inputs, const FMotionBlurViewports &Viewports, FRDGTextureSRVRef ColorTexture, FRDGTextureRef VelocityFlatTexture, FVecocityTileTextureSRVs VelocityTileTextures, FRDGTextureRef PostMotionBlurTranslucency, const FIntPoint &PostMotionBlurTranslucencySize, EMotionBlurFilterPass MotionBlurFilterPass, EMotionBlurQuality MotionBlurQuality)
 
FScreenPassTextureSlice AddVisualizeMotionBlurPass (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FMotionBlurInputs &Inputs)
 
FMotionBlurOutputs AddMotionBlurPass (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FMotionBlurInputs &Inputs)
 

Variables

const int32 kMotionBlurFlattenTileSize = FVelocityFlattenTextures::kTileSize
 
const int32 kMotionBlurFilterTileSize = 16
 
const int32 kMotionBlurComputeTileSizeX = 8
 
const int32 kMotionBlurComputeTileSizeY = 8
 
TGlobalResource< FSpriteIndexBuffer< 8 > > GScatterQuadIndexBuffer
 

Enumeration Type Documentation

◆ EMotionBlurFilterPass

Enumerator
Separable0 
Separable1 
Unified 
MAX 

◆ EMotionBlurVelocityScatterPass

Enumerator
DrawMin 
DrawMax 
MAX 

Function Documentation

◆ AddMotionBlurFilterPass()

FMotionBlurOutputs AddMotionBlurFilterPass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FMotionBlurInputs Inputs,
const FMotionBlurViewports Viewports,
FRDGTextureSRVRef  ColorTexture,
FRDGTextureRef  VelocityFlatTexture,
FVecocityTileTextureSRVs  VelocityTileTextures,
FRDGTextureRef  PostMotionBlurTranslucency,
const FIntPoint PostMotionBlurTranslucencySize,
EMotionBlurFilterPass  MotionBlurFilterPass,
EMotionBlurQuality  MotionBlurQuality 
)

◆ AddMotionBlurPass()

FMotionBlurOutputs AddMotionBlurPass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FMotionBlurInputs Inputs 
)

◆ AddMotionBlurVelocityPass()

void AddMotionBlurVelocityPass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FMotionBlurViewports Viewports,
const FMotionBlurInputs Inputs,
FRDGTextureRef VelocityFlatTextureOutput,
FVecocityTileTextureSRVs VelocityTileTexturesOutput 
)

◆ AddVisualizeMotionBlurPass()

FScreenPassTextureSlice AddVisualizeMotionBlurPass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FMotionBlurInputs Inputs 
)

If the override texture is used, check whether the output texture supports SRVs before assigning it, as this causes a crash in FScreenPassTextureSlice::CreateFromScreenPassTexture at the end of this function if not.

The OverrideOutput texture did not support SRVs, so we created one that did, but we still need to resolve the output image back to the OverrideOutput texture too.

◆ CreateDebugUAV()

FRDGTextureUAVRef CreateDebugUAV ( FRDGBuilder GraphBuilder,
const FIntPoint Extent,
const TCHAR DebugName 
)

◆ CreateVelocityTileTexture()

FRDGTextureRef CreateVelocityTileTexture ( FRDGBuilder GraphBuilder,
FIntPoint  VelocityTileCount,
int32  BlurDirections,
const TCHAR DebugName,
bool  ScatterDilatation = false 
)

◆ CreateVelocityTileTextureSRVs()

FVecocityTileTextureSRVs CreateVelocityTileTextureSRVs ( FRDGBuilder GraphBuilder,
FRDGTextureRef  VecocityTileArray 
)

◆ DoesMotionBlurNeedsHalfResInput()

bool DoesMotionBlurNeedsHalfResInput ( )

◆ GetMotionBlurColorSampler()

FRHISamplerState * GetMotionBlurColorSampler ( )

◆ GetMotionBlurDirections()

int32 GetMotionBlurDirections ( )

◆ GetMotionBlurFilter()

EMotionBlurFilter GetMotionBlurFilter ( )

◆ GetMotionBlurQuality()

EMotionBlurQuality GetMotionBlurQuality ( )

◆ GetMotionBlurTileCount()

FIntPoint GetMotionBlurTileCount ( FIntPoint  SizeInPixels)

◆ GetMotionBlurVelocitySampler()

FRHISamplerState * GetMotionBlurVelocitySampler ( )

◆ GetPostMotionBlurTranslucencySampler()

FRHISamplerState * GetPostMotionBlurTranslucencySampler ( bool  bUpscale)

◆ GetVelocityFlattenParameters()

FVelocityFlattenParameters GetVelocityFlattenParameters ( const FViewInfo View)

◆ IMPLEMENT_GLOBAL_SHADER() [1/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurFilterCS  ,
"/Engine/Private/MotionBlur/MotionBlurApply.usf"  ,
"MainCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurFilterTileClassifyCS  ,
"/Engine/Private/MotionBlur/MotionBlurFilterTileClassify.usf"  ,
"MainCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurVelocityDilateGatherCS  ,
"/Engine/Private/MotionBlur/MotionBlurTileGather.usf"  ,
"MainCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [4/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurVelocityDilateScatterPS  ,
"/Engine/Private/MotionBlur/MotionBlurTileScatter.usf"  ,
"MainPS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [5/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurVelocityDilateScatterVS  ,
"/Engine/Private/MotionBlur/MotionBlurTileScatter.usf"  ,
"MainVS"  ,
SF_Vertex   
)

◆ IMPLEMENT_GLOBAL_SHADER() [6/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurVelocityFlattenCS  ,
"/Engine/Private/MotionBlur/MotionBlurVelocityFlatten.usf"  ,
"MainCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [7/8]

IMPLEMENT_GLOBAL_SHADER ( FMotionBlurVisualizePS  ,
"/Engine/Private/MotionBlur/MotionBlurVisualize.usf"  ,
"MainPS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [8/8]

IMPLEMENT_GLOBAL_SHADER ( FSetupMotionBlurFilterCS  ,
"/Engine/Private/MotionBlur/MotionBlurFilterTileClassify.usf"  ,
"MainCS"  ,
SF_Compute   
)

◆ IsMotionBlurEnabled()

bool IsMotionBlurEnabled ( const FViewInfo View)

◆ IsMotionBlurScatterRequired()

bool IsMotionBlurScatterRequired ( const FViewInfo View,
const FScreenPassTextureViewport SceneViewport 
)

◆ IsVisualizeMotionBlurEnabled()

bool IsVisualizeMotionBlurEnabled ( const FViewInfo View)

Variable Documentation

◆ GScatterQuadIndexBuffer

TGlobalResource<FSpriteIndexBuffer<8> > GScatterQuadIndexBuffer

◆ kMotionBlurComputeTileSizeX

const int32 kMotionBlurComputeTileSizeX = 8

◆ kMotionBlurComputeTileSizeY

const int32 kMotionBlurComputeTileSizeY = 8

◆ kMotionBlurFilterTileSize

const int32 kMotionBlurFilterTileSize = 16

◆ kMotionBlurFlattenTileSize

const int32 kMotionBlurFlattenTileSize = FVelocityFlattenTextures::kTileSize