UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MeshParticleVertexFactory.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MeshParticleVertexFactory.h: Mesh particle vertex factory definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RHI.h"
11#include "UniformBuffer.h"
12#include "VertexFactory.h"
13#include "Components.h"
14#include "SceneManagement.h"
15#include "VertexFactory.h"
17//@todo - parallelrendering - remove once FOneFrameResource no longer needs to be referenced in header
18
19class FMaterial;
20class FVertexBuffer;
23
28 SHADER_PARAMETER( FVector4f, SubImageSize )
32 SHADER_PARAMETER( float, DeltaSeconds )
33 SHADER_PARAMETER( uint32, bUseLocalSpace )
38
40
41
46{
48public:
53
79
87
96
99 , LODIdx(0xff)
100 , DynamicVertexStride(-1)
101 , DynamicParameterVertexStride(-1)
102 , InstanceVerticesCPU(nullptr)
103 {}
104
108 static ENGINE_API bool ShouldCompilePermutation(const FVertexFactoryShaderPermutationParameters& Parameters);
109
110
115 static ENGINE_API void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
116
120 static ENGINE_API void GetPSOPrecacheVertexFetchElements(EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList& Elements);
121 static ENGINE_API void GetVertexElements(ERHIFeatureLevel::Type FeatureLevel, int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride, FDataType& Data, FVertexDeclarationElementList& Elements);
122
126 ENGINE_API void SetData(FRHICommandListBase& RHICmdList, const FDataType& InData);
127
128 UE_DEPRECATED(5.4, "SetData requires a command list.")
129 ENGINE_API void SetData(const FDataType& InData);
130
135 {
136 MeshParticleUniformBuffer = InMeshParticleUniformBuffer;
137 }
138
143 {
144 return MeshParticleUniformBuffer;
145 }
146
151 {
153 DynamicVertexStride = InDynamicVertexStride;
154 DynamicParameterVertexStride = InDynamicParameterVertexStride;
155 }
156
160 ENGINE_API void SetInstanceBuffer(const FVertexBuffer* InstanceBuffer, uint32 StreamOffset, uint32 Stride);
161
165 ENGINE_API void SetDynamicParameterBuffer(const FVertexBuffer* InDynamicParameterBuffer, uint32 StreamOffset, uint32 Stride);
166
167 ENGINE_API uint8* LockPreviousTransformBuffer(FRHICommandListBase& RHICmdList, uint32 ParticleCount);
168 ENGINE_API void UnlockPreviousTransformBuffer(FRHICommandListBase& RHICmdList);
169 ENGINE_API FRHIShaderResourceView* GetPreviousTransformBufferSRV() const;
170
176
177 // FRenderResource interface.
178 ENGINE_API virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
179
181 {
182 return InstanceVerticesCPU;
183 }
184
186 {
187 LODIdx = InLODIdx;
188 }
189
191 {
192 return LODIdx;
193 }
194protected:
195 static ENGINE_API void GetVertexElements(ERHIFeatureLevel::Type FeatureLevel, int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride, FDataType& Data, FVertexDeclarationElementList& Elements, FVertexStreamList& InOutStreams);
196
197protected:
199
201
205
208
210
213};
214
215
220
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FMeshParticleVertexFactory * ConstructMeshParticleVertexFactory(ERHIFeatureLevel::Type InFeatureLevel)
Definition MeshParticleVertexFactory.h:216
@ Num
Definition MetalRHIPrivate.h:234
EParticleVertexFactoryType
Definition ParticleVertexFactory.h:20
@ PVFT_MAX
Definition ParticleVertexFactory.h:24
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
#define DECLARE_VERTEX_FACTORY_TYPE(FactoryClass)
Definition VertexFactory.h:548
EVertexInputStreamType
Definition VertexFactory.h:128
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MaterialShared.h:2058
Definition ParticleSystemRender.cpp:1138
Definition MeshParticleVertexFactory.h:81
const struct FMeshParticleInstanceVertexDynamicParameter * DynamicParameterBuffer
Definition MeshParticleVertexFactory.h:84
const struct FMeshParticleInstanceVertex * InstanceBuffer
Definition MeshParticleVertexFactory.h:83
const struct FMeshParticleInstanceVertexPrevTransform * PrevTransformBuffer
Definition MeshParticleVertexFactory.h:85
Definition MeshParticleVertexFactory.h:46
int32 DynamicParameterVertexStride
Definition MeshParticleVertexFactory.h:204
FMeshParticleVertexFactory(EParticleVertexFactoryType InType, ERHIFeatureLevel::Type InFeatureLevel, int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride)
Definition MeshParticleVertexFactory.h:89
FMeshParticleVertexFactory()
Definition MeshParticleVertexFactory.h:97
FMeshParticleVertexFactory(ERHIFeatureLevel::Type InFeatureLevel)
Definition MeshParticleVertexFactory.h:49
void SetLODIdx(uint8 InLODIdx)
Definition MeshParticleVertexFactory.h:185
ENGINE_API void Copy(const FMeshParticleVertexFactory &Other)
FMeshParticleInstanceVertices *& GetInstanceVerticesCPU()
Definition MeshParticleVertexFactory.h:180
void SetStrides(int32 InDynamicVertexStride, int32 InDynamicParameterVertexStride)
Definition MeshParticleVertexFactory.h:150
int32 DynamicVertexStride
Definition MeshParticleVertexFactory.h:203
FDynamicReadBuffer PrevTransformBuffer
Definition MeshParticleVertexFactory.h:209
uint8 GetLODIdx() const
Definition MeshParticleVertexFactory.h:190
FDataType Data
Definition MeshParticleVertexFactory.h:198
FMeshParticleInstanceVertices * InstanceVerticesCPU
Definition MeshParticleVertexFactory.h:212
FRHIUniformBuffer * GetUniformBuffer()
Definition MeshParticleVertexFactory.h:142
uint8 LODIdx
Definition MeshParticleVertexFactory.h:200
FRHIUniformBuffer * MeshParticleUniformBuffer
Definition MeshParticleVertexFactory.h:207
Definition SceneManagement.h:1452
Definition ParticleVertexFactory.h:31
Definition RHICommandList.h:455
Definition RHIResources.h:3304
Definition RHIResources.h:1232
Definition RenderResource.h:474
Definition ShaderParameterMacros.h:136
Definition SceneComponent.h:24
Type
Definition RHIFeatureLevel.h:20
@ false
Definition radaudio_common.h:23
Definition RHIUtilities.h:560
Definition ParticleHelper.h:460
Definition ParticleHelper.h:466
Definition ParticleHelper.h:439
Definition MeshParticleVertexFactory.h:55
bool bInitialized
Definition MeshParticleVertexFactory.h:72
FDataType()
Definition MeshParticleVertexFactory.h:74
FVertexStreamComponent SubUVs
Definition MeshParticleVertexFactory.h:66
FVertexStreamComponent SubUVLerpAndRelTime
Definition MeshParticleVertexFactory.h:69
FVertexStreamComponent VelocityComponent
Definition MeshParticleVertexFactory.h:63
FVertexStreamComponent ParticleColorComponent
Definition MeshParticleVertexFactory.h:57
Definition ShaderCore.h:544
Definition Components.h:38
Definition MeshMaterialShader.h:44
Definition VertexStreamComponent.h:22