Ведущий разработчик Hitman считает, что плюсы DirectX 12 проявятся только после отказа от DirectX 11
Вышедший чуть больше месяца назад Hitman стал одной из первых игр, поддерживающих одновременно и DirectX 11, и DirectX 12. Разумеется, игроки и игровые издания отправились тестировать производительность нового разрекламированного API Microsoft, однако результаты были довольно неоднозначными.
Обозреватель WCCFTech побеседовал с Йонасом Мейером, старшим программистом Hitman, рассказавшем о том, действительно ли с помощью DirectX 12 можно добиться прироста производительности и сможем ли мы увидеть этот прирост в реальных играх.
Кстати, на сайте читать удобнее
Переключение Hitman на DirectX 12 позволило увеличить производительность на видеокартах AMD всего лишь на 10%. Вы планируете улучшить поддержку DirectX 12 или добавить какие-то новые функции в одном из следующих патчей, и если да, то какие?
Мы не планируем какие-либо обновления, связанные с DirectX 12. Прирост в 10% производительности связан с высокой нагрузкой на GPU, если бы игра сильнее нагружала CPU, то прирост был бы значительнее.Видеокарты Nvidia показывают практически идентичную производительность в DirectX 11 и DirectX 12. На конференции GDC вы упоминали, что сотрудничаете с представителями Nvidia в вопросе оптимизации асинхронных вычислений - есть ли какие-то новости на этом фронте?
К сожалению, никаких новостей нет.
Асинхронные вычисления привлекли внимание PC-энтузиастов, особенно после того, как оказалось, что видеокарты Nvidia их практически не поддерживают. Однако в докладе на GDC вы говорили, что даже на видеокартах AMD использование асинхронных вычислений позволило поднять производительность всего на 5-10%, причем их было достаточно сложно оптимизировать. Можно ли сказать, что значение асинхронных вычислений переоценено? Как вы думаете, у Nvidia могут возникнуть проблемы, если поддержка асинхронных вычислений не появится в процессорах Pascal?
Основная проблема заключается в том, что в идеале вам нужна специальная оптимизация асинхронных вычислений под каждый конкретный GPU - их производительность и пропускная способность сильно различаются. Я не думаю, что значение асинхронных вычислений переоценено, но, очевидно, конечный результат может быть весьма различным. На данный момент асинхронные вычисления это довольно простой способ добиться лучшей производительности; в будущем, если GPU научатся эффективнее выполнять параллельные задания, прирост производительности может стать больше.
Сейчас начали выходить игры с поддержкой DirectX 12, однако прирост производительности в них далек от того, что обещала Microsoft (+20% к производительности GPU и +50% к производительности CPU). Как вы думаете, дело в неопытности разработчиков или в слишком оптимистичной оценке возможностей нового API?
Я думаю, все это займет какое-то время - и разработчикам драйверов, и разработчикам игр нужно освоиться. Сейчас нужно хорошо потрудиться просто для того, чтобы достичь уровня производительности DirectX 11. +50% к производительности CPU действительно можно получить, но это зависит и от вашей игры, и от драйвера, и от того, насколько хорошо они работают вместе.
Достичь 20% прироста производительности на GPU очень сложно, особенно когда есть команда, работающая над повышением производительности в режиме DirectX 11. Здесь нужно отметить, что мы делали прямой порт - после перехода на DirectX 12 появляются новые возможности, и здесь производительность действительно может увеличиться. Скорее всего мы не сможем использовать эти возможности, пока не откажемся от DirectX 11 - это потребовало бы фундаментальных изменений в нашем рендере.
Как вы думаете, могла ли увеличиться производительность Hitman в режиме DirectX 12, если бы игра изначально разрабатывалась только под это API?
Да, очевидно так и было бы. DirectX 12 поддерживает новые возможности железа, которые, я думаю, помогли бы нашей игре работать быстрее.
Недавно состоялся релиз еще одного низкоуровневого API, Vulkan. Что вы думаете о нем с точки зрения возможностей и производительности, появится ли в Hitman поддержка Vulkan?
Vulkan относится к разряду влажных фантазий программистов: высокопроизводительное API вроде d3d12, работающее на всех платформах. Учитывая все это, у нас нет каких-то планов по поддержке Vulkan в Hitman. К сожалению, Vulkan, кажется, не будет работать на всех платформах.
И последний вопрос: что вы, как разработчик, думаете о UWP, универсальной платформе Windows?
Я не могу обсуждать UWP - я просто ничего о ней не знаю. Могу сказать, что мне нравится API Win32: оно хорошо документировано и работает.