yukamu 发表于 2022-10-9 13:35

unity——用Shader做出怪物灰飞烟灭的效果

Shader可以做出一些炫酷的效果出来,
我这里也用Shader做了一个怪物灰飞烟灭的效果,一起来看看吧。




刚开始这四个怪物在跳舞,然后跳舞结束就灰飞烟灭了。怪物变成了一堆沙粒,粉末消失无踪。那么这个效果是怎么做的呢?我们接下来说下原理。
在我们写Shader脚本时候,大部分时间大家用顶点函数和片元函数就能搞定很多的需求。然后部分人就以为Shader里面就只有顶点函数和片元函数了。其实除了他们,还有其他一些函数,也是非常有用的,就比如我们今天这个效果,就用到了其他的函数:几何函数或者叫它几何着色器。我们都知道顶点函数是处理模型顶点相关的,片元函数是处理像素相关的。那么这个几何函数是干嘛的呢?通过名字就应该知道,和几何相关,它呢其实是处理图元相关的函数,其实说白了就是处理三角形的。我们都知道模型是由网格组成的,那么网格又是又无数的三角形组成的。任何的物体都能由无数的三角形组成。好了,这个点就说到这里了,我们接下来说下这个效果的原理。




这是正常的三角形勾勒的模型。下面是点图元:


然后现在大概的模型轮廓还是看的见一些,接下来就是让它灰飞烟灭,那么怎么做呢?飘散嘛,很简单,他们现在聚在一起了,我就让他们分散远离,飘散而去。那么是谁远离(运动)呢?很明显,是让顶点进行移动。那么在这里我们可以用一个物理学公式来计算顶点的位移。最终我们就完成了这个效果了。完整代码如下:


这就是几何函数的内容,也是本次特效的关键所在。其他的不重要,都是常规的渲染物体的写法。这个效果函数非常的不错的。
加入我的学习交流群,
给你分享更多游戏源码及其他学习素材
页: [1]
查看完整版本: unity——用Shader做出怪物灰飞烟灭的效果