UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMaterialRenderProxy Class Referenceabstract

#include <MaterialRenderProxy.h>

+ Inheritance diagram for FMaterialRenderProxy:

Public Member Functions

ENGINE_API FMaterialRenderProxy (FString InMaterialName)
 
virtual ENGINE_API ~FMaterialRenderProxy ()
 
ENGINE_API void EvaluateUniformExpressions (FRHICommandListBase &RHICmdList, FUniformExpressionCache &OutUniformExpressionCache, const FMaterialRenderContext &Context, FUniformExpressionCacheAsyncUpdater *Updater=nullptr) const
 
ENGINE_API void CacheUniformExpressions (FRHICommandListBase &RHICmdList, bool bRecreateUniformBuffer)
 
ENGINE_API void CancelCacheUniformExpressions ()
 
ENGINE_API void CacheUniformExpressions_GameThread (bool bRecreateUniformBuffer)
 
ENGINE_API void InvalidateUniformExpressionCache (bool bRecreateUniformBuffer)
 
ENGINE_API void UpdateUniformExpressionCacheIfNeeded (ERHIFeatureLevel::Type InFeatureLevel) const
 
ENGINE_API const FMaterialUpdateUniformExpressionCacheIfNeeded (FRHICommandListBase &RHICmdList, ERHIFeatureLevel::Type InFeatureLevel) const
 
virtual const FMaterialGetMaterialNoFallback (ERHIFeatureLevel::Type InFeatureLevel) const =0
 
virtual const FMaterialRenderProxyGetFallback (ERHIFeatureLevel::Type InFeatureLevel) const =0
 
ENGINE_API const FMaterialGetMaterialWithFallback (ERHIFeatureLevel::Type InFeatureLevel, const FMaterialRenderProxy *&OutFallbackMaterialRenderProxy) const
 
ENGINE_API const FMaterialGetIncompleteMaterialWithFallback (ERHIFeatureLevel::Type InFeatureLevel) const
 
virtual UMaterialInterfaceGetMaterialInterface () const
 
ENGINE_API bool GetVectorValue (const FHashedMaterialParameterInfo &ParameterInfo, FLinearColor *OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetScalarValue (const FHashedMaterialParameterInfo &ParameterInfo, float *OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetTextureValue (const FHashedMaterialParameterInfo &ParameterInfo, const UTexture **OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetTextureValue (const FHashedMaterialParameterInfo &ParameterInfo, const URuntimeVirtualTexture **OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetTextureValue (const FHashedMaterialParameterInfo &ParameterInfo, const USparseVolumeTexture **OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetTextureCollectionValue (const FHashedMaterialParameterInfo &ParameterInfo, const UTextureCollection **OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetParameterCollectionValue (const FHashedMaterialParameterInfo &ParameterInfo, const UMaterialParameterCollection **OutValue, const FMaterialRenderContext &Context) const
 
ENGINE_API bool GetParameterShaderValue (EMaterialParameterType Type, const FHashedMaterialParameterInfo &ParameterInfo, UE::Shader::FValue &OutValue, const FMaterialRenderContext &Context) const
 
virtual bool GetParameterValue (EMaterialParameterType Type, const FHashedMaterialParameterInfo &ParameterInfo, FMaterialParameterValue &OutValue, const FMaterialRenderContext &Context) const =0
 
virtual bool GetUserSceneTextureOverride (FName &InOutValue) const
 
ENGINE_API FName GetUserSceneTextureOutput (const FMaterial *Base) const
 
virtual ENGINE_API EBlendableLocation GetBlendableLocation (const FMaterial *Base) const
 
virtual ENGINE_API int32 GetBlendablePriority (const FMaterial *Base) const
 
bool IsDeleted () const
 
void MarkForGarbageCollection ()
 
bool IsMarkedForGarbageCollection () const
 
void MarkTransient ()
 
virtual ENGINE_API void InitRHI (FRHICommandListBase &RHICmdList) override
 
virtual ENGINE_API void ReleaseRHI () override
 
virtual ENGINE_API void ReleaseResource () override
 
void SetSubsurfaceProfileRT (const USubsurfaceProfile *Ptr)
 
const USubsurfaceProfileGetSubsurfaceProfileRT () const
 
void ClearSubsurfaceProfileRT ()
 
void AddSubsurfaceProfileRT (const USubsurfaceProfile *Ptr)
 
const USubsurfaceProfileGetSubsurfaceProfileRT (uint32 Index) const
 
const uint32 NumSubsurfaceProfileRT () const
 
void AddSpecularProfileRT (const USpecularProfile *Ptr)
 
const USpecularProfileGetSpecularProfileRT (uint32 Index) const
 
const uint32 NumSpecularProfileRT () const
 
void SetSpecularProfileOverrideRT (const USpecularProfile *Ptr)
 
const USpecularProfileGetSpecularProfileOverrideRT () const
 
void SetNeuralProfileRT (const UNeuralProfile *Ptr)
 
const UNeuralProfileGetNeuralProfileRT () const
 
int32 GetExpressionCacheSerialNumber () const
 
const FString & GetMaterialName () const
 
- Public Member Functions inherited from FRenderResource
RENDERCORE_API FRenderResource ()
 
RENDERCORE_API FRenderResource (ERHIFeatureLevel::Type InFeatureLevel)
 
RENDERCORE_API FRenderResource (const FRenderResource &)
 
RENDERCORE_API FRenderResource (FRenderResource &&)
 
RENDERCORE_API FRenderResourceoperator= (const FRenderResource &Other)
 
RENDERCORE_API FRenderResourceoperator= (FRenderResource &&Other)
 
virtual RENDERCORE_API ~FRenderResource ()
 
virtual RENDERCORE_API void InitResource (FRHICommandListBase &RHICmdList)
 
RENDERCORE_API void UpdateRHI (FRHICommandListBase &RHICmdList)
 
virtual FString GetFriendlyName () const
 
bool IsInitialized () const
 
int32 GetListIndex () const
 
EInitPhase GetInitPhase () const
 
void SetOwnerName (FName InOwnerName)
 
FName GetOwnerName () const
 
void SetResourceName (FName InResourceName)
 
FName GetResourceName () const
 

Static Public Member Functions

static ENGINE_API void UpdateDeferredCachedUniformExpressions ()
 
static ENGINE_API void UpdateDeferredCachedUniformExpressions (FRHICommandListBase &RHICmdList, UE::Tasks::FTask *TaskIfAsync=nullptr)
 
static ENGINE_API bool HasDeferredUniformExpressionCacheRequests ()
 
- Static Public Member Functions inherited from FRenderResource
static RENDERCORE_API void ReleaseRHIForAllResources ()
 
static RENDERCORE_API void InitPreRHIResources ()
 
static RENDERCORE_API void ChangeFeatureLevel (ERHIFeatureLevel::Type NewFeatureLevel)
 
static RENDERCORE_API FName SetScopeName (FName Name)
 

Public Attributes

FUniformExpressionCacheContainer UniformExpressionCache
 
FImmutableSamplerState ImmutableSamplerState
 
- Public Attributes inherited from FRenderResource
ERenderResourceState ResourceState = ERenderResourceState::Default
 

Protected Member Functions

virtual ENGINE_API void EvaluateParameterCollections (FRHICommandListBase &RHICmdList, FUniformExpressionCache &OutUniformExpressionCache, const FMaterialRenderContext &Context, FUniformExpressionCacheAsyncUpdater *Updater) const
 
- Protected Member Functions inherited from FRenderResource
void SetFeatureLevel (const FStaticFeatureLevel InFeatureLevel)
 
const FStaticFeatureLevel GetFeatureLevel () const
 
bool HasValidFeatureLevel () const
 
template<typename T >
FBufferRHIRef CreateRHIBuffer (FRHICommandListBase &RHICmdList, T &InOutResourceObject, uint32 ResourceCount, EBufferUsageFlags InBufferUsageFlags, const TCHAR *InDebugName)
 
void SetInitPhase (EInitPhase InInitPhase)
 
- Protected Member Functions inherited from FNoncopyable
 FNoncopyable ()
 
 ~FNoncopyable ()
 

Additional Inherited Members

- Public Types inherited from FRenderResource
enum class  EInitPhase : uint8 { Pre , Default , MAX }
 
- Static Protected Member Functions inherited from FRenderResource
static RENDERCORE_API FRHICommandListBaseGetImmediateCommandList ()
 

Detailed Description

A material render proxy used by the renderer.

Constructor & Destructor Documentation

◆ FMaterialRenderProxy()

FMaterialRenderProxy::FMaterialRenderProxy ( FString  InMaterialName)

Default constructor.

◆ ~FMaterialRenderProxy()

FMaterialRenderProxy::~FMaterialRenderProxy ( )
virtual

Destructor.

Member Function Documentation

◆ AddSpecularProfileRT()

void FMaterialRenderProxy::AddSpecularProfileRT ( const USpecularProfile Ptr)
inline

◆ AddSubsurfaceProfileRT()

void FMaterialRenderProxy::AddSubsurfaceProfileRT ( const USubsurfaceProfile Ptr)
inline

◆ CacheUniformExpressions()

void FMaterialRenderProxy::CacheUniformExpressions ( FRHICommandListBase RHICmdList,
bool  bRecreateUniformBuffer 
)

Caches uniform expressions for efficient runtime evaluation.

◆ CacheUniformExpressions_GameThread()

void FMaterialRenderProxy::CacheUniformExpressions_GameThread ( bool  bRecreateUniformBuffer)

Enqueues a rendering command to cache uniform expressions for efficient runtime evaluation. bRecreateUniformBuffer - whether to recreate the material uniform buffer. This is required if the FMaterial is being recompiled (the uniform buffer layout will change). This should only be done if the calling code is using FMaterialUpdateContext to recreate the rendering state of primitives using this material, since cached mesh commands also cache uniform buffer pointers.

◆ CancelCacheUniformExpressions()

void FMaterialRenderProxy::CancelCacheUniformExpressions ( )

Cancels an in-flight cache operation.

◆ ClearSubsurfaceProfileRT()

void FMaterialRenderProxy::ClearSubsurfaceProfileRT ( )
inline

◆ EvaluateParameterCollections()

void FMaterialRenderProxy::EvaluateParameterCollections ( FRHICommandListBase RHICmdList,
FUniformExpressionCache OutUniformExpressionCache,
const FMaterialRenderContext Context,
FUniformExpressionCacheAsyncUpdater Updater 
) const
protectedvirtual

◆ EvaluateUniformExpressions()

void FMaterialRenderProxy::EvaluateUniformExpressions ( FRHICommandListBase RHICmdList,
FUniformExpressionCache OutUniformExpressionCache,
const FMaterialRenderContext Context,
FUniformExpressionCacheAsyncUpdater Updater = nullptr 
) const

Evaluates uniform expressions and stores them in OutUniformExpressionCache.

Parameters
OutUniformExpressionCache- The uniform expression cache to build.
MaterialRenderContext- The context for which to cache expressions.

The actual pointer may not match because there are cases(in the editor, during the shader compilation) when material's shader map gets updated without proxy's cache getting invalidated, but the layout contents must match.

◆ GetBlendableLocation()

EBlendableLocation FMaterialRenderProxy::GetBlendableLocation ( const FMaterial Base) const
virtual

Reimplemented in FMaterialInstanceResource.

◆ GetBlendablePriority()

int32 FMaterialRenderProxy::GetBlendablePriority ( const FMaterial Base) const
virtual

Reimplemented in FMaterialInstanceResource.

◆ GetExpressionCacheSerialNumber()

int32 FMaterialRenderProxy::GetExpressionCacheSerialNumber ( ) const
inline

◆ GetFallback()

◆ GetIncompleteMaterialWithFallback()

const FMaterial & FMaterialRenderProxy::GetIncompleteMaterialWithFallback ( ERHIFeatureLevel::Type  InFeatureLevel) const

Finds the FMaterial to use for rendering this FMaterialRenderProxy. Will fall back to a default material if needed due to a content error, or async compilation. Will always return a valid FMaterial, but unlike GetMaterialWithFallback, FMaterial's shader map may be incomplete

◆ GetMaterialInterface()

virtual UMaterialInterface * FMaterialRenderProxy::GetMaterialInterface ( ) const
inlinevirtual

◆ GetMaterialName()

const FString & FMaterialRenderProxy::GetMaterialName ( ) const
inline

◆ GetMaterialNoFallback()

virtual const FMaterial * FMaterialRenderProxy::GetMaterialNoFallback ( ERHIFeatureLevel::Type  InFeatureLevel) const
pure virtual

◆ GetMaterialWithFallback()

const FMaterial & FMaterialRenderProxy::GetMaterialWithFallback ( ERHIFeatureLevel::Type  InFeatureLevel,
const FMaterialRenderProxy *&  OutFallbackMaterialRenderProxy 
) const

Finds the FMaterial to use for rendering this FMaterialRenderProxy. Will fall back to a default material if needed due to a content error, or async compilation. The returned FMaterial is guaranteed to have a complete shader map, so all relevant shaders should be available OutFallbackMaterialRenderProxy - The proxy that corresponds to the returned FMaterial, should be used for further rendering. May be a fallback material, or 'this' if no fallback was needed

◆ GetNeuralProfileRT()

const UNeuralProfile * FMaterialRenderProxy::GetNeuralProfileRT ( ) const
inline

◆ GetParameterCollectionValue()

bool FMaterialRenderProxy::GetParameterCollectionValue ( const FHashedMaterialParameterInfo ParameterInfo,
const UMaterialParameterCollection **  OutValue,
const FMaterialRenderContext Context 
) const

◆ GetParameterShaderValue()

bool FMaterialRenderProxy::GetParameterShaderValue ( EMaterialParameterType  Type,
const FHashedMaterialParameterInfo ParameterInfo,
UE::Shader::FValue OutValue,
const FMaterialRenderContext Context 
) const

◆ GetParameterValue()

◆ GetScalarValue()

bool FMaterialRenderProxy::GetScalarValue ( const FHashedMaterialParameterInfo ParameterInfo,
float OutValue,
const FMaterialRenderContext Context 
) const

◆ GetSpecularProfileOverrideRT()

const USpecularProfile * FMaterialRenderProxy::GetSpecularProfileOverrideRT ( ) const
inline

◆ GetSpecularProfileRT()

const USpecularProfile * FMaterialRenderProxy::GetSpecularProfileRT ( uint32  Index) const
inline

◆ GetSubsurfaceProfileRT() [1/2]

const USubsurfaceProfile * FMaterialRenderProxy::GetSubsurfaceProfileRT ( ) const
inline

◆ GetSubsurfaceProfileRT() [2/2]

const USubsurfaceProfile * FMaterialRenderProxy::GetSubsurfaceProfileRT ( uint32  Index) const
inline

◆ GetTextureCollectionValue()

bool FMaterialRenderProxy::GetTextureCollectionValue ( const FHashedMaterialParameterInfo ParameterInfo,
const UTextureCollection **  OutValue,
const FMaterialRenderContext Context 
) const

◆ GetTextureValue() [1/3]

bool FMaterialRenderProxy::GetTextureValue ( const FHashedMaterialParameterInfo ParameterInfo,
const URuntimeVirtualTexture **  OutValue,
const FMaterialRenderContext Context 
) const

◆ GetTextureValue() [2/3]

bool FMaterialRenderProxy::GetTextureValue ( const FHashedMaterialParameterInfo ParameterInfo,
const USparseVolumeTexture **  OutValue,
const FMaterialRenderContext Context 
) const

◆ GetTextureValue() [3/3]

bool FMaterialRenderProxy::GetTextureValue ( const FHashedMaterialParameterInfo ParameterInfo,
const UTexture **  OutValue,
const FMaterialRenderContext Context 
) const

◆ GetUserSceneTextureOutput()

FName FMaterialRenderProxy::GetUserSceneTextureOutput ( const FMaterial Base) const

◆ GetUserSceneTextureOverride()

virtual bool FMaterialRenderProxy::GetUserSceneTextureOverride ( FName InOutValue) const
inlinevirtual

Reimplemented in FMaterialInstanceResource.

◆ GetVectorValue()

bool FMaterialRenderProxy::GetVectorValue ( const FHashedMaterialParameterInfo ParameterInfo,
FLinearColor OutValue,
const FMaterialRenderContext Context 
) const

◆ HasDeferredUniformExpressionCacheRequests()

bool FMaterialRenderProxy::HasDeferredUniformExpressionCacheRequests ( )
static

◆ InitRHI()

void FMaterialRenderProxy::InitRHI ( FRHICommandListBase RHICmdList)
overridevirtual

Initializes the RHI resources used by this resource. Called when entering the state where both the resource and the RHI have been initialized. This is only called by the rendering thread.

Reimplemented from FRenderResource.

◆ InvalidateUniformExpressionCache()

void FMaterialRenderProxy::InvalidateUniformExpressionCache ( bool  bRecreateUniformBuffer)

Invalidates the uniform expression cache.

◆ IsDeleted()

bool FMaterialRenderProxy::IsDeleted ( ) const
inline

◆ IsMarkedForGarbageCollection()

bool FMaterialRenderProxy::IsMarkedForGarbageCollection ( ) const
inline

◆ MarkForGarbageCollection()

void FMaterialRenderProxy::MarkForGarbageCollection ( )
inline

◆ MarkTransient()

void FMaterialRenderProxy::MarkTransient ( )
inline

◆ NumSpecularProfileRT()

const uint32 FMaterialRenderProxy::NumSpecularProfileRT ( ) const
inline

◆ NumSubsurfaceProfileRT()

const uint32 FMaterialRenderProxy::NumSubsurfaceProfileRT ( ) const
inline

◆ ReleaseResource()

void FMaterialRenderProxy::ReleaseResource ( )
overridevirtual

Prepares the resource for deletion. This is only called by the rendering thread.

Reimplemented from FRenderResource.

◆ ReleaseRHI()

void FMaterialRenderProxy::ReleaseRHI ( )
overridevirtual

Releases the RHI resources used by this resource. Called when leaving the state where both the resource and the RHI have been initialized. This is only called by the rendering thread.

Reimplemented from FRenderResource.

◆ SetNeuralProfileRT()

void FMaterialRenderProxy::SetNeuralProfileRT ( const UNeuralProfile Ptr)
inline

◆ SetSpecularProfileOverrideRT()

void FMaterialRenderProxy::SetSpecularProfileOverrideRT ( const USpecularProfile Ptr)
inline

◆ SetSubsurfaceProfileRT()

void FMaterialRenderProxy::SetSubsurfaceProfileRT ( const USubsurfaceProfile Ptr)
inline

◆ UpdateDeferredCachedUniformExpressions() [1/2]

void FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions ( )
static

◆ UpdateDeferredCachedUniformExpressions() [2/2]

void FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions ( FRHICommandListBase RHICmdList,
UE::Tasks::FTask TaskIfAsync = nullptr 
)
static

◆ UpdateUniformExpressionCacheIfNeeded() [1/2]

void FMaterialRenderProxy::UpdateUniformExpressionCacheIfNeeded ( ERHIFeatureLevel::Type  InFeatureLevel) const

◆ UpdateUniformExpressionCacheIfNeeded() [2/2]

const FMaterial * FMaterialRenderProxy::UpdateUniformExpressionCacheIfNeeded ( FRHICommandListBase RHICmdList,
ERHIFeatureLevel::Type  InFeatureLevel 
) const

Member Data Documentation

◆ ImmutableSamplerState

FImmutableSamplerState FMaterialRenderProxy::ImmutableSamplerState
mutable

Cached external texture immutable samplers

◆ UniformExpressionCache

FUniformExpressionCacheContainer FMaterialRenderProxy::UniformExpressionCache
mutable

Cached uniform expressions.


The documentation for this class was generated from the following files: