UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleVertexFactory.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 ParticleVertexFactory.h: Particle vertex factory definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RenderResource.h"
11#include "UniformBuffer.h"
12#include "VertexFactory.h"
13
14class FMaterial;
15
26
67
90
95{
97
98public:
99
103 NumVertsInInstanceBuffer(0),
104 NumCutoutVerticesPerFrame(0),
105 CutoutGeometrySRV(nullptr),
106 bCustomAlignment(false),
107 bUsesDynamicParameter(true),
108 DynamicParameterStride(0)
109 {}
110
113 NumVertsInInstanceBuffer(0),
114 NumCutoutVerticesPerFrame(0),
115 CutoutGeometrySRV(nullptr),
116 bCustomAlignment(false),
117 bUsesDynamicParameter(true),
118 DynamicParameterStride(0)
119 {}
120
121 // FRenderResource interface.
122 ENGINE_API virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
123
124 virtual bool RendersPrimitivesAsCameraFacingSprites() const override { return true; }
125
129 static ENGINE_API bool ShouldCompilePermutation(const FVertexFactoryShaderPermutationParameters& Parameters);
130
134 static ENGINE_API void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
135
139 static ENGINE_API void GetPSOPrecacheVertexFetchElements(EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList& Elements);
140 static ENGINE_API FRHIVertexDeclaration* GetPSOPrecacheVertexDeclaration(bool bUsesDynamicParameter);
141
145 ENGINE_API void SetInstanceBuffer(const FVertexBuffer* InInstanceBuffer, uint32 StreamOffset, uint32 Stride);
146
147 ENGINE_API void SetTexCoordBuffer(const FVertexBuffer* InTexCoordBuffer);
148
150 {
151 NumVertsInInstanceBuffer = InNumVertsInInstanceBuffer;
152 }
153
157 ENGINE_API void SetDynamicParameterBuffer(const FVertexBuffer* InDynamicParameterBuffer, uint32 StreamOffset, uint32 Stride);
159 {
160 bUsesDynamicParameter = bInUsesDynamicParameter;
161 DynamicParameterStride = Stride;
162 }
163
168 {
169 SpriteUniformBuffer = InSpriteUniformBuffer;
170 }
171
176 {
177 return SpriteUniformBuffer;
178 }
179
185
186 inline int32 GetNumCutoutVerticesPerFrame() const { return NumCutoutVerticesPerFrame; }
187 inline FRHIShaderResourceView* GetCutoutGeometrySRV() const { return CutoutGeometrySRV; }
188
190 {
191 bCustomAlignment = bAlign;
192 }
193
195 {
196 return bCustomAlignment;
197 }
198
199protected:
201 ENGINE_API void InitStreams();
202
203private:
204
205 int32 NumVertsInInstanceBuffer;
206
208 FUniformBufferRHIRef SpriteUniformBuffer;
209
210 int32 NumCutoutVerticesPerFrame;
211 FRHIShaderResourceView* CutoutGeometrySRV;
212 bool bCustomAlignment;
213 bool bUsesDynamicParameter;
214 uint32 DynamicParameterStride;
215};
216
217#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
218#include "SceneView.h"
219#endif
#define check(expr)
Definition AssertionMacros.h:314
#define TEXT(x)
Definition Platform.h:1272
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
return true
Definition ExternalRpcRegistry.cpp:601
EParticleVertexFactoryType
Definition ParticleVertexFactory.h:20
@ PVFT_BeamTrail
Definition ParticleVertexFactory.h:22
@ PVFT_Mesh
Definition ParticleVertexFactory.h:23
@ PVFT_Sprite
Definition ParticleVertexFactory.h:21
@ PVFT_MAX
Definition ParticleVertexFactory.h:24
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define SHADER_PARAMETER_EX(MemberType, MemberName, Precision)
Definition ShaderParameterMacros.h:1687
#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
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MaterialShared.h:2058
Definition ParticleVertexFactory.h:95
FParticleSpriteVertexFactory(ERHIFeatureLevel::Type InFeatureLevel)
Definition ParticleVertexFactory.h:111
void SetUsesDynamicParameter(bool bInUsesDynamicParameter, uint32 Stride)
Definition ParticleVertexFactory.h:158
FRHIShaderResourceView * GetCutoutGeometrySRV() const
Definition ParticleVertexFactory.h:187
void SetCutoutParameters(int32 InNumCutoutVerticesPerFrame, FRHIShaderResourceView *InCutoutGeometrySRV)
Definition ParticleVertexFactory.h:180
FRHIUniformBuffer * GetSpriteUniformBuffer()
Definition ParticleVertexFactory.h:175
void SetNumVertsInInstanceBuffer(int32 InNumVertsInInstanceBuffer)
Definition ParticleVertexFactory.h:149
int32 GetNumCutoutVerticesPerFrame() const
Definition ParticleVertexFactory.h:186
FParticleSpriteVertexFactory(EParticleVertexFactoryType InType, ERHIFeatureLevel::Type InFeatureLevel)
Definition ParticleVertexFactory.h:101
void SetCustomAlignment(bool bAlign)
Definition ParticleVertexFactory.h:189
void SetSpriteUniformBuffer(const FParticleSpriteUniformBufferRef &InSpriteUniformBuffer)
Definition ParticleVertexFactory.h:167
bool GetCustomAlignment()
Definition ParticleVertexFactory.h:194
virtual bool RendersPrimitivesAsCameraFacingSprites() const override
Definition ParticleVertexFactory.h:124
Definition ParticleVertexFactory.h:31
FParticleVertexFactoryBase(ERHIFeatureLevel::Type InFeatureLevel)
Definition ParticleVertexFactory.h:33
EParticleVertexFactoryType GetParticleFactoryType() const
Definition ParticleVertexFactory.h:51
void SetParticleFactoryType(EParticleVertexFactoryType InType)
Definition ParticleVertexFactory.h:56
ERHIFeatureLevel::Type GetFeatureLevel() const
Definition ParticleVertexFactory.h:61
static void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ParticleVertexFactory.h:44
FParticleVertexFactoryBase(EParticleVertexFactoryType Type, ERHIFeatureLevel::Type InFeatureLevel)
Definition ParticleVertexFactory.h:39
Definition RHICommandList.h:455
Definition RHIResources.h:3304
Definition RHIResources.h:1232
Definition RHIResources.h:725
bool HasValidFeatureLevel() const
Definition RenderResource.h:156
const FStaticFeatureLevel GetFeatureLevel() const
Definition RenderResource.h:155
Definition RenderResource.h:474
Definition VertexFactory.h:661
static void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition VertexFactory.h:683
Definition ShaderParameterMacros.h:136
Type
Definition RHIFeatureLevel.h:20
@ Half
Definition ShaderParameterMetadata.h:40
@ false
Definition radaudio_common.h:23
Definition ShaderCore.h:544
Definition MeshMaterialShader.h:44