大家知道,在Unity里可以通过设置Directional Light里面的选项出现实时阴影,在PC端可以运行的非常好,但是如果将其放到移动端,移动端目前的硬件还不支持实时阴影的绘制,这就需要我们自己想办法解决在移动端的实时阴影绘制,接下来给大家说一下,实时阴影是如何在移动端绘制的。

先给大家看一幅图片:

Unity移动端实时阴影绘制_Unity

首先给一盏灯光,灯光照射到物体后,会在地面有个接收阴影的面或者Plane或者Terrain。都可以作为接收。

如果有障碍物的话也可以将其投射上去。如图所示:

Unity移动端实时阴影绘制_实时阴影_02

在程序运行的效果图如下所示:

Unity移动端实时阴影绘制_Unity_03

接下来我们开始实现,首先我们需要一个Projector组件,这个组件是Unity提供的。

Unity移动端实时阴影绘制_移动端_04

我们还需要一个接收的材质,

Unity移动端实时阴影绘制_实时阴影_05

我们还需要一个接收阴影的脚本。如下所示:

Unity移动端实时阴影绘制_移动端_06

有了上面这些我们就可以实现实时阴影了。

Unity移动端实时阴影绘制_实时阴影_07

以上方法只是对圆球体有用,物体也是会投射成圆球体,这不是我们需要的,我们需要是对任何物体都可以的,这就需要我们自己去实现Proector。效果如下图:

Unity移动端实时阴影绘制_Unity_08

代码示意图:

Unity移动端实时阴影绘制_实时阴影_09

 

这样实现的阴影效果图,可以在手机端运行,而且帧数足够满足。代码后面奉上。