3D 探索 - Physically Based Rendering

May 22

基于物理的渲染

简单的介绍
聚焦 ThreeJS 中 MeshPhysicalMaterial PBR 材质所用的贴图

PBR

基于物理的渲染,真实的表达物体与光的交互效果,指路 ->

微平面理论(Microfacet Theory)

从微观的角度去分析,认为任意物体的表面在到达微观的尺度之后,都是由许许多多的更小的镜面所组成的

能量守恒(Energy Conservation)

出射光线的能量永远不能超过入射光线的能量。随着粗糙度的上升镜面反射区域的面积会增加,作为平衡,镜面反射区域的平均亮度则会下降。

菲涅尔反射(Fresnel Reflectance)

光线以不同角度入射会有不同的反射率。相同的入射角度,不同的物质也会有不同的反射率。万物皆有菲涅尔反射。F0 是即 0 度角入射的菲涅尔反射值。大多数非金属的 F0 范围是 0.02 ~ 0.04,大多数金属的 F0 范围是 0.7 ~ 1.0

线性空间(Linear Space)

因为光的传播是线性的,所以光照计算必须在线性空间完成。线性:多个值相加的和作为输入所得到的输出,等于这些值分别作为输入得到的输出值最后相加,f(x+y) = f(x) + f(y)

色调映射(Tone Mapping)

基于 HDR 渲染出来的亮度值会超过显示器能够显示最大亮度,所以需要使用色调映射,将光照结果从 HDR 转换为显示器能够正常显示的 LDR

物质的光学特性(Substance Optical Properties)

现实世界中有不同类型的物质可分为三大类:绝缘体,半导体和导体

THREE.MeshPhysicalMaterial

map

颜色纹理,最常见的纹理,反应的是物体表面的颜色

alphaMap

灰度纹理,用于控制整个表面的不透明度

aoMap

环境遮挡纹理(红色通道),是用来描述物体表面被光线的遮挡程度

bumpMap & normalMap & displacementMap

凹凸纹理 & 法线纹理 & 位移纹理,表面的凹凸以及细节 ->

emissiveMap

自发光纹理

envMap

环境纹理,在应用时能反应一个物体表面所对的环境的颜色

lightMap

光照纹理,反应物体表面的阴影情况

metalnessMap

金属度贴图,该纹理的蓝色通道用于改变材质的金属度

roughnessMap

粗糙度贴图,该纹理的绿色通道用于改变材质的粗糙度

specularColorMap

高光纹理,高光效果