Notifications
Article
Unity Light 在游戏中的运用以及优化
Updated 5 months ago
204
0
光在现实生活中不单单是给人以照明和温暖,有些时候更能表达渲染出一种心境,可以给人带来无限遐想,李白的窗前明月光,疑是地上霜;苏轼的水光潋滟晴方好,山色空蒙雨亦奇;游戏中也是如此,恰当的光照可以让玩家沉浸在游戏创作者想表达的情感主题当中。
在现实生活中,室外有太阳光、月光照射,室内有电灯台灯等照明设备,当然在游戏场景中同样需要光源照亮虚拟世界,unity中的光照与现实生活中使用的照明设备类似,根据发射光源的特点,被分为:平行光:DirectionalLight、 点光源Point Light、聚光灯Spot Light 、区域光源Area Light,我们就来讲下这些类型的光源在游戏中的运用。
首先说下平行光,平行光又称为太阳光,它是针对整个场景起作用的。在移动端游戏中经常看到的晕光效果就是借助它来实现的。
相对于平行光照射整个场景,点光源只能照亮场景中的一小部分区域,在这个灯光区域内只有一个或者少量的物体被照亮了,其他物体没有接受光照,这种只能把场景局部照亮的灯,通常在游戏中用于烘培场景,也就是生成LightMap贴图。
聚光灯类似于手电筒的效果,可以针对个体进行照亮,由于其计算比较复杂,在程序处理方面比较消耗资源,所以在移动端游戏开发中应该尽量少用。可以将其烘培成LightMap贴图使用,做完烘培再将其灯光删掉,这种光源在舞蹈类游戏中经常的使用。
区域光可以自定义光源照射的区域。区域光可以当作是摄影用的柔光灯,在Unity里面他们被定义为单面往Z轴发射光线的矩形,通常只能和烘焙GI一起使用,区域光会均匀的照亮作用区域,虽然区域光没有范围属性可以调整,但是光的强度也是会随着距离光源越远而递减。区域光用在建立柔和的照明效果非常有用,
区域光常见的用途是拿来当作天花板壁灯或是背光灯,为了实现这功能,我们必须从每个光照贴图像素上发射一定数量的光线,背对着区域光以确定光有能见度,这代表区域光的计算是消耗很大的,而且会延长烘焙的时间,但如果运用得宜可以增加场景光的深度,那么消耗就很值得,值得注意的是区域光只能用在烘焙,因此不影响游戏效能。
在游戏开发中,为了展现更好的效果,需要使用大量的灯光,但从优化的方面考虑,为了提高场景的运行效率,一般采用的方式是对灯光烘培成LightMap贴图,以空间换时间。
特别是在移动端,如果灯光太多,肯定会非常的消耗资源,因为他的计算会非常消耗CPU或者GPU。现在玩家对游戏的品质要求越来越高,要提升品质就要进行大量的计算。要想及能提升品质又能运行流畅,需要找一个折中的办法,那就是:美工先把灯光在场景中全部打上,然后进行LightMap烘培,烘培完成之后再把灯光删掉就可以了这样烘培的贴图会直接渲染到场景中的材质上,程序加载时直接把贴图加载到内存里面。
Tags:
梦想在路上的LPP
来自古城西安的浪漫主义Unity爱好者 - Programmer
9
Comments