Как работает графика PUBG. Где оптимизация?

Здаров!
В данном посте хочу поделиться всякой инфой касательно работы графики в PUBG и некоторыми найдеными косяками. Этакий познавательно детективный пост.

Я запилил все видосом, но не хватает репы на его прикрепление в пост.

Кому лень читать:
Вот линк https://youtu.be/oup3dSeGAhM
А вот таймлапс рендеринга кадров PUBG https://youtu.be/QRrztpb24ag

Кому лень читать и смотреть, снизу оставил линк на снапшоты для RenderDoc, можно самому посмотреть на весь процесс.


Давайте разберем процесс построения кадра в PUBG.

Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост

1. Этап. Непрозрачные статические объекты в поле зрения камеры рендерятся в буффер глубины. Рендерятся без текстур. Поэтому процесс довольно шустрый.

Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост

Эта карта глубины нужна движку в последующем для различных целей. Например отсечение лишней геометрии. Тех объектов которые перекрыты другими. Плюс для рисования декалей, для эффекта глубины резкости (DoF), объемного тумана и тд.

Этот этап требует синхронизации с процессором, а значит, пока не построим карту глубины, дальше ничего не рендерится.

И вот тут мы приходим к фейлу №1. В пубжике объектов очень много и карта 8кв км. Дальность камеры конская. Поэтому движку очень часто приходится работать с огромным количеством геометрии в кадре. Тут есть переиспользование данных из предыдущих кадров (для скорости), но когда ты крутишь камерой, то эти данные типа устаревают и нужно начинать все сначала.

Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост

На графике количества отрисовок (Draw Call) мы видим пики. На эти пики садится твой ЦП и себе на колени усаживает видюху.

От этого время кадра гуляет, регулярно фризы и прочие неприятности. Кстати, в зависимости от происходящего, перед этим этапом может быть этап симуляции частичек, если у нас есть какие-то взрывы, огонь и прочее.

Идем дальше по построению кадра.

Этап 2.

Рисуем объекты сразу в несколько буфферов: GBufferC дифьюз , GBufferA - нормали, SceneColorDeferred - непрямого освещения, Distortion -отражаемости, матовости и тд.

Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост
Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост
Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост

Потом рендерим HBAO+, каскады теней и прозрачные объекты.

Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост
Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост
Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост

Далее идут всякие эффекты, пост эффекты и кадр готов.

В принципе, ничего особенного. Но разрабам надо разобраться с кулингом. Т.к. стандартное отсечение геометрии работает хреново от слова совсем. Куча геометрии остается не выброшеной из кадра. Как например весь интерьер каньона. Смотрим положение камеры на первом скриншоте. Смотрим на каньон.

Как работает графика PUBG. Где оптимизация? PUBG, Компьютерная графика, 3D графика, Компьютерные игры, Игровая графика, Длиннопост

В пубже нет предзапеченной инфы по отсечению геометрии, как например это делает UMBRA. И это по-моему единственное спасение. Но зачем оптимизировать, если лучше запилить никому не нужную пустынную карту, на которой багов еще больше чем на старой.


Я загрузил снапшоты на мегу https://mega.nz/#F!oew32S5D!-LqDvyKeFMNDHLudeWJo9g
Можно качнуть и просто открыть в RenderDoc, там все посмотреть самостоятельно.

Playerunknown's Battlegrounds

163 поста584 подписчика

Добавить пост

Правила сообщества

В данном сообществе запрещено:

- нарушать базовые правила Пикабу;

- размещать посты, не связанные с тематикой сообщества.

А так же:

- прыгать на Починки

- рашить дом со сковородкой - ходить через мосты - стрелять в подоконники По любым вопросам, в том числе нарушению правил, вы можете призвать администратора или модератора сообщества, поставив перед его ником знак @.