unity3d 5.6烘焙教程
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烘焙教程的更多相关文章
- Unity3D脚本中文系列教程(十五)
http://dong2008hong.blog.163.com/blog/static/4696882720140322449780/ Unity3D脚本中文系列教程(十四) ◆ LightRend ...
- Unity3D脚本中文系列教程(九)
Unity3D脚本中文系列教程(八) name 对象名称hideFlags 该物体是否被隐藏,保存在场景中或被用户修改继承的函数 GetInstanceID 返回该物体的实例id继承的类函数 oper ...
- Unity3D脚本中文系列教程(十六)
Unity3D脚本中文系列教程(十五) ◆ function OnPostprocessAudio (clip:AudioClip):void 描述:◆ function OnPostprocess ...
- Unity3D脚本中文系列教程(十四)
http://dong2008hong.blog.163.com/blog/static/469688272014032134394/ WWWFrom 类Unity3D脚本中文系列教程(十三)辅助类. ...
- Unity3D脚本中文系列教程(十三)
http://dong2008hong.blog.163.com/blog/static/469688272014032334486/ Unity3D脚本中文系列教程(十二) ◆ function G ...
- Unity3D脚本中文系列教程(十)
http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii Unit ...
- Unity3D脚本中文系列教程(七)
http://dong2008hong.blog.163.com/blog/static/4696882720140311445677/?suggestedreading&wumii Unit ...
- Unity3D脚本中文系列教程(六)
http://dong2008hong.blog.163.com/blog/static/469688272014031943118/ Unity3D脚本中文系列教程(五) 变量 ◆var colli ...
- Unity3D脚本中文系列教程(五)
http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii Unit ...
随机推荐
- 前后端分离之mockjs基本介绍
安装与使用 # 安装 npm install mockjs #使用 Mock var Mock = require('mockjs') var data = Mock.mock({ // 属性 lis ...
- LeetCode(20):有效的括号
Easy! 题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭 ...
- 【转】MySQL安全配置介绍
一.前言 很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话.因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪些权限. 现在很多mysql用着root账户在 ...
- js中的prototype原型解析
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
- JMS(Java消息服务)
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM:指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来 ...
- php mysql \t 转义问题
记录一个事情(怕是只有我自己知道我在说什么). mysql 中存 \t 代表\t 下图 用php从mysql取出来的时候,此时还在array中 \\t 下图 json_encode之后才会把\\t变成 ...
- 005 RequestMapping_HiddenHttpMethodFilter 过滤器
很郁闷,这个查了很多资料,就是put与delete还是不好用. 但是看了一个文档后解决了,有些感谢这篇文档:http://blog.csdn.net/tiberroot/article/details ...
- sonarQube代码管理工具
第一步:安装环境:jdk 1.8 idea mysql5.6以上 sonarqube5.6.6 第二歩:下载好sonarqube后,解压打开bin目录,启动相应OS目录下的StartSonar ...
- jQuery-Selectors(选择器)的使用(二、层次篇)(转载)
原文:http://www.cnblogs.com/bynet/archive/2009/12/01/1614405.html 本系列文章导航 jQuery-Selectors(选择器)的使用(一.基 ...
- 我现所认知的SSH
实习了三个月,对着SSH有着一定的认识了,就以自已认识的大概思路写一篇文章吧,留给以后的自已,也恳请各位博友们如果看到我的认识有过错的地方能帮我指正过来! 我用到的资料 在写正文之前,先说说我这段时间 ...