[gdc]Rendering ‘God of War Ragnark‘


gdc23, sony santa monica关于god of war的分享;

back ground

  • 作者stephen mcauley现在是santa monica的technical director;
  • 20年加入santa monica,作为rendering lead,有9年的经验,之前在ubisoft montreal,做farcry系列,所以提到的一些技术带有一些farcry的痕迹;

开发思路 & team

因为定位是rendering lead,所以本质上非技术的沟通工作占据比较多的位置;
stephen加入的时候,会做非常多的沟通,以及查阅之前任务的todo list来获取之前没有完成的事情等等;
同时自我定位也比较清晰,定位技术团队为棒球比赛中的击球手,是一个辅助和强化的作用,但是不是design和artist这种能直接取得胜利的角色;
所以要花很多时间来开发workflow,让content creator能够比较快速的开发;
当然在后期也开始注意到,也要让程序团队能够有一个好的流程;

技术

一个物理正确的框架

上来stephen惊奇的发现,光照亮度等等方面没有“正规化”,会有比较多的美术随意设置的情况;
太阳光设置使用十几这种情况,hmmm,战神也会出现这种情况;

这个实际做起来就是按照正确的物理方式处理就好了:

  • 太阳光按照实际的物理数值
  • 天光和天空球亮度绑定
  • 有一个标准的默认曝光以及tonemapping方法(ACES)

不这么做就在不同阶段有这样或者那样的问题,战神这里就是踩到了其中若干问题:

  • 缺乏一个标准的“base lighting”,大家通过比较随意的lighting数值,各方面彼此再配合,小范围没问题,内容多了的时候,就会出现physically based lighting启用阶段,美术团队不按照物理正确方式使用情况下的问题;
    简言之是做了物理正确的lighting基础,细节可以看frostbite的PBR的文章,写的更加详细;

ray tracing cubemap

在反射中,从parallax corrected cubemap替换成raytraced cubemap:

  • 这里会使用houdini来生成一些geometry mesh来降低trace ray的消耗:

    这里只能说是一种做法,stephen自己也说他们对于raytracing不是很熟悉,所以这里不能简单作为一种牛逼的或者最优的方案来看,实际行业中的一些proxy mesh(lumen中的方案),voxel等都可以采用;

harden contact shadow(ray marching)

正常我们会使用screen space技术来做contact shadow来达到细节精准的shadow;
战神中对于contact shadow的需求:

这里奎爷的鼻子这里就是有点不对,这个处理方式就是contact shadow

e.g.

[gdc]Rendering ‘God of War Ragnark‘_第1张图片

战神这里使用了较好的办法:

  • 在shadow depth中使用ray marching的方法来做contact shadow;
  • 且可以针对area light来做
    这样在精准度等方面都有很好的提升,而且范围覆盖方面更大,效率可控,目前看来效果比较好:
    效果对比:
    [gdc]Rendering ‘God of War Ragnark‘_第2张图片
    (without contact shadow)
    [gdc]Rendering ‘God of War Ragnark‘_第3张图片
    (with contact shadow,可以两个图切换下看区别,细节可以看弓在atreus身上的投影)

你可能感兴趣的:(gdc,渲染引擎,图形渲染)