gamegpu     Search find 4120

 tg2 f2 lin2 in2 X icon 3 y2  p2 tik steam2

Пара слов про геометрию в Cyberpunk 2077 (дополнено)

Как нам известно, релиз Cyberpunk 2077 вышел скандальным, и причиной тому была не только неиграбильность консольной версии, но и слабая оптимизация на ПК. Некоторые издания и блогеры (многие уже догадались, о ком речь), а как следствие, и их зрители, начали ретранслировать информацию о том, что в городской локации Cyberpunk 2077 сверхдетализация, и одной из главных причин низкой производительности является именно огромное количество геометрии. Что же, благодаря бесплатной программе от амд под названием GPU Profiler, доступной на официальном сайте, мы попытаемся разобраться, насколько это соответствует действительности. 

Важно отметить: сейчас мы не будем пересчитывать количество небоскребов, камней, деревьев, хижин и т.д., ведь речь не о том, где эффектнее реализована геометрия, а о сухих цифрах. Видеокарте неважно, какого качества геометрию она отрисовывает, она "слепо" обрабатывает геометрические "треугольники", определенное количество которых отрисовывается в каждом кадре. Каждый треугольник состоит из 3 вершин геометрии(точек), их общее количество мы и будем замерять. 

Еще один нюанс: для подсчета количества непосредственно треугольников недостаточно поделить количество вершин на 3, это так не работает. Например, 3-угольная пирамида состоит из 4 треугольников, но все эти треугольники имеют между собой общие вершины, которых всего получается 4. То есть в 3-угольной пирамиде 4 треугольника и 4 вершины. Это лишь один из примеров. 

Итак, приступим:

Был выбран довольно тяжелый кадр, который был "фигурантом" в тестовых отрезках у большинства изданий, в том числе и нашего. Кадр подбирался по простому принципу - точка с наименьшим фпс, и в то же время с наибольшим количеством объектов в кадре. 

1

2 

Нужная нам строчка выделена синим цветом. Мы видим, что данный кадр содержит 5399150 геометрических вершин. То есть, если округлить, 5.4млн. Это, безусловно, немало, но и не выше типичного для среднестатистической игры в открытом мире. Так, для сравнения, возьмем аналогично сложный кадр из Horizon Zero Dawn, где производительность приблизительно на 20-30% ниже типичной:

3

И GPU Profiler показывает нам довольно неожиданные 13847798 геометрических вершин, что округлённо 13.8 млн и превышает примерно в 2 с половиной раза количество гвершин в аналогично сложной локации Cyberpunk 2077.  

4

 

Что же получается, избыточную геометрию можно вычеркивать из списка причин низкой производительности 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.

KCDmax1080reshade

 

 

  

Люди, участвующие в этой беседе

Комментарии (26)

This comment was minimized by the moderator on the site

Откопал интересную статейку по полигонам и вершинам. Собственно, еще некоторые нюансы из "дебрей" прояснились. Может, кому будет интересно. Написано простым языком, весьма доходчиво, и с картинками

Там также объясняется, почему разное количество треугольников по-разному нагибает. Точнее, большее количество треугольников может быть менее ресурсоемким, нежели меньшее. Я уже догадываюсь, почему 5.4 млн вершин в киберпанке могут нагибать. Само собой, причиной является жопорукость и некомпетентность. Одну из возможных причин озвучу:

GPU быстро работают в основном потому, что они могут выполнять множество операций параллельно. В маркетинговых материалах GPU часто делается упор на количество их конвейеров (pipeline), определяющих количество операций, которые может выполнять GPU одновременно. Когда GPU отрисовывает полигон, он отдаёт множеству конвейеров задание заполнять квадраты пикселей. Обычно это квадрат размером восемь на восемь пикселей. GPU продолжает это делать, пока не будут заполнены все пиксели. Очевидно, что треугольники не являются квадратами, поэтому некоторые пиксели квадрата окажутся внутри треугольника, а другие снаружи. Оборудование работает со всеми пикселями квадрата, даже с теми, которые находятся за пределами треугольника. После вычисления всех вершин в квадрате оборудование отбрасывает пиксели за пределами треугольника.

https://hsto.org/getpro/habr/post_images/74b/c2e/262/74bc2e262019ac7b5f488babc01d7298.png

На рисунке показан треугольник, для отрисовки которого требуется три квадрата (тайла). Большинство вычисленных пикселей (голубые) используется, а показанные красным выходят за границы треугольника и будут отброшены.

Полигон на рисунке 11 с точно таким же количеством пикселей, но растянутый, требует для заполнения большего количества тайлов; бОльшая часть результатов работы в каждом тайле (красная область) будет отброшена.

https://hsto.org/getpro/habr/post_images/9d0/a9e/286/9d0a9e28607c023f81928ea60c8c386a.png

Количество отрисовываемых пикселей — это только один из факторов. Так же важна форма полигона. Для повышения эффективности старайтесь избегать длинных, узких полигонов и отдавайте предпочтение треугольникам с примерно равной длиной сторон, углы которого близки к 60 градусам. Две плоские поверхности на рисунке 12 триангулированы двумя разными способами, но при рендеринге выглядят одинаково.


https://i.ibb.co/qs5wpFc/6666666666.png

Они имеют абсолютно одинаковое количество полигонов и пикселей, но так как поверхность левого имеет более длинные, узкие полигоны, чем у правого, его рендеринг будет более медленным.


Жаль проверить это дело в киберпанке без специализированного софта не получится

Также из статьи стало ясно, как в той или иной игре увеличить нагрузку(сделать уклон) на ROP, текстурники или на геометрию. Так зачастую делается в чемоданных играх - используются методы, наиболее благоприятные для той или иной архитектуры - используются сильные места и снижается нагрузка на слабые.
Само собой, это не всё. Но, как говорится, "одно из".
Копипастить не вижу смысла, ибо статья идет по нарастающей", если вырву это объяснение из контекста, врядли будет понятно. Но интересующимся "дебрями" рекомендую почитать, лично мне статья ответила на многие вопросы, и прояснила то, в чем был не до конца уверен.

This comment was minimized by the moderator on the site

Короче, по Кингдом Кам - там реально просто дичь по треугольникам...тьфу, вершинам - более 50 млн в пике, и дроуколсов более 16 тыс. Причем в фуллхд в этом месте долбежка в проц при 40 фпс. Проц, естественно, толком не нагружен.

4К фсёнамакс

https://i.ibb.co/YfpV89c/Kingdom-Come-2021-01-17-20-53-16-561.jpg


Эта игра еще долго будет нагибать. По гпу 24-26 фпс в 4К (хотя, вероятно, из-за запущенного решейда). Количество вершин, как и дроуколсы, постоянно пляшут, но ниже 20млн не видел, большую часть времени болтанка 35-50 млн и дроуколсы 8-17 тыс. Версия со всеми патчами, лицуха

This comment was minimized by the moderator on the site

Mox Falder
Например, для 2060s потолок 4-5 млрд треугольников в секунду, больше она не может. И это в тестах
чем это можно проверить? Любопытна разница на моей карте между дх11, дх12 и вулканом. В любом случае, хотя бы в одном из перечисленных api было бы уже неплохо
В Kingdom Come Deliverance ещё используется технология SVOTI, аналог Voxel Cone Tracing, для имитации глобального освещения
вроде правильно SVOGI (Voxel Global Illumination), я об этом уже упоминал, когда обсуждали ремастер Крузиса, где завезли такое же освещение

This comment was minimized by the moderator on the site

Ну здесь на скрине Кингдом кам выглядит откровенно слабо, включая дальность прорисовки, что видно по последним домам слева ) Так что хз можно ли верить данным этим прог на 100%, тут нужно уже у специалистов спрашивать.

This comment was minimized by the moderator on the site

treex
По идее большего всего полигонов должно быть, если залезть на обычный дом и смотреть на весь город, лоды должны быть самыми детальными из-за близкого расстояния.
11-13 млн выдает так. Я весь город оббежал, пока не наткнулся на это место - единственное с просадкой ниже 60 (бегал со стоковыми таймингами, но все же)

This comment was minimized by the moderator on the site

В Kingdom Come Deliverance ещё используется технология SVOTI, аналог Voxel Cone Tracing, для имитации глобального освещения. Вот может эта технология тоже нагружает гпу дополнительной геометрией. Надо попробовать её отключить и проверить как изменится количество вершин. Из командной строки вроде отключал.

This comment was minimized by the moderator on the site

Ну ребята видимо не знают, что такое оптимизация, вот и отрисовывается все вокруг )
Еще раз повторяю, что Киберпанк нагибает из-за освещения и пбр, а не геометрии, геометрия для гпу не является проблемой, хоть 1 млрд. полигонов рендери на 2080 при 40 фпс в 1440р в демке УЕ5, где еще лучи дофига должны жрать.

This comment was minimized by the moderator on the site

В той демке на УЕ5 полигонов обрабатывается на самом деле не миллиард, а несколько миллионов. Просто движок, насколько я понял, сам меняет сложность моделей в зависимости от расстояния. А так геометрическая производительность весьма ограничена. Например, для 2060s потолок 4-5 млрд треугольников в секунду, больше она не может. И это в тестах. В реальных играх меньше.

This comment was minimized by the moderator on the site

treex
Ну ребята видимо не знают, что такое оптимизация, вот и отрисовывается все вокруг
кто ж спорит?
Еще раз повторяю, что Киберпанк нагибает из-за освещения и пбр, а не геометрии, геометрия для гпу не является проблемой
а разработчики Doom вот считают, что даже 96 млн вершин это уже большое испытание для современных систем.
хоть 1 млрд. полигонов рендери на 2080 при 40 фпс в 1440р в демке УЕ5
мы этого не видели. Классическими методами обработки геометрии это, скорее всего, нереально. Не ну может амдешный NGG такое и затащит(на рдна2 уже работает на драйверном уровне, а на веге и рдна только если разработчики захотят). Или даже условный меш шейдерс, но он в отличие от NGG, работает только в зависимости от игроделов, как и у веги и рдна.

Кстати, что до ассасина: угостили меня акаунтом на прогончик, и вот что я обнаружил

https://i.ibb.co/YdqWSxg/2021-01-17-14-44.pnghttps://i.ibb.co/s9N0Vry/2021-01-17-15-32.png

Но это было самое нагибучее место, которое нашел. Только с таймингами моя карта вывозит его в 59 фпс(для лучшей обработки геометрии картам GCN нужна высокая псп).

Например, панорамный вид жрет поменьше

https://i.ibb.co/3sPS9mz/2021-01-17-14-36-01.pnghttps://i.ibb.co/KsQMh9W/2021-01-17-14-36.png

И удивительно мало дроуколсов.

Кстати, из позитивных моментов: стало меньше подгрузов перед носом, и жор памяти уже достигает 7гб в фуллхд. Еще недавно выше 6гб ни в какую не шло...

This comment was minimized by the moderator on the site

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

Вот пример логов менеджмента видеопамяти:

Horizon Zero Dawn

https://i.imgur.com/vj3q9J9.jpghttps://i.imgur.com/hjpyGGF.jpg

Control

https://i.imgur.com/vntgRsw.jpghttps://i.imgur.com/hDYNdOB.jpg

Как видно, в Хорайзоне чудовищная фрагментация данных в видеопамяти, и под маленький кусочек данных игра выделает в несколько раз больше видеопамяти, чем ему реально требуется. Это один из первых признаков корявого консольного порта, игра до сих пор думает, что она работает на PS4.
В Control же образцовый менеджмент видеопамяти.

Загрузить еще