用unity制作能量护盾(3)

为护盾力场添加一个扭曲光线的效果。
这个实现的原理是先将当前不透明物体的渲染结果作为一张贴图保存起来。再把它贴到要实现透明效果的物体上,通过扭曲改变这张贴图,实现扭曲光线的效果。

首先要获得不透明物体的渲染结果。
在使用的渲染管线的设定中开启Opaque Texture。
用unity制作能量护盾(3)由于之前的颜色占了color那个通道,要另开一个shader和材质做目标物体的第二材质。
因为同样要等不透明物体绘制完,改为Transparent。用unity制作能量护盾(3)
建一个texture2D的变量,reference填入_CameraOpaqueTexture,用来接收渲染场景的贴图。
用unity制作能量护盾(3)UV按屏幕坐标(ScreenPosition)直接输入的话,目标物体就会变成透明。
用unity制作能量护盾(3)用unity制作能量护盾(3)那之后的事情就简单了,只要给屏幕坐标一点干扰就行。
老方法用时间和噪声来做一个动态的扰动,其中几个参数是用来控制扰动的速度,噪声的范围和扰动强度。
用unity制作能量护盾(3)把这个和屏幕坐标相加再输入到UV中。
用unity制作能量护盾(3)就能实现相应效果了。
用unity制作能量护盾(3)同时要注意,因为扭曲光线这个实际上是贴了个贴图上去,所以要先渲染这个再渲染描边那些,否则的话就会被覆盖掉。
用unity制作能量护盾(3)这个扭曲光线的用法可以用在很多地方。
例如水流,水晶,海市蜃楼等等。