Пара слов про геометрию в Cyberpunk 2077 (дополнено)
Как нам известно, релиз Cyberpunk 2077 вышел скандальным, и причиной тому была не только неиграбильность консольной версии, но и слабая оптимизация на ПК. Некоторые издания и блогеры (многие уже догадались, о ком речь), а как следствие, и их зрители, начали ретранслировать информацию о том, что в городской локации Cyberpunk 2077 сверхдетализация, и одной из главных причин низкой производительности является именно огромное количество геометрии. Что же, благодаря бесплатной программе от амд под названием GPU Profiler, доступной на официальном сайте, мы попытаемся разобраться, насколько это соответствует действительности.
Важно отметить: сейчас мы не будем пересчитывать количество небоскребов, камней, деревьев, хижин и т.д., ведь речь не о том, где эффектнее реализована геометрия, а о сухих цифрах. Видеокарте неважно, какого качества геометрию она отрисовывает, она "слепо" обрабатывает геометрические "треугольники", определенное количество которых отрисовывается в каждом кадре. Каждый треугольник состоит из 3 вершин геометрии(точек), их общее количество мы и будем замерять.
Еще один нюанс: для подсчета количества непосредственно треугольников недостаточно поделить количество вершин на 3, это так не работает. Например, 3-угольная пирамида состоит из 4 треугольников, но все эти треугольники имеют между собой общие вершины, которых всего получается 4. То есть в 3-угольной пирамиде 4 треугольника и 4 вершины. Это лишь один из примеров.
Итак, приступим:
Был выбран довольно тяжелый кадр, который был "фигурантом" в тестовых отрезках у большинства изданий, в том числе и нашего. Кадр подбирался по простому принципу - точка с наименьшим фпс, и в то же время с наибольшим количеством объектов в кадре.
Нужная нам строчка выделена синим цветом. Мы видим, что данный кадр содержит 5399150 геометрических вершин. То есть, если округлить, 5.4млн. Это, безусловно, немало, но и не выше типичного для среднестатистической игры в открытом мире. Так, для сравнения, возьмем аналогично сложный кадр из Horizon Zero Dawn, где производительность приблизительно на 20-30% ниже типичной:
И GPU Profiler показывает нам довольно неожиданные 13847798 геометрических вершин, что округлённо 13.8 млн и превышает примерно в 2 с половиной раза количество гвершин в аналогично сложной локации Cyberpunk 2077.
Что же получается, избыточную геометрию можно вычеркивать из списка причин низкой производительности Cyberpunk 2077? Или же я чего-то не понимаю? Не буду скрывать, я лишь в процессе освоения данной программы, поэтому буду рад услышать мысли по этому поводу в комментариях, особенно от людей, которые с ней уже знакомы.
Update:
в качестве примера игры со сложной геометрией предоставляется Kingdom Come Deliverance, в котором не много, не мало, а 59.6 млн геометрических вершин, что уже превосходит количество вершин в Cyberpunk 2077 более чем в 10 раз! И, вероятно, превосходит вообще любую существующую на сегодняшний день игру по этому показателю. Но что примечательно, производительность видеокарт в нем выше, чем в Cyberpunk 2077, чего не скажешь о процессорной производительности - с этим всё плохо, во многом из-за выше упомянутой геометрии, симуляции жизни NPC, огромной дальности прорисовки, и все это "под соусом" не очень качественно оптимизированного дх11, и без того устаревшего на сегодняшний день(основная часть вызовов на отрисовку ложится на одно ядро, в то время как в DX12 и Vulkan есть возможность "раскидать" их равномерно на неограниченное число ядер, что при должном усердии от разработчиков сводит на нет любые проблемы, связанные с процессорозависимостью, если в распоряжении есть многопоточный процессор). Консоли этим благополучно пользуются в своих эксклюзивах еще со времен Xbox 360 и PS3...
А проект студии CD Project Red как раз наоборот, по процессорной части преуспел(правда, для Райзенов лишь после 2 патчей), благодаря более современному DX12, хорошо "распараллеленному" на 8 потоков(то есть способен хорошо загрузить даже 8/16 процессоры). Но ведь там ни огромного количества вершин, ни симуляции жизни NPC, ни огромной дальности детализации(прорисовки) не наблюдается, так что с чего бы им запороть еще и процессорную производительность...
Данный скриншот позаимствован у Mox Falder, замер производился через ReShade.