- PVSM.RU - https://www.pvsm.ru -
Пытливость ума и желание знать как все работает изнутри выделяет техноря из массы пользователей. В этом небольшом посте я бы хотел поделиться с любознательным сообществом небольшими роликами и кратким рецептом использования профилирующего софта для 3D приложений.
Итак, если мы хотим оценить как происходит подготовка игрового кадра. Какая геометрия, текстуры, сколько вызовов на отрисовку, где возникает просадка в производительности? Можно воспользоваться специализированным софтом для отладки этих процессов.
Я перечислю основные из них:
Поддержка DirectX 11/12, Vulkan, OpenGL 3.2+
Это opensource проект. Регулярно подкрепляется свежими коммитами.
→ Ссылка на репозиторий и документацию [3]
Интерфейс достаточно гибкий и интуитивно прост. Пытливой душе не составит труда за 5 минут разобраться как запустить какую-нибудь игру или приложение и пройтись по всему процессу отрисовки. Сторонних приложений для старта не нужно.
Указываем путь к exe, дополнительные параметры и запускаем. Далее в приложении в нужный момент нажимаем F12 или PrintScrn, RenderDoc сохраняет кадр, который можно сохранить, и возвращаться к нему даже без запускания игры или поделиться им с напарником.
Еще, например, можно экспортировать геометрию и текстуры.
Большой и весьма мощный инструмент отладчика. Это не единственный инструмент в арсенале Nvidia. Есть инструменты для мобильных приложений, Linux, Mac устройств и тд. Во всем их многообразии я не разбирался. Nsight предполагает совместное использование с Visual Studio, но для быстрого старта можно попробовать без установленого IDE от Microsoft.
Бесплатно регистрируемся [4] в Nvidia Developer Program и преспокойно скачиваем необоходимые инструменты. На сайте Nvidia есть документация и разъясняющие видео по использованию инструментов.
Для запуска, достаточно перетянуть ярлык приложения на ярлык Nvidia Nsight. И, если все верно, вы увидете HUD'ы и графики от Nsight.
Делается кадр просто: нажимаем CTRL+Z, после этого жмем пробел или кнопку со значком лупы. Процесс останавливается, и открывается окно Nsight Replay, внизу которого есть таймлайн с ползунком. В Nsight есть подсказки и интерфейс достаточно прост. Так же есть возможность сохранить всю отрисовку кадра в файл, но для его открытия придется таки установить Visual Studio.
Что бы поглубже залезть в процесс, необходимо все манипуляции производить из VS. Либо запускать 3D приложение из VS, либо запускать сохраненный кадр (функция сохранения доступа и без установленой VS)
Создадим пустой проект:
Найдем такую кнопочку, в которой введем путь к приложению и некоторые необходимые настройки.
И после этого запускаем отладку. Открывается приложение. Если используется лоудер, то возможно придется просто выбрать в окошке нужный процесс.
Процесс такой же как я описывал выше по тексту. Но теперь в VS открываются дополнительные возможности отладки, коих нету при отладке без VS. И геометрия и текстуры, и шейдеры. Анализировать процессы можно с разных сторон.
Так же у Nsight есть полезная киллер-фича: можно запустить приложение с сервером на выделеной машине, а из VS подключаться к ней. Так каждому не требуется разворачивать одинаковое окружение с приложением, что упрощает жизнь разработчика или команды разработчиков.
Для работы с сохраненными кадрами достаточно открыть сохраненный проект под свою версию Visual Studio, скомпилировать релизный билд и включить Nsight отладку. Далее все как описано выше.
Кстати. Не разобрался можно ли в Nsight разглядывать всю геометрию прогона, как это сделано в RenderDoc? Очень удобно при отображении конкретного вызова отрисовки с сетками из предшествующих вызовов.
Плюс я не смог проверить работу софта на видеокарте от AMD, за неимением последней. Но вроде бы у Nvidia в этом вопросе нету жестких требований.
Прекрасный и мощный инструмент. Так же имеет вомзожность удаленной отладки.
→ Ссылка на скачивание и докумнетацию [5]
В использовании прост. Имеется 2 версии сервера (64 и 32 бита) для запуска достаточно просто перетянуть необходимое приложение на сервер. О чем он и сам попросит, когда вы его попытаетесь запустить.
Далее просто включаем клиент. Подключаемся к серверу, в нужный момент делаем паузу и теперь можем заниматься всем тем, чем занимались до этого в RenderDoc или Nvidia Nsight.
Широкая поддержка различных API и устройств. Не смотря на происхождение, поддерживает мою видеокарту от Nvidia. Так что никаких заговоров и палок в колеса…
Какой инструмент лучше из них я сказать не могу. У каждого есть некоторые свои мини фичи, таблицы, графики, в которых может содержаться очень нужная в конкретной задаче информация. С пользовательской стороны, человека любопытного, мне как-то больше «сложилось» с RenderDoc. Но иногда не все процессы получается в нем запустить.
И кстати о запуске процессов. Все очень легко и просто когда у вас есть приложение А и инструмент Б. Тогда инструмент Б запускает приложение А и все довольны. Но если в этой схеме есть посредники: лаунчеры, античит софт и прочие обертки, то тут приходится немного «потанцевать».
Рассмотрим пример запуска игры из Steam или Origin и прочих сервисов.
В этом случае нужно придерживаться определенного порядка действий в любом инструментарии:
На закуску обещаные видеоролики. Я записываю этакие таймлапс ролики процесса отрисовки кадра игры. Нахожу это весьма занимательным, познавательным и красивым. На видео отображаются не все все события, т.к. в таком случае было бы слишком дергано.
GTA V
Rise of Tomb Rider
Witcher 3
Watch Dogs 2
А на этом все. Надеюсь этот материал впечатлит, подскажет, поможет или еще каким-либо положительным образом скажется на читающем его. Правки, советы, благодарности и пинки присылайте в ЛС или комментарии.
Автор: igentuman
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/igry/237473
Ссылки в тексте:
[1] RenderDoc : https://habrahabr.ru/company/infopulse/blog/234619/
[2] Image: https://habrastorage.org/files/421/72e/b75/42172eb754e440c3a17c14a88d452295.png
[3] Ссылка на репозиторий и документацию: https://github.com/baldurk/renderdoc
[4] Бесплатно регистрируемся: https://developer.nvidia.com/gameworksdownload#?dn=nsight-visual-studio-edition-5-2-0
[5] Ссылка на скачивание и докумнетацию: http://developer.amd.com/tools-and-sdks/graphics-development/gpu-perfstudio/
[6] Источник: https://geektimes.ru/post/285150/
Нажмите здесь для печати.