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

Classes

class  FSubsurfaceShader
 
class  FSubsurfaceVisualizePS
 
class  FSubsurfaceViewportCopyPS
 
class  FSubsurfaceInitValueBufferCS
 
class  FFillMipsConditionBufferCS
 
class  FSubsurfaceBuildIndirectDispatchArgsCS
 
class  FSubsurfaceIndirectDispatchSetupCS
 
class  FSubsurfaceIndirectDispatchCS
 
class  FSubsurfaceSRVResolvePS
 
class  FSubsurfaceRecombinePS
 
class  FSubsurfaceRecombineCopyPS
 

Macros

#define USE_CUSTOM_CLEAR_UAV
 

Typedefs

typedef TUniformBufferRef< FSubsurfaceUniformParametersFSubsurfaceUniformRef
 

Enumerations

enum class  ESubsurfaceMode : uint32 { FullRes , HalfRes , Bypass , MAX }
 

Functions

const TCHARGetEventName (ESubsurfaceMode SubsurfaceMode)
 
float GetSubsurfaceRadiusScale ()
 
int32 GetSSSFilter ()
 
int32 GetSSSSampleSet ()
 
int32 GetSSSQuality ()
 
int32 GetSSSBurleyBilateralFilterKernelFunctionType ()
 
ESubsurfaceMode GetSubsurfaceModeForView (const FViewInfo &View)
 
 END_SHADER_PARAMETER_STRUCT ()
 
uint32 GetSSSMipmapsMinTileCount (const FViewInfo &View)
 
FSubsurfaceParameters GetSubsurfaceCommonParameters (FRDGBuilder &GraphBuilder, const FViewInfo &View, TRDGUniformBufferRef< FSceneTextureUniformParameters > SceneTextures)
 
FSubsurfaceInput GetSubsurfaceInput (FRDGTextureRef Texture, const FScreenPassTextureViewportParameters &ViewportParameters)
 
FSubsurfaceSRVInput GetSubsurfaceSRVInput (FRDGTextureSRVRef Texture, const FScreenPassTextureViewportParameters &ViewportParameters)
 
bool IsSubsurfaceEnabled ()
 
bool IsSubsurfaceRequiredForView (const FViewInfo &View)
 
bool IsProfileIdCacheEnabled ()
 
uint32 GetSubsurfaceRequiredViewMask (TArrayView< const FViewInfo > Views)
 
bool IsSubsurfaceCheckerboardFormat (EPixelFormat SceneColorFormat, const FViewInfo &View)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceVisualizePS, "/Engine/Private/PostProcessSubsurface.usf", "VisualizePS", SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceViewportCopyPS, "/Engine/Private/PostProcessSubsurface.usf", "SubsurfaceViewportCopyPS", SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT (FSubsurfaceUniformParameters, "SubsurfaceUniformParameters")
 
FSubsurfaceUniformRef CreateUniformBuffer (FViewInfo const &View, int32 MaxGroupCount)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceInitValueBufferCS, "/Engine/Private/PostProcessSubsurface.usf", "InitValueBufferCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FFillMipsConditionBufferCS, "/Engine/Private/PostProcessSubsurface.usf", "FillMipsConditionBufferCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceBuildIndirectDispatchArgsCS, "/Engine/Private/PostProcessSubsurface.usf", "BuildIndirectDispatchArgsCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceIndirectDispatchSetupCS, "/Engine/Private/PostProcessSubsurface.usf", "SetupIndirectCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceIndirectDispatchCS, "/Engine/Private/PostProcessSubsurface.usf", "MainIndirectDispatchCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceSRVResolvePS, "/Engine/Private/PostProcessSubsurface.usf", "SubsurfaceViewportCopyPS", SF_Pixel)
 
FRDGTextureRef CreateBlackUAVTexture (FRDGBuilder &GraphBuilder, FRDGTextureDesc SRVDesc, const TCHAR *Name, const FViewInfo &View, const FScreenPassTextureViewport &SceneViewport)
 
FRDGTextureRef CreateBlackUAVTexture (FRDGBuilder &GraphBuilder, FRDGTextureDesc SRVDesc, const TCHAR *TextureName, FRDGEventName &&PassName, const FScreenPassTextureViewport &SceneViewport, FRDGBufferRef ConditionBuffer, uint32 Offset)
 
FRDGTextureRef RegisterExternalRenderTarget (FRDGBuilder &GraphBuilder, TRefCountPtr< IPooledRenderTarget > *PtrExternalTexture, FIntPoint CurentViewExtent, const TCHAR *Name)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceRecombinePS, "/Engine/Private/PostProcessSubsurface.usf", "SubsurfaceRecombinePS", SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER (FSubsurfaceRecombineCopyPS, "/Engine/Private/PostProcessSubsurface.usf", "SubsurfaceRecombineCopyPS", SF_Pixel)
 
void AddSubsurfaceViewPass (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSceneTextures &SceneTextures, FRDGTextureRef SceneColorTextureOutput, ERenderTargetLoadAction SceneColorTextureLoadAction)
 
FRDGTextureRef AddSubsurfacePass (FRDGBuilder &GraphBuilder, TArrayView< const FViewInfo > Views, const uint32 ViewMask, const FSceneTextures &SceneTextures, FRDGTextureRef SceneColorTextureOutput)
 
FScreenPassTexture AddVisualizeSubsurfacePass (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FVisualizeSubsurfaceInputs &Inputs)
 
void AddSubsurfacePass (FRDGBuilder &GraphBuilder, FSceneTextures &SceneTextures, TArrayView< const FViewInfo > Views)
 

Macro Definition Documentation

◆ USE_CUSTOM_CLEAR_UAV

#define USE_CUSTOM_CLEAR_UAV

Typedef Documentation

◆ FSubsurfaceUniformRef

Enumeration Type Documentation

◆ ESubsurfaceMode

enum class ESubsurfaceMode : uint32
strong
Enumerator
FullRes 
HalfRes 
Bypass 
MAX 

Function Documentation

◆ AddSubsurfacePass() [1/2]

void AddSubsurfacePass ( FRDGBuilder GraphBuilder,
FSceneTextures SceneTextures,
TArrayView< const FViewInfo Views 
)

◆ AddSubsurfacePass() [2/2]

FRDGTextureRef AddSubsurfacePass ( FRDGBuilder GraphBuilder,
TArrayView< const FViewInfo Views,
const uint32  ViewMask,
const FSceneTextures SceneTextures,
FRDGTextureRef  SceneColorTextureOutput 
)

◆ AddSubsurfaceViewPass()

void AddSubsurfaceViewPass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FSceneTextures SceneTextures,
FRDGTextureRef  SceneColorTextureOutput,
ERenderTargetLoadAction  SceneColorTextureLoadAction 
)

All subsurface passes within the screen-space subsurface effect can operate at half or full resolution, depending on the subsurface mode. The values are precomputed and shared among all Subsurface textures.

When in bypass mode, the setup and convolution passes are skipped, but lighting reconstruction is still performed in the recombine pass.

See the related comment above in the prepare pass. The scene viewport is used as both the target and texture viewport in order to ensure that the correct pixel is sampled for checkerboard rendering.

◆ AddVisualizeSubsurfacePass()

FScreenPassTexture AddVisualizeSubsurfacePass ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FVisualizeSubsurfaceInputs Inputs 
)

◆ CreateBlackUAVTexture() [1/2]

FRDGTextureRef CreateBlackUAVTexture ( FRDGBuilder GraphBuilder,
FRDGTextureDesc  SRVDesc,
const TCHAR Name,
const FViewInfo View,
const FScreenPassTextureViewport SceneViewport 
)

◆ CreateBlackUAVTexture() [2/2]

FRDGTextureRef CreateBlackUAVTexture ( FRDGBuilder GraphBuilder,
FRDGTextureDesc  SRVDesc,
const TCHAR TextureName,
FRDGEventName &&  PassName,
const FScreenPassTextureViewport SceneViewport,
FRDGBufferRef  ConditionBuffer,
uint32  Offset 
)

◆ CreateUniformBuffer()

FSubsurfaceUniformRef CreateUniformBuffer ( FViewInfo const &  View,
int32  MaxGroupCount 
)

◆ END_SHADER_PARAMETER_STRUCT()

END_SHADER_PARAMETER_STRUCT ( )

◆ GetEventName()

const TCHAR * GetEventName ( ESubsurfaceMode  SubsurfaceMode)

◆ GetSSSBurleyBilateralFilterKernelFunctionType()

int32 GetSSSBurleyBilateralFilterKernelFunctionType ( )

◆ GetSSSFilter()

int32 GetSSSFilter ( )

◆ GetSSSMipmapsMinTileCount()

uint32 GetSSSMipmapsMinTileCount ( const FViewInfo View)

◆ GetSSSQuality()

int32 GetSSSQuality ( )

◆ GetSSSSampleSet()

int32 GetSSSSampleSet ( )

◆ GetSubsurfaceCommonParameters()

FSubsurfaceParameters GetSubsurfaceCommonParameters ( FRDGBuilder GraphBuilder,
const FViewInfo View,
TRDGUniformBufferRef< FSceneTextureUniformParameters SceneTextures 
)

◆ GetSubsurfaceInput()

FSubsurfaceInput GetSubsurfaceInput ( FRDGTextureRef  Texture,
const FScreenPassTextureViewportParameters ViewportParameters 
)

◆ GetSubsurfaceModeForView()

ESubsurfaceMode GetSubsurfaceModeForView ( const FViewInfo View)

◆ GetSubsurfaceRadiusScale()

float GetSubsurfaceRadiusScale ( )

◆ GetSubsurfaceRequiredViewMask()

uint32 GetSubsurfaceRequiredViewMask ( TArrayView< const FViewInfo Views)

◆ GetSubsurfaceSRVInput()

FSubsurfaceSRVInput GetSubsurfaceSRVInput ( FRDGTextureSRVRef  Texture,
const FScreenPassTextureViewportParameters ViewportParameters 
)

◆ IMPLEMENT_GLOBAL_SHADER() [1/10]

IMPLEMENT_GLOBAL_SHADER ( FFillMipsConditionBufferCS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"FillMipsConditionBufferCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceBuildIndirectDispatchArgsCS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"BuildIndirectDispatchArgsCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceIndirectDispatchCS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"MainIndirectDispatchCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [4/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceIndirectDispatchSetupCS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"SetupIndirectCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [5/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceInitValueBufferCS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"InitValueBufferCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [6/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceRecombineCopyPS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"SubsurfaceRecombineCopyPS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [7/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceRecombinePS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"SubsurfaceRecombinePS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [8/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceSRVResolvePS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"SubsurfaceViewportCopyPS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [9/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceViewportCopyPS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"SubsurfaceViewportCopyPS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [10/10]

IMPLEMENT_GLOBAL_SHADER ( FSubsurfaceVisualizePS  ,
"/Engine/Private/PostProcessSubsurface.usf"  ,
"VisualizePS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT()

IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT ( FSubsurfaceUniformParameters  ,
"SubsurfaceUniformParameters"   
)

◆ IsProfileIdCacheEnabled()

bool IsProfileIdCacheEnabled ( )

◆ IsSubsurfaceCheckerboardFormat()

bool IsSubsurfaceCheckerboardFormat ( EPixelFormat  SceneColorFormat,
const FViewInfo View 
)

◆ IsSubsurfaceEnabled()

bool IsSubsurfaceEnabled ( )

◆ IsSubsurfaceRequiredForView()

bool IsSubsurfaceRequiredForView ( const FViewInfo View)

◆ RegisterExternalRenderTarget()

FRDGTextureRef RegisterExternalRenderTarget ( FRDGBuilder GraphBuilder,
TRefCountPtr< IPooledRenderTarget > *  PtrExternalTexture,
FIntPoint  CurentViewExtent,
const TCHAR Name 
)