加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 网络游戏 > 网页游戏 > 正文

写给美术看的Unity全局光照详解

发布时间:2020-04-14 16:07:51 所属栏目:网页游戏 来源:站长网
导读:副标题#e# Unity到2019,GI系统相比已经有了很大改进,可能你会觉得文章已经过时。对于旧知识看法,本人认为还是有重要的学习价值的。如果你熟悉一种技术的发展历程,你会知道技术中的一些细节为什么要这样实现,这是有利于充分掌握这种技术的。 好了,不想
副标题[/!--empirenews.page--]

  Unity到2019,GI系统相比已经有了很大改进,可能你会觉得文章已经过时。对于旧知识看法,本人认为还是有重要的学习价值的。如果你熟悉一种技术的发展历程,你会知道技术中的一些细节为什么要这样实现,这是有利于充分掌握这种技术的。

  好了,不想多说废话了。

  读完“理论篇”内容,希望你们能够理解GI的核心思想:Light Bounced光线弹射。光线从光源出发,击中物体表面随即反射进摄像机,我们把这一部分照明就做直接照明;若光线在各个表面弹射,最终到达摄像机的部分叫做间接照明。

  在基于物理渲染的思想中,还需要考虑表面材质对光线的反射率(Albedo)的影响。通俗地理解:即,要考虑光线能量有多少被吸收,导致被反射出去的光线呈现怎样的强度和颜色。表面的反射率(Albedo)一般用RGB表示。

  实现GI有两种方案Realtime GI和Baked GI,对应的最终实现的形式为Dynamic Lightmap动态光照贴图和Lightmap光照贴图。以下全文将主要围绕:控制Dynamic Lightmap和Lightmap的效果的参数展开。

  如果对上面的概念还不太清楚,建议先认真看一遍“理论篇”内容会更好。

  我们对GI的概念有了一个大致的认识后,下面我们要学习的是:Unity 的GI程序到底做了哪些工作,以及我们要如何控制GI程序的。如果有不理解的地方,可以暂且跳过。在烘焙教程章节重点讲解。

  GI Process

  在Unity中,烘焙/预计算程序默认是自动处理(Auto Generate)的,也可以手动启动, 在这两种情况下,并不会影响编辑器的其他操作,因为这些过程在后台运行的。为了方便描述,以下全文把烘焙/预计算这个过程统一称作GI程序(GI Process)。

  当GI程序正在运行时,编辑器右下方将出现一个蓝色的进度条。 根据是否启用了Baked GI或Precomputed Realtime GI,需要完成不同的阶段。 关于当前进程的信息显示在进度条的顶部。

写给美术看的Unity全局光照详解

  进度条显示Unity GI程序的当前状态

  在上面的例子中,我们可以看到我们处于5/11的进度中,即Clustering阶段,并且仍剩余108个jobs才能够进入下一个阶段6中。各个阶段如下所示:

写给美术看的Unity全局光照详解

  以上阶段从左到右,从上到下一步步执行。 需要注意的是:仅开启Precomputed Realtime GI的话,Baked GI的所有阶段将不会执行。 如果仅开启Baked GI的话,GI程序会执行所有流程(包括Precomputed Realtime GI),这是因为Precomputed Realtime GI阶段的处理并不只是为Realtime GI设计,它构建了间接光照所需要的计算环境。**

  所以下文中,仅开启Baked GI的情况下,一些专属于Realtime GI的参数依然会生效,就是上述这个原因。

  如果想要进一步了解GI程序各个阶段做了什么,产生了哪些数据,可查看可视化GI数据内容,会有部分相应的描述。

  GI参数设置

  Lighting Window(menu: Window > Lighting > Settings)是Unity全局照明(GI)功能的主要控制面板。通过Lighting窗口,你可以调整GI进程中的各个方面,根据需要来自定义场景或优化质量,性能和存储空间。 这个窗口还包括环境光,雾效、光晕等设置。 Lighting窗口有三个选项卡:Scene、Global maps 、Object maps。我们重点要看的是Scene窗口。

  Environment

  环境照明部分包含天空盒(Skybox),环境光(Environment Lighting)和环境反射(Environment Refletions)的设置。

写给美术看的Unity全局光照详解

  Skybox Unity中的Skybox有三个Shader可以选择:

写给美术看的Unity全局光照详解

  其中Procedural是Unity默认的skybox,由程序控制,无法自定义效果,配合Sun Source绑定一个平行光可以实现昼夜变化的天空效果。6 Sided和Cubemap是传统的Skybox做法,Sun Source无效。

  Environment Lighting 该项控制Ambient Light:为物体提供环境光漫反射光照。颜色来源可以是上面设定的Skybox材质球,可以使固定的颜色或渐变色。具体看“概念篇”内容介绍。

  Environment Reflections 该项控制主环境反射设置,本质上是一张所有物体都可以使用的Cubemap。

  环境反射与Ambient Light的区别在于,它提供的是逼真的环境光镜面反射效果,是基于物理的渲染(PBR)中重要的照明效果。

  Unity提供Refletion Probe技术,用于捕捉周围场景的图像,并将其储存为立方体贴图Cubemap。所以Refletion Probe的内容载体是Cubemap。

写给美术看的Unity全局光照详解

  反射源属性Source可以设定主环境反射的来源。如果Source为skybox,需要烘焙/预计算后才有效果,过程中生成一个Refletion Probe供所有对象使用,并捕捉当前Skybox图像,将其保存为一个Cubemap。若是Custom,需要手动指定一个Cubemap,可以立即看到效果。

  反射强度Intensity Multiplier:控制主反射源的反射强度。

  Bounces属性会影响场景中所有Refletion Probe的烘焙效果。如果场景布置了多个交错重叠的Refletion Probe,该属性决定了Refletion Probe捕捉的图像中是否包含其他Refletion Probe的反射。默认是1,则Unity仅考虑初始反射(从反射源属性中指定的天空盒或立方体贴图)。

  场景Lightmapping Settings

  通过Lightmapping Setting面板,可以总体地控制场景的GI各项参数。

写给美术看的Unity全局光照详解

  Realtime GI

  Indirect Resolution间接光分辨率:物体单位表面积占Dynamic Lightmap的像素数量。 增加此值可提高间接光的视觉质量,但也增加了烘烤光照贴图所需的时间。此值对烘焙时间的影响最为严重, 想要快速预览效果可降低此值。默认是2,一般建议户外大场景0.5~1,室内场景2~3。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读