Unity光照贴图烘焙
什么是光照贴图(Lightmap)?为什么要用光照贴图?
场景中的光照信息大致可以分成两类:直接光照和间接光照。
只有直接光照的情况
直接光照+间接光照的情况
如果没有间接光照,那么整个场景就没有真实性可言。但是间接光照的实时计算在目前的硬件条件下,只有支持实时光线追踪的硬件才能实现,比如Nvidia的RTX系列显卡。在普通的计算设备上,特别是移动端设备上目前还没有实时光线追踪的解决方案出现。因此我们必须依赖预先计算好的光照贴图来提供这些间接光照信息。
光照贴图本质上就是一张或者多张应用在场景模型上的贴图。它们包含的是通过光照贴图烘焙方式进行预计算所获得的间接光照,阴影等信息(可以在烘焙时选择只烘焙间接光照,不烘焙阴影)。使用光照贴图可以避免在游戏运行时进行实时的光照和阴影计算,提高游戏的运行性能,特别适合用于性能较弱的计算平台比如移动平台上。
要在Unity中预计算(或者说烘焙)获得光照贴图,我们使用的是Unity官方研发的Progressive Lightmapper(渐进式光照贴图烘焙)。在Unity 2018版本之前,Unity中集成的光照烘焙模块是一套第三方解决方案Enlighten。由于第三方厂商Geomerics不再维护Englighten,所以从Unity 2019版本开始Enlighten被标记为弃用状态(Deprecated)。Unity 2021.1版本开始将完全移除Englighten模块。
渐进式光照贴图烘焙,对场景中模型的要求是什么?
使用渐进式光照烘焙对模型有以下几个要求:
1. 模型上不能有重叠的UV。
2. UV之间要有足够的间距以避免“渗色”现象的发生。
3. 因为光照贴图只能烘焙静态物体,所以我们要把需要参与烘焙的物体标记为Static。
渐进式光照贴图烘焙出来的是什么?
光照贴图烘焙出来的是光照贴图(Lightmaps),光照探针(Light Probes)和反射探针(Reflection Probes)。
按照不同的Lighting Mode(光照模式),光照贴图烘焙出来的结果是不同的。
HDRP下Lighting窗口的光照模式支持Baked Indirect和Shadowmask两种(内置渲染管线和通用渲染管线请参考文档)。
1. Baked Indirect模式:
如果场景中的灯光模式设置为Mixed,那么这些灯光会给场景提供直接光照,间接光照信息则被烘焙到光照贴图和光照探针中。此选项适合中高端的平台,比如PC,主机。
2. Shadowmask模式:
如果场景中的灯光模式设置为Mixed,灯光会给场景提供直接光照,间接光照烘焙到光照贴图和光照探针中。Shadowmask和光照探针遮挡信息会被烘焙到阴影信息中。你可以在Project Settings > Quality窗口设置Shadowmask的模式(Shadowmask或者Distance Shadowmask两种模式可选)。此选项在游戏运行时比Baked Indirect模式性能更好,因为光照贴图中已经预先烘焙了阴影信息。
3. Subtractive模式:(在内置和通用渲染管线中支持)
场景中的直接光照,间接光照和阴影信息都会烘焙到光照贴图中。适合对性能敏感的平台比如移动端平台。
如果场景中光源设置为Mixed模式,在三种光照模式下动态和静态物体的行为可参考以下列表:
渐进式光照贴图烘焙的CPU版本和GPU版本有什么区别?
CPU和GPU两个版本所用的底层技术相同,唯一的区别是:CPU版本使用CPU和内存进行计算;GPU版本使用显卡和显存进行计算。
1. 如果使用CPU版本进行烘焙,影响烘焙效率的是CPU的速度和内存的大小。
2. 如果使用GPU版本进行烘焙,影响烘焙效率的则是显卡的速度和显存的大小。
界面操作(HDRP示例):打开Window > Rendering > Lighting Settings窗口,在Lightmapping Settings区域可以选择使用哪个版本的ProgressiveLightmapper:
以上就是关于Unity光照烘焙的用法了,同学们学会了吗?

相关推荐HOT
更多>>
分布式锁是什么?有什么作用?
分布式锁是一种用于在分布式系统中实现并发控制的机制。在多个节点或进程之间共享资源时,分布式锁可确保只有一个节点或进程可以访问或修改共享...详情>>
2023-06-15 11:05:38Java中switch条件语句如何使用?
在Java中,switch语句是一种条件语句,用于根据不同的条件值执行不同的代码块。switch语句的语法如下:switch(expression){casevalue1://当expr...详情>>
2023-06-06 16:24:02
js获取checkbox是否选中
要检查 JavaScript 复选框是否被选中,可以使用 checked 属性。该属性返回布尔值 true 表示复选框被选中,false 表示未被选中。详情>>
2023-04-21 10:19:04
linux查找文件命令
在Linux系统中,可以使用以下命令来查找文件:1.find命令:find命令可以在指定的目录下递归查找文件,可以根据文件名、类型、大小等条件来查找...详情>>
2023-03-14 13:28:14