真人快打11框架分析

《真人快打11》是2019年发布的最令人印象深刻的游戏之一:令人惊叹的面部动画,阴影,照明和后处理效果。这并没有考虑到游戏实际上令人着迷,具有复杂的战斗和令人兴奋的情节这一事实。

我只需要研究Mortal Kombat 11渲染器即可了解如何实现如此惊人的图形,现在我将与您分享我的发现。

阴影计算合格


每帧都以阴影传递开始

阴影深度4倍MSAA4通道比较

每个阴影图由四个超采样阴影模板图(SSAA)组成,然后将其转换为四通道即时阴影图(MSM) [Peters等。2016]每个通道都存储zz2z3z4


稍后在应用照明之前,此贴图将在阴影解析过程中使用。结果是可以通过光栅着色方法获得的最佳质量阴影。

纹理阵列对存在于此场景中的三个阴影投射光源进行编码。

G通行证



Mortal Kombat 11中的普通通行证(General Pass,G-Pass)看起来很奇怪。共有四个元素缓冲区,用于存储压缩数据,例如亮度,沿X轴的视口法线,线性深度(由此可以得出的结论是,在真人快打中用作测量单位的单位(m))以及奇怪的数据例如,环境抖动遮挡和材质标识符。

G-Pass中的几乎所有输入都以块压缩格式存储

环境光遮蔽



在通过环境光遮挡之前,先从其压缩的几何缓冲区(G缓冲区)重新创建视图空间法线和深度,然后计算分层的z缓冲区[Greene等。1993]然后,基于这些缓冲区,结合白噪声纹理32x32大小的数组,8计算环境光遮挡。

镜面照明



镜面照明使用立方贴图中的IBL 512x512以及场景中的光源,并使用片段片段着色器进行计算。

漫射照明



在漫射照明通道中,还使用了计算着色器,它是通过片段计算的。

体积照明



使用线性深度以及光的散射和透射纹理执行体积照明。

临时平滑



作为时间抗锯齿的标准,速度缓冲器用于重新编程先前的样本并获得最终的平滑结果。

UI通行证



Mortal Kombat中的整个界面被渲染到一个单独的渲染目标中,然后通过色调校正叠加在最终结果的顶部。


《真人快打》是栅格渲染项目中最漂亮的游戏之一。


All Articles