本文基于UE4版本4.25.3,对Cascade粒子系统的移动端渲染管线进行简单的概括和描述。
Game Thread部分
粒子系统Actor被Spawn(或所在的Level被加载)的时候,UParticleSystemComponent注册和初始化,并通过CreateSceneProxy函数注册和创建FParticleSystemSceneProxy。
UParticleSystemComponent的主要数据成员是TArray<struct FParticleEmitterInstance*> EmitterInstances,包含粒子系统的所有粒子发射器。每一个粒子发射器对应一个FParticleEmitterInstance,管理当前发射器下所有的粒子。
FBaseParticle为粒子数据结构,保存粒子的Location、Rotation、Size和Velocity等数据。FParticleEmitterInstance用uint8* ParticleData指向保存FBaseParticle类型数据集合的连续内存空间。
UParticleSystemComponent关联的所有粒子数据内存空间只由GameThread访问。在帧结束的时候通过UpdateDynamicData函数创建一份包含粒子内存数据的拷贝——FParticleDynamicData,并异步传递给FParticleSystemSceneProxy,供RenderThread渲染使用。
大部分情况下,UE4通过给渲