上一篇我们了解了,直接光照、间接光照和全局光照,也知道全局光照会带来的计算量的问题。这一篇我们就要来看看Unity提供的解决方法。

Unity的全局光照模式

我们可以首选打开Uinty的照明设置面板,Window->rendering->lighting setting,这个面板是Unity全局照明(GI)功能的主要控制面板。通过Lighting窗口,你可以调整GI进程中的各个方面,根据需要来自定义场景或优化质量,性能和存储空间。 这个窗口还包括环境光,雾效、光晕等设置。这里我们先只关注红色框内的部分。

Unity提供了两种全局光照模式,实时全局光照和烘焙全局光照。看到这儿的小伙伴可能要骂人了,不是说计算量大,不能实时计算的吗?其实这里的实时只是部分实时,后面会详细讲到。

物体的动静和light组件的模式

在讲两种全局光照模式之间,我们先讲一下物体的动静和light组件的模式,这二者是和光照模式相互配合的。

在Unity中,物体是可以区分静态和动态的,你需要明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放。

注意:灯光也是要区分动态和静态的,因为灯光在Unity中可能会发生移动,旋转等

混合光照——烘焙全局光照(Baked Gloabl lllumination)

控制“混合”和“烘焙”光照是否使用烘焙全局照明。如果启用,“混合”光照将使用指定的“照明模式”进行烘焙,“烘焙”光照将完全烘焙,且在运行时无法调整。

1、这里说的“混合”和“烘焙”光照就是上面说的light组件的mixed和baked模式

2、如果light组件是baked模式,则该组件产生的直接光照、间接光照和阴影都烘焙成全局光照贴图,运行时是无法调整的。这就要求光照要是静态的,光照下的物体也要是静态的

我们烘焙之后,把场景中的灯光关掉,发现场景中的光照信息都还是在的

3、如果light组件是“混合”模式,将使用指定的“照明模式”进行烘焙。这里提到了照明模式,我们将对照明模式做解释

照明模式lighting mode

Unity提供了三种照明模式,对三种模式的解释

我们将场景中的cubeA立方体改动动态物体,其他仍然保持静态,等华灯落下,我们来看看它们的正面目

1、subtractive 减性

混合灯光为静态物体提供烘焙直接照明和间接照明。动态对象接受实时直接光照,并使用场景中的主方向光在静态对象上投射阴影

  • 关闭灯光,静态物体的灯光没有变化,说明静态物体的直接照明和间接照明都是烘焙成贴图了
  • 关闭灯光,cubeA全黑的,说明动态物体的直接光照是实时的,没有间接光照

2、ShadowMask

混合灯光提供实时直接照明。间接照明会被烘焙到光照贴图和光照探测器中。会为烘焙阴影生产Shadowmasks和光照探测器遮挡。运行时使用的“Shadowmask模式”可以在“质量设置”面板中设置

  • 关闭灯光,静态物体的的直接光照没有了,说明静态物体的直接照明是实时的,间接照明是烘焙的
  • 关闭灯光,cubeA全黑的,说明动态物体的直接光照是实时的,没有间接光照

3、baked indirect 间接烘焙

混合灯光提供实时直接照明,而间接照明则会被烘焙到光照贴图和光照探测器中。

  • 关闭灯光,静态物体的的直接光照没有了,说明静态物体的直接照明是实时的,间接照明是烘焙的
  • 关闭灯光,cubeA全黑的,说明动态物体的直接光照是实时的,没有间接光照(这和ShadowMask是一致的)

灯光后,cubeA只有直接光照

关闭灯光后,cubeA没有任何光照

光源已经移动到远处,场景中已经没有直接照明,但间接照明还在

baked indirect最高配的光照模式,同时也最耗性能

三种照明模式总结:

三种模式有一个共同点,对于静态物体的间接光照,一定都是烘焙的,这就导致

1、如果光源改变位置或方向的话,静态物体的间接光照是不变的

2、对于动态物体压根不支持间接光照

3、在shadowMask和baked indirect模式下,无论光源变化,至少静态和动态物体的直接光照一直都是正确的

实时全局光照(Realtime Gloabl lllumination)

所谓的实时并非真的完全实时的,准确的说应该是预计算Precomputed

启动实时全局光照的时候,Unity仅预先计算表面到表面的信息:物体间光线可能会经过的路径,会预先计算好了反射以及二次反射的一些条件,并把这些计算好的数据存了起来,你要计算场景中的光和影的时候,实时全局光照会把数据拿出一部分来去运用到你的计算,所以我们看到实时全局光照也是有贴图的。

下面我们看下实时全局光照的烘焙特性,实时全局光照只对“实时”的光照组件有效

  • 关闭灯光,漆黑一片。说明静态物体的直接照明是实时的,间接照明也是实时的

  • 将scene的绘制模式切换到Indirect模式,发现CubeA消失了,说明动态物体没有间接光照
  • 灯光位置变化后,静态物体的直接光照和间接照明都发生了变化

灯光的高度是6,距离拉进了,直接光照和间接光照都发生了变化

将scene的绘制模式切换到Indirect模式,发现CubeA消失了

两种全局光照总结:

1、实时全局光照和烘焙全局光照下,都不支持动态物体的间接光照

2、如果灯光改变,需要使用实时全局光照

3、混合光照和实时光照是可以同时使用的

两种模式都勾选上

spot是realtime模式,point是mixed模式

灯光探针

由于实时全局光照和烘焙全局光照只能作用于static的物体,所以导致运动的物体和场景中的光线无法融合在一起,显得不真实。

而Light Probes组件可以通过Probe收集光影信息,然后对运动物体附近的几个probe进行差值运算,最后将光照作用于物体上。

其他:

1、Unity2019已经提示实时全局光照(已弃用)

Enlighten即将弃用。请确保您的项目在弃用日期之后不再需要Enlighten支持

Unity官方有解释,由于Geomerics公司停止推出产品级的Enlighten,因此Unity必须移除

2023年之前都是可以用的

2、3D软件和Unity的烘焙思路差异

烘焙既可以在具有烘焙功能的3D建模软件中来完成,也可以在Unity3d中来烘焙

当然,在Unity3d中烘焙兼容性更好。Unity3d的烘焙是美工的一个环节,关系到Unity作品的颜值和卖相

3、Unity3d的最终作品是供受众对3D场景进行实时操作的,就像其他3D软件场景编辑状态的操作,而一般的3D软件最终作品是将场景渲染成图片或图片序列呈现给受众的,两者的最终作品有本质的区别,简单地说,前者呈现给受众的是3D场景,后者呈现给受众的是图片或图片序列(动画)。尽管如此,两者都必须有较强的立体感和较好的光影视觉效果,否则是不被受众所接受的。

遗留问题:

预计算的实时GI模型?

灯光设置成mixed,就能同时满足动态和静态物体的需求

注意:环境光没有mixed模式

参考:

unity3d 为什么要烘焙/unity3d 烘焙作用是为了什么【2020】

写给美术看的Unity全局光照详解(参数篇)

Unity实时全局光照和烘焙全局光照 Unity2019相关推荐

  1. Unity移动平台下的烘焙使用及优化

    这是侑虎科技第436篇文章,感谢作者文雅供稿.欢迎转发分享,未经作者授权请勿转载.如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨.(QQ群465082844) 作者也是U Sparkle活动参 ...

  2. (八)unity自带的着色器源码剖析之——————Unity3D的全局光照和阴影:下篇(unity3D中的球谐光照和SH球谐函数、unity实时阴影抗锯齿解决方案)

    一.探针基于球谐函数的全局光照 球谐光照是基于预计算辐射度传输理论实现的一种实时渲染技术.预计算辐射度传输技术能够重现在区域面光源照射下的全局照明效果.这种技术通过在运行前对场景中光线的相互作用进行预 ...

  3. 使用预计算实时全局光照优化照明-微调光照贴图参数

    本文地址:https://blog.csdn.net/t163361/article/details/124107784 翻译说明: 教程翻译主要用谷歌翻译后,对特别不通顺的地方进行了微调.同时针对一 ...

  4. 使用预计算实时全局光照优化照明-布置光照探针

    本文地址:https://blog.csdn.net/t163361/article/details/123909115 翻译说明: 教程翻译主要用谷歌翻译后,对特别不通顺的地方进行了微调.同时针对一 ...

  5. Unity实时GI与烘焙GI

    在Unity2019.3.8中,当我们新建一个场景时,默认的灯光设置为: 自带的主平行光:Realtime 灯光面板:Baked GI -> Light Mode为ShadowMask(不是Di ...

  6. unity 射线 碰撞 连线烘焙

    点击选中物体 方法1:OnMouseDown()只针对脚本挂载的物体有效 首先,要给 物体加上 碰撞器Collider 然后在物体脚本上加入 void OnMouseDown()//只针对脚本挂载的物 ...

  7. Unity实时阴影实现图解

    2019独角兽企业重金招聘Python工程师标准>>> Unity大中华区技术支持团队近年来为国内Unity用户提供了高质量的技术支持服务,本文将由该团队的技术支持工程师张陈渊,根据 ...

  8. 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景 ...

  9. bufg和bufgp_Xilinx FPGA全局时钟和第二全局时钟资源的使用方法(转)

    "全局时钟和第二全局时钟资源"是FPGA同步设计的一个重要概念.合理利 用该资源可以改善设计的综合和实现效果:如果使用不当,不但会影响设计 的工作频率和稳定性等,甚至会导致设计的综 ...

  10. 打造爆款游戏互动体验,拍乐云Unity实时语音了解一下

    玩家之间的实时语音互动是互联游戏的必备功能,拍乐云近日推出 Unity 实时语音解决方案,帮助游戏厂商和开发者在接入游戏引擎的同时快速实现跨平台游戏中的社交互动模块,带给玩家更沉浸式的互动体验,享受美 ...

最新文章

  1. chcon命令 selinux 配置等
  2. DOM中setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
  3. 特定于数据中心的人工智能完成任务的速度可以提高两倍
  4. zemax中非序列添加相位面_老王讲放射MRI脉冲序列的基本参数
  5. 基于最大最小距离的分类数目上限K确定的聚类方法
  6. GDC2017访谈: 这3个工具让VR开发者事半功倍
  7. HIT Software Construction Review Notes(3-1 Data Type and Type Checking)
  8. python基础网易_看看你的Python基础怎么样?
  9. 在PyCharm环境下使用Jupyter Notebook
  10. android checkboxpreference属性,Android CheckBoxPreference Default Value
  11. 双ESP分区的WinPE本地安装
  12. 梯形图请用c语言,简单使用C语言写梯形图精简V2.0.pdf
  13. MyBatis中的多条件查询
  14. uc浏览器视频缓存合并工具
  15. 智慧交通大数据可视化,让城市运营车辆可视、可监、可控
  16. 零知识证明:Sigma协议
  17. 中国汽车变速箱行业发展趋势预测与前景策略分析报告2021年版
  18. 今日头条起诉今日油条!后者还注册了“饼多多”和“快手抓饼”
  19. 锁仓怎么解_锁仓怎么解锁?解锁的方法是什么?
  20. ERROR 1449 (HY000): The user specified as a definer (‘mysql.infoschema‘@‘localhost‘) does not exist

热门文章

  1. 三星530换固态硬盘_韩国三星网红固态硬盘PM981系列惨遭黑苹果和INTEL10代主板嫌弃...
  2. 移动端用户设置字体放大导致的问题
  3. 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习
  4. wps word文档生成目录的时候显示断裂会生成大纲怎么办_橙瓜码字小说自动生成器,对话描写,景物描写,外貌描写自动生成...
  5. LFW数据集—人脸对齐
  6. java简历模板百度网盘,再不了解你就out啦
  7. 流畅的python不适合初学者_年度最值得关注Python进阶书——《流畅的Python》
  8. qt-5.9.7-vc14h73c81de_0
  9. 微信小程序篇(笔记1:wxParse富文本解析的使用)
  10. 深信服云终端aDesk_STD-200H、朵拉云云终端DC10 对比测试