粒子系统

粒子系统:

大多数情况下,我们在游戏中见到的粒子都只是一些烟或者雾之类的,但是粒子系统本身确实一个很强大的应用。几乎所有具备群体效应的渲染粒子系统都可以应用,例如流体,星辰,群体动画(一群鸟在天上飞,一群人在地上跳舞之类的),反正,具备群体效应的都可以进行尝试。

 

结构:

一个典型的粒子系统分为两个阶段,模拟阶段和渲染阶段。其实也不是粒子系统是这样,基本上整个图形渲染就属于数据更新+渲染的模式。

粒子模型:通常来说粒子应该有两套模型,一套用于在GPU中渲染,另一套是在CPU用于计算。也可以所有的计算都放到GPU端实现,但是我自己觉得这样并不好。

模拟阶段:根据时间因素更新粒子的位置,包括修改描述粒子运动情况的参数,在碰到碰撞的条件下还需要对碰撞检测并作出相应的反应。

渲染阶段:渲染阶段就是普通的渲染流程,所不同的是对于比较小而多的粒子有一些特殊的处理,广告牌是常用的方式之一。对于比较大的模型,采用Instance的方式。或者直接控制大量的简单模型这种情况肯定是最差最少的。

 

 软粒子:

粒子系统
 看下这个图就知道硬粒子和软粒子的区别了,由于粒子是由广告牌的方式显示的,广告牌是一个平面,虽然是面向相机,但是在与场景相交的地方还是会出岔子的。

简单的处理软粒子的方式是:测试粒子和场景的深度进行比较,然后根据差来对粒子进行

fade = saturate((scene_depth – particle_depth) * scale);

 这种方式虽然可以比较,但是对于被遮住的一部分还是有点那个啥。

 

 

你可能感兴趣的:(系统)