《KillZone4:ShadowFall》DemoPostMortem
存到自己的微云里面,连接:http://url.cn/EcYTwc
(话说微云还是方便多了,在国内付费什么的都比较容易,速度也快,之前用的google drive和skydrive就是速度和付费太麻烦了。)
guerilla的lead tech coder带来的引擎方面在开发KZ4:ShadowFall时候的一些经验。
背景
guerilla并不是一个特别大的studio,而且现在除了kz4还在开发一个新的游戏(没有公布),所以在技术方面没有那么多的革新也是情理之中。
路还是踏实的一步步走比较好。
数据
一系列非常有用的数据:
并行性:传统的渲染,动画,物理高度并行之外,AI和逻辑也达到了%80都是并行的运行了,其并行计算趋势非常明显了。
CPU优化:guerilla通过处理thread contention获得了很多性能的提升,高层的优化优先,这个搞定了之后再进入底层优化比较好
渲染
- deferred shading
- HDR+LinearSpaceLighting
- 没有点光源了,只有area lighting
- render target很多是在内存里面overlap的,这个就是console开发的优势了
character数据:
vertex shader一些优化:
- 根据shader来排序会提升性能
- 使用normal/tangent+sign_bit来代表TBN矩阵
- 低lod上面没有tangent space分量了
particle:未来会移动到compute shader来计算
post process:
- 可能的话尽可能用小格式来处理,R11G11B10比FP16和FP32的性能要好非常多
- 常用的一些技巧:低resolution,dynamic branch,
reflection
- 类似irradiance volume这样的加了很多采集周围光照信息的cube map,然后每个pixel采集周围的probe上面的cubemap信息来进行光照
- 提到ray trace的做法,但是应该不是我们传统说的那个ray trace吧,但是又不像简单的local reflection,这里提到说是guerilla的秘密,包括:
- temporal reprojection
- hierarchical buffer
volumetric
- low resolution buffer+bilateral filter
- ray marching
- 16层的participating media buffer&lighting buffer