UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleHelper.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 ParticleHelper.h: Particle helper definitions/ macros.
5=============================================================================*/
6
7#pragma once
8
9#include "Math/Quat.h"
10#include "Math/RandomStream.h"
11#include "Math/Vector4.h"
14#include "ParticleHelper.generated.h"
15
16#define _ENABLE_PARTICLE_LOD_INGAME_
17
25class FSceneView;
30class UStaticMesh;
31namespace ERHIFeatureLevel { enum Type : int; }
32struct FBaseParticle;
37
39
41UENUM()
43{
44 PDM_Low UMETA(DisplayName = "Low"),
45 PDM_Medium UMETA(DisplayName = "Medium"),
46 PDM_High UMETA(DisplayName = "High"),
47 PDM_Epic UMETA(DisplayName = "Epic"),
49};
50inline const int32 PDM_DefaultValue = 0xFFFF;
51
52
53/*-----------------------------------------------------------------------------
54 Helper macros.
55-----------------------------------------------------------------------------*/
56// Macro fun.
57#define _PARTICLES_USE_PREFETCH_
58#if defined(_PARTICLES_USE_PREFETCH_)
59 #define PARTICLE_PREFETCH(Index) FPlatformMisc::Prefetch( ParticleData, ParticleStride * ParticleIndices[Index] )
60 #define PARTICLE_INSTANCE_PREFETCH(Instance, Index) FPlatformMisc::Prefetch( Instance->ParticleData, Instance->ParticleStride * Instance->ParticleIndices[Index] )
61 #define PARTICLE_OWNER_PREFETCH(Index) FPlatformMisc::Prefetch( Owner->ParticleData, Owner->ParticleStride * Owner->ParticleIndices[Index] )
62#else //#if defined(_PARTICLES_USE_PREFETCH_)
63 #define PARTICLE_PREFETCH(Index)
64 #define PARTICLE_INSTANCE_PREFETCH(Instance, Index)
65 #define PARTICLE_OWNER_PREFETCH(Index)
66#endif //#if defined(_PARTICLES_USE_PREFETCH_)
67
68#define DECLARE_PARTICLE(Name,Address) \
69 FBaseParticle& Name = *((FBaseParticle*) (Address));
70
71#define DECLARE_PARTICLE_CONST(Name,Address) \
72 const FBaseParticle& Name = *((const FBaseParticle*) (Address));
73
74#define DECLARE_PARTICLE_PTR(Name,Address) \
75 FBaseParticle* Name = (FBaseParticle*) (Address);
76
77#define BEGIN_UPDATE_LOOP \
78 { \
79 int32& ActiveParticles = Context.Owner.ActiveParticles; \
80 int32 Offset = Context.Offset; \
81 uint32 CurrentOffset = Offset; \
82 float DeltaTime = Context.DeltaTime; \
83 const uint8* ParticleData = Context.Owner.ParticleData; \
84 const uint32 ParticleStride = Context.Owner.ParticleStride; \
85 uint16* ParticleIndices = Context.Owner.ParticleIndices; \
86 for(int32 i=ActiveParticles-1; i>=0; i--) \
87 { \
88 const int32 CurrentIndex = ParticleIndices[i]; \
89 const uint8* ParticleBase = ParticleData + CurrentIndex * ParticleStride; \
90 FBaseParticle& Particle = *((FBaseParticle*) ParticleBase); \
91 if ((Particle.Flags & STATE_Particle_Freeze) == 0) \
92 { \
93
94#define END_UPDATE_LOOP \
95 } \
96 CurrentOffset = Offset; \
97 } \
98 }
99
100#define CONTINUE_UPDATE_LOOP \
101 CurrentOffset = Offset; \
102 continue;
103
104#define SPAWN_INIT \
105 const int32 ActiveParticles = Context.Owner.ActiveParticles; \
106 const uint32 ParticleStride = Context.Owner.ParticleStride; \
107 uint32 CurrentOffset = Context.Offset; \
108 FBaseParticle* ParticleBase = Context.ParticleBase; \
109 FBaseParticle& Particle = *(ParticleBase);
110
111#define PARTICLE_ELEMENT(Type,Name) \
112 Type& Name = *((Type*)((uint8*)ParticleBase + CurrentOffset)); \
113 CurrentOffset += sizeof(Type);
114
115#define KILL_CURRENT_PARTICLE \
116 { \
117 ParticleIndices[i] = ParticleIndices[ActiveParticles-1]; \
118 ParticleIndices[ActiveParticles-1] = CurrentIndex; \
119 ActiveParticles--; \
120 }
121
122/*-----------------------------------------------------------------------------
123 Helper functions.
124-----------------------------------------------------------------------------*/
125
127{
128 OutColor.R = InColorVec.X;
129 OutColor.G = InColorVec.Y;
130 OutColor.B = InColorVec.Z;
131 OutColor.A = InAlpha;
132}
133
134/*-----------------------------------------------------------------------------
135 Forward declarations
136-----------------------------------------------------------------------------*/
137// Emitter and module types
138class UParticleEmitter;
140class UParticleModule;
141// Data types
145
146class UParticleSystem;
147
152
156
158
160
163
167
169
170// Special module indices...
171#define INDEX_TYPEDATAMODULE (INDEX_NONE - 1)
172#define INDEX_REQUIREDMODULE (INDEX_NONE - 2)
173#define INDEX_SPAWNMODULE (INDEX_NONE - 3)
174
175/*-----------------------------------------------------------------------------
176 FBaseParticle
177-----------------------------------------------------------------------------*/
178// Mappings for 'standard' particle data
179// Only used when required.
181{
182 // 48 bytes
183 FVector OldLocation; // Last frame's location, used for collision
184 FVector Location; // Current location
185
186 // 16 bytes
187 FVector3f BaseVelocity; // Velocity = BaseVelocity at the start of each frame.
188 float Rotation; // Rotation of particle (in Radians)
189
190 // 16 bytes
191 FVector3f Velocity; // Current velocity, gets reset to BaseVelocity each frame to allow
192 float BaseRotationRate; // Initial angular velocity of particle (in Radians per second)
193
194 // 16 bytes
195 FVector3f BaseSize; // Size = BaseSize at the start of each frame
196 float RotationRate; // Current rotation rate, gets reset to BaseRotationRate each frame
197
198 // 16 bytes
199 FVector3f Size; // Current size, gets reset to BaseSize each frame
200 int32 Flags; // Flags indicating various particle states
201
202 // 16 bytes
203 FLinearColor Color; // Current color of particle.
204
205 // 16 bytes
206 FLinearColor BaseColor; // Base color of the particle
207
208 // 16 bytes
209 float RelativeTime; // Relative time, range is 0 (==spawn) to 1 (==death)
210 float OneOverMaxLifetime; // Reciprocal of lifetime
213};
214
215/*-----------------------------------------------------------------------------
216 Particle State Flags
217-----------------------------------------------------------------------------*/
241
242/*-----------------------------------------------------------------------------
243 FParticlesStatGroup
244-----------------------------------------------------------------------------*/
245
251
273DECLARE_CYCLE_STAT_EXTERN(TEXT("Async Work Time"),STAT_ParticleAsyncTime,STATGROUP_Particles, ); // regardless of if it is actually performed on other threads or not
274DECLARE_CYCLE_STAT_EXTERN(TEXT("Wait For ASync Time"),STAT_ParticleAsyncWaitTime,STATGROUP_Particles, ); // can be either performed on this thread or a true wait
276
321
322// GPU Particle stats.
341
345
368
393
394
395// FParticleSpriteVertexDynamicParameter
401
402// FParticleBeamTrailVertex
429
430// FParticleBeamTrailVertexDynamicParameter
436
437// Per-particle data sent to the GPU.
458
464
471
472//
473// Trail emitter flags and macros
474//
475// ForceKill: Indicates all the particles in the trail should be killed in the next KillParticles call.
476#define TRAIL_EMITTER_FLAG_FORCEKILL 0x00000000
477// DeadTrail: indicates that the particle is the start of a trail than should no longer spawn.
478// It should just fade out as the particles die...
479#define TRAIL_EMITTER_FLAG_DEADTRAIL 0x10000000
480// Middle: indicates the particle is in the middle of a trail.
481#define TRAIL_EMITTER_FLAG_MIDDLE 0x20000000
482// Start: indicates the particle is the start of a trail.
483#define TRAIL_EMITTER_FLAG_START 0x40000000
484// End: indicates the particle is the end of a trail.
485#define TRAIL_EMITTER_FLAG_END 0x80000000
486
487//#define TRAIL_EMITTER_FLAG_ONLY (TRAIL_EMITTER_FLAG_START | TRAIL_EMITTER_FLAG_END)
488#define TRAIL_EMITTER_FLAG_MASK 0xf0000000
489#define TRAIL_EMITTER_PREV_MASK 0x0fffc000
490#define TRAIL_EMITTER_PREV_SHIFT 14
491#define TRAIL_EMITTER_NEXT_MASK 0x00003fff
492#define TRAIL_EMITTER_NEXT_SHIFT 0
493
494#define TRAIL_EMITTER_NULL_PREV (TRAIL_EMITTER_PREV_MASK >> TRAIL_EMITTER_PREV_SHIFT)
495#define TRAIL_EMITTER_NULL_NEXT (TRAIL_EMITTER_NEXT_MASK >> TRAIL_EMITTER_NEXT_SHIFT)
496
497// Helper macros
498#define TRAIL_EMITTER_CHECK_FLAG(val, mask, flag) ((val & mask) == flag)
499#define TRAIL_EMITTER_SET_FLAG(val, mask, flag) ((val & ~mask) | flag)
500#define TRAIL_EMITTER_GET_PREVNEXT(val, mask, shift) ((val & mask) >> shift)
501#define TRAIL_EMITTER_SET_PREVNEXT(val, mask, shift, setval) ((val & ~mask) | ((setval << shift) & mask))
502
503// Start/end accessor macros
504#define TRAIL_EMITTER_IS_START(index) TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)
505#define TRAIL_EMITTER_SET_START(index) TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)
506
507#define TRAIL_EMITTER_IS_END(index) TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_END)
508#define TRAIL_EMITTER_SET_END(index) TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_END)
509
510#define TRAIL_EMITTER_IS_MIDDLE(index) TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_MIDDLE)
511#define TRAIL_EMITTER_SET_MIDDLE(index) TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_MIDDLE)
512
513// Only is used for the first emission from the emitter
514#define TRAIL_EMITTER_IS_ONLY(index) (TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START) && \
515 (TRAIL_EMITTER_GET_NEXT(index) == TRAIL_EMITTER_NULL_NEXT))
516#define TRAIL_EMITTER_SET_ONLY(index) TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_START)
517
518#define TRAIL_EMITTER_IS_FORCEKILL(index) TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_FORCEKILL)
519#define TRAIL_EMITTER_SET_FORCEKILL(index) TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_FORCEKILL)
520
521#define TRAIL_EMITTER_IS_DEADTRAIL(index) TRAIL_EMITTER_CHECK_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_DEADTRAIL)
522#define TRAIL_EMITTER_SET_DEADTRAIL(index) TRAIL_EMITTER_SET_FLAG(index, TRAIL_EMITTER_FLAG_MASK, TRAIL_EMITTER_FLAG_DEADTRAIL)
523
524#define TRAIL_EMITTER_IS_HEAD(index) (TRAIL_EMITTER_IS_START(index) || TRAIL_EMITTER_IS_DEADTRAIL(index))
525#define TRAIL_EMITTER_IS_HEADONLY(index) ((TRAIL_EMITTER_IS_START(index) || TRAIL_EMITTER_IS_DEADTRAIL(index)) && \
526 (TRAIL_EMITTER_GET_NEXT(index) == TRAIL_EMITTER_NULL_NEXT))
527
528// Prev/Next accessor macros
529#define TRAIL_EMITTER_GET_PREV(index) TRAIL_EMITTER_GET_PREVNEXT(index, TRAIL_EMITTER_PREV_MASK, TRAIL_EMITTER_PREV_SHIFT)
530#define TRAIL_EMITTER_SET_PREV(index, prev) TRAIL_EMITTER_SET_PREVNEXT(index, TRAIL_EMITTER_PREV_MASK, TRAIL_EMITTER_PREV_SHIFT, prev)
531#define TRAIL_EMITTER_GET_NEXT(index) TRAIL_EMITTER_GET_PREVNEXT(index, TRAIL_EMITTER_NEXT_MASK, TRAIL_EMITTER_NEXT_SHIFT)
532#define TRAIL_EMITTER_SET_NEXT(index, next) TRAIL_EMITTER_SET_PREVNEXT(index, TRAIL_EMITTER_NEXT_MASK, TRAIL_EMITTER_NEXT_SHIFT, next)
533
548
564
570
571//
572// Helper structures for payload data...
573//
574
575//
576// SubUV-related payloads
577//
579{
580 // The integer portion indicates the sub-image index.
581 // The fractional portion indicates the lerp factor.
584};
585
586//
587// AttractorParticle
588//
595
607
608//
609// TypeDataBeam2 payload
610//
611#define BEAM2_TYPEDATA_LOCKED_MASK 0x80000000
612#define BEAM2_TYPEDATA_LOCKED(x) ((x & BEAM2_TYPEDATA_LOCKED_MASK) != 0)
613#define BEAM2_TYPEDATA_SETLOCKED(x, Locked) (x = Locked ? (x | BEAM2_TYPEDATA_LOCKED_MASK) : (x & ~BEAM2_TYPEDATA_LOCKED_MASK))
614
615#define BEAM2_TYPEDATA_FREQUENCY_MASK 0x00fff000
616#define BEAM2_TYPEDATA_FREQUENCY_SHIFT 12
617#define BEAM2_TYPEDATA_FREQUENCY(x) ((x & BEAM2_TYPEDATA_FREQUENCY_MASK) >> BEAM2_TYPEDATA_FREQUENCY_SHIFT)
618#define BEAM2_TYPEDATA_SETFREQUENCY(x, Freq) (x = ((x & ~BEAM2_TYPEDATA_FREQUENCY_MASK) | (Freq << BEAM2_TYPEDATA_FREQUENCY_SHIFT)))
619
670
676
682
685{
694 float Strength;
695
696 // Helper functions
698 {
699 if (bModifyPosition == true)
700 {
701 if (bScalePosition == false)
702 {
703 Value += Position;
704 }
705 else
706 {
707 Value *= Position;
708 }
709 }
710 }
711
712 inline void UpdateTangent(FVector& Value, bool bAbsolute)
713 {
714 if (bModifyTangent == true)
715 {
717 if (bAbsolute == false)
718 {
719 // Transform the modified tangent so it is relative to the real tangent
720 const FQuat RotQuat = FQuat::FindBetweenNormals(FVector(1.0f, 0.0f, 0.0f), Value);
721 ModTangent = RotQuat.RotateVector(Tangent);
722 }
723 else
724 {
726 }
727
728 if (bScaleTangent == false)
729 {
730 Value += ModTangent;
731 }
732 else
733 {
734 Value *= ModTangent;
735 }
736 }
737 }
738
739 inline void UpdateStrength(float& Value)
740 {
741 if (bModifyStrength == true)
742 {
743 if (bScaleStrength == false)
744 {
745 Value += Strength;
746 }
747 else
748 {
749 Value *= Strength;
750 }
751 }
752 }
753};
754
801
811
814{
815 //Direction from the first socket sample to the second.
817 //Tangent of the curve.
819 //Half length between the sockets. First vertex = Location - Dir * Length; Second vertex = Location + Dir * Lenght
820 float Length;
823};
824
835
845
851
853template <typename ElementType>
855{
856public:
857
860 ArrayMax(0),
861 Array(NULL)
862 {}
863
869 ArrayMax( ArraySize ),
870 Array( (ElementType*) ArrayStart )
871 {}
872
874 inline ElementType& operator[]( int32 Index )
875 {
876 check((Index >= 0) & ((Index < ArrayMax) | ((Index == 0) & (ArrayMax == 0)))); // & and | for one branch
877 return Array[Index];
878 }
879
881 inline const ElementType& operator[]( int32 Index ) const
882 {
883 check((Index >= 0) & ((Index < ArrayMax) | ((Index == 0) & (ArrayMax == 0)))); // & and | for one branch
884 return Array[Index];
885 }
886
892 int32 Find( const ElementType& Item ) const
893 {
894 const ElementType* const RESTRICT DataEnd = Array + ArrayMax;
895 for(const ElementType* RESTRICT Data = Array; Data < DataEnd; ++Data)
896 {
897 if( *Data==Item )
898 {
899 return (int32)(Data - Array);
900 }
901 }
902 return INDEX_NONE;
903 }
904
910 bool Contains( const ElementType& Item ) const
911 {
912 return ( Find(Item) != INDEX_NONE );
913 }
914
915 int32 Num() const
916 {
917 return ArrayMax;
918 }
919
920private:
922 int32 ArrayMax;
924 ElementType* Array;
925};
926
933
952
960
971
982
998
1007
1024
1033
1039
1040/*-----------------------------------------------------------------------------
1041 Particle Sorting Helper
1042-----------------------------------------------------------------------------*/
1044{
1046
1047 union
1048 {
1049 float Z;
1051 };
1052
1057
1062};
1063
1064
1065/*-----------------------------------------------------------------------------
1066 Async Fill Organizational Structure
1067-----------------------------------------------------------------------------*/
1068
1104
1105/*-----------------------------------------------------------------------------
1106 Particle vertex factory pools
1107-----------------------------------------------------------------------------*/
1109
1110/*-----------------------------------------------------------------------------
1111 Particle Dynamic Data
1112-----------------------------------------------------------------------------*/
1113
1130
1132{
1136 uint8* ParticleData; // this is also the memory block we allocated
1137 uint16* ParticleIndices; // not allocated, this is at the end of the memory block
1138
1140 : MemBlockSize(0)
1143 , ParticleData(nullptr)
1144 , ParticleIndices(nullptr)
1145 {
1146 }
1148 {
1149 Free();
1150 }
1152 void Free();
1153};
1154
1156{
1157 FMacroUVOverride() : bOverride(false), Radius(0.f), Position(0.f,0.f,0.f) {}
1158
1160 float Radius;
1162
1164 {
1165 Ar << O.bOverride;
1166 Ar << O.Radius;
1167 Ar << O.Position;
1168 return Ar;
1169 }
1170};
1171
1174{
1177
1180
1183
1185
1188
1191
1196 ParticleStride( 0 ),
1197 Scale( FVector3f( 1.0f ) ),
1198 SortMode(0) // Default to PSORTMODE_None
1199 {
1200 }
1201
1203 {
1204 }
1205
1207 virtual void Serialize( FArchive& Ar )
1208 {
1210 Ar << EmitterTypeAsInt;
1212
1213 Ar << ActiveParticleCount;
1214 Ar << ParticleStride;
1215
1216 TArray<uint8> ParticleData;
1217 TArray<uint16> ParticleIndices;
1218
1219 if (!Ar.IsLoading() && !Ar.IsObjectReferenceCollector())
1220 {
1222 {
1225 }
1227 {
1230 }
1231 }
1232
1233 Ar << ParticleData;
1234 Ar << ParticleIndices;
1235
1236 if (Ar.IsLoading())
1237 {
1239 if (ParticleData.Num())
1240 {
1241 DataContainer.Alloc(ParticleData.Num(), ParticleIndices.Num());
1244 {
1246 }
1247 }
1248 else
1249 {
1250 check(!ParticleIndices.Num());
1251 }
1252 }
1253
1254 Ar << Scale;
1255 Ar << SortMode;
1256 Ar << MacroUVOverride;
1257 }
1258
1259};
1260
1261
1262
1265{
1266 FDynamicEmitterDataBase(const class UParticleModuleRequired* RequiredModule);
1267
1269 {
1270 }
1271
1273 void* operator new(size_t Size);
1274 void operator delete(void *RawMemory, size_t Size);
1275
1284
1293
1294 virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy* Proxy, const FSceneView* View, const FSceneViewFamily& ViewFamily, int32 ViewIndex, FMeshElementCollector& Collector) const {}
1295
1304
1307
1309 virtual const FDynamicEmitterReplayDataBase& GetSource() const = 0;
1310
1313
1320
1322};
1323
1363
1366{
1368 FDynamicEmitterDataBase(RequiredModule),
1370 {
1371 MaterialResource = nullptr;
1372 }
1373
1375 {
1376 }
1377
1389
1403 void SortSpriteParticles(int32 SortMode, bool bLocalSpace,
1404 int32 ParticleCount, const uint8* ParticleData, int32 ParticleStride, const uint16* ParticleIndices,
1405 const FSceneView* View, const FMatrix& LocalToWorld, FParticleOrder* ParticleOrder) const;
1406
1410 virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type /*InFeatureLevel*/) const
1411 {
1412 checkf(0, TEXT("GetDynamicVertexStride MUST be overridden"));
1413 return 0;
1414 }
1415
1420 {
1421 checkf(0, TEXT("GetDynamicParameterVertexStride MUST be overridden"));
1422 return 0;
1423 }
1424
1429 {
1430 checkf(0, TEXT("GetSourceData MUST be overridden"));
1431 return NULL;
1432 }
1433
1438 {
1439 checkf(0, TEXT("GetIndexAllocInfo is not valid for this class."));
1440 }
1441
1450 virtual void RenderDebug(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI, const FSceneView* View, bool bCrosses) const;
1451
1452 virtual void DoBufferFill(FAsyncBufferFillData& Me) const
1453 {
1454 // Must be overridden if called
1455 check(0);
1456 }
1457
1467 void BuildViewFillData(
1468 const FParticleSystemSceneProxy* Proxy,
1469 const FSceneView *InView,
1473 FGlobalDynamicIndexBuffer& DynamicIndexBuffer,
1474 FGlobalDynamicVertexBuffer& DynamicVertexBuffer,
1478 FAsyncBufferFillData& Data) const;
1479
1484};
1485
1489{
1494
1495
1497 virtual void Serialize( FArchive& Ar )
1498 {
1499 // Call parent implementation
1501
1502 // ...
1503 }
1504
1505};
1506
1509{
1511 FDynamicSpriteEmitterDataBase(RequiredModule)
1512 {
1513 }
1514
1518
1520 void Init( bool bInSelected );
1521
1526 {
1527 return sizeof(FParticleSpriteVertex);
1528 }
1529
1534 {
1535 return sizeof(FParticleVertexDynamicParameter);
1536 }
1537
1542 {
1543 return &Source;
1544 }
1545
1559 bool GetVertexAndIndexData(void* VertexData, void* DynamicParameterVertexData, void* FillIndexData, FParticleOrder* ParticleOrder, const FVector& InCameraPosition, const FMatrix& InLocalToWorld, uint32 InstanceFactor) const;
1560
1562 virtual void GatherSimpleLights(const FParticleSystemSceneProxy* Proxy, const FSceneViewFamily& ViewFamily, FSimpleLightArray& OutParticleLights) const override;
1563
1564 virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy* Proxy, const FSceneView* View, const FSceneViewFamily& ViewFamily, int32 ViewIndex, FMeshElementCollector& Collector) const override;
1565
1574
1576 virtual const FDynamicEmitterReplayDataBase& GetSource() const override
1577 {
1578 return Source;
1579 }
1580
1585
1588};
1589
1640
1641
1644{
1645 FDynamicMeshEmitterData(const UParticleModuleRequired* RequiredModule);
1646
1647 virtual ~FDynamicMeshEmitterData();
1648
1651 void Init( bool bInSelected,
1655 float InLODSizeScale,
1657
1666
1675
1676 virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy* Proxy, const FSceneView* View, const FSceneViewFamily& ViewFamily, int32 ViewIndex, FMeshElementCollector& Collector) const override;
1677
1689 void GetInstanceData(void* InstanceData, void* DynamicParameterData, void* PrevTransformBuffer, const FParticleSystemSceneProxy* Proxy, const FSceneView* View, uint32 InstanceFactor) const;
1690
1700
1702
1706 float ParticleRotation,
1708 const FVector3f& ParticleSize,
1713 const FVector& ViewOrigin,
1714 const FVector3f& ViewDirection,
1716 ) const;
1717
1719 virtual void GatherSimpleLights(const FParticleSystemSceneProxy* Proxy, const FSceneViewFamily& ViewFamily, FSimpleLightArray& OutParticleLights) const override;
1720
1724 virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type /*InFeatureLevel*/) const override
1725 {
1726 return sizeof(FMeshParticleInstanceVertex);
1727 }
1728
1729 virtual int32 GetDynamicParameterVertexStride() const override
1730 {
1732 }
1733
1738 {
1739 return &Source;
1740 }
1741
1746
1748 virtual const FDynamicEmitterReplayDataBase& GetSource() const override
1749 {
1750 return Source;
1751 }
1752
1757
1759
1762
1765
1766 // 'orientation' items...
1767 // These don't need to go into the replay data, as they are constant over the life of the emitter
1786
1791};
1792
1796{
1800
1803
1804 // Offsets to particle data
1813
1829
1834
1840
1843 : VertexCount(0)
1844 , IndexCount(0)
1845 , IndexStride(0)
1847 , UpVectorStepSize(0)
1848 , BeamDataOffset(-1)
1850 , NoiseRateOffset(-1)
1854 , TaperValuesOffset(-1)
1859 , bUseSource( false )
1860 , bUseTarget( false )
1861 , bTargetNoise( false )
1862 , Sheets(1)
1863 , Frequency(1)
1865 , NoiseRangeScale(1)
1866 , NoiseTangentStrength( 0.0f )
1867 , NoiseSpeed( 0.0f, 0.0f, 0.0f )
1868 , NoiseLockTime( 0.0f )
1869 , NoiseLockRadius( 0.0f )
1870 , NoiseTension( 0.0f )
1871 , TextureTile(0)
1873 , TaperMethod(0)
1879 {
1880 }
1881
1882
1884 virtual void Serialize( FArchive& Ar )
1885 {
1886 // Call parent implementation
1888
1889 Ar << VertexCount;
1890 Ar << IndexCount;
1891 Ar << IndexStride;
1892
1893 Ar << TrianglesPerSheet;
1894 Ar << UpVectorStepSize;
1895 Ar << BeamDataOffset;
1897 Ar << NoiseRateOffset;
1901 Ar << TaperValuesOffset;
1903
1907 Ar << bUseSource;
1908 Ar << bUseTarget;
1909 Ar << bTargetNoise;
1910 Ar << Sheets;
1911 Ar << Frequency;
1912 Ar << NoiseTessellation;
1913 Ar << NoiseRangeScale;
1915 Ar << NoiseSpeed;
1916 Ar << NoiseLockTime;
1917 Ar << NoiseLockRadius;
1918 Ar << NoiseTension;
1919
1920 Ar << TextureTile;
1921 Ar << TextureTileDistance;
1922 Ar << TaperMethod;
1923 Ar << InterpolationPoints;
1924
1925 Ar << bRenderGeometry;
1926 Ar << bRenderDirectLine;
1927 Ar << bRenderLines;
1928 Ar << bRenderTessellation;
1929 }
1930
1931};
1932
1933
1934
1937{
1938 static const uint32 MaxBeams = 2 * 1024;
1939 static const uint32 MaxInterpolationPoints = 250;
1940 static const uint32 MaxNoiseFrequency = 250;
1941
1943 :
1944 FDynamicSpriteEmitterDataBase(RequiredModule)
1946 {
1947 }
1948
1950
1952 void Init( bool bInSelected );
1953
1954
1955 virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy* Proxy, const FSceneView* View, const FSceneViewFamily& ViewFamily, int32 ViewIndex, FMeshElementCollector& Collector) const override;
1956
1957 // Debugging functions
1958 virtual void RenderDirectLine(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI,const FSceneView* View) const;
1959 virtual void RenderLines(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI,const FSceneView* View) const;
1960
1961 virtual void RenderDebug(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI, const FSceneView* View, bool bCrosses) const override;
1962
1963 // Data fill functions
1964 int32 FillIndexData(struct FAsyncBufferFillData& Data) const;
1966 int32 FillData_Noise(struct FAsyncBufferFillData& Data) const;
1968
1970 virtual const FDynamicEmitterReplayDataBase& GetSource() const override
1971 {
1972 return Source;
1973 }
1974
1976 virtual void DoBufferFill(FAsyncBufferFillData& Me) const override;
1977
1981 virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type /*InFeatureLevel*/) const override
1982 {
1983 return sizeof(FParticleBeamTrailVertex);
1984 }
1985
1990 {
1992 }
1993
1997 virtual void GetIndexAllocInfo(int32& OutNumIndices, int32& OutStride ) const override;
1998
2003
2005};
2006
2009{
2014
2015 // Payload offsets
2017
2021
2024 : PrimitiveCount(0)
2025 , VertexCount(0)
2026 , IndexCount(0)
2027 , IndexStride(0)
2028 , TrailDataOffset(-1)
2030 , TrailCount(1)
2031 , Sheets(1)
2032 {
2033 }
2034
2036 virtual void Serialize( FArchive& Ar )
2037 {
2038 // Call parent implementation
2040
2041 Ar << PrimitiveCount;
2042 Ar << VertexCount;
2043 Ar << IndexCount;
2044 Ar << IndexStride;
2045
2046 Ar << TrailDataOffset;
2047
2049 Ar << TrailCount;
2050 Ar << Sheets;
2051 }
2052};
2053
2056{
2057 // Payload offsets
2059
2066
2068 virtual void Serialize( FArchive& Ar )
2069 {
2070 // Call parent implementation
2073 }
2074};
2075
2078{
2093
2095
2097 virtual void Init(bool bInSelected);
2098
2099 virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy* Proxy, const FSceneView* View, const FSceneViewFamily& ViewFamily, int32 ViewIndex, FMeshElementCollector& Collector) const override;
2100
2101 virtual void RenderDebug(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI, const FSceneView* View, bool bCrosses) const override;
2102
2103 // Data fill functions
2104 virtual int32 FillIndexData(struct FAsyncBufferFillData& Data) const;
2105 virtual int32 FillVertexData(struct FAsyncBufferFillData& Data) const;
2106
2108 virtual const FDynamicEmitterReplayDataBase& GetSource() const override
2109 {
2111 return *SourcePointer;
2112 }
2113
2114 virtual const FDynamicTrailsEmitterReplayData* GetSourceData() const override
2115 {
2117 return SourcePointer;
2118 }
2119
2120 virtual void DoBufferFill(FAsyncBufferFillData& Me) const override
2121 {
2122 if( Me.VertexCount <= 0 || Me.IndexCount <= 0 || Me.VertexData == NULL || Me.IndexData == NULL )
2123 {
2124 return;
2125 }
2126
2127 FillIndexData(Me);
2128 FillVertexData(Me);
2129 }
2130
2134 virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type /*InFeatureLevel*/) const override
2135 {
2136 return sizeof(FParticleBeamTrailVertex);
2137 }
2138
2143 {
2145 }
2146
2150 virtual void GetIndexAllocInfo(int32& OutNumIndices, int32& OutStride ) const override;
2151
2155
2162
2166};
2167
2170{
2172 FDynamicTrailsEmitterData(RequiredModule)
2173 {
2174 }
2175
2177 {
2178 }
2179
2181 virtual void Init(bool bInSelected);
2182
2183 virtual void RenderDebug(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI, const FSceneView* View, bool bCrosses) const;
2184
2185 // Data fill functions
2186 virtual int32 FillVertexData(struct FAsyncBufferFillData& Data) const;
2187
2192 {
2193 return &Source;
2194 }
2195
2202
2205};
2206
2209{
2211 FDynamicTrailsEmitterData(RequiredModule)
2212 {
2213 }
2214
2216 {
2217 }
2218
2220 virtual void Init(bool bInSelected);
2221
2222 virtual void RenderDebug(const FParticleSystemSceneProxy* Proxy, FPrimitiveDrawInterface* PDI, const FSceneView* View, bool bCrosses) const;
2223
2224 // Data fill functions
2225 virtual int32 FillVertexData(struct FAsyncBufferFillData& Data) const;
2226
2233};
2234
2235/*-----------------------------------------------------------------------------
2236 * Particle dynamic data
2237 * This is a copy of the particle system data needed to render the system in
2238 * another thread.
2239 ----------------------------------------------------------------------------*/
2241{
2242public:
2247
2252
2254 ENGINE_API void* operator new(size_t Size);
2255 ENGINE_API void operator delete(void *RawMemory, size_t Size);
2256
2258 {
2259 for (int32 Index = 0; Index < DynamicEmitterDataArray.Num(); Index++)
2260 {
2262 delete Data;
2263 }
2265 }
2266
2267 uint32 GetMemoryFootprint( void ) const { return( sizeof( *this ) + DynamicEmitterDataArray.GetAllocatedSize() ); }
2268
2271
2272 // Variables
2274
2277
2280
2281#if WITH_PARTICLE_PERF_STATS
2283#endif
2284};
2285
2286
2287#if STATS
2288/*-----------------------------------------------------------------------------
2289 * FParticleMemoryStatManager
2290 * Handles the collection of various ParticleSystemComponents memory stats
2291 ----------------------------------------------------------------------------*/
2293{
2294public:
2301
2304 static uint32 DynamicMeshCount;
2305 static uint32 DynamicBeamCount;
2308
2311 static uint32 DynamicMeshGTMem;
2312 static uint32 DynamicBeamGTMem;
2316
2326
2333
2341
2342 static void ResetParticleMemoryMaxValues();
2343
2344 static void DumpParticleMemoryStats(FOutputDevice& Ar);
2345
2349 static void UpdateStats();
2350};
2351
2352#endif
2353
2355{
2356public:
2360 virtual void InitRHI(FRHICommandListBase& RHICmdList) override
2361 {
2362 // create a static vertex buffer
2363 const FRHIBufferCreateDesc CreateDesc =
2364 FRHIBufferCreateDesc::CreateVertex(TEXT("FNullDynamicParameterVertexBuffer"), sizeof(FParticleVertexDynamicParameter))
2368
2370 Value.DynamicValue[0] = Value.DynamicValue[1] = Value.DynamicValue[2] = Value.DynamicValue[3] = 1.0f;
2371
2373 Initializer.WriteData(&Value, sizeof(Value));
2374
2375 VertexBufferRHI = Initializer.Finalize();
2376 }
2377};
2378
2381
2382inline FVector3f GetParticleBaseSize(const FBaseParticle& Particle, bool bKeepFlipScale = false)
2383{
2384 return bKeepFlipScale ? Particle.BaseSize : FVector3f(FMath::Abs(Particle.BaseSize.X), FMath::Abs(Particle.BaseSize.Y), FMath::Abs(Particle.BaseSize.Z));
2385}
2386
2388{
2389 return FVector2D(
2390 Particle.BaseSize.X >= 0.0f ? ScaledSize.X : -ScaledSize.X,
2391 Particle.BaseSize.Y >= 0.0f ? ScaledSize.Y : -ScaledSize.Y);
2392}
2393
2394
2396UENUM()
2398{
2400 Low,
2402 Medium,
2404 High,
2406 Critical,
2407
2408 Num UMETA(Hidden),
2409};
2410
2412UENUM()
2414{
2416 Auto,
2418 Complete,
2422 DisableTickAndKill UMETA(Hidden), //Hidden for now until I make it useful i.e. Killing particles saves memory.
2423
2424 Num UMETA(Hidden),
2425};
2426
2438
2439
2441{
2442 enum Type
2443 {
2444 // Before any version changes were made
2446 SkipCookingEmittersBasedOnDetailMode, // skip emitter cooking if their detail mode doesn't match predefined
2447 FixLegacySpawningBugs, // fixing some spawning bugs but must keep old behavior around for existing systems.
2448 AddEpicDetailMode, // adding another bitmask entry to EParticleDetailMode
2449
2450 // -----<new versions can be added above this line>-------------------------------------------------
2454 // The GUID for this custom version number
2455 const static FGuid GUID;
2456
2457private:
2459};
2460
2461#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
2462#include "CoreMinimal.h"
2464#include "Stats/Stats.h"
2465#include "UObject/ObjectMacros.h"
2466#include "Math/RandomStream.h"
2467#include "RHI.h"
2468#include "RenderResource.h"
2469#include "UniformBuffer.h"
2470#include "PrimitiveViewRelevance.h"
2471#include "PrimitiveSceneProxy.h"
2473#include "MeshBatch.h"
2475#include "PrimitiveSceneProxy.h"
2477#endif
#define NULL
Definition oodle2base.h:134
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define DECLARE_DWORD_COUNTER_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:682
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
#define DECLARE_MEMORY_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:687
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
#define FVector
Definition IOSSystemIncludes.h:8
void Init()
Definition LockFreeList.h:4
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
UE::Math::TVector2< double > FVector2D
Definition MathFwd.h:48
@ Num
Definition MetalRHIPrivate.h:234
#define UENUM(...)
Definition ObjectMacros.h:749
EDynamicEmitterType
Definition ParticleHelper.h:1121
@ DET_Mesh
Definition ParticleHelper.h:1124
@ DET_Custom
Definition ParticleHelper.h:1128
@ DET_Unknown
Definition ParticleHelper.h:1122
@ DET_AnimTrail
Definition ParticleHelper.h:1127
@ DET_Sprite
Definition ParticleHelper.h:1123
@ DET_Beam2
Definition ParticleHelper.h:1125
@ DET_Ribbon
Definition ParticleHelper.h:1126
void GetDynamicValueFromPayload(int32 InDynamicPayloadOffset, const FBaseParticle &InParticle, FVector4f &OutDynamicData)
Definition ParticleHelper.h:1015
EParticleDetailMode
Definition ParticleHelper.h:43
@ UMETA
Definition ParticleHelper.h:44
const int32 PDM_DefaultValue
Definition ParticleHelper.h:50
void Particle_SetColorFromVector(const FVector3f &InColorVec, const float InAlpha, FLinearColor &OutColor)
Definition ParticleHelper.h:126
EParticleStates
Definition ParticleHelper.h:219
@ STATE_Mask
Definition ParticleHelper.h:237
@ STATE_Particle_IgnoreCollisions
Definition ParticleHelper.h:225
@ STATE_Particle_DelayCollisions
Definition ParticleHelper.h:233
@ STATE_Particle_FreezeRotation
Definition ParticleHelper.h:229
@ STATE_Particle_Freeze
Definition ParticleHelper.h:223
@ STATE_Particle_JustSpawned
Definition ParticleHelper.h:221
@ STATE_CounterMask
Definition ParticleHelper.h:239
@ STATE_Particle_CollisionIgnoreCheck
Definition ParticleHelper.h:231
@ STATE_Particle_FreezeTranslation
Definition ParticleHelper.h:227
@ STATE_Particle_CollisionHasOccurred
Definition ParticleHelper.h:235
EParticleSignificanceLevel
Definition ParticleHelper.h:2398
ENGINE_API TGlobalResource< FNullDynamicParameterVertexBuffer > GNullDynamicParameterVertexBuffer
Definition ParticleVertexFactory.cpp:17
EParticleSystemInsignificanceReaction
Definition ParticleHelper.h:2414
FVector3f GetParticleBaseSize(const FBaseParticle &Particle, bool bKeepFlipScale=false)
Definition ParticleHelper.h:2382
FVector2D GetParticleSizeWithUVFlipInSign(const FBaseParticle &Particle, const FVector2D &ScaledSize)
Definition ParticleHelper.h:2387
@ VertexOrIndexBuffer
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT bool IsObjectReferenceCollector() const
Definition Archive.h:456
Definition GlobalRenderResources.h:300
Definition GlobalRenderResources.h:216
Definition MaterialRenderProxy.h:102
Definition MeshElementCollector.h:26
Definition MeshParticleVertexFactory.h:46
Definition ParticleHelper.h:2355
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition ParticleHelper.h:2360
Definition OutputDevice.h:133
Definition ParticleHelper.h:2241
~FParticleDynamicData()
Definition ParticleHelper.h:2248
uint32 EmitterIndex
Definition ParticleHelper.h:2270
FParticleDynamicData()
Definition ParticleHelper.h:2243
void ClearEmitterDataArray()
Definition ParticleHelper.h:2257
FVector SystemPositionForMacroUVs
Definition ParticleHelper.h:2276
uint32 GetMemoryFootprint(void) const
Definition ParticleHelper.h:2267
TArray< FDynamicEmitterDataBase *, TInlineAllocator< 12 > > DynamicEmitterDataArray
Definition ParticleHelper.h:2273
float SystemRadiusForMacroUVs
Definition ParticleHelper.h:2279
Definition ParticleHelper.h:2429
TArray< class UParticleSystem *, TInlineAllocator< 32 > > SystemsToReset
Definition ParticleHelper.h:2432
ENGINE_API ~FParticleResetContext()
Definition ParticleSystemComponent.cpp:5496
ENGINE_API void AddTemplate(class UParticleSystem *Template)
Definition ParticleSystemComponent.cpp:5474
Definition ParticleSystemSceneProxy.h:37
Definition ParticleVertexFactory.h:31
Definition PrimitiveDrawInterface.h:19
Definition RHICommandList.h:455
FRHIBufferInitializer CreateBufferInitializer(const FRHIBufferCreateDesc &CreateDesc)
Definition RHICommandList.h:792
Definition SceneView.h:2212
Definition SceneView.h:1425
Definition PrimitiveSceneProxy.h:172
Definition RenderResource.h:474
FBufferRHIRef VertexBufferRHI
Definition RenderResource.h:489
Definition Array.h:670
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
Definition RenderResource.h:543
Definition ParticleHelper.h:855
bool Contains(const ElementType &Item) const
Definition ParticleHelper.h:910
int32 Find(const ElementType &Item) const
Definition ParticleHelper.h:892
TPreallocatedArrayProxy(uint8 *ArrayStart, int32 ArraySize)
Definition ParticleHelper.h:868
int32 Num() const
Definition ParticleHelper.h:915
TPreallocatedArrayProxy()
Definition ParticleHelper.h:859
ElementType & operator[](int32 Index)
Definition ParticleHelper.h:874
const ElementType & operator[](int32 Index) const
Definition ParticleHelper.h:881
Definition MaterialInterface.h:296
Definition ParticleEmitter.h:98
Definition ParticleLODLevel.h:22
Definition ParticleModuleBeamModifier.h:66
Definition ParticleModuleBeamNoise.h:24
Definition ParticleModuleBeamSource.h:26
Definition ParticleModuleBeamTarget.h:25
Definition ParticleModuleOrientationAxisLock.h:42
Definition ParticleModuleTrailSource.h:41
Definition ParticleModuleTypeDataBeam2.h:69
Definition ParticleModuleTypeDataMesh.h:63
Definition ParticleModule.h:149
Definition ParticleSpriteEmitter.h:28
Definition ParticleSystem.h:160
Definition StaticMesh.h:593
Definition SceneComponent.h:24
Type
Definition RHIFeatureLevel.h:20
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition ParticleHelper.h:814
FVector3f Tangent
Definition ParticleHelper.h:818
FVector3f Direction
Definition ParticleHelper.h:816
float InterpolationParameter
Definition ParticleHelper.h:822
float Length
Definition ParticleHelper.h:820
Definition ParticleHelper.h:1070
~FAsyncBufferFillData()
Definition ParticleHelper.h:1099
void * IndexData
Definition ParticleHelper.h:1086
void * VertexData
Definition ParticleHelper.h:1082
int32 VertexSize
Definition ParticleHelper.h:1080
int32 IndexCount
Definition ParticleHelper.h:1084
FMatrix WorldToLocal
Definition ParticleHelper.h:1074
FMatrix LocalToWorld
Definition ParticleHelper.h:1072
int32 OutTriangleCount
Definition ParticleHelper.h:1088
void * DynamicParameterData
Definition ParticleHelper.h:1090
FAsyncBufferFillData()
Definition ParticleHelper.h:1093
int32 VertexCount
Definition ParticleHelper.h:1078
const FSceneView * View
Definition ParticleHelper.h:1076
Definition ParticleHelper.h:590
FVector3f SourceVelocity
Definition ParticleHelper.h:593
uint32 SourcePointer
Definition ParticleHelper.h:592
int32 SourceIndex
Definition ParticleHelper.h:591
Definition ParticleHelper.h:181
FVector3f Velocity
Definition ParticleHelper.h:191
float OneOverMaxLifetime
Definition ParticleHelper.h:210
FVector3f BaseVelocity
Definition ParticleHelper.h:187
float Placeholder0
Definition ParticleHelper.h:211
FVector3f BaseSize
Definition ParticleHelper.h:195
int32 Flags
Definition ParticleHelper.h:200
float Placeholder1
Definition ParticleHelper.h:212
float RotationRate
Definition ParticleHelper.h:196
FVector OldLocation
Definition ParticleHelper.h:183
FVector Location
Definition ParticleHelper.h:184
float Rotation
Definition ParticleHelper.h:188
FVector3f Size
Definition ParticleHelper.h:199
float BaseRotationRate
Definition ParticleHelper.h:192
FLinearColor Color
Definition ParticleHelper.h:203
FLinearColor BaseColor
Definition ParticleHelper.h:206
float RelativeTime
Definition ParticleHelper.h:209
Definition ParticleHelper.h:621
FVector Direction
Definition ParticleHelper.h:643
float TravelRatio
Definition ParticleHelper.h:649
FVector SourcePoint
Definition ParticleHelper.h:623
float TargetStrength
Definition ParticleHelper.h:634
int32 Steps
Definition ParticleHelper.h:647
FVector SourceTangent
Definition ParticleHelper.h:625
FVector TargetPoint
Definition ParticleHelper.h:630
FVector TargetTangent
Definition ParticleHelper.h:632
int32 TriangleCount
Definition ParticleHelper.h:652
int32 Flags
Definition ParticleHelper.h:668
int32 InterpolationSteps
Definition ParticleHelper.h:640
double StepSize
Definition ParticleHelper.h:645
float SourceStrength
Definition ParticleHelper.h:627
int32 Lock_Max_NumNoisePoints
Definition ParticleHelper.h:637
Definition ParticleHelper.h:685
FVector Position
Definition ParticleHelper.h:692
void UpdatePosition(FVector &Value)
Definition ParticleHelper.h:697
void UpdateStrength(float &Value)
Definition ParticleHelper.h:739
uint32 bModifyStrength
Definition ParticleHelper.h:690
uint32 bModifyPosition
Definition ParticleHelper.h:686
uint32 bScalePosition
Definition ParticleHelper.h:687
uint32 bScaleStrength
Definition ParticleHelper.h:691
FVector Tangent
Definition ParticleHelper.h:693
uint32 bModifyTangent
Definition ParticleHelper.h:688
void UpdateTangent(FVector &Value, bool bAbsolute)
Definition ParticleHelper.h:712
uint32 bScaleTangent
Definition ParticleHelper.h:689
float Strength
Definition ParticleHelper.h:694
Definition ParticleHelper.h:679
int32 NoiseIndex
Definition ParticleHelper.h:680
Definition ParticleHelper.h:673
int32 ParticleIndex
Definition ParticleHelper.h:674
Definition ParticleHelper.h:1027
float BaseOffset
Definition ParticleHelper.h:1029
float Offset
Definition ParticleHelper.h:1031
Definition ParticleHelper.h:2209
virtual int32 FillVertexData(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:6120
FDynamicAnimTrailEmitterData(const UParticleModuleRequired *RequiredModule)
Definition ParticleHelper.h:2210
virtual void RenderDebug(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View, bool bCrosses) const
Definition ParticleSystemRender.cpp:5976
virtual ~FDynamicAnimTrailEmitterData()
Definition ParticleHelper.h:2215
FDynamicTrailsEmitterReplayData Source
Definition ParticleHelper.h:2232
Definition ParticleHelper.h:1937
virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy *Proxy, const FSceneView *View, const FSceneViewFamily &ViewFamily, int32 ViewIndex, FMeshElementCollector &Collector) const override
Definition ParticleSystemRender.cpp:2218
virtual void RenderDirectLine(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View) const
Definition ParticleSystemRender.cpp:2345
virtual void DoBufferFill(FAsyncBufferFillData &Me) const override
Definition ParticleSystemRender.cpp:2151
static const uint32 MaxBeams
Definition ParticleHelper.h:1938
int32 FillVertexData_NoNoise(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:2948
virtual int32 GetDynamicParameterVertexStride() const override
Definition ParticleHelper.h:1989
FDynamicBeam2EmitterReplayData Source
Definition ParticleHelper.h:2002
int32 FillData_InterpolatedNoise(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:4326
virtual void RenderLines(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View) const
Definition ParticleSystemRender.cpp:2371
virtual const FDynamicEmitterReplayDataBase & GetSource() const override
Definition ParticleHelper.h:1970
virtual void RenderDebug(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View, bool bCrosses) const override
Definition ParticleSystemRender.cpp:2787
static const uint32 MaxInterpolationPoints
Definition ParticleHelper.h:1939
int32 FillData_Noise(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:3361
virtual void GetIndexAllocInfo(int32 &OutNumIndices, int32 &OutStride) const override
Definition ParticleSystemRender.cpp:2791
~FDynamicBeam2EmitterData()
Definition ParticleSystemRender.cpp:2124
int32 FillIndexData(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:2911
static const uint32 MaxNoiseFrequency
Definition ParticleHelper.h:1940
int32 LastFramePreRendered
Definition ParticleHelper.h:2004
FDynamicBeam2EmitterData(const UParticleModuleRequired *RequiredModule)
Definition ParticleHelper.h:1942
virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type) const override
Definition ParticleHelper.h:1981
Definition ParticleHelper.h:1796
bool bUseSource
Definition ParticleHelper.h:1817
bool bRenderGeometry
Definition ParticleHelper.h:1836
virtual void Serialize(FArchive &Ar)
Definition ParticleHelper.h:1884
bool bRenderLines
Definition ParticleHelper.h:1838
int32 NoiseRateOffset
Definition ParticleHelper.h:1807
bool bHighFreqNoise_Enabled
Definition ParticleHelper.h:1815
int32 NoiseTessellation
Definition ParticleHelper.h:1822
int32 InterpolationPoints
Definition ParticleHelper.h:1833
bool bRenderTessellation
Definition ParticleHelper.h:1839
float NoiseLockRadius
Definition ParticleHelper.h:1827
int32 Sheets
Definition ParticleHelper.h:1820
bool bRenderDirectLine
Definition ParticleHelper.h:1837
FDynamicBeam2EmitterReplayData()
Definition ParticleHelper.h:1842
int32 TextureTile
Definition ParticleHelper.h:1830
float NoiseLockTime
Definition ParticleHelper.h:1826
int32 InterpolatedPointsOffset
Definition ParticleHelper.h:1806
int32 Frequency
Definition ParticleHelper.h:1821
bool bLowFreqNoise_Enabled
Definition ParticleHelper.h:1814
int32 TaperValuesOffset
Definition ParticleHelper.h:1811
int32 NextNoisePointsOffset
Definition ParticleHelper.h:1810
int32 UpVectorStepSize
Definition ParticleHelper.h:1802
int32 TargetNoisePointsOffset
Definition ParticleHelper.h:1809
int32 IndexStride
Definition ParticleHelper.h:1799
bool bTargetNoise
Definition ParticleHelper.h:1819
float NoiseTangentStrength
Definition ParticleHelper.h:1824
int32 VertexCount
Definition ParticleHelper.h:1797
int32 BeamDataOffset
Definition ParticleHelper.h:1805
TArray< int32 > TrianglesPerSheet
Definition ParticleHelper.h:1801
int32 NoiseDeltaTimeOffset
Definition ParticleHelper.h:1808
int32 IndexCount
Definition ParticleHelper.h:1798
uint8 TaperMethod
Definition ParticleHelper.h:1832
float NoiseTension
Definition ParticleHelper.h:1828
float NoiseRangeScale
Definition ParticleHelper.h:1823
int32 NoiseDistanceScaleOffset
Definition ParticleHelper.h:1812
float TextureTileDistance
Definition ParticleHelper.h:1831
FVector3f NoiseSpeed
Definition ParticleHelper.h:1825
bool bSmoothNoise_Enabled
Definition ParticleHelper.h:1816
bool bUseTarget
Definition ParticleHelper.h:1818
Definition ParticleHelper.h:1265
uint32 bValid
Definition ParticleHelper.h:1319
virtual ~FDynamicEmitterDataBase()
Definition ParticleHelper.h:1268
virtual const FMacroUVOverride & GetMacroUVOverride() const
Definition ParticleHelper.h:1312
virtual const FDynamicEmitterReplayDataBase & GetSource() const =0
TStatId StatID
Definition ParticleHelper.h:1315
virtual const FMaterialRenderProxy * GetMaterialRenderProxy()=0
int32 EmitterIndex
Definition ParticleHelper.h:1321
virtual void ReleaseRenderThreadResources(const FParticleSystemSceneProxy *InOwnerProxy)
Definition ParticleHelper.h:1290
virtual void GatherSimpleLights(const FParticleSystemSceneProxy *Proxy, const FSceneViewFamily &ViewFamily, FSimpleLightArray &OutParticleLights) const
Definition ParticleHelper.h:1306
uint32 bSelected
Definition ParticleHelper.h:1317
virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy *Proxy, const FSceneView *View, const FSceneViewFamily &ViewFamily, int32 ViewIndex, FMeshElementCollector &Collector) const
Definition ParticleHelper.h:1294
virtual void UpdateRenderThreadResourcesEmitter(const FParticleSystemSceneProxy *InOwnerProxy)
Definition ParticleHelper.h:1281
Definition ParticleHelper.h:1174
FMacroUVOverride MacroUVOverride
Definition ParticleHelper.h:1190
virtual ~FDynamicEmitterReplayDataBase()
Definition ParticleHelper.h:1202
int32 ParticleStride
Definition ParticleHelper.h:1181
FDynamicEmitterReplayDataBase()
Definition ParticleHelper.h:1193
virtual void Serialize(FArchive &Ar)
Definition ParticleHelper.h:1207
FVector3f Scale
Definition ParticleHelper.h:1184
EDynamicEmitterType eEmitterType
Definition ParticleHelper.h:1176
FParticleDataContainer DataContainer
Definition ParticleHelper.h:1182
int32 SortMode
Definition ParticleHelper.h:1187
int32 ActiveParticleCount
Definition ParticleHelper.h:1179
Definition ParticleHelper.h:1644
virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy *Proxy, const FSceneView *View, const FSceneViewFamily &ViewFamily, int32 ViewIndex, FMeshElementCollector &Collector) const override
Definition ParticleSystemRender.cpp:1168
void GetParticleTransform(const FBaseParticle &InParticle, const FParticleSystemSceneProxy *Proxy, const FSceneView *View, FMatrix &OutTransformMat) const
Definition ParticleSystemRender.cpp:1421
uint32 bUseMeshLockedAxis
Definition ParticleHelper.h:1771
uint32 bApplyPreRotation
Definition ParticleHelper.h:1769
virtual void UpdateRenderThreadResourcesEmitter(const FParticleSystemSceneProxy *InOwnerProxy) override
Definition ParticleSystemRender.cpp:1104
void CalculateParticleTransform(const FMatrix &ProxyLocalToWorld, const FVector &ParticleLocation, float ParticleRotation, const FVector3f &ParticleVelocity, const FVector3f &ParticleSize, const FVector3f &ParticlePayloadInitialOrientation, const FVector3f &ParticlePayloadRotation, const FVector &ParticlePayloadCameraOffset, const FVector3f &ParticlePayloadOrbitOffset, const FVector &ViewOrigin, const FVector3f &ViewDirection, FMatrix &OutTransformMat) const
Definition ParticleSystemRender.cpp:1523
void GetInstanceData(void *InstanceData, void *DynamicParameterData, void *PrevTransformBuffer, const FParticleSystemSceneProxy *Proxy, const FSceneView *View, uint32 InstanceFactor) const
Definition ParticleSystemRender.cpp:1874
bool bUseStaticMeshLODs
Definition ParticleHelper.h:1787
FDynamicMeshEmitterReplayData Source
Definition ParticleHelper.h:1756
virtual void GatherSimpleLights(const FParticleSystemSceneProxy *Proxy, const FSceneViewFamily &ViewFamily, FSimpleLightArray &OutParticleLights) const override
Definition ParticleSystemRender.cpp:1416
void GetParticlePrevTransform(const FBaseParticle &InParticle, const FParticleSystemSceneProxy *Proxy, const FSceneView *View, FMatrix &OutTransformMat) const
Definition ParticleSystemRender.cpp:1472
uint32 GetMeshLODIndexFromProxy(const FParticleSystemSceneProxy *InOwnerProxy) const
Definition ParticleSystemRender.cpp:1145
int32 LastFramePreRendered
Definition ParticleHelper.h:1758
virtual int32 GetDynamicParameterVertexStride() const override
Definition ParticleHelper.h:1729
uint8 CameraFacingOption
Definition ParticleHelper.h:1785
void SetupVertexFactory(FRHICommandListBase &RHICmdList, FMeshParticleVertexFactory *InVertexFactory, const FStaticMeshLODResources &LODResources, uint32 LODIdx) const
Definition ParticleSystemRender.cpp:2112
virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type) const override
Definition ParticleHelper.h:1724
virtual void ReleaseRenderThreadResources(const FParticleSystemSceneProxy *InOwnerProxy) override
Definition ParticleSystemRender.cpp:1115
int32 LastCalculatedMeshLOD
Definition ParticleHelper.h:1789
uint32 MeshTypeDataOffset
Definition ParticleHelper.h:1764
TArray< FMaterialRenderProxy *, TInlineAllocator< 2 > > MeshMaterials
Definition ParticleHelper.h:1761
virtual const FDynamicEmitterReplayDataBase & GetSource() const override
Definition ParticleHelper.h:1748
UStaticMesh * StaticMesh
Definition ParticleHelper.h:1760
uint32 bUseCameraFacing
Definition ParticleHelper.h:1773
const FParticleMeshEmitterInstance * EmitterInstance
Definition ParticleHelper.h:1790
uint32 bFaceCameraDirectionRatherThanPosition
Definition ParticleHelper.h:1783
uint32 bApplyParticleRotationAsSpin
Definition ParticleHelper.h:1778
float LODSizeScale
Definition ParticleHelper.h:1788
virtual ~FDynamicMeshEmitterData()
Definition ParticleSystemRender.cpp:997
virtual const FDynamicSpriteEmitterReplayDataBase * GetSourceData() const override
Definition ParticleHelper.h:1737
Definition ParticleHelper.h:1593
int32 SubUVDataOffset
Definition ParticleHelper.h:1595
bool bScaleUV
Definition ParticleHelper.h:1598
int32 SubImages_Vertical
Definition ParticleHelper.h:1597
int32 SubUVInterpMethod
Definition ParticleHelper.h:1594
bool bMeshRotationActive
Definition ParticleHelper.h:1602
int32 MeshRotationOffset
Definition ParticleHelper.h:1599
uint8 MeshAlignment
Definition ParticleHelper.h:1601
int32 MeshMotionBlurOffset
Definition ParticleHelper.h:1600
FVector3f LockedAxis
Definition ParticleHelper.h:1603
virtual void Serialize(FArchive &Ar)
Definition ParticleHelper.h:1622
int32 SubImages_Horizontal
Definition ParticleHelper.h:1596
FDynamicMeshEmitterReplayData()
Definition ParticleHelper.h:1606
Definition ParticleHelper.h:2170
virtual const FDynamicRibbonEmitterReplayData * GetSourceData() const
Definition ParticleHelper.h:2191
virtual int32 FillVertexData(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:5411
uint32 RenderAxisOption
Definition ParticleHelper.h:2204
virtual void RenderDebug(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View, bool bCrosses) const
Definition ParticleSystemRender.cpp:5226
FDynamicRibbonEmitterReplayData Source
Definition ParticleHelper.h:2201
FDynamicRibbonEmitterData(const UParticleModuleRequired *RequiredModule)
Definition ParticleHelper.h:2171
virtual ~FDynamicRibbonEmitterData()
Definition ParticleHelper.h:2176
Definition ParticleHelper.h:2056
FDynamicRibbonEmitterReplayData()
Definition ParticleHelper.h:2061
virtual void Serialize(FArchive &Ar)
Definition ParticleHelper.h:2068
int32 MaxTessellationBetweenParticles
Definition ParticleHelper.h:2058
Definition ParticleHelper.h:1366
uint32 bUsesDynamicParameter
Definition ParticleHelper.h:1483
virtual ~FDynamicSpriteEmitterDataBase()
Definition ParticleHelper.h:1374
virtual void RenderDebug(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View, bool bCrosses) const
Definition ParticleSystemRender.cpp:265
virtual const FDynamicSpriteEmitterReplayDataBase * GetSourceData() const
Definition ParticleHelper.h:1428
void SortSpriteParticles(int32 SortMode, bool bLocalSpace, int32 ParticleCount, const uint8 *ParticleData, int32 ParticleStride, const uint16 *ParticleIndices, const FSceneView *View, const FMatrix &LocalToWorld, FParticleOrder *ParticleOrder) const
Definition ParticleSystemRender.cpp:196
virtual int32 GetDynamicParameterVertexStride() const
Definition ParticleHelper.h:1419
const FMaterialRenderProxy * GetMaterialRenderProxy()
Definition ParticleHelper.h:1385
virtual void GetIndexAllocInfo(int32 &OutNumIndices, int32 &OutStride) const
Definition ParticleHelper.h:1437
FDynamicSpriteEmitterDataBase(const UParticleModuleRequired *RequiredModule)
Definition ParticleHelper.h:1367
void BuildViewFillData(const FParticleSystemSceneProxy *Proxy, const FSceneView *InView, int32 InVertexCount, int32 InVertexSize, int32 InDynamicParameterVertexSize, FGlobalDynamicIndexBuffer &DynamicIndexBuffer, FGlobalDynamicVertexBuffer &DynamicVertexBuffer, FGlobalDynamicVertexBufferAllocation &DynamicVertexAllocation, FGlobalDynamicIndexBufferAllocation &DynamicIndexAllocation, FGlobalDynamicVertexBufferAllocation *DynamicParameterAllocation, FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:298
virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type) const
Definition ParticleHelper.h:1410
virtual void DoBufferFill(FAsyncBufferFillData &Me) const
Definition ParticleHelper.h:1452
const FMaterialRenderProxy * MaterialResource
Definition ParticleHelper.h:1481
Definition ParticleHelper.h:1509
virtual int32 GetDynamicParameterVertexStride() const override
Definition ParticleHelper.h:1533
FDynamicSpriteEmitterData(const UParticleModuleRequired *RequiredModule)
Definition ParticleHelper.h:1510
virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type InFeatureLevel) const override
Definition ParticleHelper.h:1525
virtual void UpdateRenderThreadResourcesEmitter(const FParticleSystemSceneProxy *InOwnerProxy) override
Definition ParticleSystemRender.cpp:865
FDynamicSpriteEmitterReplayData Source
Definition ParticleHelper.h:1584
bool GetVertexAndIndexData(void *VertexData, void *DynamicParameterVertexData, void *FillIndexData, FParticleOrder *ParticleOrder, const FVector &InCameraPosition, const FMatrix &InLocalToWorld, uint32 InstanceFactor) const
Definition ParticleSystemRender.cpp:413
FParticleSpriteUniformParameters UniformParameters
Definition ParticleHelper.h:1587
virtual const FDynamicEmitterReplayDataBase & GetSource() const override
Definition ParticleHelper.h:1576
~FDynamicSpriteEmitterData()
Definition ParticleHelper.h:1515
virtual void GatherSimpleLights(const FParticleSystemSceneProxy *Proxy, const FSceneViewFamily &ViewFamily, FSimpleLightArray &OutParticleLights) const override
Definition ParticleSystemRender.cpp:653
virtual const FDynamicSpriteEmitterReplayDataBase * GetSourceData() const override
Definition ParticleHelper.h:1541
virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy *Proxy, const FSceneView *View, const FSceneViewFamily &ViewFamily, int32 ViewIndex, FMeshElementCollector &Collector) const override
Definition ParticleSystemRender.cpp:675
Definition ParticleHelper.h:1327
uint8 LockAxisFlag
Definition ParticleHelper.h:1346
float MaxFacingCameraBlendDistance
Definition ParticleHelper.h:1353
int32 MaxDrawCount
Definition ParticleHelper.h:1334
struct FParticleRequiredModule * RequiredModule
Definition ParticleHelper.h:1329
int32 LightDataOffset
Definition ParticleHelper.h:1337
FVector3f LWCTile
Definition ParticleHelper.h:1333
uint8 ScreenAlignment
Definition ParticleHelper.h:1345
bool bUseLocalSpace
Definition ParticleHelper.h:1343
int32 OrbitModuleOffset
Definition ParticleHelper.h:1335
uint8 EmitterRenderMode
Definition ParticleHelper.h:1347
int32 SubImages_Horizontal
Definition ParticleHelper.h:1341
float InvDeltaSeconds
Definition ParticleHelper.h:1332
virtual void Serialize(FArchive &Ar)
Definition ParticleEmitterInstances.cpp:4051
int32 CameraPayloadOffset
Definition ParticleHelper.h:1339
bool bUseVelocityForMotionBlur
Definition ParticleHelper.h:1350
bool bLockAxis
Definition ParticleHelper.h:1344
float LightVolumetricScatteringIntensity
Definition ParticleHelper.h:1338
uint8 EmitterNormalsMode
Definition ParticleHelper.h:1348
UMaterialInterface * MaterialInterface
Definition ParticleHelper.h:1328
FVector2f PivotOffset
Definition ParticleHelper.h:1349
bool bRemoveHMDRoll
Definition ParticleHelper.h:1351
FDynamicSpriteEmitterReplayDataBase()
Definition ParticleEmitterInstances.cpp:4015
FVector3f NormalsSphereCenter
Definition ParticleHelper.h:1330
int32 DynamicParameterDataOffset
Definition ParticleHelper.h:1336
int32 SubImages_Vertical
Definition ParticleHelper.h:1342
~FDynamicSpriteEmitterReplayDataBase()
Definition ParticleEmitterInstances.cpp:4045
int32 SubUVDataOffset
Definition ParticleHelper.h:1340
float MinFacingCameraBlendDistance
Definition ParticleHelper.h:1352
FVector3f NormalsCylinderDirection
Definition ParticleHelper.h:1331
Definition ParticleHelper.h:1489
FDynamicSpriteEmitterReplayData()
Definition ParticleHelper.h:1491
virtual void Serialize(FArchive &Ar)
Definition ParticleHelper.h:1497
Definition ParticleHelper.h:2078
virtual const FDynamicEmitterReplayDataBase & GetSource() const override
Definition ParticleHelper.h:2108
uint32 bRenderTessellation
Definition ParticleHelper.h:2160
virtual void RenderDebug(const FParticleSystemSceneProxy *Proxy, FPrimitiveDrawInterface *PDI, const FSceneView *View, bool bCrosses) const override
Definition ParticleSystemRender.cpp:5116
virtual int32 FillIndexData(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:5128
uint32 bClipSourceSegement
Definition ParticleHelper.h:2156
virtual void DoBufferFill(FAsyncBufferFillData &Me) const override
Definition ParticleHelper.h:2120
FDynamicTrailsEmitterReplayData * SourcePointer
Definition ParticleHelper.h:2152
~FDynamicTrailsEmitterData()
Definition ParticleSystemRender.cpp:4951
virtual int32 GetDynamicVertexStride(ERHIFeatureLevel::Type) const override
Definition ParticleHelper.h:2134
uint32 bTextureTileDistance
Definition ParticleHelper.h:2161
float DistanceTessellationStepSize
Definition ParticleHelper.h:2163
uint32 bRenderParticles
Definition ParticleHelper.h:2158
uint32 bRenderTangents
Definition ParticleHelper.h:2159
virtual void GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy *Proxy, const FSceneView *View, const FSceneViewFamily &ViewFamily, int32 ViewIndex, FMeshElementCollector &Collector) const override
Definition ParticleSystemRender.cpp:4973
virtual int32 FillVertexData(struct FAsyncBufferFillData &Data) const
Definition ParticleSystemRender.cpp:5208
float TangentTessellationScalar
Definition ParticleHelper.h:2164
virtual void GetIndexAllocInfo(int32 &OutNumIndices, int32 &OutStride) const override
Definition ParticleSystemRender.cpp:5121
virtual int32 GetDynamicParameterVertexStride() const override
Definition ParticleHelper.h:2142
float TextureTileDistance
Definition ParticleHelper.h:2165
uint32 bRenderGeometry
Definition ParticleHelper.h:2157
int32 LastFramePreRendered
Definition ParticleHelper.h:2154
virtual const FDynamicTrailsEmitterReplayData * GetSourceData() const override
Definition ParticleHelper.h:2114
FDynamicTrailsEmitterData(const UParticleModuleRequired *RequiredModule)
Definition ParticleHelper.h:2079
Definition ParticleHelper.h:2009
int32 IndexStride
Definition ParticleHelper.h:2013
FDynamicTrailsEmitterReplayData()
Definition ParticleHelper.h:2023
int32 IndexCount
Definition ParticleHelper.h:2012
int32 TrailDataOffset
Definition ParticleHelper.h:2016
int32 TrailCount
Definition ParticleHelper.h:2019
int32 MaxActiveParticleCount
Definition ParticleHelper.h:2018
int32 VertexCount
Definition ParticleHelper.h:2011
int32 Sheets
Definition ParticleHelper.h:2020
int32 PrimitiveCount
Definition ParticleHelper.h:2010
virtual void Serialize(FArchive &Ar)
Definition ParticleHelper.h:2036
Definition ParticleHelper.h:1003
float DynamicParameterValue[4]
Definition ParticleHelper.h:1005
Definition ParticleHelper.h:579
float ImageIndex
Definition ParticleHelper.h:582
float RandomImageTime
Definition ParticleHelper.h:583
Definition GlobalRenderResources.h:263
Definition GlobalRenderResources.h:195
Definition Guid.h:109
Definition ParticleHelper.h:597
float InverseExposureBlend
Definition ParticleHelper.h:602
bool bAffectsTranslucency
Definition ParticleHelper.h:604
float RadiusScale
Definition ParticleHelper.h:600
bool bHighQuality
Definition ParticleHelper.h:605
float LightExponent
Definition ParticleHelper.h:601
bool bValid
Definition ParticleHelper.h:603
FVector3f ColorScale
Definition ParticleHelper.h:598
uint64 LightId
Definition ParticleHelper.h:599
Definition Color.h:48
Definition ParticleHelper.h:848
int32 LastSelectedIndex
Definition ParticleHelper.h:849
Definition ParticleHelper.h:1156
bool bOverride
Definition ParticleHelper.h:1159
friend FArchive & operator<<(FArchive &Ar, FMacroUVOverride &O)
Definition ParticleHelper.h:1163
float Radius
Definition ParticleHelper.h:1160
FVector3f Position
Definition ParticleHelper.h:1161
FMacroUVOverride()
Definition ParticleHelper.h:1157
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition ParticleHelper.h:837
FVector3f BaseParticlePrevVelocity
Definition ParticleHelper.h:838
FVector3f PayloadPrevRotation
Definition ParticleHelper.h:840
FVector3f BaseParticlePrevSize
Definition ParticleHelper.h:839
float BaseParticlePrevRotation
Definition ParticleHelper.h:842
float PayloadPrevCameraOffset
Definition ParticleHelper.h:843
FVector3f PayloadPrevOrbitOffset
Definition ParticleHelper.h:841
Definition ParticleHelper.h:460
float DynamicValue[4]
Definition ParticleHelper.h:462
Definition ParticleHelper.h:466
FVector4f PrevTransform1
Definition ParticleHelper.h:468
FVector4f PrevTransform2
Definition ParticleHelper.h:469
FVector4f PrevTransform0
Definition ParticleHelper.h:467
Definition ParticleHelper.h:439
FVector4f Velocity
Definition ParticleHelper.h:447
int16 SubUVParams[4]
Definition ParticleHelper.h:450
float RelativeTime
Definition ParticleHelper.h:456
float SubUVLerp
Definition ParticleHelper.h:453
FVector4f Transform[3]
Definition ParticleHelper.h:444
FLinearColor Color
Definition ParticleHelper.h:441
Definition ParticleHelper.h:827
FVector3f CurContinuousRotation
Definition ParticleHelper.h:831
FVector3f InitialOrientation
Definition ParticleHelper.h:828
FVector3f InitRotation
Definition ParticleHelper.h:829
FVector3f RotationRate
Definition ParticleHelper.h:832
FVector3f Rotation
Definition ParticleHelper.h:830
FVector3f RotationRateBase
Definition ParticleHelper.h:833
Definition ParticleHelper.h:929
int32 SourceIndex
Definition ParticleHelper.h:931
Definition ParticleHelper.h:938
FVector3f RotationRate
Definition ParticleHelper.h:948
FVector3f PreviousOffset
Definition ParticleHelper.h:950
FVector3f Offset
Definition ParticleHelper.h:942
FVector3f Rotation
Definition ParticleHelper.h:944
FVector3f BaseRotationRate
Definition ParticleHelper.h:946
FVector3f BaseOffset
Definition ParticleHelper.h:940
Definition ParticleEmitterInstances.h:992
Definition ParticleHelper.h:432
float DynamicValue[4]
Definition ParticleHelper.h:434
Definition ParticleHelper.h:404
float ParticleId
Definition ParticleHelper.h:412
float SubImageIndex
Definition ParticleHelper.h:418
FLinearColor Color
Definition ParticleHelper.h:420
float Tex_V2
Definition ParticleHelper.h:427
FVector2f Size
Definition ParticleHelper.h:414
FVector3f Position
Definition ParticleHelper.h:406
float Tex_U2
Definition ParticleHelper.h:426
float RelativeTime
Definition ParticleHelper.h:408
FVector3f OldPosition
Definition ParticleHelper.h:410
float Tex_V
Definition ParticleHelper.h:423
float Rotation
Definition ParticleHelper.h:416
float Tex_U
Definition ParticleHelper.h:422
Definition ParticleHelper.h:974
uint8 Padding1
Definition ParticleHelper.h:978
uint8 Padding3
Definition ParticleHelper.h:980
uint8 Padding2
Definition ParticleHelper.h:979
uint8 CurrentLODBoundsCheckCount
Definition ParticleHelper.h:976
Definition ParticleHelper.h:965
FVector3f UsedDampingFactor
Definition ParticleHelper.h:966
float Delay
Definition ParticleHelper.h:969
int32 UsedCollisions
Definition ParticleHelper.h:968
FVector3f UsedDampingFactorRotation
Definition ParticleHelper.h:967
Definition ParticleHelper.h:1132
void Alloc(int32 InParticleDataNumBytes, int32 InParticleIndicesNumShorts)
Definition ParticleEmitterInstances.cpp:308
uint16 * ParticleIndices
Definition ParticleHelper.h:1137
FParticleDataContainer()
Definition ParticleHelper.h:1139
int32 MemBlockSize
Definition ParticleHelper.h:1133
~FParticleDataContainer()
Definition ParticleHelper.h:1147
int32 ParticleDataNumBytes
Definition ParticleHelper.h:1134
void Free()
Definition ParticleEmitterInstances.cpp:321
uint8 * ParticleData
Definition ParticleHelper.h:1136
int32 ParticleIndicesNumShorts
Definition ParticleHelper.h:1135
Definition ParticleHelper.h:987
uint32 bBurstEventsPresent
Definition ParticleHelper.h:991
uint32 bSpawnEventsPresent
Definition ParticleHelper.h:988
int32 DeathTrackingCount
Definition ParticleHelper.h:994
uint32 bDeathEventsPresent
Definition ParticleHelper.h:989
int32 SpawnTrackingCount
Definition ParticleHelper.h:993
int32 BurstTrackingCount
Definition ParticleHelper.h:996
int32 CollisionTrackingCount
Definition ParticleHelper.h:995
uint32 bCollisionEventsPresent
Definition ParticleHelper.h:990
Definition ParticleEmitterInstances.h:891
Definition ParticleHelper.h:1044
FParticleOrder(int32 InParticleIndex, uint32 InC)
Definition ParticleHelper.h:1058
float Z
Definition ParticleHelper.h:1049
int32 ParticleIndex
Definition ParticleHelper.h:1045
uint32 C
Definition ParticleHelper.h:1050
FParticleOrder(int32 InParticleIndex, float InZ)
Definition ParticleHelper.h:1053
Definition ParticlePerfStats.h:302
Definition ParticleHelper.h:1036
FRandomStream RandomStream
Definition ParticleHelper.h:1037
Definition ParticleModuleRequired.h:108
Definition ParticleHelper.h:957
float CurrentDistanceTravelled
Definition ParticleHelper.h:958
Definition ParticleEmitterInstances.h:839
Definition ParticleHelper.h:373
FVector3f Position
Definition ParticleHelper.h:377
FVector2f Size
Definition ParticleHelper.h:385
float ParticleId
Definition ParticleHelper.h:383
FLinearColor Color
Definition ParticleHelper.h:391
float Rotation
Definition ParticleHelper.h:387
float RelativeTime
Definition ParticleHelper.h:379
FVector2f UV
Definition ParticleHelper.h:375
float SubImageIndex
Definition ParticleHelper.h:389
FVector3f OldPosition
Definition ParticleHelper.h:381
Definition ParticleHelper.h:350
FVector3f OldPosition
Definition ParticleHelper.h:356
FLinearColor Color
Definition ParticleHelper.h:366
FVector2f Size
Definition ParticleHelper.h:360
float Rotation
Definition ParticleHelper.h:362
FVector3f Position
Definition ParticleHelper.h:352
float ParticleId
Definition ParticleHelper.h:358
float SubImageIndex
Definition ParticleHelper.h:364
float RelativeTime
Definition ParticleHelper.h:354
Definition ParticleHelper.h:2441
Type
Definition ParticleHelper.h:2443
@ SkipCookingEmittersBasedOnDetailMode
Definition ParticleHelper.h:2446
@ LatestVersion
Definition ParticleHelper.h:2452
@ FixLegacySpawningBugs
Definition ParticleHelper.h:2447
@ VersionPlusOne
Definition ParticleHelper.h:2451
@ AddEpicDetailMode
Definition ParticleHelper.h:2448
@ BeforeCustomVersionWasAdded
Definition ParticleHelper.h:2445
static const FGuid GUID
Definition ParticleHelper.h:2455
Definition ParticleHelper.h:397
float DynamicValue[4]
Definition ParticleHelper.h:399
Definition RHIResources.h:1417
FRHIBufferCreateDesc & SetInitActionInitializer()
Definition RHIResources.h:1542
FRHIBufferCreateDesc & SetInitialState(ERHIAccess InInitialState)
Definition RHIResources.h:1528
static FRHIBufferCreateDesc CreateVertex(const TCHAR *InDebugName)
Definition RHIResources.h:1438
FRHIBufferCreateDesc & AddUsage(EBufferUsageFlags InUsage)
Definition RHIResources.h:1524
Definition RHIBufferInitializer.h:12
void WriteData(const void *Source, size_t Size)
Definition RHIBufferInitializer.h:37
Definition RandomStream.h:20
Definition ParticleHelper.h:803
int32 SourceIndex
Definition ParticleHelper.h:809
FVector3f Tangent
Definition ParticleHelper.h:805
FVector3f Up
Definition ParticleHelper.h:807
Definition StaticMeshResources.h:426
Definition ParticleHelper.h:757
int32 Flags
Definition ParticleHelper.h:779
float PinchScaleFactor
Definition ParticleHelper.h:795
float SpawnDelta
Definition ParticleHelper.h:787
uint32 bInterpolatedSpawn
Definition ParticleHelper.h:797
int32 TriangleCount
Definition ParticleHelper.h:783
int32 TrailIndex
Definition ParticleHelper.h:781
uint32 bMovementSpawned
Definition ParticleHelper.h:799
int32 RenderingInterpCount
Definition ParticleHelper.h:793
float SpawnTime
Definition ParticleHelper.h:785
int32 SpawnedTessellationPoints
Definition ParticleHelper.h:791
float TiledU
Definition ParticleHelper.h:789
Definition LightweightStats.h:416
static CORE_API TQuat< double > FindBetweenNormals(const TVector< double > &Normal1, const TVector< double > &Normal2)
Definition UnrealMath.cpp:1440
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62