link:
http://game.watch.impress.co.jp/docs/news/20121129_575412.html
http://psv.tgbus.com/news/ynzx/201306/20130617142700.shtml
http://blog.sina.com.cn/s/blog_6ad33d3501014wad.html
12年时候的最终幻想的技术demo可以说让很多人眼前一亮,这里是其中的一些技术,原文是日文,后面一些国内的翻译也不错。
总体看下来,可以说在业内具有相当的先进性,在局部也有一些自己的理解和不同的做法,很棒!
pipeline
场景是500w到1000w三角形,texture占1.4g到1.8g
数据流程:
其中出现了速度过慢的问题,解决办法:
- 使用二进制导出
- 多个pc一起并行来转换fbx
- 一些巨大的数据放弃使用perforce
- 不过文中没提,gpu stall应该来自其中状态资源的切换,而不是纯粹的drawcall导致
- 对比下gpu stall的图:
shading:大部分场景等使用通用shader,人物等重要的东西使用特别的shader
光照 全局光照:
- 静态物体,lightmap:保存spherical harmonics系数的light map(bungie在halo中的做法)
- 对于动态物体:irradiance volume,使用spherical harmonics来存储数据
- 有类似《分裂细胞5》中的object based ao
screen space subsurface scattering
光照来源有直接光照,有来自irradiance volume的indirect diffuse lighting,有来自envmap的indirect specular lighting
specular lighting model:kelemen szirmay模型
specular光照有两种,干燥的皮肤来源有irradiance volume和envmap(进行blend,有点奇怪),潮湿的specular是只有cube map,结果很棒,可以模拟流汗和流泪的效果
人物的ao是有预先cook好的,也有screenspace ao(这里说的不是很清楚,好像是都有),作用方式不是典型的color(1-ao)而是color=pow(color,1-ao)
皮肤上面有back scatter效果:
眼睛 眼睛渲染,parallax mapping来模拟眼球水晶体对于瞳孔的折射,眼球表面和眼球内部使用不同的bump map来计算specular,眼球表面使用了cubemap、
头发渲染:
光照模型是Marschner,有nurb曲线,有tessellation。
头发specular是有2个specular,加上cubemap,算是有3个specular lighting在起作用了:
头发的阴影,是使用专门的一个低精度的geometry来产生阴影:(图中是用于产生shadow的geometry)
阴影计算的时候会考虑距离来修正pcf kernel。
头发的边缘模糊使用的是msaa+fxaa+dof来达到的。
各向异性的布料材质
内容没说,看下对比图吧: