这个Shader的原理很简单,就是用一个模型来模拟了一个体积光,当模型朝向摄像机时,增加亮度,并且让部分顶点做一点偏移来模拟bloom的感觉,这里我还加入了噪音让光线看起来变化更丰富些。
准备工作
首先需要准备一个用来模拟体积光的模型,网格如下图所示:
其实就是一个圆形的平面,内圈用来模拟光源,外圈用来模拟体积光,我们刷入定点色来控制那些顶点是需要做变化的,如下图所示:
顶点法线要用来判断灯光朝向,全部垂直这个平面即可。
最后再准备一张灯光的贴图和噪音图
在unity中的实现
Shader部分比较简单,直接上代码:
我这里是放在摄像机空间来计算,最初是单纯的按照法线方向来作顶点偏移的,后来是感觉不是很想光的感觉,所以加入了摄像机的方向来作插值,这样会有一点光线照向摄像机的感觉。
最后用顶点和摄像机的距离来做了一点过渡,防止模型和摄像机出现明显的穿插。
在unity中预览一下效果:
这里面很多计算都是全凭感觉...大家理解思路就好...
知乎@喵喵Mya