Real Time Shading Model (3)

总结一下基于物理的模型实现上的主要特点:

  • Energy Conserving Model,能量必须守恒,也就是反射的能量不能大于入射的。大部分经验模型这点都是不满足的,通过加入一些Normalization项可以进行修正,获得更可控的Shading Model
  • Punctual Light,假定光源是无穷远无穷小的,这样只用光源颜色和方向就可以完全定义了。
  • HDR Lighting,光照的结果必须有足够高精度,某种基于物理模型就没有意义了
  • Linear Pipeline,必须使用线性渲染管线,Gamma的处理必须正确,参数纹理的颜色空间要统一。

Normalized Blinn-Phong

原始的Blinn-Phong高光并不符合能量守恒,看下面两张图,上面是没有Normalized的,下面是相同的高光参数下符合能量守恒的效果。可见基于物理的模型更容易调整效果,而不用借助各种奇怪的参数。

\(I_{o}=I_{i}((N\cdot L) k_dC_d + k_sC_s(N\cdot H)^e) )\)

其中\(k_s\le\frac{e+8}{8\pi} \)就是保证能量守恒的因子

Ashikhmin-Shirley

各向异性模型。用来表现一些特殊的金属材质。相比其他的模型,可以更好的控制高光的形状。虽然不是基于物理的模型,但是使用了Fresnel函数来获得更真实的反射系数。同时Diffuse项也脱离了Labertian模型,保证了能量守恒,效果还是很不错的,不过计算代价确实很大。如果要用到游戏里面,肯定要做一些简化。

Specular和Diffuse如下:

\(J_s=\frac{\sqrt{(n_u+1)(n_v+1)}}{8\pi}\frac{N\cdot H\frac{n_u (H\cdot T)^2+n_v(H\cdot B)^2}{1-(H\cdot N)^2}}{(V\cdot H)\cdot max(N\cdot L,N\cdot V)}F_r((V\cdot H),C_s)\)

\(J_d=\frac{28}{23}C_d(1-C_s)(1-(1-\frac{N\cdot V}{2})^5)(1-(1-\frac{N\cdot L}{2})^5)\)

下面是原始论文里面的不同的\(n_u,n_v\)值的效果:

当\(n_u = n_v\)时,A.S模型就退化成了各向同性的模型,下面是原始论文里面的效果比较:

\(J_s=\frac{n+1}{8\pi}\frac{(N\cdot H)^n}{V\cdot H \cdot max(N\cdot L,N\cdot V)}F_r(V\cdot H,C_s)\)

注意Diffuse项现在是和视点相关的,Fresnel的加入使得在不同的角度,Diffuse和Specular的比例有所区别,Fresnel采用的是Schlick的简化函数:

\(F_r(u,\rho_s)=\rho_s + ( 1-\rho_s)(1-u)^5\)

加入Fresnel的效果,看下面这张原始论文的图就很直观了:

Tags: ,

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>