GDC 2016: Авторы Hitman показали разницу между DX12 и DX11, рассказали про асинхронные вычисления
![GDC 2016: Авторы Hitman показали разницу между DX12 и DX11, рассказали про асинхронные вычисления](https://files.vgtimes.ru/posts/2016-03/gdc-2016-avtory-hitman-pokazali-raznicu-mezhdu-dx12-i-dx11-rasskazali-pro-asinhronnye-vychisleniya-31354.webp?1458304581)
Авторы Hitman провели выступление на GDC 2016, в рамках которого рассказывали о преимуществах DirectX 12. Было сказано много лестных слов в сторону технологии, которая, по словам разработчиков, превосходит предшествующую ей DirectX 11. Но всё не так однозначно, как хотелось бы.
Список тезисов был таков. Разработчики посвятили не всё выступление версиям DirectX, но и делились другими интересными техническими подробностями:
- Динамическая смена дня и ночи в Hitman останавливается, когда пользователь запускает уровень. Разработчики решили, что их наполненной скриптами игре ни к чему меняющееся освещение;
- Зонды используются для отражения света, к тому же генерируются в начале уровня;
- Основной фокус в разработке был сделан на DirectX 12, который понижает нагрузку на процессор и видеокарту;
- Однако разработчики решили оставить DirectX 11, потому что ещё не все люди обновились с Windows 7 до современной ОС;
- DirectX 12 требует много временных источников, ему нужен быстрый многопоточный аллокатор. Разработчики воспользовались решением Naughty Dog;
- Однако интерфейс Hitman реализован на чистом DirectX 11. Разработчикам он нравится за счёт простоты реализации;
- Асинхронные вычисления используются для обсчёта сглаживания, амбиентной окклюзии, световой плитки;
- Асинхронные вычисления позволили добиться 5-10%-ного повышения производительности на карточках AMD. На видеокартах Nvidia повышения производительности, увы, достичь не удалось;
- Сложность реализации асинхронных вычислений заключается в том, что их тяжеловато настраивать. Переборщив, можно вызвать потерю производительности;
- Разработчики были удивлены тем, насколько внимательно нужно относиться к расходу памяти в DirectX 12;
- DirectX 12 не позволяет выставлять приоритеты ресурсам (то есть разработчики не могут решать, какие объекты должны всегда оставаться в видеопамяти, а не выталкиваться в системную память, если не хватает места), всем управляет драйвер. Обычно его достаточно, однако есть случаи, где было бы полезно выставить приоритет. IO Interactive надеется, что авторы DirectX 12 к ним прислушаются;
- В официальном руководстве Microsoft советует разработчикам почаще пользоваться командами MakeResident и Evict. Последняя делает ресурс непригодным для использования, первая наоборот. Проблема в том, что это очень сложные команды, и очень легко напортачить. У разработчиков ушло очень много времени, чтобы освоить их. И все равно расходуется много памяти (примерно 1 ГБ);
- Разработчики показали две диаграммы (ниже), в которых демонстрируется, так ли DirectX 12 выгоден по сравнению с DirectX 11. Разработчики использовали две разные видеокарты, не уточнив модели. Первая продемонстрировала 20%-ный прирост на 720p и небольшое падение на 4K. Вторая на 30% лучше в 720p и на 10% лучше в 4K;
- Автор презентации дал понять, что ему неведома причина, по которой первая видеокарта работала в 4K лучше в DX11-режиме, нежели в DX12. И это ещё оптимизированный результат. Несколько месяцев назад DX12-режим отставал от DX11 на 10-20%.
Это ещё раз подтверждает, что DirectX 12 не является равноценной заменой DirectX 11. Конкретно IO Interactive не полностью разобралась, как повысить производительность с применением данной технологии — в одних случаях это удаётся, в других результат удивляет самих разработчиков.
Напоминаем, что на запуске PC-версия Hitman была неиграбельна в DX12-режиме. Если ситуация изменилась, напишите в комментариях.