UMaterial

A Material is an asset which can be applied to a mesh to control the visual look of the scene.

Inheritance Hierarchy

References

Module

Engine

Header

/Engine/Source/Runtime/Engine/Classes/Materials/Material.h

Include

#include "Materials/Material.h"

Syntax

class UMaterial : public UMaterialInterface

Remarks

A Material is an asset which can be applied to a mesh to control the visual look of the scene. When light from the scene hits the surface, the shading model of the material is used to calculate how that light interacts with the surface.

Warning: Creating new materials directly increases shader compile times! Consider creating a Material Instance off of an existing material instead.

Variables

Name Description

Public variable

uint8: 1

 

AllowTranslucentCustomDepthWrites

Allows a translucent material to be used with custom depth writing by compiling additional shaders.

Public variable

uint8: 1

 

bAllowDevelopmentShaderCompile

If true the compilation environment will be changed to remove the global COMPILE_SHADERS_FOR_DEVELOPMENT flag.

Public variable

uint8: 1

 

bAllowFrontLayerTranslucency

Allows a translucent material to be used with Front Layer Translucency by compiling additional shaders.

Public variable

uint8: 1

 

bAllowNegativeEmissiveColor

Whether the material should allow outputting negative emissive color values.

Public variable

bool

 

bAlwaysEvaluateWorldPositionOffset

Forces World Position Offset to always be evaluated for this material, even if the primitive it's applied to has disabled it via "Evaluate World Position Offset" or "World Position Offset Disable Distance".

Public variable

uint8: 1

 

bApplyCloudFogging

When true, translucent materials receive cloud contribution as part of the fog evaluation, per vertex or per pixel according to the other selected options.

Public variable

uint8: 1

 

bAutomaticallySetUsageInEditor

Whether to automatically set usage flags based on what the material is applied to in the editor.

Public variable

uint8: 1

 

bCanMaskedBeAssumedOpaque

True if this Material can be assumed Opaque when set to masked.

Public variable

uint8: 1

 

bCastDynamicShadowAsMasked

Whether the material should cast shadows as masked even though it has a translucent blend mode.

Public variable

uint8: 1

 

bCastRayTracedShadows

When true, the material casts ray tracing shadows.

Public variable

uint8: 1

 

bComputeFogPerPixel

When true, translucent materials have fog computed for every pixel, which costs more but fixes artifacts due to low tessellation.

Public variable

uint8: 1

 

bContactShadows

Contact shadows on translucency

Public variable

uint8: 1

 

bDisableDepthTest

Whether to draw on top of opaque pixels even if behind them.

Public variable

uint8: 1

 

bEnableExecWire

Public variable

uint8: 1

 

bEnableMobileSeparateTranslucency

Indicates that the translucent material should not be affected by bloom or DOF.

Public variable

uint8: 1

 

bEnableNewHLSLGenerator

Public variable

uint8: 1

 

bEnableResponsiveAA

Indicates that the material should be rendered using responsive anti-aliasing.

Public variable

uint8: 1

 

bEnableStencilTest

Selectively execute post process material only for pixels that pass the stencil test against the Custom Depth/Stencil buffer.

Public variable

uint8: 1

 

bForwardBlendsSkyLightCubemaps

Enables blending of sky light cubemap textures.

Public variable

uint32: 1

 

bForwardRenderUsePreintegratedGFForSimpleIBL

Forward (including mobile) renderer: use preintegrated GF lut for simple IBL, but will use one more sampler.

Public variable

uint8: 1

 

bFullyRough

Forces the material to be completely rough. Saves a number of instructions and one sampler.

Public variable

uint8: 1

 

bGenerateSphericalParticleNormals

Whether to generate spherical normals for particles that use this material.

Public variable

uint8: 1

 

bIsBlendable

Allows blendability to be turned off, only used if domain is PostProcess

Public variable

uint8: 1

 

bIsFunctionPreviewMaterial

True if Material is the function preview material used in the material instance editor.

Public variable

uint8: 1

 

bIsMaterialEditorStatsMaterial

True if this is a special material used for stats by the material editor.

Public variable

uint8: 1

 

bIsPreviewMaterial

True if Material is the preview material used in the material editor.

Public variable

uint8: 1

 

bIsSky

Unlit and Opaque materials can be used as sky material on a sky dome mesh.

Public variable

uint8: 1

 

bIsThinSurface

Indicates that the material should be rendered as a thin surface (i.e., without inner volume).

Public variable

TEnumAsByte< EB...

 

BlendableLocation

Where the node is inserted in the (post processing) graph, only used if domain is PostProcess

Public variable

uint8: 1

 

BlendableOutputAlpha

If this is enabled, the blendable will output alpha

Public variable

int32

 

BlendablePriority

If multiple nodes with the same type are inserted at the same point, this defined order and if they get combined, only used if domain is PostProcess

Public variable

TEnumAsByte< EB...

 

BlendMode

Determines how the material's color is blended with background colors.

Public variable

uint8: 1

 

bMobileEnableHighQualityBRDF

Use the high quality brdf functions on mobile to get better visual effects but adds GPU cost.

Public variable

uint8: 1

 

bNormalCurvatureToRoughness

Reduce roughness based on screen space normal changes.

Public variable

uint8: 1

 

bOutputTranslucentVelocity

When true, translucent materials will output motion vectors and write to depth buffer in velocity pass.

Public variable

uint8: 1

 

bRootNodeOverridesDefaultDistortion

Indicates that the material do not use the material physically based refraction (e.g. IOR from reflectivity F0), but overrides it for artistic purposes.

Public variable

uint8: 1

 

bScreenSpaceReflections

SSR on translucency

Public variable

uint8: 1

 

bTangentSpaceNormal

Whether the material takes a tangent space normal or a world space normal as input.

Public variable

uint8: 1

 

bUseAlphaToCoverage

Use alpha to coverage for masked material on mobile, make sure MSAA is enabled as well.

Public variable

uint8: 1

 

bUsedAsSpecialEngineMaterial

This is a special usage flag that allows a material to be assignable to any primitive type.

Public variable

uint8: 1

 

bUsedWithBeamTrails

Indicates that the material and its instances can be used with beam trails This will result in the shaders required to support beam trails being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithClothing

Indicates that the material and its instances can be used with clothing This will result in the shaders required to support clothing being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithEditorCompositing

Indicates that the material and its instances can be used with editor compositing This will result in the shaders required to support editor compositing being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithGeometryCache

Public variable

uint8: 1

 

bUsedWithGeometryCollections

Indicates that the material and its instances can be use with geometry collections This will result in the shaders required to support geometry collections being compiled which will increase shader compile time and memory usage.

Public variable

uint32: 1

 

bUsedWithHairStrands

Indicates that the material and its instances can be use with hair strands This will result in the shaders required to support hair strands geometries being compiled which will increase shader compile time and memory usage.

Public variable

uint32: 1

 

bUsedWithHeterogeneousVolumes

Indicates that the material and its instances with heterogeneous volumes.

Public variable

uint8: 1

 

bUsedWithInstancedStaticMeshes

Indicates that the material and its instances can be used with instanced static meshes This will result in the shaders required to support instanced static meshes being compiled which will increase shader compile time and memory usage.

Public variable

uint32: 1

 

bUsedWithLidarPointCloud

Indicates that the material and its instances can be use with LiDAR Point Clouds This will result in the shaders required to support LiDAR Point Cloud geometries being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithMeshParticles

Indicates that the material and its instances can be used with mesh particles This will result in the shaders required to support mesh particles being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithMorphTargets

Indicates that the material and its instances can be used with morph targets This will result in the shaders required to support morph targets being compiled which will increase shader compile time and memory usage.

Public variable

uint32: 1

 

bUsedWithNanite

Indicates that the material and its instances can be used with Nanite meshes.

Public variable

uint8: 1

 

bUsedWithNiagaraMeshParticles

Public variable

uint8: 1

 

bUsedWithNiagaraRibbons

Public variable

uint8: 1

 

bUsedWithNiagaraSprites

Indicates that the material and its instances can be used with Niagara sprites (meshes and ribbons, respectively) This will result in the shaders required to support Niagara sprites being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithParticleSprites

Indicates that the material and its instances can be used with particle sprites This will result in the shaders required to support particle sprites being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithSkeletalMesh

Indicates that the material and its instances can be used with skeletal meshes.

Public variable

uint8: 1

 

bUsedWithSplineMeshes

Indicates that the material and its instances can be used with spline meshes This will result in the shaders required to support spline meshes being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUsedWithStaticLighting

Indicates that the material and its instances can be used with static lighting This will result in the shaders required to support static lighting being compiled which will increase shader compile time and memory usage.

Public variable

uint32: 1

 

bUsedWithVirtualHeightfieldMesh

Indicates that the material and its instances can be used with Virtual Heightfield Mesh.

Public variable

uint32: 1

 

bUsedWithVolumetricCloud

Indicates that the material and its instances with volumetric cloud.

Public variable

uint32: 1

 

bUsedWithWater

Indicates that the material and its instances can be use with water This will result in the shaders required to support water meshes being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUseEmissiveForDynamicAreaLighting

If enabled, the material's emissive colour is injected into the LightPropagationVolume

Public variable

uint8: 1

 

bUseHQForwardReflections

Forward renderer: enables multiple parallax-corrected reflection captures that blend together.

Public variable

uint8: 1

 

bUseLightmapDirectionality

Use lightmap directionality and per pixel normals.

Public variable

uint8: 1

 

bUseMaterialAttributes

When true, the material attributes pin is used instead of the regular pins.

Public variable

uint8: 1

 

bUsePlanarForwardReflections

Enables planar reflection when using the forward renderer or mobile.

Public variable

uint8: 1

 

bUsesDistortion

Indicates that the material and its instances can be used with distortion This will result in the shaders required to support distortion being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUseTranslucencyVertexFog

When true, translucent materials are fogged. Defaults to true.

Public variable

uint8: 1

 

bWriteOnlyAlpha

Whether the transluency pass should write its alpha, and only the alpha, into the framebuffer

Public variable

TEnumAsByte< ED...

 

DecalBlendMode

Public variable

FDefaultMateria...

 

DefaultMaterialInstance

FMaterialRenderProxy derivative that represent this material to the renderer, when the renderer needs to fetch parameter values.

Public variable

FDisplacementSc...

 

DisplacementScaling

Public variable

uint8: 1

 

DitheredLODTransition

Whether meshes rendered with the material should support dithered LOD transitions.

Public variable

uint8: 1

 

DitherOpacityMask

Dither opacity mask.

Public variable

TMap< FName, TA...

 

EditorParameters

Used to detect duplicate parameters. Does not contain parameters in referenced functions!

Public variable

int32

 

EditorPitch

Public variable

int32

 

EditorX

Public variable

int32

 

EditorY

Public variable

int32

 

EditorYaw

Public variable

TEnumAsByte< EM...

 

FloatPrecisionMode

How to use full (highp) precision in the pixel shader.

Public variable

TEnumAsByte< EM...

 

MaterialDecalResponse

Defines how the material reacts on DBuffer decals (Affects look, performance and texture/sample usage).

Public variable

TEnumAsByte< EM...

 

MaterialDomain

The domain that the material's attributes will be evaluated in.

Public variable

TObjectPtr< cla...

 

MaterialGraph

EdGraph based representation of the Material

Public variable

float

 

MaxWorldPositionOffsetDisplacement

Specifies the max world position offset of the material.

Public variable

FMaterialOverri...

 

NaniteOverrideMaterial

An override material which will be used instead of this one when rendering with Nanite.

Public variable

int32

 

NumCustomizedUVs

Number of customized UV inputs to display.

Public variable

float

 

OpacityMaskClipValue

If BlendMode is BLEND_Masked, the surface is not rendered where OpacityMask < OpacityMaskClipValue.

Public variable

TObjectPtr< cla...

 

PhysicalMaterialMap

Physical material mask map to use for this graphics material. Used for sounds, effects etc.

Public variable

TObjectPtr< cla...

 

PhysMaterial

Physical material to use for this graphics material. Used for sounds, effects etc.

Public variable

TObjectPtr< cla...

 

PhysMaterialMask

Physical material mask to use for this graphics material. Used for sounds, effects etc.

Public variable

TEnumAsByte< ER...

 

RefractionCoverageMode

Controls whether refraction takes into account the material surface coverage, or not.

Public variable

float

 

RefractionDepthBias

This is the refraction depth bias, larger values offset distortion to prevent closer objects from rendering into the distorted surface at acute viewing angles but increases the disconnect between surface and where the refraction starts.

Public variable

TEnumAsByte< ER...

 

RefractionMethod

Controls how the Refraction input is interpreted and how the refraction offset into scene color is computed for this material.

Public variable

TArray< TObject...

 

RenderTracePhysicalMaterialOutputs

Public variable

TEnumAsByte< EM...

 

ShadingRate

Select what shading rate to apply, on platforms that support variable rate shading.

Public variable

FGuid

 

StateId

Guid that uniquely identifies this material.

Public variable

TEnumAsByte< EM...

 

StencilCompare

Public variable

uint8

 

StencilRefValue

Public variable

FStrataCompilat...

 

StrataCompilationConfig

Not a UPROPERTY, used to propagate editor only strata material simplification options for preview.

Public variable

float

 

TranslucencyDirectionalLightingIntensity

Useful for artificially increasing the influence of the normal on the lighting result for translucency.

Public variable

TEnumAsByte< ET...

 

TranslucencyLightingMode

Sets the lighting mode that will be used on this material if it is translucent.

Public variable

TEnumAsByte< EM...

 

TranslucencyPass

Specifies the separate pass in which to render translucency.

Public variable

float

 

TranslucentBackscatteringExponent

Controls how diffuse the material's backscattering is when using the MSM_Subsurface shading model.

Public variable

FLinearColor

 

TranslucentMultipleScatteringExtinction

Colored extinction factor used to approximate multiple scattering in dense volumes.

Public variable

float

 

TranslucentSelfShadowDensityScale

Scale used to make translucent self-shadowing more or less opaque than the material's shadow on other objects.

Public variable

float

 

TranslucentSelfShadowSecondDensityScale

Used to make a second self shadow gradient, to add interesting shading in the shadow of the first.

Public variable

float

 

TranslucentSelfShadowSecondOpacity

Controls the strength of the second self shadow gradient.

Public variable

float

 

TranslucentShadowDensityScale

Scale used to make translucent shadows more or less opaque than the material's actual opacity.

Public variable

float

 

TranslucentShadowStartOffset

Local space distance to bias the translucent shadow.

Public variable

uint8: 1

 

TwoSided

Indicates that the material should be rendered without backface culling and the normal should be flipped for backfaces.

Public variable

std::atomic< ui...

 

UsageFlagCacheMiss

Public variable

uint32

 

UsageFlagWarnings

True if we have printed a warning about material usage for a given usage flag.

Public variable

uint8: 1

 

Wireframe

Enables a wireframe view of the mesh the material is applied to.

Constructors

Name Description

Public function

UMaterial

(
    const FObjectInitializer& ObjectIn...
)

Functions

Name Description

Public function Virtual

bool

 

AddExpressionParameter

(
    UMaterialExpression* Expressio...,
    TMap< FName, TArray< UMaterialExpre...
)

Add an expression node that represents a parameter to the list of material parameters.

Public function Static

void

 

AddReferencedObjects

(
    UObject* InThis,
    FReferenceCollector& Collector
)

Public function Static

void

 

AllMaterialsCacheResourceShadersForRendering

(
    bool bUpdateProgressDialog,
    bool bCacheAllRemainingShaders
)

For all materials, UMaterial::CacheResourceShadersForRendering.

Public function Virtual

FMaterialRes...

 

AllocateResource()

Public function

void

 

AssignExpressionCollection

(
    const FMaterialExpressionCollection...
)

Public function

bool

 

AttemptInsertNewGroupName

(
    const FString& InNewName
)

Attempts to add a new group name to the Group Data struct. True if new name was added.

Public function Static

void

 

BackupMaterialShadersToMemory

(
    TMap< class FMaterialShaderMap*...
)

Backs up all material shaders to memory through serialization, organized by FMaterialShaderMap.

Public function Virtual

void

 

BuildEditorParameterList()

Iterate through all of the expression nodes in the material and finds any parameters to put in EditorParameters.

Public function Virtual

void

 

CancelOutstandingCompilation()

Cancels any currently outstanding compilation jobs for this material.

Public function Const

bool

 

CheckInValidStateForCompilation

(
    FMaterialCompiler* Compiler
)

Checks that no pre-compilation errors have been detected and if so it reports them using specified compiler.

Public function Static

void

 

CompileMaterialsForRemoteRecompile

(
    const TArray< UMaterialInterface&#...,
    EShaderPlatform ShaderPlatform,
    ITargetPlatform* TargetPlatfor...,
    TMap< FString, TArray< TRefCountPtr...
)

Builds a map from UMaterialInterface name to the shader maps that are needed for rendering on the given platform.

Public function Static

void

 

CompileODSCMaterialsForRemoteRecompile

(
    TArray< FODSCRequestPayload > Shade...,
    TMap< FString, TArray< TRefCountPtr...
)

Public function Static

void

 

DeclareConstructClasses

(
    TArray< FTopLevelAssetPath >& OutC...,
    const UClass* SpecificSubclass
)

Public function

ExpressionTy...

 

FindExpressionByGUID

(
    const FGuid& InGUID
)

Attempt to find a expression by its GUID.

Public function Static

void

 

FixCommentPositions

(
    TConstArrayView< TObjectPtr< UMater...
)

Shifts the positions of comments so that they are aligned correctly with other expressions

Public function Static

bool

 

FixFeatureLevelNodesForSM6

(
    TArray< UMaterialExpression* >...
)

Fixup feature level nodes that haven't set the SM6 pin. Returns true if a fixup was needed.

Public function Static

void

 

FlipExpressionPositions

(
    TConstArrayView< TObjectPtr< UMater...,
    TConstArrayView< TObjectPtr< UMater...,
    bool bScaleCoords,
    UMaterial* Material
)

Flip the X coordinates of a material's expressions and space them out more

Public function Const

void

 

GetAllCustomOutputExpressions

(
    TArray< class UMaterialExpressionCu...
)

Returns any UMaterialExpressionCustomOutput expressions

Public function Const

void

 

GetAllExpressionsForCustomInterpolators

(
    TArray< class UMaterialExpression&...
)

Public function Const

void

 

GetAllExpressionsInMaterialAndFunctionsOfType

(
    TArray< ExpressionType* >& Ou...
)

Get all expressions of the requested type, recursing through any function expressions in the material

Public function Const

void

 

GetAllExpressionsOfType

(
    TArray< const ExpressionType* ...
)

Get all expressions of the requested type

Public function Const

void

 

GetAllFunctionOutputExpressions

(
    TArray< class UMaterialExpressionFu...
)

Returns any UMaterialExpressionFunctionOutput expressions

Public function Virtual

bool

 

GetAllReferencedExpressions

(
    TArray< UMaterialExpression* >...,
    FStaticParameterSet* InStaticP...,
    ERHIFeatureLevel::Type InFeatureLev...,
    EMaterialQualityLevel::Type InQuali...,
    ERHIShadingPath::Type InShadingPath,
    const bool bInRecurseIntoMaterialFu...
)

Get all referenced expressions (returns the chains for all properties).

Public function Static

EBlendMode

 

GetBlendModeFromString

(
    const TCHAR* InBlendModeStr
)

Public function Static

const TCHAR ...

 

GetBlendModeString

(
    EBlendMode InBlendMode
)

Public function Static

UMaterial &#...

 

GetDefaultMaterial

(
    EMaterialDomain Domain
)

Return the default material, loading it if necessary

Public function Const

TConstArrayV...

 

GetEditorComments()

Public function Const

const FMater...

 

GetExpressionCollection()

Public function

FMaterialExp...

 

GetExpressionCollection()

Public function Const

UMaterialExp...

 

GetExpressionExecBegin()

Public function Const

UMaterialExp...

 

GetExpressionExecEnd()

Public function Static

UMaterialFun...

 

GetExpressionFunctionPointer

(
    const UMaterialExpression* Exp...
)

Public function

bool

 

GetExpressionInputDescription

(
    EMaterialProperty InProperty,
    FMaterialInputDescription& OutDesc...
)

Public function

FExpressionI...

 

GetExpressionInputForProperty

(
    EMaterialProperty InProperty
)

Get the expression input for the given property

Public function Static

TOptional< F...

 

GetExpressionLayers

(
    const UMaterialExpression* Exp...
)

Public function Static

bool

 

GetExpressionParameterName

(
    const UMaterialExpression* Exp...,
    FName& OutName
)

Get the name of a parameter.

Public function Const

TConstArrayV...

 

GetExpressions()

Public function Virtual

bool

 

GetExpressionsInPropertyChain

(
    EMaterialProperty InProperty,
    TArray< UMaterialExpression* >...,
    FStaticParameterSet* InStaticP...,
    ERHIFeatureLevel::Type InFeatureLev...,
    EMaterialQualityLevel::Type InQuali...,
    ERHIShadingPath::Type InShadingPath,
    const bool bInRecurseIntoMaterialFu...
)

Get the expression chain for the given property (ie fill in the given array with all expressions in the chain).

Public function Const

uint32

 

GetMaterialDecalResponse()

Returns the material's decal response mode

Public function Static

EMaterialSha...

 

GetMaterialShadingModelFromString

(
    const TCHAR* InMaterialShading...
)

Public function Static

const TCHAR ...

 

GetMaterialShadingModelString

(
    EMaterialShadingModel InMaterialSha...
)

Helper functions for text output of properties.

Public function Const

TArrayView< ...

 

GetRenderTracePhysicalMaterialOutputs()

Return the array of physical materials associated with the RenderTrace material outputs.

Public function Const

bool

 

GetUsageByFlag

(
    const EMaterialUsage Usage
)

Public function Const

FString

 

GetUsageName

(
    const EMaterialUsage Usage
)

Public function Const

bool

 

HasAmbientOcclusionConnected()

Public function Const

bool

 

HasAnisotropyConnected()

Public function Const

bool

 

HasAnyExpressionsInMaterialAndFunctionsOfType()

Checks if the material contains an expression of the requested type, recursing through any function expressions in the material

Public function Const

bool

 

HasBaseColorConnected()

Public function Const

bool

 

HasDisplacementConnected()

Public function Virtual

bool

 

HasDuplicateDynamicParameters

(
    const UMaterialExpression* Exp...
)

Return whether the provided expression dynamic parameter has duplicates.

Public function Virtual

bool

 

HasDuplicateParameters

(
    const UMaterialExpression* Exp...
)

Return whether the provided expression parameter has duplicates.

Public function Const

bool

 

HasEmissiveColorConnected()

Public function

bool

 

HasFlippedCoordinates()

Checks whether a Material is arranged in the old style, with inputs flowing from right to left

Public function Const

bool

 

HasMetallicConnected()

Public function Const

bool

 

HasNormalConnected()

Public function Const

bool

 

HasPixelDepthOffsetConnected()

Public function Const

bool

 

HasRoughnessConnected()

Public function Const

bool

 

HasSpecularConnected()

Public function Const

bool

 

HasStrataFrontMaterialConnected()

Public function Const

bool

 

HasSurfaceThicknessConnected()

Public function Const

bool

 

HasVertexPositionOffsetConnected()

Public function

bool

 

IsCompilingOrHadCompileError

(
    ERHIFeatureLevel::Type InFeatureLev...
)

Useful to customize rendering if that case (e.g. hide the object)

Public function Const

bool

 

IsDefaultMaterial()

Returns true if the material is one of the default materials.

Public function Static

bool

 

IsDynamicParameter

(
    const UMaterialExpression* Exp...
)

Return whether the provided expression node is a dynamic parameter.

Public function Static

bool

 

IsParameter

(
    const UMaterialExpression* Exp...
)

Return whether the provided expression node is a parameter.

Public function Virtual Const

bool

 

IsPostProcessMaterial()

Public function Const

bool

 

IsPropertyActiveInDerived

(
    EMaterialProperty InProperty,
    const UMaterialInterface* Deri...
)

Like IsPropertyActive(), but considers any state overriden by DerivedMaterial

Public function Const

bool

 

IsPropertyActiveInEditor

(
    EMaterialProperty InProperty
)

Like IsPropertyActive(), but should be used in context of editor.

Public function Const

bool

 

IsPropertyConnected

(
    EMaterialProperty Property
)

Public function Static

bool

 

IsPropertyRelevantForMobile

(
    EMaterialProperty InProperty
)

Returns true if the material property is relevant for mobile platforms

Public function Const

bool

 

IsPropertySupported

(
    EMaterialProperty InProperty
)

Return true if the property is supported.

Public function

bool

 

IsTextureForceRecompileCacheRessource

(
    UTexture* Texture
)

Public function Virtual Const

bool

 

IsUIMaterial()

Public function

bool

 

IsUsageFlagDirty

(
    EMaterialUsage Usage
)

Checks to see if the Usage flag has an annotation marking it as needing to be saved

Public function Const

bool

 

NeedsSetMaterialUsage_Concurrent

(
    bool& bOutHasUsage,
    const EMaterialUsage Usage
)

Tests to see if this material needs a usage flag update

Public function Static

void

 

NotifyCompilationFinished

(
    UMaterialInterface* Material
)

Public function Static

FMaterialCom...

 

OnMaterialCompilationFinished()

Public function

void

 

PostEditChangePropertyInternal

(
    FPropertyChangedEvent& PropertyCha...,
    const EPostEditChangeEffectOnShader...
)

Public function Virtual

FGraphEventA...

 

PrecachePSOs

(
    const FPSOPrecacheVertexFactoryData...,
    const FPSOPrecacheParams& PreCache...,
    EPSOPrecachePriority Priority,
    TArray< FMaterialPSOPrecacheRequest...
)

Public function Virtual

void

 

PropagateExpressionParameterChanges

(
    const UMaterialExpression* Par...
)

A parameter with duplicates has to update its peers so that they all have the same value.

Public function Virtual

void

 

PropagateExpressionParameterChanges

(
    const FName& ParameterName,
    const FMaterialParameterMetadata& ...
)

A parameter with duplicates has to update its peers so that they all have the same value.

Public function

void

 

RebuildShadingModelField()

Collect all material expressions fomr this material and all its functions and figure out which possible shading models exist in this material

Protected function Virtual

bool

 

RecursiveGetExpressionChain

(
    UMaterialExpression* InExpress...,
    TArray< FExpressionInput* >& ...,
    TArray< UMaterialExpression* >...,
    FStaticParameterSet* InStaticP...,
    ERHIFeatureLevel::Type InFeatureLev...,
    EMaterialQualityLevel::Type InQuali...,
    ERHIShadingPath::Type InShadingPath,
    EShaderFrequency InShaderFrequency,
    EMaterialProperty InProperty,
    const bool bInRecurseIntoMaterialFu...
)

Recursively retrieve the expressions contained in the chain of the given expression.

Protected function

void

 

RecursiveUpdateRealtimePreview

(
    UMaterialExpression* InExpress...,
    TArray< UMaterialExpression* >...
)

Recursively update the bRealtimePreview for each expression based on whether it is connected to something that is time-varying.

Public function

void

 

ReleaseResources()

Releases rendering resources used by this material.

Public function Virtual

bool

 

RemoveExpressionParameter

(
    UMaterialExpression* Expressio...
)

Removes an expression node that represents a parameter from the list of material parameters.

Public function Static

void

 

RestoreMaterialShadersFromMemory

(
    const TMap< class FMaterialShaderMa...
)

Recreates FShaders for FMaterialShaderMap's from the serialized data.

Public function

void

 

SaveShaderStableKeys

(
    const ITargetPlatform* TP
)

Public function

bool

 

SetFontParameterValueEditorOnly

(
    FName ParameterName,
    UFont* InFontValue,
    int32 InFontPage
)

Public function

bool

 

SetMaterialUsage

(
    bool& bNeedsRecompile,
    const EMaterialUsage Usage,
    UMaterialInterface* MaterialIn...
)

Set the given usage flag.

Public function

bool

 

SetParameterValueEditorOnly

(
    const FName& ParameterName,
    const FMaterialParameterMetadata& ...
)

Public function

void

 

SetRenderTracePhysicalMaterialOutputs

Set the array of physical materials associated with the RenderTrace material outputs.

Public function

bool

 

SetRuntimeVirtualTextureParameterValueEditorOnly

(
    FName ParameterName,
    URuntimeVirtualTexture* InValu...
)

Public function

bool

 

SetScalarParameterValueEditorOnly

(
    FName ParameterName,
    float InValue
)

Public function

void

 

SetShadingModel

(
    EMaterialShadingModel NewModel
)

Public function

bool

 

SetSparseVolumeTextureParameterValueEditorOnly

(
    FName ParameterName,
    USparseVolumeTexture* InValue
)

Public function

bool

 

SetStaticComponentMaskParameterValueEditorOnly

(
    FName ParameterName,
    bool R,
    bool G,
    bool B,
    bool A,
    FGuid OutExpressionGuid
)

Public function

bool

 

SetStaticSwitchParameterValueEditorOnly

(
    FName ParameterName,
    bool OutValue,
    FGuid OutExpressionGuid
)

Public function

bool

 

SetTextureParameterValueEditorOnly

(
    FName ParameterName,
    UTexture* InValue
)

Public function

bool

 

SetVectorParameterValueEditorOnly

(
    FName ParameterName,
    FLinearColor InValue
)

Public function

void

 

UpdateCachedExpressionData()

Public function Virtual

void

 

UpdateExpressionDynamicParameters

(
    const UMaterialExpression* Exp...
)

Iterate through all of the expression nodes and fix up changed properties on matching dynamic parameters when a change occurs.

Public function Virtual

void

 

UpdateExpressionParameterName

(
    UMaterialExpression* Expressio...
)

Remove the expression from the editor parameters list (if it exists) and then re-adds it.

Public function

void

 

UpdateMaterialShaderCacheAndTextureReferences()

Recompute the ddc cache key and reload the material in case the key is not the same.

Public function Static

void

 

UpdateMaterialShaders

(
    TArray< const FShaderType* >&...,
    TArray< const FShaderPipelineType&...,
    TArray< const FVertexFactoryType&#...,
    EShaderPlatform ShaderPlatform
)

Go through every material, flush the specified types and re-initialize the material's shader maps.

Public function

void

 

UpdateTransientExpressionData()

Overridden from UMaterialInterface

Name Description

Public function Virtual

void

 

CacheGivenTypesForCooking

(
    EShaderPlatform ShaderPlatform,
    ERHIFeatureLevel::Type FeatureLevel,
    EMaterialQualityLevel::Type Quality...,
    const TArray< const FVertexFactoryT...,
    const TArray< const FShaderPipeline...,
    const TArray< const FShaderType...
)

Public function Virtual

void

 

CacheShaders

(
    EMaterialShaderPrecompileMode Compi...
)

Submits remaining shaders for recompilation.

Public function Virtual Const

bool

 

CastsRayTracedShadows()

Public function Virtual

bool

 

CheckMaterialUsage

(
    const EMaterialUsage Usage
)

Checks if the material can be used with the given usage flag.

Public function Virtual Const

bool

 

CheckMaterialUsage_Concurrent

(
    const EMaterialUsage Usage
)

Same as above but is valid to call from any thread.

Public function Virtual

int32

 

CompilePropertyEx

(
    FMaterialCompiler* Compiler,
    const FGuid& AttributeID
)

Allows material properties to be compiled with the option of being overridden by the material attributes input.

Public function Virtual Const

uint32

 

ComputeAllStateCRC()

Returns a CRC of all the Guids related to this material's shader.

Public function Virtual Const

void

 

DumpDebugInfo

(
    FOutputDevice& OutputDevice
)

Public function Virtual

void

 

ForceRecompileForRendering()

Clears the shader cache and recompiles the shader for rendering.

Public function Virtual Const

EBlendMode

 

GetBlendMode()

Public function Virtual Const

bool

 

GetCastDynamicShadowAsMasked()

Public function Virtual

void

 

GetDependencies

(
    TSet< UMaterialInterface* >& ...
)

Get this material dependencies.

Public function Virtual Const

void

 

GetDependentFunctions

(
    TArray< class UMaterialFunctionInte...
)

Public function Virtual Const

FDisplacemen...

 

GetDisplacementScaling()

Public function Virtual Const

const UMater...

 

GetEditorOnlyData()

Public function Virtual

UMaterialEdi...

 

GetEditorOnlyData()

Public function Virtual Const

const UClass...

 

GetEditorOnlyDataClass()

Public function Virtual Const

bool

 

GetGroupSortPriority

(
    const FString& InGroupName,
    int32& OutSortPriority
)

Get the sort priority index of the given parameter group

Public function Virtual Const

void

 

GetLightingGuidChain

(
    bool bIncludeTextures,
    TArray< FGuid >& OutGuids
)

Returns all the Guids related to this material.

Public function Virtual Const

const UMater...

 

GetMaterial()

Get the material which we are instancing.

Public function Virtual

UMaterial &#...

 

GetMaterial()

Get the material which we are instancing.

Public function Virtual Const

const UMater...

 

GetMaterial_Concurrent

(
    TMicRecursionGuard RecursionGuard
)

Same as above, but can be called concurrently

Public function Virtual Const

void

 

GetMaterialInheritanceChain

(
    FMaterialInheritanceChain& OutChai...
)

Public function Virtual Const

bool

 

GetMaterialLayers

(
    FMaterialLayersFunctions& OutLayer...,
    TMicRecursionGuard RecursionGuard
)

Get the material layers stack

Public function Virtual Const

const FMater...

 

GetMaterialResource

(
    ERHIFeatureLevel::Type InFeatureLev...,
    EMaterialQualityLevel::Type Quality...
)

Get the static permutation resource if the instance has one

Public function Virtual

FMaterialRes...

 

GetMaterialResource

(
    ERHIFeatureLevel::Type InFeatureLev...,
    EMaterialQualityLevel::Type Quality...
)

Get the static permutation resource if the instance has one

Public function Virtual Const

float

 

GetMaxWorldPositionOffsetDisplacement()

Public function Virtual Const

UMaterialInt...

 

GetNaniteOverride

(
    TMicRecursionGuard RecursionGuard
)

Get the associated nanite override material

Public function Virtual Const

float

 

GetOpacityMaskClipValue()

Access to overridable properties of the base material.

Public function Virtual Const

bool

 

GetParameterValue

(
    EMaterialParameterType Type,
    const FMemoryImageMaterialParameter...,
    FMaterialParameterMetadata& OutVal...,
    EMaterialGetParameterValueFlags Fla...
)

Public function Virtual Const

UPhysicalMat...

 

GetPhysicalMaterial()

Return a pointer to the physical material used by this material instance.

Public function Virtual Const

UPhysicalMat...

 

GetPhysicalMaterialFromMap

(
    int32 Index
)

Return a pointer to the physical material from mask map at given index.

Public function Virtual Const

UPhysicalMat...

 

GetPhysicalMaterialMask()

Return a pointer to the physical material mask used by this material instance.

Public function Virtual Const

bool

 

GetRefractionSettings

(
    float& OutBiasValue
)

Public function Virtual Const

FMaterialRen...

 

GetRenderProxy()

Return a pointer to the FMaterialRenderProxy used for rendering.

Public function Virtual

void

 

GetShaderTypes

(
    EShaderPlatform Platform,
    const ITargetPlatform* TargetP...,
    TArray< FDebugShaderTypeInfo >& Ou...
)

Gathers a list of shader types sorted by vertex factory types that should be cached for this material.

Public function Virtual Const

FMaterialSha...

 

GetShadingModels()

Public function Virtual Const

USpecularPro...

 

GetSpecularProfile_Internal

(
    uint32 Index
)

Public function Virtual Const

USubsurfaceP...

 

GetSubsurfaceProfile_Internal()

Public function Virtual

bool

 

GetTexturesInPropertyChain

(
    EMaterialProperty InProperty,
    TArray< UTexture* >& OutTextu...,
    TArray< FName >* OutTexturePar...,
    FStaticParameterSet* InStaticP...,
    ERHIFeatureLevel::Type InFeatureLev...,
    EMaterialQualityLevel::Type InQuali...
)

Get all of the textures in the expression chain for the given property (ie fill in the given array with all textures in the chain).

Public function Virtual Const

void

 

GetUsedTextures

(
    TArray< UTexture* >& OutTextu...,
    EMaterialQualityLevel::Type Quality...,
    bool bAllQualityLevels,
    ERHIFeatureLevel::Type FeatureLevel,
    bool bAllFeatureLevels
)

Return the textures used to render this material.

Public function Virtual Const

void

 

GetUsedTexturesAndIndices

(
    TArray< UTexture* >& OutTextu...,
    TArray< TArray< int32 > >& OutIndi...,
    EMaterialQualityLevel::Type Quality...,
    ERHIFeatureLevel::Type FeatureLevel
)

Return the textures used to render this material and the material indices bound to each.

Public function Virtual Const

bool

 

IsComplete()

Checks to see if this material has all its shaders cached.

Public function Virtual Const

bool

 

IsDeferredDecal()

Public function Virtual Const

bool

 

IsDitheredLODTransition()

Public function Virtual Const

bool

 

IsMasked()

Public function Virtual Const

bool

 

IsPropertyActive

(
    EMaterialProperty InProperty
)

Checks to see if an input property should be active, based on the state of the material

Public function Virtual Const

bool

 

IsShadingModelFromMaterialExpression()

Public function Virtual Const

bool

 

IsThinSurface()

Public function Virtual Const

bool

 

IsTranslucencyWritingCustomDepth()

Public function Virtual Const

bool

 

IsTranslucencyWritingFrontLayerTransparency()

Public function Virtual Const

bool

 

IsTranslucencyWritingVelocity()

Public function Virtual Const

bool

 

IsTwoSided()

Public function Virtual Const

bool

 

IterateDependentFunctions

(
    TFunctionRef< bool(UMaterialFunctio...
)

Public function Virtual Const

void

 

LogMaterialsAndTextures

(
    FOutputDevice& Ar,
    int32 Indent
)

Output to the log which materials and textures are used by this material.

Public function Virtual Const

uint32

 

NumSpecularProfile_Internal()

Public function Virtual

void

 

OverrideNumericParameterDefault

(
    EMaterialParameterType Type,
    const FHashedMaterialParameterInfo ...,
    const UE::Shader::FValue& Value,
    bool bOverride,
    ERHIFeatureLevel::Type FeatureLevel
)

Overrides the default value of the given parameter (transient).

Public function Virtual

void

 

OverrideTexture

(
    const UTexture* InTextureToOve...,
    UTexture* OverrideTexture,
    ERHIFeatureLevel::Type InFeatureLev...
)

Override a specific texture (transient)

Public function Virtual Const

void

 

RecacheUniformExpressions

(
    bool bRecreateUniformBuffer
)

Re-caches uniform expressions for this material interface Set bRecreateUniformBuffer to true if uniform buffer layout will change (e.g. FMaterial is being recompiled).

Public function Virtual

void

 

SaveShaderStableKeysInner

(
    const ITargetPlatform* TP,
    const FStableShaderKeyAndValue& Sa...
)

Public function Virtual Const

bool

 

ShouldAlwaysEvaluateWorldPositionOffset()

Public function Virtual

bool

 

ShouldForcePlanePreview()

True if this Material Interface should force a plane preview

Public function Virtual

bool

 

UpdateLightmassTextureTracking()

Check if the textures have changed since the last time the material was serialized for Lightmass...

Public function Virtual Const

bool

 

WritesToRuntimeVirtualTexture()

Overridden from UObject

Name Description

Public function Virtual

void

 

BeginCacheForCookedPlatformData

(
    const ITargetPlatform* TargetP...
)

Starts caching of platform specific data for the target platform Called when cooking before serialization so that object can prepare platform specific data Not called during normal loading of objects

Public function Virtual

void

 

BeginDestroy()

Called before destroying the object.

Public function Virtual Const

bool

 

CanEditChange

(
    const FProperty* InProperty
)

Called by the editor to query whether a property of this object is allowed to be modified.

Public function Virtual

void

 

ClearAllCachedCookedPlatformData()

Clear all cached cooked platform data

Public function Virtual

void

 

ClearCachedCookedPlatformData

(
    const ITargetPlatform* TargetP...
)

Clears cached cooked platform data for specific platform

Public function Virtual

void

 

FinishDestroy()

Called to finish destroying the object.

Public function Virtual Const

void

 

GetAssetRegistryTags

(
    TArray< FAssetRegistryTag >& OutTa...
)

Gathers a list of asset registry searchable tags which are name/value pairs with some type information This only needs to be implemented for asset objects

Public function Virtual

void

 

GetResourceSizeEx

(
    FResourceSizeEx& CumulativeResourc...
)

Get the size of the object/resource for use in memory tools or to display to artists/LDs in the Editor This is the extended version which separates up the used memory into different memory regions (the actual definition of which may be platform specific).

Public function Virtual

bool

 

IsCachedCookedPlatformDataLoaded

(
    const ITargetPlatform* TargetP...
)

Have we finished loading all the cooked platform data for the target platforms requested in BeginCacheForCookedPlatformData

Public function Virtual

bool

 

IsReadyForFinishDestroy()

Called to check if the object is ready for FinishDestroy.

Public function Virtual

bool

 

Modify

(
    bool bAlwaysMarkDirty
)

Note that the object will be modified.

Public function Virtual

void

 

PostDuplicate

(
    bool bDuplicateForPIE
)

Called after duplication & serialization and before PostLoad.

Public function Virtual

void

 

PostEditChangeProperty

(
    FPropertyChangedEvent& PropertyCha...
)

Called when a property on this object has been modified externally

Public function Virtual

void

 

PostInitProperties()

Called after the C++ constructor and after the properties have been initialized, including those loaded from config.

Public function Virtual

void

 

PostLoad()

Do any object-specific cleanup required immediately after loading an object.

Public function Virtual

void

 

PreEditChange

(
    FProperty* PropertyAboutToChan...
)

This is called when a property is about to be modified externally

Public function Virtual

void

 

PreSave

(
    FObjectPreSaveContext SaveContext
)

Presave function.

Public function Virtual

void

 

Serialize

(
    FArchive& Ar
)

Handles reading, writing, and reference collecting using FArchive.

Overridden from UObjectBaseUtility

Name Description

Public function Virtual Const

bool

 

CanBeClusterRoot()

Called after load to determine if the object can be a cluster root

Classes

Enums

Constants

Deprecated Variables

Name Description

Public variable

uint8: 1

 

bIsMasked_DEPRECATED

True if Material is masked and uses custom opacity

Public variable

uint8: 1

 

bUsedWithUI_DEPRECATED

Indicates that the material and its instances can be used with SlateUI and UMG This will result in the shaders required to support UI materials being compiled which will increase shader compile time and memory usage.

Public variable

uint8: 1

 

bUseFullPrecision_DEPRECATED

Deprecated.

Public variable

TEnumAsByte< ER...

 

RefractionMode_DEPRECATED

Deprecated Functions

Name Description

Public function Virtual

PRAGMA_DISAB...

 

PreSave

(
    const ITargetPlatform* TargetP...
)

Use version that takes FObjectPreSaveContext instead.

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Cancel