Unity3d流光效果

Material中纹理的属性都有Tiling和Offset,能够利用Offset作uv动画,从而完成各类有趣的动画,好比流光效果!php

流过效果即一般一条高光光在物体上划过,模拟高光移动照射物体的效果,以前是使用Shader每帧传递一个Offset值,修改高光纹理采样的uv,从而达到其效果。这样的敝处在于须要本身实现Shader,简单的同一速度移动是很容易实现的,若是但愿移动随度是变化的,则须要本身实现对速度曲线的解析(并传递给Shader)达到此目的。算法

没想到一直用来做位移动做,骨骼动做的Animation竟也有此功能!动画

下图中即为Animation对于物体的渲染方面能够作的操做(Unity 4.3版本和4.2略有不一样)spa

 

 

Shader部分,有两张纹理,分别是底图和高光图,这里须要注意的是若是要移动uv,则必须声明其ST属性,这样才能够经过内置方法TRANSFORM_TEX()计算uv偏移了,Shader以下设计

 

这里只使用了一种很简单的算法计算最终的颜色值,即将高光覆盖底图颜色增长高光alpha倍,可根据需求设计计算方法!get

 

在动画的关键帧中,根据美术需求设计曲线,如图it

 

 

 

运行效果如图io

 

注意此方法不能应用于NGUI,由于NGUI其组织顶点方式与普通物体不一样!thread

附件下载渲染