文章目录
一,粒子基础Particle System
网游里你的付费大部分是为了粒子效果付费hhhh
-
粒子是拥有位置、速度、大小、颜色和生命周期的3d模型。
-
粒子的生命周期:从发射源(Source)->产生(Spawn)->环境交互->死亡。
-
粒子发射器(Emitter)控制了粒子的产生Spawn规则、模拟逻辑和渲染
-
一个粒子系统可能有不止一种发射器,比如火焰效果中有火焰(Flame)、火星(Spark)和烟雾(Smoke)三种发射器;而如何用简单系统的组合展现复杂效果是艺术家的主要工作
-
在粒子Spawn环节,Emitter可以有单点Spawn(向四周喷射)、区域Spawn(范围内随机)和mesh Spawn(比如在运动人物上的特效)三类;在发射上也有频率、速度、方向等不同表现
-
粒子的模拟
- 不需要严格的物理模拟,使用显示欧拉法计算即可
- 除了重力还可以加上粒子的旋转、颜色的变化、大小的变化
- 粒子需要与环境进行碰撞
-
粒子常见形态:
- Billboard Particle,即广告牌。由始终面向摄像头的面片构成,用纹理动画完成,因为形状一直在变化,所以看起来有3d的感觉。
- Mesh Particle,就是同一个3d mesh用各种随机值去控制Transform的9个值,使其看上去像是不同的mesh
- Ribbon Particle,样条形粒子,用于光带。通过样条控制点获得完整曲线,一般使用Catmull-Rom曲线插值(方便插值且插值点过控制点)。
二,粒子渲染
粒子渲染由于其特性涉及到大量的透明度排序问题
-
粒子排序有两种方式:
- 全局排序,所有emitter的所有粒子都一起排序,结果正确但消耗巨大;(初学者写起来麻烦并且后期会涉及很多GPU算法,建议先写2)
- 按层级,比如per system->per emitter->per particle,但是结果会出现错位并且会有闪现的问题
同时,粒子系统在半透明渲染的过程中,效率与屏幕分辨率强相关,overdraw情况很多。那么怎么办呢?:
-
一般使用下采样将分辨率降低后再进行粒子的渲染,获得粒子的颜色和透明度alpha,然后再上采样融合到原场景中。(一般粒子模模糊糊的反正也不影响)(并且这个思路在现代引擎中越来越流行–DLSS)
三,GPU粒子及生命周期控制
从上面两节可以看到ÿ