https://developer.valvesoftware.com/wiki/Particle_System_Overview
- 文件格式PCF
- 编辑器Particle Editor
- Memory Fields
- 这里其实也是组件模式的一种应用, 否则内存和CPU的开销会很大
- Control Points
- 每个粒子系统最大有64个控制点, 0号默认为粒子的原点
- 每个控制点可以设置位置, 朝向, 实体
- TF中医生的治疗光线用控制点进行武器与目标玩家之间的连接
- Components
- 粒子系统由组件组成, 每一项都可以有多个元素
- Renderers
- spirit, 最常见的
- rope, 一条连续的"绳子", 如闪电
- trail, 拖尾
- blob, 水滴
- model, 使用模型代替粒子, 如爆炸碎片
- project, 贴花?
- Emitters
- 可以有多个不同类型的发射器
- 主要属性: 时间(start/end/fadein/fadeout), 发射数量(min/max), 速度, 随机
- Initializers
- 初始化位置, 颜色, 大小, 透明度, 速度等, 可以随机
- 随机位置形状
- 沿两个控制点之间移动
- Operators
- 每帧都影响各个粒子的属性
- 可以影响控制点的位置
- Forces
- 力场模拟
- Contraints
- 物理碰撞
- 与控制点之间的约束关系
- 空间约束
- Children
- 发身子粒子系统, 实现更为复杂的效果
- 性能
- 限制每个粒子系统的最大粒子数, 内存预分配这么多空间
- 多线程
- 多个粒子系统会分配到多个线程中计算
- 子系统与父系统处于同一线程
- SIMD
- Overdraw
- 尽量使用少的, 小的, 不透明的粒子
- 材质中定义最小屏幕空间大小, 太小的剔除(或淡出)
- 尽量关闭软粒子
- 共享数据
- 灵活使用控制点
- 碰撞
- 针对低端机多做一个粒子文件, 如xxxx_dx80.pcf