一 光和物质
渲染和阴影的物理基础理论
光是一种复杂的现象,因为它有波粒二象性。因此,人民创造了不同的的模型来描述光的行为。作为纹理艺术家,我们要研究这些光线模型。因为它描述了光和物质的相互作用。对我们来说,理解光线与表面物质的相互作用是很重要的,因为我们的工作就是基于这些知识来创造一种纹理来描述这些物体的表面。我们要创作这些在虚拟世界中的与光交互的纹理,我们对光线的行为了解得越多,我们的纹理就会越好。
在本指南中,我们将讨论PBR所基于的物理理论。我们将从一束光开始,并着手定义PBR的关键因素。
光线
光线模型表明,光线在像空气这样的均匀透明介质中有一条直线的轨迹。光线模型还表示,当遇到诸如不透明物体或从空气进入水中这种不同介质时,光线会以一种可预测的方式表现出来。这使得可以看到光线从一个起始点移动到最终变成另一种形式的能量如热量的路径。
撞击表面的光线称为入射光线,其入射的角度称为入射角,如图01所示。
图01 光线入射到两个介质之间的平面界面上
当光线照射到表面时,可能发生以下任何一种情况:
1.光线被反射离开表面并以不同的方向传播。 它遵循反射定律,即反射角等于入射角(反射光)。
2.光线在一条直线(折射光)的轨迹中从一个介质传递到另一个介质。
在这一点上,我们可以说光线分为两个方向:反射和折射。 在表面,射线被反射或折射,并且可以最终被任何介质吸收。 但是,表面不会发生吸收。
吸收和散射(透明度和半透明度)
当在非均匀介质的或半透明的材料中传播,光可以被吸收或散射:
1.随着吸收,光强度随着它变成另一种形式的能量(通常是热量)而减小,并且其吸收的光量取决于波长而改变颜色,但是光线的方向不变。
2.散射时,光线方向随机变化,偏差角度值取决于材质。 散射的方向随机,但光的强度不变。耳朵就是一个很好的例子。 耳朵薄(吸收率低),所以你可以看到散射光从耳朵后面穿透。如果没有散射并且吸收率低,则光线可以直接穿过表面,例如玻璃。例如,如果你在一个非常清澈的游泳池里游泳,你可以睁开你的眼睛,在清澈的水中看到相当远的距离。 但是,让我们想象一下,同一个游泳池内,里面的水很脏。这个时候水中的污垢颗粒会使光线发生散射,水的清澈度就会降低。而且,光在这种介质/材料中传播,其被吸收和/或散射得更多。 因此,物体厚度在光吸收或散射的程度上起着重要的作用。 所以,可以使用厚度图来描述着色器的对象厚度,如图02所示。
图02物体的厚度在光线被吸收或散射的程度上起着重要的作用
漫反射和镜面反射
镜面反射是在物体表面反射光线,正如我们在“光线”部分中所讨论的那样。 光线被反射离开表面并以不同的方向传播。 它遵循反射定律,它指出,在一个完美的平面上,反射角等于入射角。 然而,重要的是我们要注意生活中大多数物体表面都是不规则的,并且反射方向将随物体表面粗糙度而随机变化。 这改变了光线的方向,但是光线强度保持不变。较粗糙的表面会有更大更暗淡的亮点。 更光滑的表面会保持聚焦的镜面反射,从特定的角度观察,这些亮点看起来更明亮或更激烈。 但是,如图03所示,两种情况下的总光量都相同。
图03 粗糙的表面会有更大更暗淡的亮点
漫反射是折射的光。 光线从一种介质传递到另一种介质,并在物体内多次散射。 然后再次从物体中折射出来,回到和它第一次进入的位置大致相同的地方,如图04所示。
图04
微观理论
理论上,漫反射和镜面反射都依赖于光线相交处的表面不规则性。 实际上,由于材料内部发生散射,粗糙度对漫反射的影响更不明显。 因此,漫反射的射线的出射方向与表面粗糙度和入射方向相当独立。 在最常见的漫反射模型(朗伯模型)中完全忽略了它。
在本文中,我们将这些表面不规则性称为表面粗糙度。 实际上,根据所使用的PBR工作流程,它通常被称为诸如粗糙度,光滑度,光泽度或微观表面等几个名称,其实它们描述了表面的相同方面,只不过这些是子纹理的几何细节。
这些表面不规则性是根据您使用的工作流程中的粗糙度或光泽度图创作的。 基于物理的BRDF基于微面理论,该理论假设表面是由称为microfacets的不同方向的小尺寸平面细节表面组成的。 如图05所示,这些小平面中的每一个以其正常方向反射光线。
图05
表面法线恰好在光线方向和视线方向中间的微面将反射可见光。 然而,如图05所示,并不是所有的显微面法线和半法向量相等的微缩片都会有所贡献,因为一些会被遮蔽(光线方向)或遮蔽(视线方向)遮挡。
在微观水平的表面不规则性导致光扩散。 例如,模糊的反射是由于散射的光线。 光线不平行反射,所以我们感觉镜面反射模糊,如图06所示。
图 06 在微观水平的表面不规则性导致光扩散
颜色
表面的颜色(也就是我们所看到的颜色)是由于光源发出的不同波长的光照射到物体上,这些光中一部分波长的光被物体吸收,而其他波长的部分被物体镜面反射和漫反射, 剩下的反射波长就是我们所看到的颜色。
例如,苹果的皮肤大多反射红光。 如图07所示,只有红色的波长被分散到苹果皮外面,其余的则被其吸收。
图-07 物质PBR着色器使用GGX microfacet分布
它也具有与光源相同颜色的明亮的镜面高光,因为像苹果皮肤这样的材料不是电导体(电介质),镜面反射几乎与波长无关。 因此,对于这样的材料,镜面反射不会被着色。 我们将在后面的章节中讨论更多不同类型的材料(金属和电介质)。
BRDF(双向反射分布函数)
简单地说,双向反射分布函数(BRDF)是描述表面的反射特性的函数。 在计算机图形学中,有不同的BRDF模型,其中一些模型在物理上是不合理的。 对于一个BRDF在物理上是合理的模型来说,它必须是节能和互惠的。对于互惠来说,我指的是亥姆霍兹互惠原则,它指出在不影响BRDF结果的情况下,输入和输出光线可以被认为是相互颠倒的。
Substance的PBR着色器使用的BRDF是基于迪士尼的“原则性”反射模型,该模型基于GGX microfacet分布。 GGX在镜面反射分布方面提供了更好的解决方案之一,因为它具有较短的高光峰值和较长的衰减尾部,也就是说它看起来更加真实,如图08所示。
图08 GGX提供了镜面分布方面更好的解决方案之一
能量守恒
能量守恒在物理渲染解决方案中发挥着至关重要的作用。 它指出,表面重新发射的光线总量(反射和散射回来的)小于其接收的总量。 换句话说,从表面反射回来的光线不会比它撞到地表前更强烈。 作为艺术家,我们不必担心控制能量守恒。 这是PBR的一个很好的方面,能量守恒总是由着色器强制执行。 这是基于物理模型的一部分,它使我们能够更专注于艺术而不是物理。
菲涅耳效应
菲涅耳反射因子在基于物理的阴影中作为BRDF的系数也起着至关重要的作用。 法国物理学家Augustin-Jean Fresnel观察到的菲涅尔效应(Fresnel Effect)表明,从表面反射的光线量取决于观察角度。
例如,想一下水池。 如果垂直于水面向下观察,可以看到底部。 以这种方式观察水面将处于零度或正入射,正常情况是表面法线。 现在,如果你在一个更加平行于水面的角度凝视水面,你可能会发现水面上的镜面反射变得更加激烈,可能使你无法看到水面以下。 一般来讲,菲涅尔不是我们在使用PBR时候需要控制的东西。 这是PBR着色器为我们处理的另一个物理方面。 当以入射角观察表面时,所有平滑的表面都接近100&反射,入射角90度。
对于粗糙的表面,反射率会变得越来越高,但是我们不会接近100%的镜面反射。 那么重要的是每一个微法线的法线与光线之间的角度,而不是“宏观”法线与光线之间的角度。 由于光线分散到不同的方向,反射看起来更柔和或更暗淡。 你在宏观层面得到的结果有点类似于微观层面的所有菲涅尔效应的平均值。
F0(0度的菲涅耳反射)
当光线直接或垂直(0度角)照射到一个表面上时,有一定比例的光线被反射回来,形成镜面反射。 对表面使用折射率(IOR),可以导出反射回来的量,这被称为F0(菲涅耳0),如图09所示。被折射到表面的光量被称为 1-F0。
图09 对于粗糙的表面,反射率会变得越来越高,但是我们不会接近100%的镜面反射
大多数常用电介质的F0范围为0.02-0.05,对于导体F0范围将为0.5-1.0。 因此,表面的反射率由折射率决定,如Sebastien Lagarde的“Feeding a Physically-based Shading Model”博客文章中的以下等式所示,如图10所示。
图10
在创作我们的纹理方面,我们所关心的是F0反射值。 非金属(电介质/绝缘体)将具有灰度值,而金属(导体)将具有RGB值。 关于PBR和反射的艺术解释,我们可以说,对于一般的光滑介质表面,F0将反射2%到5%的光线和在入射角度反射100%,如图09所示。
电介质(非金属)反射率值实际上并没有非常大的变化。 事实上,如果粗糙度发生变化,反射率的值的实际变化就很难看出来。 但是,这些值有所不同。 在图11中,您可以看到一张图表,显示了金属和非金属材料的F0范围。
图11
请注意,非金属的范围不会差别很大。 宝石是一个例外,因为他们有更高的值。 我们将主要讨论F0,因为接下来我们要特别讨论导体和绝缘体。
导体和绝缘体(金属和非金属)
当为PBR创建材料时,我觉得提前考虑一下这个材料是金属或非金属这点有所帮助。 我只需要简单的问一下自己,材料表面是不是金属。 如果是的话,我遵循一套准则,如果不是的话,我会遵循另一套准则。除了宝石这种类金属需要单独考虑以外,提前考虑一下材料是不是金属 这在创作过程可能是一个相当简单的方法来提高效率,因为大部分材料都属于金属或非金属这样的类别。 为了制定创作材料的思考准则,我们首先必须了解我们正在努力创造什么。 使用PBR,我们可以查看金属(导体)和非金属(绝缘体)的属性以推导出这套准则。
折射的光被吸收,金属的色调来自反射光,因此在我们的地图中,我们不给金属漫反射的颜色
金属
金属(导体)是热量和电力的良好导体。 简而言之,导电金属中的电场为零,当一个由电场和磁场组成的入射光波撞击表面时,部分被反射,所有的折射光被吸收。 如图12所示,抛光金属的反射率值将变得比较高,大约处于70-100%。
图12
一些金属吸收不同波长的光。 例如,黄金在可见光谱的高频端吸收蓝光,因此显示为黄色。 但是,由于折射光被吸收,所以金属的颜色色调来自反射光,因此在我们的地图中,我们不给金属漫反射的颜色。 例如,在镜面反射/光泽工作流程中,在漫反射贴图中,原始金属被设置为黑色,反射值是镜面反射图中的有色值。金属反射值将为RGB,并且可以进行着色。 由于我们在基于物理的模型中工作,因此我们需要在地图中使用真实世界的金属反射率测量值。
金属纹理化的另一个重要方面是金属会腐蚀。 这意味着风化元素在金属的反射状态中起很大的作用。 例如,如果金属生锈,则会改变金属的反射状态,腐蚀区域将作为介电材料处理,如图13所示。
图13 风化元素可以在金属的反射状态中起很大的作用
而且,涂漆的金属不像金属一样处理,而是电介质。 油漆作为原材料中最外部的一层。 只有从切削油漆中暴露出来的原材料被视为金属。 金属上的污垢或其他任何妨碍原始金属的物质也是如此。
上文中说过,我总是问自己,这个材料是不是金属。 但是,更确切地说,也应该自问一下金属的状态,例如涂漆,锈蚀或覆盖污垢/油脂。 如果材料不是原始金属,则会被视为电介质,并且根据风化的不同,金属与非金属之间可能会存在一些混合。
非金属
非金属(绝缘体/电介质)是不良导体。 折射光被散射和/或吸收(经常从表面重新出现),因此它们反射的光量比金属少得多,并且将具有反照色彩。 我们之前曾经说过,根据折射率计算出来F0,普通电介质的值大约在2-5%左右。 这些值包含在0.017-0.067(40-75 sRGB)的线性范围内,如图14所示。除宝石之外,绝大多数电介质不会超过4%。
图14 普通电介质的值是由折射率(IOR)计算的F0值的2-5%
就像金属一样,我们需要使用真实世界的测量值,但是很难找到其他不透明材料的IOR。 然而,大多数常用电介质材料之间的价值并没有大的改变,所以我们可以利用一些指导原则来反映反射值,我们将在第二卷中介绍。
线性空间渲染
线性空间渲染可以占用整篇文章去讲,所以,此处我们不讨论细节,我们更在乎的是在线性空间中的计算。
简单来说,线性空间渲染为照明计算提供了正确的数学基础。它可以创造环境,模拟光线在现实世界中的行为。 在线性空间中,伽玛是1.0。 然而,为了使我们的眼睛看起来正确,线性伽玛需要被移位。 伽玛编码空间(sRGB)补偿计算机屏幕上显示的图像。 图片的值都是在做出调整以后显示的。
在计算颜色值和对颜色执行操作时,所有计算都应在线性空间中执行。简单来看,如果要在渲染中显示图像,如基本颜色或漫反射,则需要将这些贴图设置为sRGB。 如果图像被标记为sRGB,它将被转换为线性进行计算,然后返回sRGB进行显示。 但是,如果存储纯粹表示粗糙度或金属等纹理中的曲面属性的数学值,则必须将这些映射设置为线性。
Substance会自动处理输入的线性/ sRGB空间之间的转换以及渲染视口中计算结果的伽马校正。 作为设计人员,您无需担心Substance管线中线性空间计算和转换的内部工作。 当通过Substance integration插件使用材质时,线性空间的转换也会自动处理。
但是,了解过程非常重要,因为将Substance贴图用作导出的位图而不是材质时,可能需要根据所使用的渲染器手动处理转换。 您需要知道基本颜色/漫反射贴图是sRGB,其余是线性的。
关键因素
现在我们已经探索了物理背后的基本理论,可以推导出PBR的一些关键因素。
1.能量损耗。 反射的光线不会比第一次碰到表面时的光线更亮。 耗能由着色器处理。
2.菲涅耳。 BRDF由着色器处理。 对于大多数常见的电介质,F0反射率值具有最小的变化,落在2%-5%的范围内。 金属的F0是70-100%的高值。
3.通过BRDF,粗糙度或光泽度图和F0反射率值来控制镜面强度。
4.照明计算在线性空间中计算。 所有具有伽马编码值(如基色或漫射)的地图通常都会被着色器转换为线性,但是您可能必须通过在游戏引擎中导入图像时检查相应的选项来确保转换正确完成,或者渲染器。 描述表面属性(如粗糙度,光泽度,金属和高度)的图应设置为线性。