Unity对PBS的应用

Posted by AK on January 31, 2018

本文旨在梳理Unity中PBS的应用流程:首先介绍了何为PBS,它相对传统渲染的优势,以及Unity对PBS的实现,最后以一个Demo为例简要说明了Unity中PBS的具体使用。

一 什么是PBS


从字面意思来看,是基于物理的渲染技术(Physically Based Shading)。其实可以将其理解为一种光照模型,类似Lambert 或 Phong,只是更贴合现实,因为其高消耗,在最近的实时渲染中才成为可能。
PBS能实现更好的法线高光效果:

另一主要优势在于对用户更友好:使用一个Shader就能实现各种材质效果,且变换环境也无需频繁修改Shader参数,只需修改光照环境即可:

二 Unity对PBS的实现


自Unity5开始,官方的Standard Shader就吸收了PBS光照模型,其是一个众多属性的集合,通过设置贴图和参数,可以启用或者禁用其中的一些属性。
具体使用可参见 Unity Maunal

三 Unity中PBS的具体使用


接下来,以此简单场景为例,介绍Unity中PBS的使用,内容分为以下两部分:

1 具体物体

利用Unity提供的表格调节StandardShader的具体参数,决定了物体是什么样的材质(木头 还是 黄金?):

2 光照环境

调整好物体的材质之后,还需要和整个场景交互。这相当于物体所处的上下文:环境不同,物体所呈现出来的方式也不尽相同,这也是贴合现实的。 而环境主要由以下几部分组成:

1)天空盒子 & 平行光

设置场景的反射源为Skybox,同时调整平行光的颜色和方向与当前天空盒子相契合

2)反射探针

在某些室内或者暗处,需要用反射探针来作为反射源,

3)光探针

采集光照信息用于动态物体(如角色)

四 参考资料


Demo源于Viking Viilage
Viking Village相关Blog
Standard Shader的表格可以在这里找到