在现如今移动端游戏中,为了让玩家有身临其境之感,很多的手游都加入了天气系统,带给玩家更为有趣的游戏体验。那么作为一名Unity3D游戏开发人员,我们如何才能在游戏中制作出多云的场景呢?且听千锋讲师告诉你。
如果使用真正移动一个半透的云模型在空中移动并且产生投影,移动设备上所能支持的ShadowMap尺寸无法提供足够的阴影精度,而直接进行投影的方法又比较难做到在高低不平的山、建筑等物体表面计算投影效果。经过调研之后,使用了一个插件ScreenSpaceCloud Shadow。插件页面有动态效果视频,想看动态效果的可以去看下。
后者是基于light的cookie的,在当时的Unity3D版本中有些小问题没有解决掉,而且我自己试验的cookie在移动设备上有点小问题,所以就没有选用。Screen Space Cloud Shadow这个插件使用起来比较方便,只需要把prefab丢场景里就好,开关也很简单,代价就是需要深度图,场景内所有物件都要绘制两遍,draw call和面数都会翻倍。这也是整个天气系统中消耗最大的一块,因此多云天气在最终版本里也只有高配下才会开启。
简单说一下实现的原理:shader使用Transparent渲染队列,在OnWillRenderObject中将一个平面放到相机的远平面,并且把尺寸缩放成和相机的远平面一样,这样就保证它的绘制过程是在最后,用FrameDebugger抓帧。在Shader的frag过程中,根据深度图和世界空间的摄像机方向射线来计算出阴影应该绘制的浓度。
看完这些详细的步骤,相信你也能实现这个小功能了,想学更多专业的Unity3D开发技巧,就来千锋教育Unity3D开发培训班吧。千锋Unity游戏开发培训课程深入教学的图形技术,讲解包括OpenGL渲染管线,着色器,高光计算、菲尼尔色散、雾方程式等高阶课程。对于从事过Unity游戏开发的人员也具有相当的学习价值。
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱