unity5.6是今年发布,作为5.x的最后一个版本,有很多烘焙优势,在此总结一些作为5.x系列完结的笔记
这个版本在烘焙上的特点就是增加了渐进光照贴图(Progressive Lightmapper),这个功能可以说极大地改善场景光照烘焙的工作流程,可以加快场景烘焙效率,再也不怕烘焙一晚上发现有灯光有问题了
当然它不是用来替代Enlighten的,很多地方还是略有不同的,但是感觉这个速度更快。虽然有的新增的灯光混合模式不受支持,但是它在模型迭代中能发挥更大的优势。

Progressive 光照优势就是能很快看到一个区域的光照效果,而且在高参数下烘焙非常快,可以随时停止,效果依然保留,这个功能好多了

缺点也挺多的,比如只支持两个模式(看下面,有些效果会缺失),参数高的时候内存占用非常大,如果内存小的机器很容易崩溃

enlighten比较还是比较传统,内存消耗不多,比较不容易崩溃,支持所有模式,所以需要高端效果的时候还是这种支持的多

但是缺点是不到渲染结束看不到效果,相同参数下烘焙时间感觉长了不只好几倍

下面是两个白模渲染效果对比

可以看到其实渐进式的效果范围ao效果范围更广更暗一些

关于新版本还有4种光照模式,有些理解起来还都是挺纠结的

而且官方和其他教程解释得都比较抽象,所以下面以质量为主进行一些说明

表面上这些设置和mixed灯光有关,属于混合灯光方面的内容

lightmode具体可以看这里
https://docs.unity3d.com/Manual/LightModes.html
关于混合灯光四种模式区别具体看下面的
https://docs.unity3d.com/Manual/LightMode-Mixed.html

但这些与烘焙质量也有很大关系,我测试了以阴影质量为主列下面的表

下面讨论的项目是在bake light下,directional模式下

阴影质量
  enlighten
灯光设置
progressive
灯光设置
Baked Indirect
内存占用少,动态质量一般,消耗一般
mixed 近处硬 远处消失 动态投影   baked 软阴影 baked mixed 软阴影
Distance Shadowmask
内存占用高,动态质量高,消耗高
mixed 近处硬 远处软 动态投影 baked 软阴影 不支持 如果强行使用效果同上
Shadowmask
内存占用低,动态质量差,静态质量高,消耗低
mixed 软 静态物体无动态投影  baked 软阴影 不支持 如果强行使用效果同上
Subtractive
内存占用低,质量低,消耗低
mixed 软 静态物体无动态投影  baked 软阴影 baked mixed 软阴影

混合灯光模式:
说一下下面的模式主要针对的都是混合灯光也就是mixed方式,动态和静态虽然有的模式能相互投影但是影子依然会非常锐利,具体如何使用实时阴影取决于ShadowDistance的值和光照模式。
shadow map就是普通的即使阴影,就是比较锐利的阴影
有一个不可能,就是不能实时动态物体投下很软的阴影

性能消耗
大型,户外                        标准,室内         室内,小型静态,手游       小型,手游
Distance Shadowmask > Baked Indirect >     Shadowmask                 > Subtractive

下面是具体说明,官网内有更详细解释

我的主要是关注阴影质量

Baked Indirect mode
性能消耗一般,适合有动态光源物体的室内项目,中低端pc游戏或者高端移动端游戏
baked灯光会烘焙下所有静态物体并产生软阴影,baked灯光会穿透动态物体(动态物体不会被baked灯光照亮)
realtime和mixed灯光会在阴影距离内产生比较锐利的影子。距离外不投影忽视物体。
mixed和baked灯光能烘焙出静态物体的反射光

realtime lighting下 realtime灯光也能烘焙出静态物体的反射光

https://docs.unity3d.com/Manual/LightMode-Mixed-BakedIndirect.html

Distance Shadowmask (只支持enlighten)
性能消耗高,适合任何有大量动态物体的大场景游戏,适合高端pc

baked灯光会烘焙下所有静态物体并产生软阴影,baked灯光会穿透动态物体(动态物体不会被baked灯光照亮)
mixed灯光会烘焙下所有静态物体并在超出阴影距离的时候使用软阴影,不超出的时候使用实时硬阴影

realtime灯光会在阴影距离内产生比较锐利的影子。距离外不投影忽视物体。
mixed和baked灯光能烘焙出静态物体的反射光
realtime lighting下 realtime灯光也能烘焙出静态物体的反射光

烘焙的shadowmask上的颜色不是灯光颜色,而是静态光的颜色,只能有四盏灯,分为rgba
mixed灯光产生的阴影将被分离到新的烘焙贴图中,所以这个模式下mixed灯光颜色和位置可以在烘焙后改,还是软阴影

https://docs.unity3d.com/Manual/LightMode-Mixed-DistanceShadowmask.html

Shadowmask (只支持enlighten)
性能消耗比较低,适合室内小型无多少动态物体的项目,适合中低端pc和移动端游戏

baked和mixed灯光会烘焙下所有静态物体并产生软阴影,baked和mixed灯光会穿透动态物体(动态物体不会被baked灯光照亮)

realtime灯光会在阴影距离内对动态物体产生比较锐利的影子。静态物体不会在动态灯光下产生投影,距离外不投影忽视物体。
mixed和baked灯光能烘焙出静态物体的反射光
realtime lighting下 realtime灯光也能烘焙出静态物体的反射光

烘焙的shadowmask上的颜色不是灯光颜色,而是静态光的颜色,只能有四盏灯,分为rgba
mixed灯光产生的阴影将被分离到新的烘焙贴图中,所以这个模式下mixed灯光颜色和位置可以在烘焙后改,还是软阴影

https://docs.unity3d.com/Manual/LightMode-Mixed-Shadowmask.html

Subtractive
性能消耗很低,适合小型无多少动态物体的项目,适合中低端pc和移动端游戏

baked和mixed灯光会烘焙下所有静态物体并产生软阴影,baked和mixed灯光会穿透动态物体(动态物体不会被baked灯光照亮)

realtime灯光会在阴影距离内对动态物体产生比较锐利的影子。静态物体不会在动态灯光下产生投影,距离外不投影忽视物体。
mixed和baked灯光能烘焙出静态物体的反射光
realtime lighting下 realtime灯光也能烘焙出静态物体的反射光

是以前的老模式,是用于低性能设备,光照被烘焙到贴图中。

https://docs.unity3d.com/Manual/LightMode-Mixed-Subtractive.html

基本材质烘焙的对比

反射状态final gather效果

关于Directional Specular

由于在前面的版本里就已经标记成将要废弃的选项,这个版本就没有了

但是以前用这个可以表现出高光细节(就是法线贴图下的高光效果),现在要怎么表现呢

这个就只能借助enlighten了,需要将光照模式改成Shadow Mask或者 Distance Shadow Mask,使用directional,而且光照也必须改成mixed模式

参考https://answer.uwa4d.com/question/5902db1da7fbeb4a58bf64a3/unity5.6%E7%89%88%E6%9C%AC%E4%B8%AD%E5%85%89%E7%85%A7%E9%A2%84%E6%B8%B2%E6%9F%93Directional-Mode%E9%80%89%E9%A1%B9%E4%B8%AD%E5%B0%91%E4%BA%86Directional-Specular%E9%80%89%E9%A1%B9

对后面期望当然是渲染最好能分层

比如现在还是烘焙无视layer设置,包括灯光的

unity3d 5.6烘焙教程的更多相关文章

  1. Unity3D脚本中文系列教程(十五)

    http://dong2008hong.blog.163.com/blog/static/4696882720140322449780/ Unity3D脚本中文系列教程(十四) ◆ LightRend ...

  2. Unity3D脚本中文系列教程(九)

    Unity3D脚本中文系列教程(八) name 对象名称hideFlags 该物体是否被隐藏,保存在场景中或被用户修改继承的函数 GetInstanceID 返回该物体的实例id继承的类函数 oper ...

  3. Unity3D脚本中文系列教程(十六)

    Unity3D脚本中文系列教程(十五) ◆ function OnPostprocessAudio (clip:AudioClip):void 描述:◆  function OnPostprocess ...

  4. Unity3D脚本中文系列教程(十四)

    http://dong2008hong.blog.163.com/blog/static/469688272014032134394/ WWWFrom 类Unity3D脚本中文系列教程(十三)辅助类. ...

  5. Unity3D脚本中文系列教程(十三)

    http://dong2008hong.blog.163.com/blog/static/469688272014032334486/ Unity3D脚本中文系列教程(十二) ◆ function G ...

  6. Unity3D脚本中文系列教程(十)

    http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii Unit ...

  7. Unity3D脚本中文系列教程(七)

    http://dong2008hong.blog.163.com/blog/static/4696882720140311445677/?suggestedreading&wumii Unit ...

  8. Unity3D脚本中文系列教程(六)

    http://dong2008hong.blog.163.com/blog/static/469688272014031943118/ Unity3D脚本中文系列教程(五) 变量 ◆var colli ...

  9. Unity3D脚本中文系列教程(五)

    http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii Unit ...

随机推荐

  1. java Set(集合)

    set不保存重复的元素(至于如何判断元素相同则较为复杂,后面将会看到).Set中最常被使用的是测试归属表,你可以很容易地询问某个对象是否在某个Set中,正因如此,查找就成了Set最重要的操作,因此通常 ...

  2. Intellij IDEA调试功能总结

    public class Demo { public static void f1() { System.out.println("one"); System.out.printl ...

  3. Amazon电商数据分析——数据获取

    最近一段时间主要重心在Amazon电商数据分析上,这是一个偏数据分析和可视化的项目.具体来说就是先获取Amazon的商品数据,数据清洗和持久化存储后作为我们自己的数据源.分析模块和可视化模块基于数据进 ...

  4. 【Java】 大话数据结构(14) 排序算法(1) (冒泡排序及其优化)

    本文根据<大话数据结构>一书,实现了Java版的冒泡排序. 更多:数据结构与算法合集 基本概念 基本思想:将相邻的元素两两比较,根据大小关系交换位置,直到完成排序. 对n个数组成的无序数列 ...

  5. thinkphp5.0未定义变量模板中提示错误

    在用tp5.0做一个项目网站,公共头需要用到一个变量,但这个变量又不想挨着定义,然后,刷新前台的时候就给提示,未定义变量. 直接放解决方案: 在config.php文件顶部添加: error_repo ...

  6. 按行拆分文本文件与合并文本文件---I/O流---java

    背景 在进行自然语言处理的中文词性标注时   进行测试时由于测试数据文本行数较多  而且测试每次标注一行的用时稍长 如果一次将文件读进来测试机器运行时间要连续不能中断  而且 只能一台机器进行工作 于 ...

  7. jvm在什么情况下会执行GC

    jvm在什么情况下会执行GC?[五种情况] 对象没有引用 作用域发生未捕获异常 程序在作用域正常执行完毕 程序执行了System.exit() 程序发生意外终止(被杀进程等) 什么是没有对象引用?

  8. 小成就之解决调用spring中FileSystemXmlApplicationContext路径问题

    此文写下调用spring过程中遇到的一个问题!或许对于入行的人一看觉得我很傻逼吧,这问题谁都会了!但我觉得对于新手(自已)来说,算是一个好思路与好办法! 问题: 对于 test_aa ta = (te ...

  9. java go

    熟练掌握java技术,对多线程.数据结构有清晰的认识: 熟悉MySQL/Oracle数据库,熟悉关系数据库应用设计开发: 熟悉Spring/MyBatis/Freemarker等一种或者多种框架: j ...

  10. WebClient 通过get和post请求api

    //get 请求        string url = string.Format("http://localhost:28450/api/values?str1=a&str2=b ...