UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMeshParticleVertexFactory Class Reference

#include <MeshParticleVertexFactory.h>

+ Inheritance diagram for FMeshParticleVertexFactory:

Classes

class  FBatchParametersCPU
 
struct  FDataType
 

Public Member Functions

 FMeshParticleVertexFactory (ERHIFeatureLevel::Type InFeatureLevel)
 
 FMeshParticleVertexFactory (EParticleVertexFactoryType InType, ERHIFeatureLevel::Type InFeatureLevel, int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride)
 
 FMeshParticleVertexFactory ()
 
ENGINE_API void SetData (FRHICommandListBase &RHICmdList, const FDataType &InData)
 
ENGINE_API void SetData (const FDataType &InData)
 
void SetUniformBuffer (const FMeshParticleUniformBufferRef &InMeshParticleUniformBuffer)
 
FRHIUniformBufferGetUniformBuffer ()
 
void SetStrides (int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride)
 
ENGINE_API void SetInstanceBuffer (const FVertexBuffer *InstanceBuffer, uint32 StreamOffset, uint32 Stride)
 
ENGINE_API void SetDynamicParameterBuffer (const FVertexBuffer *InDynamicParameterBuffer, uint32 StreamOffset, uint32 Stride)
 
ENGINE_API uint8LockPreviousTransformBuffer (FRHICommandListBase &RHICmdList, uint32 ParticleCount)
 
ENGINE_API void UnlockPreviousTransformBuffer (FRHICommandListBase &RHICmdList)
 
ENGINE_API FRHIShaderResourceViewGetPreviousTransformBufferSRV () const
 
ENGINE_API void Copy (const FMeshParticleVertexFactory &Other)
 
virtual ENGINE_API void InitRHI (FRHICommandListBase &RHICmdList) override
 
FMeshParticleInstanceVertices *& GetInstanceVerticesCPU ()
 
void SetLODIdx (uint8 InLODIdx)
 
uint8 GetLODIdx () const
 
- Public Member Functions inherited from FParticleVertexFactoryBase
 FParticleVertexFactoryBase (ERHIFeatureLevel::Type InFeatureLevel)
 
 FParticleVertexFactoryBase (EParticleVertexFactoryType Type, ERHIFeatureLevel::Type InFeatureLevel)
 
EParticleVertexFactoryType GetParticleFactoryType () const
 
void SetParticleFactoryType (EParticleVertexFactoryType InType)
 
ERHIFeatureLevel::Type GetFeatureLevel () const
 
- Public Member Functions inherited from FVertexFactory
 FVertexFactory (ERHIFeatureLevel::Type InFeatureLevel)
 
virtual RENDERCORE_API ~FVertexFactory ()
 
virtual FVertexFactoryTypeGetType () const
 
RENDERCORE_API void GetStreams (ERHIFeatureLevel::Type InFeatureLevel, EVertexInputStreamType VertexStreamType, FVertexInputStreamArray &OutVertexStreams) const
 
RENDERCORE_API void OffsetInstanceStreams (uint32 InstanceOffset, EVertexInputStreamType VertexStreamType, FVertexInputStreamArray &VertexStreams) const
 
virtual RENDERCORE_API void ReleaseRHI ()
 
FVertexDeclarationRHIRefGetDeclaration ()
 
void SetDeclaration (FVertexDeclarationRHIRef &NewDeclaration)
 
const FVertexDeclarationRHIRefGetDeclaration (EVertexInputStreamType InputStreamType) const
 
virtual bool SupportsPositionOnlyStream () const
 
virtual bool SupportsPositionAndNormalOnlyStream () const
 
bool SupportsNullPixelShader () const
 
bool SupportsTriangleSorting () const
 
virtual FShaderResourceViewRHIRef GetTriangleSortingPositionSRV () const
 
virtual bool RendersPrimitivesAsCameraFacingSprites () const
 
bool NeedsDeclaration () const
 
bool SupportsManualVertexFetch (const FStaticFeatureLevel InFeatureLevel) const
 
int32 GetPrimitiveIdStreamIndex (const FStaticFeatureLevel InFeatureLevel, EVertexInputStreamType InputStreamType) const
 
bool SupportsGPUScene (const FStaticFeatureLevel InFeatureLevel) 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)
 
virtual RENDERCORE_API void ReleaseResource ()
 
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 bool ShouldCompilePermutation (const FVertexFactoryShaderPermutationParameters &Parameters)
 
static ENGINE_API void ModifyCompilationEnvironment (const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
 
static ENGINE_API void GetPSOPrecacheVertexFetchElements (EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList &Elements)
 
static ENGINE_API void GetVertexElements (ERHIFeatureLevel::Type FeatureLevel, int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride, FDataType &Data, FVertexDeclarationElementList &Elements)
 
- Static Public Member Functions inherited from FParticleVertexFactoryBase
static void ModifyCompilationEnvironment (const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
 
- Static Public Member Functions inherited from FVertexFactory
static void ModifyCompilationEnvironment (const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
 
static void ValidateCompiledResult (const FVertexFactoryType *Type, EShaderPlatform Platform, const FShaderParameterMap &ParameterMap, TArray< FString > &OutErrors)
 
static void GetPSOPrecacheVertexFetchElements (EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList &Elements)
 
- 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)
 

Static Protected Member Functions

static ENGINE_API void GetVertexElements (ERHIFeatureLevel::Type FeatureLevel, int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride, FDataType &Data, FVertexDeclarationElementList &Elements, FVertexStreamList &InOutStreams)
 
- Static Protected Member Functions inherited from FVertexFactory
template<typename VertexStreamListType >
static FVertexElement AccessStreamComponent (const FVertexStreamComponent &Component, uint8 AttributeIndex, VertexStreamListType &InOutStreams)
 
- Static Protected Member Functions inherited from FRenderResource
static RENDERCORE_API FRHICommandListBaseGetImmediateCommandList ()
 

Protected Attributes

FDataType Data
 
uint8 LODIdx
 
int32 DynamicVertexStride
 
int32 DynamicParameterVertexStride
 
FRHIUniformBufferMeshParticleUniformBuffer
 
FDynamicReadBuffer PrevTransformBuffer
 
FMeshParticleInstanceVerticesInstanceVerticesCPU
 
- Protected Attributes inherited from FVertexFactory
FVertexStreamList Streams
 
bool bNeedsDeclaration = true
 

Additional Inherited Members

- Public Types inherited from FRenderResource
enum class  EInitPhase : uint8 { Pre , Default , MAX }
 
- Public Attributes inherited from FRenderResource
ERenderResourceState ResourceState = ERenderResourceState::Default
 
- Protected Types inherited from FVertexFactory
typedef TArray< FVertexStream, TInlineAllocator< 8 > > FVertexStreamList
 
- Protected Member Functions inherited from FVertexFactory
void SetPrimitiveIdStreamIndex (const FStaticFeatureLevel InFeatureLevel, EVertexInputStreamType InputStreamType, int32 StreamIndex)
 
RENDERCORE_API bool AddPrimitiveIdStreamElement (EVertexInputStreamType InputStreamType, FVertexDeclarationElementList &Elements, uint8 AttributeIndex, uint8 AttributeIndex_Mobile)
 
FVertexElement AccessStreamComponent (const FVertexStreamComponent &Component, uint8 AttributeIndex)
 
RENDERCORE_API FVertexElement AccessStreamComponent (const FVertexStreamComponent &Component, uint8 AttributeIndex, EVertexInputStreamType InputStreamType)
 
RENDERCORE_API void InitDeclaration (const FVertexDeclarationElementList &Elements, EVertexInputStreamType StreamType=EVertexInputStreamType::Default)
 
- 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)
 

Detailed Description

Vertex factory for rendering instanced mesh particles with out dynamic parameter support.

Constructor & Destructor Documentation

◆ FMeshParticleVertexFactory() [1/3]

FMeshParticleVertexFactory::FMeshParticleVertexFactory ( ERHIFeatureLevel::Type  InFeatureLevel)
inline

◆ FMeshParticleVertexFactory() [2/3]

FMeshParticleVertexFactory::FMeshParticleVertexFactory ( EParticleVertexFactoryType  InType,
ERHIFeatureLevel::Type  InFeatureLevel,
int32  InDynamicVertexStride,
int32  InDynamicParameterVertexStride 
)
inline

Default constructor.

◆ FMeshParticleVertexFactory() [3/3]

FMeshParticleVertexFactory::FMeshParticleVertexFactory ( )
inline

Member Function Documentation

◆ Copy()

ENGINE_API void FMeshParticleVertexFactory::Copy ( const FMeshParticleVertexFactory Other)

Copy the data from another vertex factory

Parameters
Other- factory to copy from

◆ GetInstanceVerticesCPU()

FMeshParticleInstanceVertices *& FMeshParticleVertexFactory::GetInstanceVerticesCPU ( )
inline

◆ GetLODIdx()

uint8 FMeshParticleVertexFactory::GetLODIdx ( ) const
inline

◆ GetPreviousTransformBufferSRV()

FRHIShaderResourceView * FMeshParticleVertexFactory::GetPreviousTransformBufferSRV ( ) const

◆ GetPSOPrecacheVertexFetchElements()

void FMeshParticleVertexFactory::GetPSOPrecacheVertexFetchElements ( EVertexInputStreamType  VertexInputStreamType,
FVertexDeclarationElementList Elements 
)
static

Get vertex elements used when during PSO precaching materials using this vertex factory type

FMeshParticleVertexFactory does not support manual vertex fetch yet so worst case element set is returned to make sure the PSO can be compiled

◆ GetUniformBuffer()

FRHIUniformBuffer * FMeshParticleVertexFactory::GetUniformBuffer ( )
inline

Retrieve the uniform buffer for this vertex factory.

◆ GetVertexElements() [1/2]

void FMeshParticleVertexFactory::GetVertexElements ( ERHIFeatureLevel::Type  FeatureLevel,
int32  InDynamicVertexStride,
int32  InDynamicParameterVertexStride,
FDataType Data,
FVertexDeclarationElementList Elements 
)
static

◆ GetVertexElements() [2/2]

void FMeshParticleVertexFactory::GetVertexElements ( ERHIFeatureLevel::Type  FeatureLevel,
int32  InDynamicVertexStride,
int32  InDynamicParameterVertexStride,
FDataType Data,
FVertexDeclarationElementList Elements,
FVertexStreamList InOutStreams 
)
staticprotected

◆ InitRHI()

void FMeshParticleVertexFactory::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.

◆ LockPreviousTransformBuffer()

uint8 * FMeshParticleVertexFactory::LockPreviousTransformBuffer ( FRHICommandListBase RHICmdList,
uint32  ParticleCount 
)

◆ ModifyCompilationEnvironment()

void FMeshParticleVertexFactory::ModifyCompilationEnvironment ( const FVertexFactoryShaderPermutationParameters Parameters,
FShaderCompilerEnvironment OutEnvironment 
)
static

Modify compile environment to enable instancing

Parameters
OutEnvironment- shader compile environment to modify

◆ SetData() [1/2]

void FMeshParticleVertexFactory::SetData ( const FDataType InData)

◆ SetData() [2/2]

void FMeshParticleVertexFactory::SetData ( FRHICommandListBase RHICmdList,
const FDataType InData 
)

An implementation of the interface used by TSynchronizedResource to update the resource with new data from the game thread.

◆ SetDynamicParameterBuffer()

void FMeshParticleVertexFactory::SetDynamicParameterBuffer ( const FVertexBuffer InDynamicParameterBuffer,
uint32  StreamOffset,
uint32  Stride 
)

Set the source vertex buffer that contains particle dynamic parameter data.

◆ SetInstanceBuffer()

void FMeshParticleVertexFactory::SetInstanceBuffer ( const FVertexBuffer InstanceBuffer,
uint32  StreamOffset,
uint32  Stride 
)

Set the source vertex buffer that contains particle instance data.

◆ SetLODIdx()

void FMeshParticleVertexFactory::SetLODIdx ( uint8  InLODIdx)
inline

◆ SetStrides()

void FMeshParticleVertexFactory::SetStrides ( int32  InDynamicVertexStride,
int32  InDynamicParameterVertexStride 
)
inline

Update the data strides (MUST HAPPEN BEFORE InitRHI is called)

◆ SetUniformBuffer()

void FMeshParticleVertexFactory::SetUniformBuffer ( const FMeshParticleUniformBufferRef InMeshParticleUniformBuffer)
inline

Set the uniform buffer for this vertex factory.

◆ ShouldCompilePermutation()

bool FMeshParticleVertexFactory::ShouldCompilePermutation ( const FVertexFactoryShaderPermutationParameters Parameters)
static

Should we cache the material's shadertype on this platform with this vertex factory?

◆ UnlockPreviousTransformBuffer()

void FMeshParticleVertexFactory::UnlockPreviousTransformBuffer ( FRHICommandListBase RHICmdList)

Member Data Documentation

◆ Data

FDataType FMeshParticleVertexFactory::Data
protected

◆ DynamicParameterVertexStride

int32 FMeshParticleVertexFactory::DynamicParameterVertexStride
protected

◆ DynamicVertexStride

int32 FMeshParticleVertexFactory::DynamicVertexStride
protected

Stride information for instanced mesh particles

◆ InstanceVerticesCPU

FMeshParticleInstanceVertices* FMeshParticleVertexFactory::InstanceVerticesCPU
protected

Used to remember this in the case that we reuse the same vertex factory for multiple renders .

◆ LODIdx

uint8 FMeshParticleVertexFactory::LODIdx
protected

◆ MeshParticleUniformBuffer

FRHIUniformBuffer* FMeshParticleVertexFactory::MeshParticleUniformBuffer
protected

Uniform buffer with mesh particle parameters.

◆ PrevTransformBuffer

FDynamicReadBuffer FMeshParticleVertexFactory::PrevTransformBuffer
protected

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