Unity3D自带功能:灯光及光照烘焙
Unity3D光照贴图烘焙知识详解

Unity3D光照贴图烘焙知识详解欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D 培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。
今天简单地跟大家分享一下Unity5.0里面的光照贴图烘焙技术。
由于时间只有20分钟,所以只能给大家一些概要性的介绍,没有办法深入,等到Unity5.0版本正式推出之后,我会给大家一些更详细的介绍。
接下来我会分3个部分跟大家讲解,第一部分讲解一下在以往的Unity版本中所采用的光照烘焙方法,以及Unity5.0中为什么会采用一套全新的光照贴图烘焙方法。
第二部分讲解Imagination的PowerVR Ray Tracing方法。
第三部分讲解Geomerics的Enlighten方法。
后两种方法都会被引入到Unity 5.0版本当中去。
首先我们来介绍Unity在4.X版本里面使用光照烘焙的方法。
我们采用的是Autodesk的Beast,而我们在5.0版本中可能会把它彻底移除。
这是为什么呢?我们先介绍一下Beast的弱点吧。
Beast只能烘焙静态的光照贴图,而不支持动态光照。
一般而言,使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来大家就可以喝喝咖啡,或者直接下班回家了,因为整个烘焙过程可能需要几分钟、几小时,甚至是更长的时间。
这样的过程还不一定得到正确的结果,如果发现前面的烘焙结果存在问题,还要重新返回到第一步,直至得到满意的烘焙结果。
这样的过程对于广大开发者来说肯定是一个不太友好的过程,势必会影响大家的工作效率。
那么既然我们说原来的方法存在着一定的问题,那么理想的光照方案是什么样的呢?第一,理想的方法不需要任何的预计算时间;第二,它能够让场景中所有与光照有关的信息都能够实现动态改变,比如说动态改变光源、改变材质、改变环境光照,甚至改变场景中几何体的形状;第三,这样的一套方法还需要做到实时渲染,这不仅包括Console设备,也包括我们手中的移动设备。
unity的光照烘焙技术摘选

一、光照烘焙技术的概念1.1 光照烘焙技术的定义光照烘焙(Lightmapping)是一种用来模拟光照效果的技术,它通过预先计算并存储场景中的光照信息,然后在运行时应用于渲染过程中,以提高图形渲染的效率和质量。
1.2 光照烘焙技术的优点- 增加渲染效率:光照信息在运行时已经预先计算好,不需要实时计算,可以降低渲染负载,提高性能。
- 改善光照质量:通过光照烘焙可以获得更真实、更精细的光照效果,提高场景的逼真度和观赏性。
- 节省资源:由于光照信息是预先计算好的,不需要实时计算,可以节省系统资源,适用于移动设备等资源受限的评台。
二、光照烘焙技术的原理2.1 光照烘焙的基本原理光照烘焙技术是通过将三维场景中的光照信息计算并存储为纹理或纹理集,然后在运行时应用于模型的表面,以模拟真实的光照效果。
光照烘焙的基本原理包括光照采样、纹理映射和渲染应用等步骤。
2.2 光照烘焙的计算方法- 光照贴图(Lightmaps):通过将场景中的光照信息渲染到纹理上,然后在运行时将光照信息映射到模型表面,以获得真实的光照效果。
- 光子映射(Photon Mapping):通过模拟光子在场景中的传播和相互作用,计算场景中的光照信息,并存储为纹理或纹理集,然后在运行时应用于模型的表面。
三、Unity中的光照烘焙技术3.1 Unity的光照烘焙工具Unity提供了丰富的光照烘焙工具和功能,包括实时光照、烘焙照明、环境光遮蔽(AO)等,可以满足不同场景的照明需求。
3.2 使用Unity进行光照烘焙的步骤- 设置光照参数:在Unity中设置场景的光源、材质和照明参数,为光照烘焙做准备。
- 执行光照烘焙:在Unity中执行光照烘焙,将场景中的光照信息计算并存储为纹理或纹理集。
- 应用光照烘焙:在运行时将光照信息映射到模型的表面,以获得真实的光照效果。
四、光照烘焙技术在游戏开发中的应用4.1 光照烘焙技术的作用在游戏开发中,光照烘焙技术可以用于优化场景的渲染效果和性能,提高游戏的视觉质量和用户体验。
unity 灯光-烘焙光照贴图剖析

灯光-Light对于每一个场景灯光是非常重要的部分。
网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。
可以通过从菜单中选择 GameObject->Light并将其添加到你的场景中。
有3种类型的灯光。
一旦添加了一个灯光你就可以像操作其他物体一样操作它。
相关属性介绍◆Type:灯光的类型⏹Directional:平行灯,类似太阳光;⏹Point:点光源,类似灯泡;⏹Spot:聚光灯,类似舞台聚光灯;◆Baking:该选项有三个选择⏹Realtime:即光源不参与烘焙,只作用于实时光照;⏹Baked:表示光源只在烘焙时使用⏹Mixed:该光源会在不同的情况下做不同的响应;在烘焙时,该光源会作用于所有参与烘焙的物体;在实际游戏运行中,该光源会作为实时光源作用于那些不参与烘焙的物体或者动态的物体(不作用于静态的物体,就是勾选了Static);◆Color:光源的颜色,根据不同的环境设置不同的颜色,营造出不同的氛围;◆Intensity:光线强度;◆Bounce Intensity:光线的反射强度;◆Shadow Type:设置是否显示光源作用在的物体的阴影,⏹No Shadows不显示阴影,阴影不存在;⏹Hard Shadows:硬阴影(无过滤),效果不是很自然比较生硬;⏹Soft shadows:柔化阴影,更加贴近实际生活中的阴影显示,但比较消耗资源;◆Strength:阴影黑暗程度,取值范围0~1◆Resolution:阴影的清晰度,细化度,越高消耗越大;◆Bias:阴影的偏移量,越小,物体表面会有来自它自身的阴影,太大光源就会脱离了接收器;◆Cookie:灯光投射的纹理,如果灯光是聚光灯和方向灯就必定是一个2D纹理,如果是点光源必须是一个Cubemap(立体贴图);◆Cookie Size:缩放Cookie的投影,只适用于方向光◆Draw Halo:如果勾选,那光源带有一定半径范围的球形光源◆Flare:在选中的光源的位置出现镜头光晕;◆Render Mode:此项决定了选中的光源的重要性,影响照明的保真度和性能;⏹Auto:渲染的方法根据附近灯光的亮度和当前的质量设置在运行时由系统确定;⏹important灯光是逐个像素渲染的;⏹Not Important灯光总是以最快速度渲染;Culling Mask:剔除遮罩,类似摄像机的遮罩,选中指定的层收到光照影响,未选中的不受到光照影响;设置全局光照和烘焙光照贴图-LightMap一个场景中灯光添加多了资源消耗也就大了,为了降低资源的消耗,可以选择烘焙光照贴图;把光源的效果烘焙到贴图上,形成自带光源效果的贴图,这样就可以减少灯光的使用。
Unity2019烘焙四种分类

Unity2019烘焙四种分类烘焙四种四种分类:(1)静态灯光下的静态物体烘焙设置步骤:1.将物体勾选为静态。
2.灯光的Mode属性设置为Baked。
3.Lighting⾯板下的Realitime Illumination(实时全局光照)取消勾选,Mixed Lighting下的Baked Global Illumination设置勾选。
最后点击Generate Lighting开始烘焙此时⽆论怎么修改灯光,场景都没有变化(2)静态灯光下的动态物体烘焙设置步骤:1.将物体取消静态勾选。
2.灯光的Mode属性设置为Mixed。
3.Lighting⾯板下的Realitime Global Illumination(实时全局光照)取消勾选,勾选Mixed Lighting下的Baked Global Illumination,Mixed Lighting下的Lighting Mode属性设置为Shadowmask。
4.添加光照探针(3)动态灯光下的静态物体烘焙1.物体勾选为静态。
2.灯光的Mode属性设置为Runtime。
3.Lighting⾯板下勾选Realitime Global Illumination,取消Baked Global Illumination勾选。
(4)动态灯光下的动态物体烘焙1.将物体取消静态勾选。
2.灯光的Mode属性设置为Runtime。
3勾选.Lighting⾯板下的Realitime Global Illumination(实时全局光照),取消勾选Mixed Lighting下的Baked Global Illumination,4。
添加光照探针。
unity灯光-烘焙光照贴图讲解

灯光-Light对于每一个场景灯光是非常重要的部分。
网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。
可以通过从菜单中选择 GameObject->Light并将其添加到你的场景中。
有3种类型的灯光。
一旦添加了一个灯光你就可以像操作其他物体一样操作它。
相关属性介绍◆Type:灯光的类型⏹Directional:平行灯,类似太阳光;⏹Point:点光源,类似灯泡;⏹Spot:聚光灯,类似舞台聚光灯;◆Baking:该选项有三个选择⏹Realtime:即光源不参与烘焙,只作用于实时光照;⏹Baked:表示光源只在烘焙时使用⏹Mixed:该光源会在不同的情况下做不同的响应;在烘焙时,该光源会作用于所有参与烘焙的物体;在实际游戏运行中,该光源会作为实时光源作用于那些不参与烘焙的物体或者动态的物体(不作用于静态的物体,就是勾选了Static);◆Color:光源的颜色,根据不同的环境设置不同的颜色,营造出不同的氛围;◆Intensity:光线强度;◆Bounce Intensity:光线的反射强度;◆Shadow Type:设置是否显示光源作用在的物体的阴影,⏹No Shadows不显示阴影,阴影不存在;⏹Hard Shadows:硬阴影(无过滤),效果不是很自然比较生硬;⏹Soft shadows:柔化阴影,更加贴近实际生活中的阴影显示,但比较消耗资源;◆Strength:阴影黑暗程度,取值范围0~1◆Resolution:阴影的清晰度,细化度,越高消耗越大;◆Bias:阴影的偏移量,越小,物体表面会有来自它自身的阴影,太大光源就会脱离了接收器;◆Cookie:灯光投射的纹理,如果灯光是聚光灯和方向灯就必定是一个2D纹理,如果是点光源必须是一个Cubemap(立体贴图);◆Cookie Size:缩放Cookie的投影,只适用于方向光◆Draw Halo:如果勾选,那光源带有一定半径范围的球形光源◆Flare:在选中的光源的位置出现镜头光晕;◆Render Mode:此项决定了选中的光源的重要性,影响照明的保真度和性能;⏹Auto:渲染的方法根据附近灯光的亮度和当前的质量设置在运行时由系统确定;⏹important灯光是逐个像素渲染的;⏹Not Important灯光总是以最快速度渲染;Culling Mask:剔除遮罩,类似摄像机的遮罩,选中指定的层收到光照影响,未选中的不受到光照影响;设置全局光照和烘焙光照贴图-LightMap一个场景中灯光添加多了资源消耗也就大了,为了降低资源的消耗,可以选择烘焙光照贴图;把光源的效果烘焙到贴图上,形成自带光源效果的贴图,这样就可以减少灯光的使用。
unity3d烘焙场景设置注意事项

unity3d烘焙场景设置注意事项Fbx、贴图导入Unity时的注意事项:在导出Fbx之前,Maya中已经对物体连接了正确的贴图,并且贴图文件名不能更改。
把Fbx和贴图放在同一文件夹内,直接把此文件加拖入Unity内。
此时Diffuse贴图应能自动识别。
此时,对贴图修改后,在Unity中更新贴图(删除老贴图,导入新贴图,并保持命名,路经一致),模型能够自动更新。
假如Unity中删除贴图,关闭Unity,再打开Unity,导入之前删除的贴图,模型不会自动更新贴图。
------------------------------------------------------i3D的这篇教程中的模型比例有问题,先根据Unity官方帮助文档中的内容说一下:Unity官方帮助文档中认为,模型的缩放尺寸是非常重要的。
特别是涉及到一些物理特效模拟的时候。
Unity认为,在理想状态下,不要更改模型的Transforms Scale 值,保持Scale值为(1,1,1)。
(这样的话,模型在Maya中制作时需要freeze,使缩放值为(1,1,1))。
原因是,额外的缩放数值会增加不必要的计算量。
Unity首先推荐模型在创建时使用真实尺寸。
其次是在Unity的Import Settings中更改尺寸。
Unity在进行场景优化时会根据物体尺寸来进行优化。
当在Unity中把一个物体parent到另外一个物体时,最好父级物体的坐标值是(0,0,0),否则之后会遇到不少头痛问题。
Unity的粒子系统不受Transforms Scale值的影响。
物体的不均匀缩放值在Parent后会产生不良后果(这个情况和Maya中是一样的)Unity中,1个单位尺寸代表1米。
即在Unity中创建一个Cube的尺寸是1x1x1米大小。
Unity推荐把人的身高定为大约2个Unity单位高度(2米)。
在Max中,只要正确设置单位尺寸(系统单位尺寸设置以及输出时单位尺寸设置)成厘米后,得到的效果是一致的。
unity 灯光烘焙原理

unity 灯光烘焙原理Unity是一款广泛应用于游戏开发的引擎,其中灯光烘焙是其重要的功能之一。
本文将介绍Unity灯光烘焙的原理和作用。
一、什么是灯光烘焙灯光烘焙(Lightmapping)是指将场景中的灯光效果预先计算并存储为纹理的过程。
在运行时,游戏引擎会根据这些预计算的灯光纹理来渲染场景,从而提高渲染效率和画面质量。
二、灯光烘焙的作用1. 提高渲染效率:灯光烘焙可以减少实时计算光照的工作量,从而提高渲染性能。
在运行时,引擎只需要根据预计算的灯光纹理来渲染场景,大大减少了CPU和GPU的负荷。
2. 提高画面质量:通过灯光烘焙,可以实现更加真实的光照效果。
预计算的灯光纹理可以包含更多的光照信息,使场景中的物体产生更加明暗的阴影,增强真实感。
三、灯光烘焙的原理1. 光照贴图:灯光烘焙的核心原理是将场景中的光照信息计算并存储为光照贴图(Lightmap)或光照图(Lighting Map)。
光照贴图是一张纹理,其像素值表示场景中每个点的光照强度和颜色。
2. 光照计算:在进行灯光烘焙之前,需要设置场景中的光源和材质属性。
Unity会根据光源的类型(如点光源、聚光灯、方向光等)和材质的属性(如反射率、折射率等)来计算场景中每个点的光照强度和颜色。
3. 光照采样:为了生成光照贴图,Unity会在场景中的每个点进行光照采样。
采样过程中,会考虑光源的位置、颜色、强度等因素,以及材质的反射率、折射率等属性。
通过多次采样和计算,得到最终的光照贴图。
4. 光照传递:在生成光照贴图之后,Unity会将光照贴图应用到场景中的物体上。
渲染时,引擎会根据物体的UV坐标和光照贴图的像素值来确定物体的光照强度和颜色。
通过多次传递光照,实现场景中物体的明暗效果。
5. 光照合并:在场景中存在多个物体时,为了提高渲染效率,Unity会将多个物体的光照贴图进行合并。
合并过程中,需要考虑物体之间的遮挡关系,以及光照的传递效果。
通过合并光照贴图,可以减少纹理的数量,提高渲染性能。
unity 灯光烘焙原理

unity 灯光烘焙原理Unity是一款广泛应用于游戏开发的引擎,其中的灯光烘焙功能是实现游戏场景真实感的重要一环。
本文将探讨Unity中灯光烘焙的原理和作用。
灯光烘焙是一种将动态光照转换为静态光照的技术,即将实时计算的光照效果预先计算出来,然后将其作为纹理贴图应用到场景中的物体上。
这样做的好处是可以大大减少计算量,提高游戏的运行效率,并且能够实现更高质量的光照效果。
在Unity中,灯光烘焙的原理可以简单地概括为以下几个步骤:场景建模、灯光设置、烘焙计算和应用烘焙结果。
我们需要进行场景建模。
在Unity中,我们可以使用内置的编辑工具或者第三方建模软件来创建游戏场景。
场景建模的目的是为了营造出游戏所需的世界观,包括地形、建筑、道具等元素。
接下来,我们需要设置灯光。
在Unity中,可以设置各种不同类型的灯光,比如平行光、点光源、聚光灯等。
每种灯光都有不同的属性可以调整,比如光照强度、颜色、阴影等。
通过设置灯光,我们可以达到不同的光照效果,从而营造出不同的氛围和场景。
然后,我们需要进行烘焙计算。
在Unity中,可以使用烘焙工具来计算光照的预烘焙贴图。
预烘焙贴图是一种包含了场景中静态光照信息的纹理贴图,它记录了光照在场景中的分布情况。
通过烘焙计算,可以将实时计算的光照效果转换为静态的贴图,从而减少运行时的计算量。
我们需要将烘焙结果应用到场景中的物体上。
在Unity中,可以通过设置物体的烘焙贴图属性来应用烘焙结果。
烘焙贴图可以实现物体在不同光照条件下的阴影和反射效果,从而增强物体的真实感和细节。
总结起来,Unity中的灯光烘焙原理是通过将动态光照转换为静态光照,从而提高游戏场景的真实感和性能表现。
通过场景建模、灯光设置、烘焙计算和应用烘焙结果等步骤,可以实现高质量的光照效果和真实感的游戏场景。
灯光烘焙的使用不仅可以提高游戏的视觉效果,还能够提高游戏的性能,给玩家带来更好的游戏体验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Unity3D自带功能:灯光及光照烘焙这一篇比较偏重于功能介绍,具体的实例操作请参考其他文章:未完成游戏场景中灯光照明的构成现实生活中的光线是有反射、折射、衍射等特性的。
对这些基本特性的模拟一直以来都是计算机图形图像学的重要研究方向。
在CG中,默认的照明方式都是不考虑这些光线特性的,因此出来的效果与现实生活区别很大。
最早期的时候,人们利用各种方式来模拟真实光照的效果,比如手动在贴图上画上柔和阴影,或者用一盏微弱的面积光源去照明物体的暗部以模拟漫反射现象等等。
然后出现了所谓的高级渲染器,用计算机的计算来代替我们的手工劳动来进行这个“模拟”的工作。
在漫长的发展过程中,出现过很多很多计算方案,总体上分为这样几类:直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的GI(Global Illumination);不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的FG(Final Gathering); 完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的AO(Ambient Occlusion);将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的Lightmap。
不论是GI还是FG,计算量都是非常大的,一帧图片需要几十分钟甚至几十小时来渲染,所以很难被应用在游戏设计领域。
因此在游戏设计领域,光照贴图技术依然是目前的主流方式。
由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object),而我们的游戏场景中几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。
对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。
随着技术的发展以及计算机计算能力的提高,也许在未来,我们能够直接在游戏场景中进行动态的全局光照模拟也说不定呢。
新版Unity3D中就已经出现了Realtime Global Illumination,虽然这个技术还处于雏形阶段,所需要的计算量依然庞大,但确实为我们展示了一个令人激动的前景。
当然,技术是技术,产品是产品。
技术是为产品服务的,再先进的实时全局光照系统,对于像素风格的游戏场景的提升也是几近于0。
“选择合适的技术来完善我们的产品和制作流程”,以及“根据现有技术来设计产品和制作流程”,说的其实是同一个意思。
1. 直接照明(Direct Lighting)Unity3D中的直接照明主要来源于各种灯光物体,而灯光物体本质上是空物体加上灯光组件。
直接照明可以产生阴影,但光线不会反射、也不会折射,但可以穿透半透明材质物体。
1.1 灯光类型(Lights)Unity3D中默认可以创建这么几种灯光:聚光灯、点光源、平行光、面积光,另外还可以创建两种探针(Probe):反射探针(Reflection Probe)和光照探针组(Light Probe Group)。
Unity中可以创建的灯光类型物体平行光平行光通常用来做阳光,Unity3D新建场景后会默认在场景中放置一盏平行光。
平行光不会衰减。
unity_lighting04.pngType:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的。
Color:灯光颜色Mode:灯光照明模式,每种模式对应Lighting面板中一组设定Realtime:对应Realtime LightingMixed:对应Mixed LightingBaked:对应Lightmapping SettingRealtime Lighting是新出现的一种烘焙光照技术,它并不像传统的烘焙技术一样直接烘焙间接光照颜色和亮度信息到光照贴图上,而是烘焙物体和物体之间的关系信息,比如A面对B面有漫反射效果,B面对C面有漫反射效果等等。
这样一来,只要物体之间的关系不变(也就是所有的静态物体都不移动位置),就不需要重新烘焙,从而使得我们可以在场景中随意运用动态光源(dynamic lights)。
而传统的Lightmapping光照贴图方式则不支持动态光源效果(改变光源不会改变场景光照)。
Realtime Lighting比Lightmapping要更耗费系统资源,所以手游上就不要考虑了。
Intensity:灯光强度Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘Shadow Type:阴影贴图的类型No Shadows:无阴影贴图Hard Shadows:硬阴影贴图Soft Shadows:光滑阴影边缘(也就是阴影模糊效果)Baked Shadow Angle:烘焙阴影的角度Realtime Shadows Strength:实时阴影强度Resolution:阴影贴图分辨率Bias:阴影偏移,通常适当增加这个值来修正一些阴影的artifactNormal Bias:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias的使用场合)Near Plane:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影Cookie:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果Cookie Size:调整Cookie贴图大小Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果Render Mode:渲染模式Culling Mask:点光源点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减unity_lighting01.pngRange:光线射出的范围,超出这个范围则不会照亮物体聚光灯聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减unity_lighting02.pngSpot Angle:灯光射出的张角范围面积光面积光模拟一个较大的发光表面对周围环境的照明效果,通常面积光的灯光亮度衰减很快,阴影非常柔和。
Unity3D的面积光仅在烘焙光照贴图时有效,并不像Maya 的Area Lights一样能动态照亮场景。
unity_lighting03.pngWidth:面积光宽度Height:面积光的高度总的来说,Unity3D中自带灯光比较简单,根据我们在Maya 中使用灯光的经验,可以很快熟悉这些灯光类型的使用。
1.2 阴影类型(Shadow)Unity3D的灯光可以设置不同的阴影类型,分别是:无阴影、硬阴影、软阴影。
要注意的是,不论是硬阴影还是软阴影,本质上都是用阴影贴图模拟的阴影效果,而不是真实光照而自然形成的暗色区域。
unity_lighting05..png灯光上阴影设置部分会随着Mode参数的不同而变化,Realtime Lighting Mode对应的选项很多,而Baked Mode仅对应Baked Shadow Angle一项。
无阴影灯光不产生阴影,新建场景后默认生成的平行光就是无阴影的。
硬阴影阴影边缘清晰软阴影阴影边缘柔和,有过渡效果阴影质量设置虽然我们在灯光的阴影设置中可以调节Resolution以提高阴影质量,但真正的阴影质量调节应该在Quality面板中来进行,灯光中的阴影Resolution参数默认设置是Use Quality Settings,就是从Quality面板的设定中来选择。
unity_lighting06.png从菜单Edit > Project Settings > Quality打开Quality面板,这里可以针对不同质量等级设置不同的参数。
unity_quality02.png我们现在先不在这里对Quality面板做全面介绍,仅介绍关于阴影的那一部分设置内容:Shadows:在当前质量下是不渲染阴影,还是只渲染硬阴影,还是软硬阴影都渲染Shadow Resolution:在当前质量下阴影贴图分辨率,这就对应了灯光面板中的Resolution参数。
Shadow Projection:阴影贴图的投影方式,Close Fit方式会优化近处的阴影质量,缺点是运动状态下可能会出现一些波动,Stable Fit方式不会有波动,但质量比较差有的时候阴影贴图会出错,比如无缘无故多出一条亮缝之类,通常可以选择切换到Close Fit方式来解决,如果不想切换的Close Fit方式,可以适当降低灯光阴影参数中的Normal Bias参数,或者将对应场景物体设置成双面显示。
Shadow Near Plane Offset:很近处不渲染阴影Shadow Cascades:阴影贴图叠加方式,可以是单层、2层或者4层Cascade Splits:不同层所对应场景区域的比例分配划分Shadow Cascades是一种阴影贴图算法,比如我们选择4层叠加,那么实际上会计算4次阴影贴图,每次对应距离摄影机一定距离范围以内的场景物体,而这个距离范围的划分就通过Cascade Splits中所显示的紫、绿、黄、红四种颜色区域所占比例来区分。
紫色代表最近处的区域,而红色代表最远处的区域。
紫色条越窄代表其对应的那一层阴影贴图所对应的场景区域越小,这样一来该区域的阴影贴图精度就很高了。
我们可以看到这里的Shadow Resolution就对应了灯光面板中的Resolution参数。
unity_lighting07.png1.3 渲染路径(Rendering Path)Unity3D提供两种渲染路径(Rendering Path),对于初学者来说,渲染路径这个概念不是很好理解,大家可以理解成是两种不同的渲染器,分别有利弊就好了。
1.3.2 Forward在Forward渲染路径下,每个物体会被每个光源渲染成一个“通道”,因此物体受到越多灯光的影响,其渲染次数就会越多。
Forward渲染路径的优势在于,在灯光比较少的情况下,Forward方式的渲染速度会非常快,处理透明贴图也非常快,还可以使用诸如“多重取样抗锯齿(MSAA)”这样的硬件处理技术技术。
但Forward渲染路径的渲染速度会随着灯光的增多而迅速变慢,在一些有很多灯光照明的特定场景中(比如高科技室内环境)并不适合使用Forward渲染路径。
1.3.1 Deferred使用Deffered渲染路径,渲染时间不会随着灯光的增多而提高,而是会随着受整体光照影响区域的扩大而提高(也就是说,场景中越多像素被照亮,渲染速度就越慢,但全屏被照亮的情况下,灯光设置复杂度不会进一步影响渲染速度了)。