http://blog.selfshadow.com/publications/s2012-shading-course/smits/s2012_pbs_pixar_model_slides_v2.pdf
http://blog.selfshadow.com/publications/s2012-shading-course/smits/s2012_pbs_pixar_model_notebook_v2.pdf
siggraph2012的practical physically based shading in films and game production中的一篇。
pixar带来。
很喜欢wall-e,终于可以探知其光照模型的究竟了。
pixar在<Wall-E>中使用了新的光照模型,我们可以对比<Wall-E>与pixar之前的动画,可以发现品质有了不小的提升,之前是比较Q版的,到了Wall-E动画的感觉更多体现在里面模型的风格上,画面简直真的一样。
必要性
换到现在这个光照系统(其中包含physical based shading部分,也有其他的改进)的几个原因:(基本也耳熟能详了)
- 需要更真实的观感
- 更加高效的渲染速度---也就加快了迭代时间
- 简化光照模型
- 原先基于拼凑的方法过于复杂,导致shader参数调整的时间很长
- 包括diffuse,specular, rim, 其他的组成部分
- 而且和各种不同的类型的光进行计算
- 原先很多多层的材质,渲染巨费
那么新模型的需求也就简单明了了:
- 更简单的参数,易于使用
- 大部分材质的参数简化到:
- color, roughness, metal
- 必要的时候也可以进行一些hack
- 更真实稳定的观感
- 更真实的fresnel现象
- higher dynamic range
- 基于物理的BRDF
- 光的亮度也更高
- 能量守恒
- 对于材质在各种光照环境下保持稳定的观感比较重要
- 不同材质之间对于光照的计算结果能够保持稳定和一致
- 在一种光照环境下,调出一个比较真实的或者说好的效果是比较简单的,但是在所有环境下都适用则极其困难,可以说只能通过正确的基于物理的数学模拟来做到
- 也能做一些简单明了的hack来调整
- 在材质和光照上都有一些
光照
光的行为,包括:
- 在材质表面反射:specular/reflection
- 漫反射和散射
那么我们可以通过两个参数表达:
- roughness:很多模型里面roughness和specularpower都是可以互相转换,物理意义也比较像了
- metallic:这个比较少见,控制subsurface diffuse和镜面反射(这个说的不是很明白,从下面这个图上感觉还就是在能量守恒的前提下,控制subsurface diffuse)
Diffuse
对于非金属来说,有两个来源:
- subsurface scattering,这个也是主要来源, 受fresnel现象影响比较多,
- multiple interface reflection,随着roughness的增加而增加
金属类:
只是来源于multiple interface reflection。
透明(transparency)
包括三个部分:
- transmitted diffuse
- transmitted specular
- refraction
同时也和subsurface scattering相关。
多层(layering)
tri-ace也提到了,看来这个的确是一个进一步发展的时候会面临的课题。
也就是两层这样的:
合成一个这样的:
一般的原理就是光线经过一个transmission函数,透到下一个layer。
transmission的过程中就包含scattering,光线进入和反射出都会经过这样的过程,这样就类似一个blur filter。
记得能量守恒。
最后的结果:
最后的结果
WALL-E和UP(飞屋环游记)都是用这一套系统,很容易得到basic material。并且也易于创建大量复杂的材质。
光照上稳定一致,打光的哥们不用去改shader了,那么进度也就很快。
简化和灵活性都非常重要。