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 ...
随机推荐
- linux进程的一些日常处理
linux 下查看一个进程运行路径的方法 在linux下查看进程大家都会想到用 ps -ef|grep XXX 可是看到的不是全路径,怎么看全路径呢? 每个进程启动之后在 /proc下面有一个于pid ...
- PHP实现 APP端微信支付功能
1.我封装好的一个支付类文件,多余的东西都去除掉了,并且把配置参数放到了这个支付类中,只需要修改Weixinpayandroid方法内的几个参数就可以直接复制使用: class Wxpayandroi ...
- node 使用笔记
1 安装 buffertools 因为使用mjpeg-proxy的关系,需要编译buffertools中的C++代码文件,怎奈何一直出错. make: Entering directory `/srv ...
- C/C++有效对齐值的确定
先来看看什么是对齐.现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...
- PHP 与redis 操作添加处理投票
<?php header("Content-Type:text/html;charset=utf-8"); include 'lib/mysql.class.php'; $m ...
- 【LOJ】#2495. 「AHOI / HNOI2018」转盘
题面 题解 考虑我肯定是从一个人出发,开始依次标记,而不会跳过某个人,因为如果我跳过了,那么我之后回来还需要标记它,比不上我等完它再一直走到最后(因为多了走一圈之后走回它的代价) 我们倍长整个序列,我 ...
- 006.MySQL双主-Master02可用配置
[root@Master02 ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_de ...
- Scrapy 模拟登陆知乎--抓取热点话题
工具准备 在开始之前,请确保 scrpay 正确安装,手头有一款简洁而强大的浏览器, 若是你有使用 postman 那就更好了. Python 1 scrapy genspid ...
- Bzoj2149拆迁队:cdq分治 凸包
国际惯例的题面:我们考虑大力DP.首先重新定义代价为:1e13*选择数量-(总高度+总补偿).这样我们只需要一个long long就能维护.然后重新定义高度为heighti - i,这样我们能选择高度 ...
- UOJ.41.[清华集训2014]矩阵变换(稳定婚姻)
题目链接 稳定婚姻问题:有n个男生n个女生,每个男/女生对每个女/男生有一个不同的喜爱程度.给每个人选择配偶. 若不存在 x,y未匹配,且x喜欢y胜过喜欢x当前的配偶,y喜欢x也胜过y当前的配偶 的完 ...