[gdc19]《战神4》中的全局光照技术
https://zhuanlan.zhihu.com/p/74569737
[gdc19]《战神4》中的全局光照技术
游戏开发话题下的优秀答主
战神4作为18年的GameOfYear,可以说各种牛逼。
Sony Santa Monica 能够将游戏行业里的旗舰游戏继续推进,并且在品质,设计上都有创新,实属不易。
过程中也是比较曲折,难怪主创看到项目最后成功忍不住泪奔。
这里是全局光照技术的呈现,简单说间接光照在GIVolume+NormalizeEnvMap上终于比较成熟了(《战神4》《蜘蛛侠》都类似做法了),比lightmap有比较明显的优势了,实际应用中完全取代Lightmap比较ok了。
=======愤怒的广告条=========
安柏霖:[招聘贴]Call For HardcoreDeveloper
=======愤怒的广告条=========
这里是简要的mindmap,内容不多,但是含金量不错的,对于我们接下来要提升的全局光照方面也颇有启发。
然后这里必须要来一个让我下巴掉地上的东东:战神地图编辑器是在maya里的,木有自己的专属编辑器。。。
GIVolume优劣
这个是作为indirect diffuse lighting的解决方案,之前是用的lightmap,相比lightmap, GIVolume有这些好处:
GIVolume作为一个3D光照信息,本身确实比2D的lightmap方方面面光照能力强很多,包括
- 可以让静态物件,动态物件光照信息更统一(lightmap只能作用在static obj上,动态物件要别的方式来弄,常常不一致)
- 可以给volume fog,particle这种来打间接光照
- 可以增强IBL(image based lighting,或者我们常说的EnvMap),给IBL进一步的空间信息,提升光照属性
pipeline优势:
- 和geometry解耦,lightmap是重要和mesh uv搞飞机真心烦
所以GIVolume最后成为《战神4》的选择,其实也是《蜘蛛侠》和<horizon zero dawn>(感谢
提供信息)的选择,不知道是不是内部大家沟通的结果,都是sony内部的studio。。。安柏霖:[GDC19]《蜘蛛侠》开发解读(3/4)--Runtime篇zhuanlan.zhihu.com
GIVolume的技术细节
这个就比较直接了:
- 1m一个voxel的精度来存
- 美术放置box,box内部就会cook GI
- 会有漏光的情况,通过normal方向偏移搞定
- GI里面存2band的SphericalHarmonic系数,和天空的visibility
AO和ambient shadow
战神是用了,ssao+ambient shadow+ao map来达到较好的阴影里的“阴影”效果。
(没有任何ao或者ambient shadow信息)
ssao+ao map(蓝色框里面的)+ambient shadow(红色框里的)
ambient shadow是来自last of us里的。
这里有记录:
https://blog.csdn.net/toughbro/article/details/43876137blog.csdn.net
采样角色的capsule即可,不赘述。
IndirectSpecularLighting
捕获IBL就不赘述。
这里和CallOfDuty里做法一样,要做一个normalize(作者很委屈的表示这个是他寄几想出来的)。
call of duty的物理光照内容可以看这里:
https://blog.csdn.net/toughbro/article/details/16927505blog.csdn.net
在战神里是要这样做:
- 把envmap的光照信息做normalize
- 然后用GI的亮度来做最终的indirect specular lighting
这样的理由可以看下图的对比:
可以看到,没有GI信息的时候,IBL带来的反射,在左下有严重的漏光,这是因为indirect specular lighting缺乏空间信息,所以就要从GI中拿。
拿的方式就是 NormalizeEnvMap*GI亮度这样去做。
战神这里总结的很不错:GI提供空间细节,cubemap提供角度细节。
编辑于 2019-07-22
「真诚赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
文章被以下专栏收录
hardcore gamedev
推荐阅读
[gdc19]《战神4》的风力&植被交互系统
[gdc19]《蜘蛛侠》开发解读(2/4)--工具篇
从3A游戏到实时渲染的动画电影,他们是怎么做到的?
你们天天都在说的“祖传引擎”,到底能干嘛?
20 条评论
写下你的评论...
- MaxwellGeng2019-10-05
一米一个SH Probe这种精度,在转角的地方很有可能出现那种明显的明暗变化,不知道可不可以在1m^3的立方体空间内做随机位置多采几张Cubemap多算几次SH然后平均呢?如果没有很随机的实时灯光变化,这种烘焙时增加采样的方法是不是可行呢?
- Dr Evo2019-07-25
根本看不懂! 但没关系, 因为是战神, 有奎爷就有赞👍\(≧▽≦)/
- 招招2019-07-22
sony第一方貌似maya直接内接引擎渲染器当编辑器是标配,顽皮狗、教团1886都是。
- Key Zhang2019-07-22
看起来不如全境封锁的那个牛逼,不过根据gi采ibl很有意思
一样的,只不过division是动态算(basis不是sh,而是六个方向),spiderman他们是静态bake sh,效率和质量可能更好,但是不支持tod天气效果等
是的,战神偏线性所以可以全bake,蜘蛛侠这种不用实时的比较奇怪,不知道是不是有什么特殊处理,还是单纯就是多bake几套
- 大萨比2019-07-21
没什么好委屈的吧。我也是自己想到了以后才看到别人的。COD在算法已经改进了三代,UE4也有自己的混合方法。
- miccall2019-07-21
这个givolume和UE的light propagation volume一样吗?
那请问一下,UE中相关的功能是什么呢?有没有相关资料?
不一样,ue里也有volume概念,但是是用来控制lightmap范围的,light propagation volume和这个做法也是不一样。
- CGBull2019-07-21
用Gi强度去控制反射强度么。
yeah
- 焖茄子2019-07-21
作为 17 年的 game of year, 大家应该会对他家用的技术有信心
18年的
- 焖茄子2019-07-21
其实地平线也用了 gi volume, 这篇文章的 lighting 章节有讲到: https://80.lv/articles/horizon-zero-dawn-interview-with-the-team/
好文章,