unity 彩带粒子_超级技术贴:Unity粒子遇上着色器,引爆视觉特效
下面来分析粒子系统驱动的数据,Michał使用粒子的尺寸(Size)和颜色(Color)来控制一些着色器参数。为了更好的进行参数调整,MeltingObject脚本除了引用了“熔化”对象的渲染器(Melting Object Renderer)和粒子渲染器(Particles Renderer),还添加了网格剔除值(Cutoff Value),塌陷强度(Collapse Strength,即重力)和发光强度倍数值(Emission Strength),以曲线的形式编辑。如下图所示:
最后提交大赛评审的版本,事实已经禁用了粒子渲染,因为这些粒子只是为了将数据传递给着色器,不会执行任何其它操作。
下面的操作视频打开了粒子渲染,帮助大家理解特定参数的调整所引起的变化:
那这些粒子到底是如何驱动着色器的呢?这点在Unity中实现并不复杂。
1、ParticleSystem有这样一个API:public int GetParticles(Particle[] particles);
其作用是将粒子数据写入一个粒子数组作为缓冲,返回值就是该粒子的数量。
2、粒子的每个参数都可以被读取,比如尺寸、速度、位置、颜色、透明值等。在运行时还可以使用GetCurrentColor、GetCurrentSize、GetCurrentSize3D,获得当前状态下的颜色、二维尺寸和三维尺寸
3、取得这些数值后,便可以通过“圆环”的渲染器,去修改应用该渲染器的材质的着色器参数。而这里只需做几件事:用尺寸(Size)设定点亮面积的大小;用透明值(Alpha)设置网格变形值;在粒子发射器的生命周期内,基于网格剔除值、塌陷强度和发光强度倍数的曲线进行变化。
这样,就能产生粒子系统驱动着色器的效果了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)