PBR经不太长时间的发展,技术上和渲染的效果突飞猛进,是计算机图形学的下一代渲染技术。它在实时渲染和离线渲染领域都有着非常广泛且深入的应用。2012年可以称之为游戏行业PBR元年,这一年迪士尼动画工作室对基于物理的渲染进行了系统研究,并开发出了迪士尼BRDF,用于电影《无敌破坏王》,并且在年SIGGPRAPH2015上提出修正后的的BSDF适合离线渲染。
基于物理的渲染,其实早在20世纪就已经在图形学业界有了一些讨论,迪士尼动画工作室在SIGGRAPH 2012上著名的talk《Physically-based shading at Disney》中提出了迪士尼原则的BRDF(Disney Principled BRDF),由于其高度的通用性,将材质复杂的物理属性,用非常直观的少量变量表达了出来(如金属度metallic和粗糙度roughness),在电影业界和游戏业界引起了不小的轰动。从此,基于物理的渲染正式进入大众的视野,也奠定了后续游戏行业和电影行业PBR的方向和标准.
在2012年受到Disney的启发后,以下是主流游戏引擎从传统渲染转移到基于物理的渲染时间节点:
【SIGGRAPH 2013】 UE4 :《Real shading in unreal engine 4》
【SIGGRAPH 2014】 Frostbite(寒霜): 《Moving Frostbite to PBR》
【GDC 2014】 Unity:《Physically Based Shading in Unity》
【 2014】 CE3.6:《Physically Based Shading in Cry Engine》
现在电影和游戏,使用PBR技术渲染的真人电影,拟真电影,以及各类游戏数量越来越多,《战斗天使》《流浪地球》《驯龙高手3》等。实时游戏。PBR的身影流传于PC游戏,在线游戏,移动游戏,主机游戏等游戏细分领域,我们做游戏的人大多体验过次世代效果的魅力。主机上最早使用PBR的是《教团1886 》2015年发布,神海4 2016年发布,国内端游《逆水寒》 移动游戏《完美世界手游》《绝地求生·刺激战场》《楚留香》。
1.回顾渲染光照模型发展
在引入物理真实渲染之前,大部分渲染器使用的是传统的光照模型,比如:Lambert(1760),Phong(1973),Blinn-phong。我们先来回顾下传统的光照模型.
公式: Lambert diffuse = I*(L*N); hLambert = difLight * 0.5 + 0.5;
diffuse:反射光线的的光强;
I:入射光线的光强,方向如上图所示;
cosθ:入射光线和该顶点法线的余弦,如上图所示;cosθ = L*N;
所以,最后的数学表达式为:diffuse = I*(L*N);
光源照射到物体表面后,向四面八方反射,产生的漫反射效果。这是一种理想的漫反射光照模型。如图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑。 Lambert-它不包括任何任何镜面属性,对粗糙物体来说,这项属性是非常有用的,它不会反射出周围的环境。Lambert材质可以是透明的,在光线追踪渲染中发生折射,但是如 果没有镜面属性,该类型就不会发生折射。平坦的磨光效果可以用于砖或混凝土表面。它多用于不光滑的表面,是一种自然材质,常用来表现自然界的物体材质,如:木头、岩石等。
hLambert = difLight * 0.5 + 0.5;
Half Lambert光照模型是Valve公司在制作”半条命“游戏时发明的,用来给在比较暗的区域显示物体。总体来说,该光照模型提高了物体表面的漫反射光,既保证了兰伯特模型计算出来的光照结果大于0,又整体提升了亮度,使非直接受光面不是单纯的置为黑色。这是一个在图形学领域经常有的变换,区间转化,从(-1,1)转化到(0,1),如果不考虑无意义的负值,也可以说成从(0,1)转化到了(0.5,1)。方法很简单,乘以0.5再加上0.5。这样,原本亮度为1的地方,乘以0.5变成了0.5,加上0.5就又成了1,而原本光照强度为0的地方,就变成了0.5,原本为负数的地方,也能保证为大于0了。
Normal的制作流程跟现在的做法差不多。从Diffuse上面来看,不仅画了颜色,还画了明暗,甚至呢,画了质感在上面。Specular呢,直接是表达了物体的高光颜色、高光聚散、及物体的高光强度,比如剑。
先说说Phong光照模型,它是真实图形学中提出的第一个有影响的光照明模型,该模型只考虑物体对直接光照的反射作用,认为环境光是常量,没有考虑物体之间相互的反射光,物体间的反射光只用环境光表示。Phong光照模型属于简单光照模型。