siggraph18, activision.sledgehammer带来。
主要谈的是sledgehammer工作室在cod材质系统方面的探索,这里btw一下,cod系列是infinityward,sledgehammer和treyarch三家工作室轮流开发。
开始inifinityward的cod4确实才华横溢,以出色的制作实力(设计,美术和技术非常均衡)开创cod,后来一堆乱事,主创也走了,后面的cod系列,虽然在设计上不复当年的惊艳,但是开始呈现大厂工业生产风的设计风格有连贯性,制作品质和技术稳步前进的风格。进一步也有了research center,可以看出来,这样的成功的系列产品,对于技术的持续探索是多么的重要。
本文是进一步聊了材质光照相关的东西,主要包括:
- normal & gloss mipmapping
- material surface occlusion
- multiscattering diffuse brdf
已经在pbr的大框架下,在实时的前提下,不停的逐步推进物理准确性。
主要看点是: - 目前PBR的进一步发展趋势,就是在更加细节的地方,物理更加正确
- activision做R&D的方式,非常的严谨,和实验室发论文并无二致,非常喜欢,不过所以本篇文章偏理论,读者看着会比较枯燥,但必须疾呼这个其实很酷很牛逼的!!!
- 工程上,每一个方面的提升,都是基于正确的理论,来做高效的近似,而不是“直接hack,看着挺好就挺好”
normal&gloss mipmapping
这个其实在farcry和crytek的之前文章都有涉猎,这里在方向上是一致的:把normalmap看做gloss的一部分,尤其是远处的时候,normal的细节因为normalmap的mipmap的原因丢失,那么应该转入gloss的mipmap中去。
文中进一步给出了更精准的数学推理和做法,上图的表就比较有应用作用了。
blending细节normal的时候,再次提到经典blog:https://blog.selfshadow.com/publications/blending-in-detail/
material surface occlusion
这里也是考虑的颇为细致,赞一个。
就是normalmap可以用来在材质级别上去生成ao&self shadow信息,并且重新思考了ao的shading方式。
normal map->ao做法上这个顺序
- normal map->heightmap
- heightmap->ao
=ao的shading=
这个是我们常用的shading ao的方式,可见的部分是一个亮度,被occluded的地方,就是黑的,但是这个和实际情况不符,occluded的地方也是有反射的。
这里可以考虑到旁边材质的间接反射:
这样就精准了。
=ao的应用=
最后ao也是用在了specular occlusion上面
multiscattering diffuse brdf
这是一个早期开发时候的图,文中发现左边比右边亮,这个不符合我们的常识,右边是向阳的,应该更亮才对呀。
这里进一步就引发了对光照模型的探索,中间是明确区分了specular和diffuse,这个导致了不够能量守恒。
=能量守恒=
正确方式:
所以我们要根据specular的能量反射来调整diffuse lighting的量。
这个specular lighting的反射如何测定(或者游戏中现实的方式去决定),作者使用的是EnvBRDF的table来做specular的能量测定方式。
=multiple scattering diffuse brdf=
另外作者也进一步引进了Heitz的做法。
考虑到了能量在macrofacet之间的反射,要进一步将scatter考虑进来。
这里就是对于光照模型的运用,贴下ref就好了
[Mat03] A Data-Driven Reflectance Model
[Brd12] BRDF Explorer