Unity填坑-灯光烘焙相关

Unity填坑-灯光烘焙相关

文章目录


前言

项目组对灯光烘焙那块参数以及工作流程有一定疑问,单独抽时间把整个机制做了一次单独的调研,错漏之处恳请指点。


一、Light的模式

Unity中的Light模式分为三种:

实时,混合,烘焙。

这三种要结合在Lighting设置一起工作来看。

二、光的效果分类

一种是直接光照,即光直接照到物体上,反射到相机里。

二种是全局光,即光照到物体上,再反射到其他物体上,如此再反射到相机里的光。

三种是环境光,即没有任何灯的情况下,场景还会被天空盒、环境设置的光等照亮的光。

三、各种Light模式与烘焙的说明

1.Realtime,实时光

在运行时,直接对场景物体进行光照,产生高光、漫反射、阴影等实时效果。这时Light的变化,会带来场景物体接受灯光的实时变化。

备注:其中阴影通过实时的阴影深度图实现。

这个灯和Lighting设置有关系的是设置RealtimeLighting开启(即实时全局光),后面单独说这个设置的流程。

2.baked,烘焙光

提前利用这个灯的信息在场景里面找到设置Static(特别是ContributeGI)的物体,进行整个场景烘焙,得到场景的烘焙信息数据:光照贴图、光照方向、光照信息、ShadowMask贴图、光照探针的信息。其中光照贴图,会因为Lighting设置不同,生成不同的光照贴图(比如:用于采样间接光的间接光照贴图,用于实时计算间接光的物体位置信息贴图,用于阴影采样计算的ShadowMask贴图)。

需要注意的是,当场景中没有进行烘焙时(即没有烘焙数据时),baked光等同于Realtime光。

如果已经烘焙出了场景的各种贴图,那么baked光就无用了,在运行时无论是开启还是关闭都没有任何效果。

运行时,对应标记的物体,会直接去采样这些贴图信息(在shader中会有不同关键字去开启对应的流程)然后进行渲染显示各种效果。

3.mixed,混合

字面意思就是又有烘焙光的功能,又有实时光的功能。对于动态物体,它就是提供Realtime光的功能,提供实时照明效果。

对于标记了静态(特别是ContributeGI)的物体,要根据Lighting设置中的,MixedLighting设置会有不同效果。

如果LightMode是:BakedIndirct,烘焙只会包含间接光照数据,那么这些静态物体在渲染时,会去间接光照贴图中采样间接光照,从而显示出逼真的效果。

此时,如果灯光Light的RealtIme部分会产生实时阴影、高光漫反射等效果,即光源变化时,阴影等效果都会跟随变化,而间接光(比如上图中的泛红色部分不会变化)。

LightMode:subtractive,直接光与间接光效果都会进入烘焙贴图中,从而运行时这些静态直接采样这些贴图进行渲染,这个mix灯产生的直直接光与间接光效果(与baked灯效果一样,但是这个mix灯还可以对其他动态物体进行直接光照效果)都进入贴图。此时移动这个灯,不会产生任何变化。

LightMode:Shadowmask,比BakedIndirct多一个shadowMask贴图。即阴影也会进入到贴图信息中。此时需要关注Project中Quality设置的阴影模式,如果是shadowMask,那么这个静态物体产生的阴影会从贴图中读取,意味着mix的灯变化的话,阴影不会有任何变化。

如果Quality设置为Distance ShadowMask,那么在近距离内,阴影为mix灯产生的实时阴影,远距离时,会变为采样shadowMask中的阴影信息产生阴影。这个距离指的是摄像机与阴影的距离,在URP中的MaxDistance设置。

四、实时全局光

如果开启了实时全局光,那么烘焙会烘焙出静态物体的位置信息贴图数据,且关联的是场景中LightMode为Realtime的光。烘焙好之后,当这些灯(realtime)发生变化时,全局光也会相应的变化。可以理解为实时渲染出全局光照贴图,供给这些静态物体进行渲染,产生更加逼真的效果。

五、其他说明

1.动态物体的全局光照效果

可以看到以上并没有实时的全局光照给动态物体的,所以需要额外的手段进行烘焙,即光照探针贴图,他可以收集场景中的光照信息,并且投射给接受全局光照为光照探针的场景物体。此时物体移动(只勾选了全局光照的信息)可以接受来自光照探针的全局光照信息。同样的,当全局光照为实时,光照探针的光照信息也会跟随光变化。

反射探针与光照探针原理类似,它会收集探针的六个面,进行投射,从而采样。

2.手机使用烘焙注意的点

手机由于性能问题,不建议开启实时全局光照。同时有时候烘焙效果,在手机内有很大差异,原因在于光照贴图的格式,在手机与PC上格式不一样,设置LightMap的Encoding时会有不同的编码格式,注意设置光照强度,手机上光照强度超过一定值都会被限制到一定数值内,从而导致与PC上看起来相差很大。所以一定要注意物体表面烘焙的光照强度。

3.其他设置

Lightmapping Settings:光照贴图的生成设置,对照Unity文档就能知道差异

Workflow Settings:光照探针的一些可视化设置。

Environment设置,环境光照的一些设置,环境光设置后,可以保证场景中没有灯,也会被环境光照亮。

相关推荐
异次元的归来40 分钟前
Unity DOTS中的share component
unity·游戏引擎
向宇it4 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
_oP_i5 小时前
unity webgl部署到iis报错
unity
Go_Accepted5 小时前
Unity全局雾效
unity
向宇it5 小时前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
每日出拳老爷子8 小时前
【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
unity·游戏引擎·图形渲染
北海65169 小时前
Dots 常用操作
unity
只待花开12 小时前
ROS2 python编写 intel realsense D405相机节点通过launch.py启动多个相机并发送图像话题,基于pyrealsense2库
数码相机
KeyPan15 小时前
【ORB-SLAM3:相机针孔模型和相机K8模型】
数码相机
YY-nb16 小时前
Unity Apple Vision Pro 开发教程:物体识别跟踪
unity·游戏引擎·apple vision pro