UE4的PBR使用 Directional light BRDF + Imaga-based lighting
BRDF: Diffuse BRDF + Specular BRDF
Diffuse BRDF:
使用了Lambert,因为在diffuse项上更复杂的模型和Lambert区别很小

Specular BRDF
使用的是通用的macrofacet model,关键在与每一项的选择上

D(h) : Specular distribution用了GGX(Trowbridge-Reitz), GGX的优势:Fairly cheap + Longer tail(look more natural)

G(l, v, h):Geometric shadowing,用了Schlick, Schlick优势:Matched to Smith, Cheaper but difference is minor, 需要注意的是这里roughness用了Disney’s roughness remapping,
这里简单介绍一下roughness remapping,

reamapping可以在感知上在roughness上有更线性的变化,没有remapping那么在调节shiny材质时需要额外的参数调整
Fresnel:Schlick
Image-base lighting:
需要克服的问题:每个environment map只采样一次,但是要匹配importance-sampled的结果,公式表示如下:

UE4采用的解决方案:split the sum, 然后预计算分开的每个部分,split如下,

第一部分存储在pre-filtered environment map中,

第二部分存储在2D的LUT中

结果对比图如下:

另外UE4的Material model中使用了BaseColor + Metallic + Roughness + Cavity,并没有使用Specular信息(后来UE4中实际提供了一个specular paramters)。其中Cavity相当于非常小范围trace的AO,用来表示real-time shadow不能表示的小shadow。
Birian karis在https://www.unrealengine.com/en-US/blog/physically-based-shading-on-mobile 分享了UE4的pbr在mobile上的优化。
