Pull to refresh

Анализ кадра Mortal Kombat 11

Reading time 2 min
Views 15K
Original author: Alain Galvan
Mortal Kombat 11 — одна из самых впечатляющих внешне игр, вышедших в 2019 год: потрясающие лицевые анимации, тени, освещение и эффекты постобработки. И это ещё не учитывая того, что игра на самом деле увлекательна, имеет сложные бои и захватывающий сюжет.

Я просто обязан был изучить рендерер Mortal Kombat 11, чтобы понять, как же достигается такая удивительная графика, а теперь поделюсь своими открытиями с вами.

Проход вычисления теней


Каждый кадр начинается с прохода теней (shadow pass).

Shadow Depth 4x MSAA 4 Channel Comparison

Каждая карта теней составляется из четырёх стенсил-карт глубин теней с суперсэмплированием (SSAA), которые затем преобразуются в четырёхканальную моментальную карту теней (Moment Shadow Map, MSM) [Peters et al. 2016]. В каждом из каналов хранятся $z$, $z^2$, $z^3$ и $z^4$.


Позже эта карта используется в проходе получения теней (shadow resolve pass) до наложения освещения. В результате получается наилучшее качество теней, которого можно достичь растровыми методами затенения.

В массиве текстур закодировано три отбрасывающих тень источника освещения, которые присутствуют в этой сцене.

G-Pass



Общий проход (General Pass, G-Pass) в Mortal Kombat 11 выглядит довольно странно. Есть четыре буфера элементов, в которых хранятся такие сжатые данные, как яркость, нормали видового пространства по оси X, линейная глубина (из которой можно сделать вывод, что в качестве единиц измерения в Mortal Kombat используются метры (м)), а также странные данные, например, ambient occlusion с дизерингом и идентификаторы материалов.

Почти каждый входной материал в G-Pass хранится в формате сжатия блоков.

Ambient Occlusion



До прохода ambient occlusion из своих сжатых буферов геометрии (G-Buffers) воссоздаются нормали видового пространства и глубина, а также вычисляется иерархический z-буфер [Greene et al. 1993]. Затем на основании этих буферов в сочетании с массивом текстуры белого шума 32x32 размера 8 вычисляется ambient occlusion.

Зеркальное освещение



Зеркальное освещение использует IBL из кубической карты 512x512, а также источники освещения в сцене, и вычисляется при помощи вычислительного шейдера по фрагментам.

Рассеянное освещение



В проходе рассеянного освещения (diffuse lighting) тоже используется вычислительный шейдер и оно вычисляется по фрагментам.

Объёмное освещение



Объёмное освещение выполняется при помощи линейной глубины, а также текстуры рассеяния и пропускания света.

Временно́е сглаживание



Стандартно для временно́го сглаживания (temporal anti-aliasing) используется буфер скоростей для репроецирования предыдущих сэмплов и получения готового сглаженного результата.

Проход UI



Весь интерфейс в Mortal Kombat рендерится в отдельный render target, а затем накладывается поверх готового результата с тональной коррекцией.


Mortal Kombat — одна из самых красивых игр в поколении проектов с рендерингом на основе растеризации.

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+24
Comments 6
Comments Comments 6

Articles