《最终幻想》的渲染技术

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
优化
drawcall合并,开始是各种材质都上,所以不可避免的drawcall过多,然后把材质进行了合并,drawcall大幅度下降,带来的gpu stall也降低了
  • 不过文中没提,gpu stall应该来自其中状态资源的切换,而不是纯粹的drawcall导致
  • 对比下gpu stall的图:
把skinning的结果cache也会有很多的性能提升
shading:大部分场景等使用通用shader,人物等重要的东西使用特别的shader
光照
全局光照:
  • 静态物体,lightmap:保存spherical harmonics系数的light map(bungie在halo中的做法)
  • 对于动态物体:irradiance volume,使用spherical harmonics来存储数据
AO
  • 有类似《分裂细胞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来达到的。


各向异性的布料材质

内容没说,看下对比图吧:




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值