Unity—GI&光照贴图

参考转载来源,unity全球官方网站&麦子学院魏知晓&Json_c

 

 

 

 

       什么是全局光照--Global Illumination/GI?

       什么是光照贴图--LightMap?

       什么是光照探头--Light Probe?

       什么是反射探头--Reflection Probe?

 

 

 

1、全局光照

 

     :全局照明(GI)是一种系统,用于模拟光如何从表面反射到其他表面(间接光),而不仅限于直接从光源击中表面的光(直接光)。

 

         相反,物体的光照颜色计算只局限于自身,直接从光源击中表面的光(直接光)即是局部光照(local illumination)。

 

一个典型的例子是“彩色渗色”,例如,阳光击中红色沙发会导致红灯反弹到其后面的墙上。 另一个是当阳光在洞穴的开口处撞击地板并且在内部弹起时,洞穴的内部部分也被照亮。

 

        并不能做到真正意义上的现实物理光照,要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现代游戏会先一定程度的预先处理这些计算,而非游戏执行时实时运算。

 

传统上,视频游戏和其他实时图形应用程序仅限于直接照明,而间接照明所需的计算太慢,因此它们只能用于非实时场景,如CG动画电影。解决这个限制的游戏方法是计算间接光,只能用于提前知道的物体和表面,不能移动(静态)。这样,慢的计算可以提前完成,但是由于对象不移动,所以以这种方式预先计算的间接光在运行时仍然是正确的。 Unity支持这种称为烘烤GI(也称为烘烤光图)的技术,以“烘烤”命名 - 间接光被预先计算和存储的过程(烘烤)。除间接光之外,烘烤GI还可以利用更多的计算时间,从区域灯和间接光产生比通常可以通过实时技术实现的更真实的软阴影。

 

         烘烤GI和预计算实时GI都有限制,只有静态对象可以包含在烘焙/预计算中 - 所以移动物体不能将光反射到其他物体上,反之亦然。然而,他们仍然可以使用光探测器从静态物体拾取反弹光。光探测器是在烘烤/预先计算期间测量光(探测)的场景中的位置,然后在运行时,使用来自探针的值来逼近非静态对象的间接光,对象最接近于任何给定时刻因此,例如在白色墙壁旁边卷起的红色球体不会将其颜色渗透到墙壁上,而在红色墙壁旁边的白色球体可能会通过光线探测器从墙壁上吸收红色的颜色。

 

        实现组成:可实时更新的,  lightmap+lightprobe+reflectionprobe+自发光材质

 

 广义的来说,Unity的全局光照是”实时”或是”预先计算好”的,在某些情况下两种方法可以结合使用,照出更逼真的场景。

 

实时照明(REALTIME LIGHTING)

 

预设情况下,Unity的灯源(直接光源, 投射灯, 点光源)都是实时的,代表这些灯源会把光线照射到场景并以每一帧的频率更新,由于光源是可以在场景内移动的对象,场景灯光的更新是实时的,你可以在游戏窗口和场景窗口看到改变。

 

realtime_0.jpg

 

实时照明的影响:注意到因为没有反射光源的关系阴影是全黑的,只有投射光锥体范围内的对象表面才有光源影响。

 

实时照明是场景里照亮物体最基本的方法,用来照亮角色和会动的对象,可惜的是,Unity实时照明里的光线不会反射,因此我们才导入了全局光照系统,启用了预先计算的技术,都是为了表现一个更逼真的场景。

 

 

 

 

 

 

 

 

 

2、什么是light mapping?

 

     :对一些静态的物体和光,预先计算存储,不必实时计算,这个过程叫做baking.baking的结果就是一张lightmapping贴图。----针对光照稳定的静态物体。

 

light mapping动态变化?

 

 

 

 

 

烘焙全局光照(BAKEDGI LIGHTING)

 

 

 

当烘焙一张光照贴图(Lightmap)时,场景内的静态对象会基于光的影响算出一张贴图成果,并迭在场景对象之上建立照明效果:

 

 

 

lightmap.jpg

 

 

 

左:一个简单的光照贴图场景成果,右:由Unity产生的一张光照贴图(阴影和光源信息都被纳入计算)

 

 

 

这些”光照贴图”可以包含场景内投射到物体表面的直接光源,以及在不同物体间反射的”间接光源”,这样的光照贴图可以透过物体材质上的着色器(Shader)描述像是颜色的表面信息(Albedo)和凹凸(Normals)信息。

 

 

 

烘焙光照所产生出来的贴图,是无法在游戏运作的时候变更运算的,因此被定义为静态(Static),虽然仍可在这层贴图上继续迭加光源计算,但两者已无法交互运算,通常我们采用这光照法来让低阶的手机能顺利执行,解决光在游戏中运行的效能问题。

 

 

 

 

 

预计算全局光照(PRECOMPUTED REALTIME GI LIGHTING)

 

 

 

虽然传统的静态光照贴图无法在游戏执行时改变场景光照条件,但预先计算的实时全局光照系统能帮我们实时运算复杂的场景光源互动,透过这种方法,就能建立昏暗的环境带有丰富的全局光照反射,并实时反映光源的改变。好比做个日晷,阴影的位置和颜色会随着光源移动改变,这在原本的烘焙光照系统是无法达成的。

 

 

 

timeofdaycycle400.gif

 

 

 

一个用GI呈现的日晷案例

 

 

 

为了在合理的帧率实现这些效果,我们需要在实时运算之前先将一堆垄长的数字数据做”预计算”,预计算负责计算游戏过程中光的复杂行为,它可以在时间空档时进行计算,我们称作一个”脱机”运算。

 

预灯光设定(PRE-LIGHTSETTINGS)

 

Unity里每盏灯光默认的烘焙模式都是”Realtime”,这代表这些灯光仍然会照亮你的场景,Unity的预计算GI系统会处理间接光。但如果默认的烘焙模式是”Baked”,那么这些灯光将会透过Unity的烘焙GI系统处理直接光源和间接光源,产生出来的光照贴图一旦贴到场景上在执行期间是不能改变的。

 

lightbakingmode_2.png

 

一个设定烘焙模式为”Realtime”的点光源

 

选择烘焙模式为”Mixed”的话,场景内的静态对象会被烘焙GI拿去做计算,然而,不像”Baked”模式,混合模式的灯光仍会继续运算即时光源到非静态对象上,这对于你想把静态环境烘成光照贴图,但同时又希望同样一盏灯能为会动的角色计算阴影很有帮助。

 

GI快取(GI CACHE)

 

无论是烘焙还是预计算系统,Unity会”缓存”场景的光照数据到”GI快取”,并会在计算时尝试重复运用这些数据来节省时间,你对场景的改变会影响这个数据重复利用的多寡。

 

如果你要清除这个快取可以从(Preference->GICache->Clear Cache)来清除,清除后代表所有数据都必须重新运算,因次会花费一些时间,在某些情况下你也许需要降低档案空间大小(例如要把项目转到另外一台计算机)是有帮助的。

 

 

 

 

 

 

 

 Unity5的GI策略:

 

 

 

 

 

 

 

环境光(AmbientLighting)

场景中一个照亮整体环境非常重要的就是”环境光”,可以说是影响场景光源最全面的一个要素,环境光很多情况都很有用,也取决于你所选的风格,比如卡通风格的阴影不清楚或灯光是手绘风格,环境光也很适合用在当你不想单独调整场景内的灯光但又想要增加整体场景亮度的时候。在没有使用Unity 5全局光照的功能时,环境光不会算出准确的物理遮挡,但如果开启了任何一种GI的情况下,从Skybox照下来的环境光就能被算出遮挡,结果会更加真实。

在同一个场景之下,左边是没有任何光源的场景,右边则开启了环境光,可以注意到调整环境光的强度天空盒的亮度并没有改变。

透过将对象设定为静态对象来启用全局光照的场景,可以注意到光线在不同的表面有遮挡的效果。

ambientlightab_0.jpg

ambientlightc_0.jpg

使用环境光的好处是耗用效能很低,因此在手机平台上只要灯光数量控制得宜也能得到很好的表现,你可以从Lighting窗口(Window->Lighting)找到EnvironmentLighting设定区域(Lighting->Scene),改变Ambient Source来改变环境光来源。

Ambient Source的默认值是”Skybox”,上图的天空盒是Unity 5系统产生的一个默认天空盒,带有一个蓝色调的环境光,以及一些用该半球体上纯色与渐变色的设定。要注意的是改变Lighting里面的AmbientSource并不会让Skybox的颜色改变,但会影响到场景内环境光照射。

反射源(REFLECTIONSOURCE)

默认的情况下,场景中的对象会使用Unity内建的标准着色器(StandardShader)来著色,标准着色器是一个基于物理的着色器(PBS),它会透过模仿真实世界的物理特性像是反射或能量传递等来模拟真实世界里光在材质上的表现。

当使用标准着色器时,每一个材质都会具有一定程度的镜面反射(specularity)和金属反射(metalness)属性,在没有强大的硬件来处理即时光迹追踪反射的情况下,我们得仰赖预先计算著色反射,我们使用了一个由六张描述天空的图片所组成的方体贴图(Cubemap)或从Unity 5用来从定点搜集环境信息的反射探头(Reflection Probe)产生所需的贴图,然后在和其他光和地表信息混合运算来仿真如同我们真实世界看到的反射效果。

reflectionsource_0.jpg

在预设的情况下,调高Specular和Metalness会更清楚的反射天空盒,反射的来源可以从设定来调整。

场景内的对象在默认的情况下会反射天空盒的内容,但你可以从Lighting接口里找到ReflectionSource属性来改变来源,指定一个新的方体贴图,或指定一个反射探头来定义。

 

 

反射探头(REFLECTIONPROBES)

天空盒的信息不可能包含所有的场景对象,在许多情况下,对象从天空搜集反射信息时可能会被遮蔽,像是室内对象或是在类似桥或是隧道等建筑物里的对象,为了要准确反射这些对象,我们必须用反射探头针对这些对象取样,这种探头从他们的位置对周围取样并把结果写到方体贴图,可以让周围经过的物体得到环境的反射影像。你可以透过GameObject->Light->Reflection Probe来新增一个反射探头,反射探头的位置会决定方体贴图取样的内容,以及反射所看起来的样子,一般来说,基于效能考虑反射探头越少越好,请记住,反射探头并非用来让物理得到精确结果,而是让游戏世界有更好的反射,大多数情况下几个安排妥当的反射探头就很足够了。

reflectionprobeab_0.jpg

左图:场景只有预设的反射设定   右图:场景加入了反射探头后的结果

在反射探头的属性面板我们可以设定Type为实时(Realtime),烘焙(Baked)或自定义(Custom),需要明白的是,实时反射的设定对效能极为不利,每多一个实时反射探头就会多出额外六次的著色运算,因此摆设实时的反射探头应该要有明确的需求,例如反射会闪动的霓虹灯,否则一般来说建议设成烘焙的就够了,效能也会好很多。

需要注意的是,只有标记为”ReflectionProbe Static”的对象才会被反射探头取样,从属性接口上静态对象(Static)的下拉选单打勾即可,相反的,实时的反射探头会对所有可见的物体取样,除非你在屏蔽(Mask)选单指定剔除它。

照亮一个场景(LIGHTINGA SCENE)

       我们已经介绍了一些在Unity里针对场景照明开始工作之前所需要考虑的条件,希望你对目标平台该用哪些设定已经有了一个方向(手机平台采用烘焙GI和Gamma颜色空间,PC或游戏机采用实时GI和Linear颜色空间),接下来让我们来看看有哪些协助制定光源的工具。

 总结:1,Directional,Only没有随距离的光衰减,常用之模拟太阳,做环境光;

            2,Point,不支持阴影的间接反射,这代表由点光源产生的光线,只要在距离内有可能会穿过对象反射到另外一面,这可能会导致墙壁或地板”漏光”,因此放置点光源要格外注意,然而如果是采用Backed GI的话,就不会有这类的问题产生。

            3,Spot,模拟路灯, 壁灯,或许多创意用法,手电筒、舞台灯光效果,和点光源一样,使用预计算GI时,聚光灯不支持间接光阴影,这表示灯光会穿过几何影响到另外一面,因此放置投射灯要特别注意。

4,Area(baked only),常见的用途是拿来当作天花板壁灯或是背光灯,目前只能和烘焙GI一起使用,区域光会均匀的照亮作用区域,在建立柔和的照明效果非常有用,光线在任何方向穿过光的表面时会产生不同方向的折射 - 造成在对象上产生漫反射;

5,Emissive Materials,模拟霓虹灯等类似的光源,只会影响场景内的静态对象,如果你想要影响像是角色的动态对象,就必须采用光探头系统(Light Probes);

 

 

定向光源(DIRECTIONALLIGHTS)

“定向光”非常适合用来模拟阳光,它的特性就像是个太阳,定向光能从无限远的距离投射光源到场景,从定向光发出来的光线是互相平行的,也不会像其他种光源会分岔,结果就是不管对象離定向光源多远,投射出来的阴影看起来都一样,这其实对户外场景的照明很有利。

directionallight.jpg

定向光没有真正的光源坐标,放置在场景任何地点都不会影响光的效果,只有旋转会影响定向光的照射结果。其他有光源坐标的灯光类型,例如投射灯(Spotlights),角色阴影会因为接近或远离光源而改变,这也许在照亮室内环境时会是个问题,一般来说,避免角色太接近隐形的光源,我们会建立一个亮点来假装光源。

使用定向光不用考虑距离,不管多远它都会影响场景所有的表面(除非被剔除),当使用延迟(Deferred)著色路径时会造成一些效能损耗,要注意的是,使用这个著色路径时,光的效能代价和他影响的像素数目是成正比的,但虽然需要消耗效能,起码结果较为统一,因此比较容易调整平衡。

在预设情况下,新的场景都会附带一盏定向光,在Unity 5里还会与天空盒系统关联(Lighting->Scene->Skybox),你也可以删除预设的定向光并创建一个新的光源,然后从Sun这个属性重新指定(Lighting->Scene->Sun)

旋转预设的定向光会导致天空盒也跟着更新,如果光的角度和地面平行就可以做出日落的效果,把光源转到天空导致变黑就能做出夜晚的效果,从上往下照就会模拟日间的效果。如果天空盒有指定为环境光源(Ambient Source),那么天空盒的颜色就会影响环境里面的对象。

点光源(POINT LIGHTS)

点光源可以想象是在3D空间里一个对着所有方向发射光线的点,很适合用来制作像是灯泡, 武器发光或是从物体发射出来的爆炸效果,点光源的亮度从中心最强一直到范围属性(Range)设定的距离递减到0为止,光的强度从光源到距离成反比,这是所谓的”平方反比定律”,类似光在现实世界的行为。

lighttype-point_1.jpg

点光源从它的位置对四面八方射出光线,球形的小图示代表光的”范围”,光线到达此范围是会”衰减”到0,但如果有间接光源或反射光则会继续投射。

点光源开启阴影运算是很耗效能的,因此必须谨慎使用,点光源的阴影为了要给六个不同的世界方向会运算六次,在比较差的硬件开启此功能会造成较大的效能负担。

当在场景中加入点光源时要注意,目前它们不支持阴影的间接反射,这代表由点光源产生的光线,只要在距离内有可能会穿过对象反射到另外一面,这可能会导致墙壁或地板”漏光”,因此放置点光源要格外注意,然而如果是采用Backed GI的话,就不会有这类的问题产生。

 

 

聚光灯(SPOTLIGHTS)

聚光灯投射一个锥体在他的Z轴前方,这个锥体的宽度由投射角度(Spot Angle)属性控制着,光线会从源头到设定的范围慢慢衰减到0,同时越靠近锥体边缘也会衰减,把投射角度的值加大会让锥体宽度加大,同时也让边缘淡化的力度变大,这现象学名叫做”半影”。

spotlight1_0.jpg

lighttype-spot_1.jpg

聚光灯有许多用途,他们可以用来模拟路灯, 壁灯,或许多创意用法,例如模拟手电筒,因为投射区域能精确的控制,因此很适合用来模拟打在角色身上的光或是模拟舞台灯光效果等等。光线会因为离源头越远而递减,可以注意到光也会因为越靠近锥体边缘而变弱,我们称之为半影区,这会因为锥体角度变大而更明显。和点光源一样,使用预计算GI时,聚光灯不支持间接光阴影,这表示灯光会穿过几何影响到另外一面,因此放置投射灯要特别注意。

区域光(AREA LIGHTS)

区域光可以当作是摄影用的柔光灯,在Unity里面他们被定义为单面往Z轴发射光线的矩形,目前只能和烘焙GI一起使用,区域光会均匀的照亮作用区域,虽然区域光没有范围属性可以调整,但是光的强度也是会随着距离光源越远而递减。

lighttype-area_1.jpg

区域光照亮表面并在区间产生漫反射与柔和的阴影

区域光用在建立柔和的照明效果非常有用,光线在任何方向穿过光的表面时会产生不同方向的折射 - 造成在对象上产生漫反射,常见的用途是拿来当作天花板壁灯或是背光灯,为了实现这功能,我们必须从每个光照贴图像素上发射一定数量的光线,背对着区域光以确定光有能见度,这代表区域光的计算是消耗很大的,而且会延长烘焙的时间,但如果运用得宜可以增加场景光的深度,那么消耗就很值得,值得注意的是区域光只能用在烘焙,因此不影响游戏效能。

 

 

发光材质(EMISSIVE MATERIALS)

 

虽然区域光不支持实时GI,Unity提供另外一个柔和的灯光效果叫做发光材质(Emissive Materials),和区域光一样,发光材质可以让物体表面发光,他们可以反射场景内像是颜色或是光强度等等能在游戏内改变的光源,自发光(Emission)是一个在标准着色器(Standard Shader)内的属性,允许静态对象成为一个发光体,预设情况下是0,代表指定了这个材质并不会有任何的自发光反应,HDR颜色选择器能指定发光颜色,强度能在0-1的范围调整,来建立类似区域光的效果。

 

发光材质并没有范围属性,但从材质发出的光会以二的次方速度递减,自发光材质只会作用在有标记为”Static”或”LightmapStatic”卷标的对象,同样的,如果发光材质附加在非静态对象或像是角色的动态对象则不会有任何作用。

 

然而,材质设定只要emission数值大于0,即使他们不接收场景光源在画面上也会有发光的效果,这种效果也可以透过将emission属性底下的”Global Illumination”改为”None”,像这样的自发光材质很适合来模拟霓虹灯等类似的光源。

 

emissives_2.jpg

 

使用Unity标准着色器并附加自发光材质的一个范例,注意从Unity Logo的自发光也会计算阴影,在这个案例让球体有了阴影。

 

发光材质只会影响场景内的静态对象,如果你想要影响像是角色的动态对象,就必须采用光探头系统(Light Probes),在游戏周期改变发光材质的值会更新光探头取样,并直接在结果上看到变化。

 

光探头(LIGHT PROBES)

分享好文章链接 

静态对象只被Unity全局光照GI系统计算,为了使动态对象能够和静态场景接收到的光影信息互动,我们需要纪录这些光的信息并做成可以在执行期间快速存取的格式。我们在场景放置许多取样点来截取各个方向搜集来的信息,颜色信息会被编成能在游戏中快速被取出的一组数值(或系数),这些取样点我们称为”光探头”。

 

lightprobes_3.jpg

 

使用了光探头的场景,注意图中光探头放置位置在光线容易变化的地方,例如阴影或是颜色转换的地方。

 

光探头允许移动对象接受由全局光照GI所计算出来复杂的反射光源,对象在著色网格的时候会判断附近光探头的位置并且把光的信息一并融合计算,这是透过找寻由光探头所产生的一个四面体,然后决定哪个四面体的落入对象的轴向,这样就能让场景内的动态对象正确地接受光信息,如果没有放置光探头,动态对象就无法接受全局光照的信息,造成动态对象比场景还要暗。

 

预设的情况下,场景是没有任何光探头的,你必须从GameObjects->Light->LightProbe Group自行建立光探头群组。假如全局光照里的Auto是打勾的(Lighting->Scene->Auto),当光源或是静态对象更新时,光探头信息也会实时更新,没打勾的话必须点Build运算才会更新。

在烘焙之前,记得把这个LightProbe物体改成Lightmap静态物体

烘焙之前记得把灯开启,烘焙完成之后,选择动态物体,然后在网格渲染里面把Use Light Probes勾上

 

一. 属性:

 

 

 

 

 

 

 Cookie:

这个纹理的阿尔法(alpha)通道作为一个遮罩,使光线在不同的地方有不同的亮度。如果灯光是聚光灯或方向光,这必须是一个2D纹理。如果灯光是一个点光源,它必须是一个立方图(Cubemap)。

 

 Cookie Size:缩放Cookie投影。只用于方向光。

Shadow Type 阴影类型:

硬或软的阴影,将是由灯光所投射的。只适用于编译桌面目标程序(PC)。软阴影更为耗资源。

3D物体的MeshRenderer组件上CastShadows可对单个物体控制是否有阴影,前提是灯光开了阴影。

 

二、烘焙Lightmapping

场景包含大量物体时,实时光照和阴影对游戏性能有很大的影响。使用烘焙技术,可以将光线效果预渲染成贴图再作用到物体上模拟光影,从而提高性能。

步骤1:

1.游戏物体及地面设置为Static;

2.选择Window-Lightmapping-Bake Scene静态物体的影子只能烘焙在静态物体上

 

渲染路径:

 

 

 

光源侦测:

 

 

 

 

 

 

 

 

 

 

概述:

       点击 Window > Lighting > Settings 会弹出Lighting窗口,这个就是设置全局光照的窗口。

这个Lighting窗口划分了三个区域:

1、Scene:设置适用于整个场景而不是单个GameObjects。这些设置控制灯光效果和优化选择。

2、Global Maps:显示所有lightmap资产文件生成的GI照明过程。

3、Object Maps:预览当前选中的GameObject的GI lightmap纹理(包括阴影遮罩)。

      下方有一个Auto Generate,勾上它,unity就会自动更新Lightmap 数据,但更新的过程非常耗时,因此不建议勾选 Auto Generate(应该勾选上更快)。可以手动点击Generate Lighting来烘焙。(注意,unity只会烘焙

勾选了Lightmap Static 的GameObject,so 烘焙之前,首先在Inspector 面板最上方的Static 选中Lightmap Static)

       

 

 

Scene Tab:

1、Environment

       

Property:

Function:

Skybox Material

天空盒材质

Sun Source

设置一个定向光(directional Light)作为场景里的太阳,如果设置为None,unity则将最亮的定向光作为太阳(太阳:不管你设置的多大远多,光都会照到场景里)

Environment Lighting

环境光设置,影响来自远处环境的光

Source

漫反射环境光(ambient light,场景周围环境的光),默认以天空盒作为环境光。

Color

以某种颜色作为环境光。

    Gradient //梯度

sky, horizon and ground分别选择一种颜色,混合出一种环境光。

    Skybox

天空盒作为环境光,

Intensity Multiplier//光照强度

环境光的亮度,范围是0-8,默认为1。

Ambient Mode //环境模式

指定场景中GI的模式。ambient:环境的,周围的;在MixedLighting RealtimeLighting勾选时,enabled;

    Realtime

实时更新;Choose Realtime if you want the ambient light in the Scene to be calculated and updated in real time.

                若你想要场景中的ambient light/环境光,实时的模拟更新,就选Realtime.

    Baked

烘焙(预先计算场景中的灯光);Choose Baked if you want the ambient light to be precomputed and set into the Scene at run time.

                 若你想环境光被预先计算好并在Run时导入场景,选择Baked

Environment Reflections

全局设置反射参数;These settings control global settings involved in Reflection Probe baking, and settings affecting global reflections.

控制与反射探头烘焙有关的全局设置,并影响全局的反射;

Source

反射源。

    Skybox

天空盒作为反射源。

    Custom

用一个cube map作为反射源。

Compression//压缩

反射贴图是否被压缩。

    Auto

如果适合压缩,那就压缩。

    Uncompressed

不压缩。

    Compressed

压缩

Intensity Multiplier

反射光的强度。

Bounces//反弹

一束光的被反射的次数。

 

 

          

2、Realtime Lighting

Property: Function:
Realtime Global Illumination 是否开启实时全景光照。

                                                                                                                            

 

3、Mixed Lighting

      :混合光是由那些具有自身模式属性的光元件/light components被设置混合。

Mixed Lights 可以改变他们在运行期间的Transform/坐标&Visual Properties/光学属性(如颜色,强度),但有很多必须的限制。他们点亮静态和动态的物体,总是提供直接光源,并有选择的提供反射光。

被Mixed Lights点亮的动态物体总是能在其它动态物体上产生实时阴影。

      同一场场景中的所有Mixed Lights使用同一 的Mixed Lighting Mode。

 a.Baked Indirect mode--间接光烘焙模式

         Only indirect lighting is precomputed

           最适用于中端PC和高端手机。此模式,只预先计算间接光,不预先计算阴影,阴影由Shadow Distance中实时 //Shadows are fully real-time within the Shadow Distance (menu: Edit > Project Settings > Quality > Shadows).

           换句话说, 就像实时光加上间接光照,但不含Shadow Distance外的阴影。                      //Realtime Lights with additional indirect lighting, but with no shadows beyond the Shadow Distance.

          比如大雾天的室外,连接房间的走廊,这些可以用雾遮盖远处缺失的阴影或所有阴影都在shadow distance内.

b.ShadowMask mode

          Indirect lighting and direct occlusion are precomputed

          You also need to select the desired Shadowmask mode to use from the Quality Settings (menu: Edit > Project Settings > Quality):

  • Shadowmask: Static GameObjects that cast shadows always use baked shadows.
  • Distance Shadowmask: Unity uses real-time shadows up to the Shadow Distance, and baked shadows beyond.

c.Subtractive mode

         All light paths are precomputed

         最适用于低端装备。

         混合光照模式中唯一一个将直接光烘焙进光照贴图的,并丢弃了前两个模式中合成静态/动态阴影的信息。

 

 

 

                                                                           

Property: Function:
Baked Global Illumination 是否采用烘焙的全局光照。
Lighting Mode

决定混合灯光和阴影与场景中物体的共存方式;

修改了Light Mode需要重新烘焙,当然勾选了Auto Generate,就不用了,不然要click Generate Lighting。

Realtime Shadow Color 实时阴影的颜色。