[siggraph13]《使命召唤:黑色行动2》的光照技术

[siggraph13]《使命召唤:黑色行动2》的光照技术_第1张图片

由CallOfDuty BlackOps2开发商Treyarch带来,BlackOps2是Cod第九部,首日狂揽5亿美元,他们在siggraph11时候带来PhysicallyBasedLighting之后,在siggraph13再度来袭。

文章link:

http://url.cn/KJc0XR   

http://url.cn/KATUYe  

http://url.cn/TKrmJU


preview:

这篇paper可以说讲了treyarch在光照的探索上从85分到90分的前进之路,和很多事情一样,这5分所需要做的事情甚至比之前的80分更加艰难,而且很不同。

siggraph11年的文章(可以看http://blog.csdn.net/toughbro/article/details/6723947)是半理论半经验主义,这次则在理论的探索上走的更远,在遇到游戏实时性能问题的时候,也是采用的数学方法来非常合理的逼近,最后在效果和效率上更进一步。

可以说已经脱离了把玩图形编程小技巧的范畴,使用的是务实的科学研究方法来做事了, I like it!!!

研究过程中也是和业界最顶级的一些人有很多合作,彼此之间想法的碰撞,知识的分享真是不错,我个人在开发的过程中也给作者写信问了些问题,都非常耐心的回答和讨论,

挺棒的。


direct specular lighting

siggraph11年的文章就不再重复了(treyarch在文章中倒是简单回顾了下)。

treyarch对direct specular lighting的结果感到满意,就是希望效率上再好一些。

treyarch对光照模型中的Fresnel和Visibility项做了优化,

fresnel项使用的是mathematica软件,然后用曲线逼近的方法,估算出一个更加优化的公式:

[siggraph13]《使命召唤:黑色行动2》的光照技术_第2张图片

visibility项很难用mathematica来模拟,于是使用的是一个shader test framework来逼近:

[siggraph13]《使命召唤:黑色行动2》的光照技术_第3张图片


IndirectSpecularLighting

normalize

环境贴图的normalize原先使用的是一个亮度,但是envmap是一圈的一个信息,单独的一个亮度信息损失比较大,于是改成存周围一圈的一个大致亮度(使用3rd order的spherical harmonics来保存周围的irradiance),然后使用这个信息来normalize envmap就准确多了。


两个小问题

note中一笔带过,但是挺重要的,一个是对于cod来说256x256的envmap没有必要,128x128就够了。

高光的问题,在计算的时候,treyarch试下来把specular power除以4是一个比较好的能够让indirect specular lighting和direct specular lighting在高光上保持一致:

[siggraph13]《使命召唤:黑色行动2》的光照技术_第4张图片


BRDF

这部分不知道怎么写blog好了,black ops1的时候的indirect specular lighting是基于经验主义弄出来的公式,结果就是有些地方挺好,但是总有一些情况摆不平(开发过程中美术抱怨在gloss低的材质上,indirect specular lighting过亮)。

然后treyarch回到BRDF公式上,然后进行推导,拆分,mathematica里面建curve,进行优化估计尝试,然后curve去对比。

中间各种积分,曲线就不一一贴了,最后结果是:

[siggraph13]《使命召唤:黑色行动2》的光照技术_第5张图片

也不错,不给推导过程,谁都看不懂什么意思,天然带加密的。




你可能感兴趣的:([siggraph13]《使命召唤:黑色行动2》的光照技术)