Pbr学习 没有环境贴图的pbr部分

从learnOpenGL学习的

D部分

正态分布函数DD,或者说镜面分布,从统计学上近似的表示了与某些(中间)向量hh取向一致的微平面的比率。举例来说,假设给定向量hh,如果我们的微平面中有35%与向量hh取向一致,则正态分布函数或者说NDF将会返回0.35。目前有很多种NDF都可以从统计学上来估算微平面的总体取向度,只要给定一些粗糙度的参数以及一个我们马上将会要用到的参数Trowbridge-Reitz GGX:

NDFGGXTR(n,h,α)=α2/π((n⋅h)2(α2−1)+1)2

当粗糙度很低(也就是说表面很光滑)的时候,与中间向量取向一致的微平面会高度集中在一个很小的半径范围内。由于这种集中性,NDF最终会生成一个非常明亮的斑点。但是当表面比较粗糙的时候,微平面的取向方向会更加的随机。你将会发现与hh向量取向一致的微平面分布在一个大得多的半径范围内,但是同时较低的集中性也会让我们的最终效果显得更加灰暗。

G部分 几何函数从统计学上近似的求得了微平面间相互遮蔽的比率,这种相互遮蔽会损耗光线的能量。

与NDF类似,几何函数采用一个材料的粗糙度参数作为输入参数,粗糙度较高的表面其微平面间相互遮蔽的概率就越高。我们将要使用的几何函数是GGX与Schlick-Beckmann近似的结合体,因此又称为Schlick-GGX:

GSchlickGGX(n,v,k)=n⋅v/((n⋅v)(1−k)+k)

kdirect=(α+1)2/8 kdirect=(α+1)2/8 a=roughness;

kIBL=α2/2

F部分 菲涅尔现象 

FSchlick(h,v,F0)=F0+(1−F0)(1−(h⋅v))5

BRDF需要的参数就是他们构成的 

你可能感兴趣的:(glsl)