Mortal Kombat 11 frame analysis

Mortal Kombat 11 is one of the most externally impressive games released in 2019: stunning facial animations, shadows, lighting, and post-processing effects. And this is not taking into account the fact that the game is actually fascinating, has complex battles and an exciting plot.

I just had to study the Mortal Kombat 11 renderer to understand how such amazing graphics are achieved, and now I will share my discoveries with you.

Shadow Calculation Pass


Each frame begins with a shadow pass .

Shadow Depth 4x MSAA4 Channel Comparison

Each shadow map is composed of four supersampling shadow stencil maps (SSAA), which are then converted to a four- channel instant shadow map (MSM) [Peters et al. 2016] . Each channel is storedz, z2, z3and z4.


This map is later used in the shadow resolve pass before the lighting is applied. The result is the best quality shadows that can be achieved by raster methods of shading.

The texture array encodes three shadow-casting light sources that are present in this scene.

G pass



The general pass (General Pass, G-Pass) in Mortal Kombat 11 looks rather strange. There are four element buffers that store compressed data such as brightness, viewport normals along the X axis, linear depth (from which we can conclude that the units (m) used as units of measurement in Mortal Kombat), as well as strange data e.g. ambient dithering occlusion and material identifiers.

Almost every input in the G-Pass is stored in block compression format .

Ambient occlusion



Prior to passing ambient occlusion, view space normals and depth are recreated from their compressed geometry buffers (G-Buffers), and a hierarchical z-buffer is calculated [Greene et al. 1993] . Then, based on these buffers, in combination with an array of white noise texture 32x32size 8, ambient occlusion is calculated.

Mirror Lighting



Mirror lighting uses IBL from the cubic map 512x512, as well as the illumination sources in the scene, and is calculated using the fragment fragment shader.

Diffuse lighting



In the diffuse lighting passage, a computational shader is also used and it is calculated by fragments.

Volumetric lighting



Volumetric lighting is performed using linear depth, as well as the texture of scattering and transmission of light.

Temporary smoothing



As standard for temporal anti-aliasing, a velocity buffer is used to reprogram previous samples and obtain a finished smoothed result.

UI Pass



The entire interface in Mortal Kombat is rendered into a separate render target, and then superimposed on top of the finished result with tone correction.


Mortal Kombat is one of the most beautiful games in the generation of rasterized rendering projects.


All Articles