http://www.slideshare.net/proyZ/relics-fx-system
由开发了众多优秀RTS游戏的Relic带来.
relic在特效方面的积累超过10年,n款产品,冲这一点,足以受到尊敬:
hierarchical fx system:
以很强大的方式来组合控制fx
- particle之间可以嵌套,有一种是combo类型,它里面可以带8个children,其中也可以包括combo类型
- combo类型里面包括一些属性,控制children particle的spawn, lifetime等
- combo类型之外的fx类型,可以触发一个新的fx
fx particle type:
- billboard
- beam
- trail
- streamer:火焰枪这种
- mesh
- light
- audio
- distortion
particle行为
- particle行为是与其类型独立的,每个类型都可以有其个性化的互动环境,来与环境互动。
- 一些简单的物理行为就自己算了,复杂的依赖物理引擎,relic的选择是havok
编辑器
- 有特效编辑器--制作特效
- 物件编辑器--把特效挂在物件上面这些事情
效率优化
简化+多线程:没什么好说的
batch
relic会通过1,2个drawcall把所有的particle渲染出来:这个会大量节省cpu时间和gpu上的context switch。
这里面需要这样一些事情:
- 构建一个包括各种&各个particle的大vertex buffer,这个vertex buffer是ring buffer
- 贴图:atlas,使用cubemap
- render state:就是blending mode,和prototype2一个做法,统一alpha addtive&alpha blend
- fx贴图是预乘过alpha
deferred
就是在低分辨率buffer上面画,回帖的时候是使用预先构建好的depth信息buffer,这个buffer也是低分辨率,记录了每个像素点的最远最近的depth值。
特殊情况处理
像雨雪这种特效,有更优化的方法,围绕着camera来放粒子,在camera移动的时候,需要多做一些处理,使用类似贴图wrap的方式,右边移动的时候,把左边的particle补进去。