UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DecalRendering Namespace Reference

Functions

bool IsOpaqueBlendMode (const FDecalBlendDesc &In)
 
bool IsOpaqueOrMaskedBlendMode (const FDecalBlendDesc &In)
 
bool IsMaskedBlendMode (const FDecalBlendDesc &In)
 
bool IsTranslucentOnlyBlendMode (const FDecalBlendDesc &In)
 
bool IsTranslucentBlendMode (const FDecalBlendDesc &In)
 
bool IsAlphaHoldoutBlendMode (const FDecalBlendDesc &In)
 
bool IsModulateBlendMode (const FDecalBlendDesc &In)
 
bool IsAlphaCompositeBlendMode (const FDecalBlendDesc &In)
 
void FinalizeBlendDesc (EShaderPlatform Platform, FDecalBlendDesc &Desc)
 
FDecalBlendDesc ComputeDecalBlendDesc (EShaderPlatform Platform, const FMaterial &Material)
 
FDecalBlendDesc ComputeDecalBlendDesc (EShaderPlatform Platform, FMaterialShaderParameters const &MaterialShaderParameters)
 
bool IsCompatibleWithRenderStage (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
EDecalRenderStage GetBaseRenderStage (FDecalBlendDesc DecalBlendDesc)
 
uint8 GetDecalRenderTargetModeMask (const FMaterial &Material, ERHIFeatureLevel::Type FeatureLevel)
 
bool IsCompatibleWithRenderTargetMode (uint8 DecalRenderTargetModeMask, EDecalRenderTargetMode DecalRenderTargetMode)
 
EMeshPass::Type GetMeshPassType (EDecalRenderTargetMode RenderTargetMode)
 
EDecalRenderStage GetRenderStage (EDecalRenderTargetMode RenderTargetMode, EShadingPath ShadingPath)
 
EDecalRenderTargetMode GetRenderTargetMode (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
uint32 GetRenderTargetCount (FDecalBlendDesc DecalBlendDesc, EDecalRenderTargetMode RenderTargetMode)
 
uint32 GetRenderTargetWriteMask (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage, EDecalRenderTargetMode RenderTargetMode)
 
FRHIBlendStateGetDecalBlendState_DBuffer (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
FRHIBlendStateGetDecalBlendState_SceneColorAndGBuffer (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
FRHIBlendStateGetDecalBlendState_SceneColorAndGBufferNoNormal (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
FRHIBlendStateGetDecalBlendState_SceneColor (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
FRHIBlendStateGetDecalBlendState_AmbientOcclusion (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage)
 
FRHIBlendStateGetDecalBlendState (FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage, EDecalRenderTargetMode RenderTargetMode)
 
EDecalRasterizerState GetDecalRasterizerState (bool bInsideDecal, bool bIsInverted, bool ViewReverseCulling)
 
FRHIRasterizerStateGetDecalRasterizerState (EDecalRasterizerState DecalRasterizerState)
 
void ModifyCompilationEnvironment (EShaderPlatform Platform, FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage, FShaderCompilerEnvironment &OutEnvironment)
 
float GetDecalFadeScreenSizeMultiplier ()
 
float CalculateDecalFadeAlpha (float DecalFadeScreenSize, const FMatrix &ComponentToWorldMatrix, const FViewInfo &View, float FadeMultiplier)
 
void SortDecalList (FRelevantDecalList &Decals)
 
FVisibleDecalList BuildVisibleDecalList (TConstArrayView< FDeferredDecalProxy * > Decals, const FViewInfo &View)
 
FRelevantDecalList BuildRelevantDecalList (TConstArrayView< FVisibleDecal > Decals, EDecalRenderStage DecalRenderStage)
 
bool HasRelevantDecals (TConstArrayView< FVisibleDecal > Decals, EDecalRenderStage DecalRenderStage)
 
FMatrix ComputeComponentToClipMatrix (const FViewInfo &View, const FMatrix &DecalComponentToWorld)
 
bool TryGetDeferredDecalShaders (FMaterial const &Material, ERHIFeatureLevel::Type FeatureLevel, EDecalRenderStage DecalRenderStage, TShaderRef< FDeferredDecalPS > &OutPixelShader)
 
bool GetShaders (ERHIFeatureLevel::Type FeatureLevel, const FMaterial &Material, EDecalRenderStage DecalRenderStage, TShaderRef< FShader > &OutVertexShader, TShaderRef< FShader > &OutPixelShader)
 
bool SetupShaderState (ERHIFeatureLevel::Type FeatureLevel, const FMaterial &Material, EDecalRenderStage DecalRenderStage, FBoundShaderStateInput &OutBoundShaderState)
 
FMaterialRenderProxy const * TryGetDeferredDecalMaterial (FMaterialRenderProxy const *MaterialProxy, ERHIFeatureLevel::Type FeatureLevel, EDecalRenderStage DecalRenderStage, FMaterial const *&OutMaterialResource, TShaderRef< FDeferredDecalPS > &OutPixelShader)
 
void SetShader (FRHICommandList &RHICmdList, FGraphicsPipelineStateInitializer &GraphicsPSOInit, uint32 StencilRef, const FViewInfo &View, const FVisibleDecal &VisibleDecal, EDecalRenderStage DecalRenderStage, const FMatrix &FrustumComponentToClip, const FScene *Scene)
 
void SetVertexShaderOnly (FRHICommandList &RHICmdList, FGraphicsPipelineStateInitializer &GraphicsPSOInit, const FViewInfo &View, const FMatrix &FrustumComponentToClip)
 

Detailed Description

Shared decal functionality for render pass and shader setup.

Shared deferred decal functionality.

Function Documentation

◆ BuildRelevantDecalList()

FRelevantDecalList DecalRendering::BuildRelevantDecalList ( TConstArrayView< FVisibleDecal Decals,
EDecalRenderStage  DecalRenderStage 
)

◆ BuildVisibleDecalList()

FVisibleDecalList DecalRendering::BuildVisibleDecalList ( TConstArrayView< FDeferredDecalProxy * >  Decals,
const FViewInfo View 
)

◆ CalculateDecalFadeAlpha()

float DecalRendering::CalculateDecalFadeAlpha ( float  DecalFadeScreenSize,
const FMatrix ComponentToWorldMatrix,
const FViewInfo View,
float  FadeMultiplier 
)

◆ ComputeComponentToClipMatrix()

FMatrix DecalRendering::ComputeComponentToClipMatrix ( const FViewInfo View,
const FMatrix DecalComponentToWorld 
)

◆ ComputeDecalBlendDesc() [1/2]

FDecalBlendDesc DecalRendering::ComputeDecalBlendDesc ( EShaderPlatform  Platform,
const FMaterial Material 
)

Build the packed decal description from a decal material.

◆ ComputeDecalBlendDesc() [2/2]

FDecalBlendDesc DecalRendering::ComputeDecalBlendDesc ( EShaderPlatform  Platform,
FMaterialShaderParameters const &  MaterialShaderParameters 
)

Build the packed decal description from a decal material.

◆ FinalizeBlendDesc()

void DecalRendering::FinalizeBlendDesc ( EShaderPlatform  Platform,
FDecalBlendDesc Desc 
)

Finalize the initialization of FDecalBlendDesc after BlendMode and bWrite flags have all been set.

◆ GetBaseRenderStage()

EDecalRenderStage DecalRendering::GetBaseRenderStage ( FDecalBlendDesc  DecalBlendDesc)

Returns the main render stage for a decal (does not include the emissive, and AO stages). Can return EDecalRenderStage::None if there is no valid main render stage.

◆ GetDecalBlendState()

FRHIBlendState * DecalRendering::GetDecalBlendState ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage,
EDecalRenderTargetMode  RenderTargetMode 
)

Get the blend state for rendering a decal at the given stage and render target mode.

◆ GetDecalBlendState_AmbientOcclusion()

FRHIBlendState * DecalRendering::GetDecalBlendState_AmbientOcclusion ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

◆ GetDecalBlendState_DBuffer()

FRHIBlendState * DecalRendering::GetDecalBlendState_DBuffer ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

◆ GetDecalBlendState_SceneColor()

FRHIBlendState * DecalRendering::GetDecalBlendState_SceneColor ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

◆ GetDecalBlendState_SceneColorAndGBuffer()

FRHIBlendState * DecalRendering::GetDecalBlendState_SceneColorAndGBuffer ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

◆ GetDecalBlendState_SceneColorAndGBufferNoNormal()

FRHIBlendState * DecalRendering::GetDecalBlendState_SceneColorAndGBufferNoNormal ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

◆ GetDecalFadeScreenSizeMultiplier()

float DecalRendering::GetDecalFadeScreenSizeMultiplier ( )

◆ GetDecalRasterizerState() [1/2]

EDecalRasterizerState DecalRendering::GetDecalRasterizerState ( bool  bInsideDecal,
bool  bIsInverted,
bool  ViewReverseCulling 
)

Get the EDecalRasterizerState enum from the view setup.

◆ GetDecalRasterizerState() [2/2]

FRHIRasterizerState * DecalRendering::GetDecalRasterizerState ( EDecalRasterizerState  DecalRasterizerState)

Get the rasterizer state object for a EDecalRasterizerState enum.

◆ GetDecalRenderTargetModeMask()

uint8 DecalRendering::GetDecalRenderTargetModeMask ( const FMaterial Material,
ERHIFeatureLevel::Type  FeatureLevel 
)

Setup a mask for each render target mode where the material should render to

◆ GetMeshPassType()

EMeshPass::Type DecalRendering::GetMeshPassType ( EDecalRenderTargetMode  RenderTargetMode)

Get the mesh pass processer type to use for given render target mode

◆ GetRenderStage()

EDecalRenderStage DecalRendering::GetRenderStage ( EDecalRenderTargetMode  RenderTargetMode,
EShadingPath  ShadingPath 
)

Returns the main render stage from render target mode and shading path

◆ GetRenderTargetCount()

uint32 DecalRendering::GetRenderTargetCount ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderTargetMode  RenderTargetMode 
)

Get render target count for the given render target mode.

◆ GetRenderTargetMode()

EDecalRenderTargetMode DecalRendering::GetRenderTargetMode ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

Get the render target mode that a decal uses for a given stage. Can return EDecalRenderTargetMode::None if there is no valid render target mode.

◆ GetRenderTargetWriteMask()

uint32 DecalRendering::GetRenderTargetWriteMask ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage,
EDecalRenderTargetMode  RenderTargetMode 
)

Get render target write mask as a bitmask for the given stage and render target mode.

◆ GetShaders()

bool DecalRendering::GetShaders ( ERHIFeatureLevel::Type  FeatureLevel,
const FMaterial Material,
EDecalRenderStage  DecalRenderStage,
TShaderRef< FShader > &  OutVertexShader,
TShaderRef< FShader > &  OutPixelShader 
)

◆ HasRelevantDecals()

bool DecalRendering::HasRelevantDecals ( TConstArrayView< FVisibleDecal Decals,
EDecalRenderStage  DecalRenderStage 
)

◆ IsAlphaCompositeBlendMode()

bool DecalRendering::IsAlphaCompositeBlendMode ( const FDecalBlendDesc In)
inline

◆ IsAlphaHoldoutBlendMode()

bool DecalRendering::IsAlphaHoldoutBlendMode ( const FDecalBlendDesc In)
inline

◆ IsCompatibleWithRenderStage()

bool DecalRendering::IsCompatibleWithRenderStage ( FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage 
)

Returns true if a decal should be rendered in the render stage.

◆ IsCompatibleWithRenderTargetMode()

bool DecalRendering::IsCompatibleWithRenderTargetMode ( uint8  DecalRenderTargetModeMask,
EDecalRenderTargetMode  DecalRenderTargetMode 
)

Returns true if a decal should be rendered in the render target mode.

◆ IsMaskedBlendMode()

bool DecalRendering::IsMaskedBlendMode ( const FDecalBlendDesc In)
inline

◆ IsModulateBlendMode()

bool DecalRendering::IsModulateBlendMode ( const FDecalBlendDesc In)
inline

◆ IsOpaqueBlendMode()

bool DecalRendering::IsOpaqueBlendMode ( const FDecalBlendDesc In)
inline

◆ IsOpaqueOrMaskedBlendMode()

bool DecalRendering::IsOpaqueOrMaskedBlendMode ( const FDecalBlendDesc In)
inline

◆ IsTranslucentBlendMode()

bool DecalRendering::IsTranslucentBlendMode ( const FDecalBlendDesc In)
inline

◆ IsTranslucentOnlyBlendMode()

bool DecalRendering::IsTranslucentOnlyBlendMode ( const FDecalBlendDesc In)
inline

◆ ModifyCompilationEnvironment()

void DecalRendering::ModifyCompilationEnvironment ( EShaderPlatform  Platform,
FDecalBlendDesc  DecalBlendDesc,
EDecalRenderStage  DecalRenderStage,
FShaderCompilerEnvironment OutEnvironment 
)

Modify the shader compilation environment for a given decal and stage.

◆ SetShader()

void DecalRendering::SetShader ( FRHICommandList RHICmdList,
FGraphicsPipelineStateInitializer GraphicsPSOInit,
uint32  StencilRef,
const FViewInfo View,
const FVisibleDecal VisibleDecal,
EDecalRenderStage  DecalRenderStage,
const FMatrix FrustumComponentToClip,
const FScene Scene 
)

◆ SetupShaderState()

bool DecalRendering::SetupShaderState ( ERHIFeatureLevel::Type  FeatureLevel,
const FMaterial Material,
EDecalRenderStage  DecalRenderStage,
FBoundShaderStateInput OutBoundShaderState 
)

◆ SetVertexShaderOnly()

void DecalRendering::SetVertexShaderOnly ( FRHICommandList RHICmdList,
FGraphicsPipelineStateInitializer GraphicsPSOInit,
const FViewInfo View,
const FMatrix FrustumComponentToClip 
)

◆ SortDecalList()

void DecalRendering::SortDecalList ( FRelevantDecalList Decals)

◆ TryGetDeferredDecalMaterial()

FMaterialRenderProxy const * DecalRendering::TryGetDeferredDecalMaterial ( FMaterialRenderProxy const *  MaterialProxy,
ERHIFeatureLevel::Type  FeatureLevel,
EDecalRenderStage  DecalRenderStage,
FMaterial const *&  OutMaterialResource,
TShaderRef< FDeferredDecalPS > &  OutPixelShader 
)

◆ TryGetDeferredDecalShaders()

bool DecalRendering::TryGetDeferredDecalShaders ( FMaterial const &  Material,
ERHIFeatureLevel::Type  FeatureLevel,
EDecalRenderStage  DecalRenderStage,
TShaderRef< FDeferredDecalPS > &  OutPixelShader 
)