Опубликовано 18 марта 2016, 08:00

Железный эксперимент: DirectX 12 против DirectX 11

2016 год станет особенным и судьбоносным для компьютерных геймеров. AMD и NVIDIA представят новейшие архитектурные разработки: Polaris и Pascal. Выйдет большое количество игр, поддерживающих DirectX 12. Первые «ласточки» уже появились в продаже. А это значит, что настало время на деле оценить возможности этого API.
Железный эксперимент: DirectX 12 против DirectX 11

На словах у Microsoft все просто великолепно. DirectX 12 дает программисту полный доступ к комплектующим компьютера. «Полный доступ к ресурсам железа» способствует лучшей оптимизации игр. Если это интересно разработчику, конечно же. А «улучшенная оптимизация» — это рациональное использование системных требований. Цепочка ясная и логичная. По идее, все должны быть в плюсе. Разработчики реализуют свой творческий потенциал и обзаведутся любовью (и денежками) геймеров. Игроки получат качественный продукт без серьезных затрат на покупку очень мощного компьютерного железа.

30 сентября 2016 года DirectX исполнится 21 год. Но только в 12-й версии Microsoft решила перейти к низкоуровневому программированию.

Я уже высказывал свое мнение относительно DirectX 12. В последнее время среди компьютерных (и консольных тоже) игр присутствует слишком много низкокачественного продукта. Халтурят все, даже так называемые ААА-проекты то и дело щупают дно. Складывается впечатление, что разработчики вообще не утруждают себя тестированием и оптимизацией своей продукции. Либо бешеные дедлайны маркетологов заставляют программистов выпускать в продажу откровенно сырой продукт. В результате качество графики в компьютерных играх за последние пару лет кардинальным образом не увеличилось. Чего не скажешь о системных требованиях. Купить видеокарту за 650 долларов США, чтобы не получить 60 кадров в секунду в разрешении Full HD — это уж слишком, знаете ли! Выход видеокарт Polaris и Pascal отчасти исправит эту ситуацию, ведь откровенно устаревший 28-нанометровый техпроцесс используется вот уже целых пять лет. Переход на 16-нанометровые «рельсы» даст серьезный толчок в плане быстродействия. В сложившейся ситуации помочь должен и DirectX 12. Конвейер заработал, в марте поддержкой нового API обзавелись достаточно культовые франшизы про «Агента 47» и расхитительницу гробниц Лару Крофт.

Железный эксперимент: DirectX 12 против DirectX 11

Железный эксперимент: DirectX 12 против DirectX 11

Коротко o DirectX 12

Про основную «фишку» DirectX 12 я написал. Низкоуровневый API снижает уровень абстрагирования оборудования. Подробно про двенадцатую версию детища Microsoft мы уже писали. Не вижу смысла повторяться. Возможности DirectX 12 в «вакууме» наглядно демонстрирует специальный тестовый пакет бенчмарка 3DMark. Согласно результатам, эффективность низкоуровневых API (не забываем про Mantle и Vulkan) выше минимум на порядок. Все очень просто: DirectX 11 накладывает ограничения на количество команд отрисовки центрального процессора. Но будем честны: 3DMark — это всего лишь 3DMark. Цифры красивые, однако с реальностью никак не соотносятся.

Сравнение производительности DirectX 11 и DirectX 12 в 3DMark

Сравнение производительности DirectX 11 и DirectX 12 в 3DMark

DirectX 12 поддерживается всеми современными видеокартами, но есть один нюанс. API разделен на три уровня: DirectX 12 API, DirectX 12_0 и DirectX 12_1. Начальную версию интерфейса поддерживают все графические чипы AMD и NVIDIA, выпущенные по 28-нанометровому техпроцессу, а также линейка адапетров GeForce 400/500 поколения Fermi. А вот дальше начинаются расхождения. Список поколений 3D-ускорителей занесен в сводную таблицу. Под видеокартами Maxwell 1-го поколения подразумеваются адаптеры GeForce GTX 750/750 Ti.

Поддержка DirectX 12
 DirectX 12 APIDirectX 12_0DirectX 12_1
AMDRadeon R9 Fiji;Radeon R9 Fiji;Radeon R9 Fiji.
Radeon GCN 1.1/1.2;Radeon GCN 1.1/1.2.
Radeon HD 7000.
Radeon GCN 1.1/1.2;Radeon GCN 1.1/1.2.
Radeon HD 7000.
Radeon GCN 1.1/1.2;
Radeon HD 7000.
NVIDIAGeForce GTX Maxwell 2-го поколения;GeForce GTX Maxwell 2-го поколения.GeForce GTX Maxwell 2-го поколения.
GeForce GTX Maxwell 1-го поколения;
GeForce Kepler;
GeForce Fermi.
GeForce GTX Maxwell 1-го поколения;
GeForce Kepler;
GeForce Fermi.
GeForce GTX Maxwell 1-го поколения;
GeForce Kepler;
GeForce Fermi.

DirectX 12 работает только с Windows 10. Маркетинг чистой воды, нацелен на увеличение числа пользователей этой ОС. Можно ли этому противостоять? Можно, но только при продвижении другого API. Например, Vulkan.

DirectX 12 работает только в среде Windows 10.

Список игр, поддерживающих DirectX 12, заметно увеличился. В этом материале мы рассмотрим HITMAN, Rise of the Tomb Raider и Ashes of the Singularity. Эти игры поддерживают и DirectX 11, и DirectX 12. Две из них вышли совсем недавно. Ashes of the Singularity все еще находится на стадии beta-тестирования. Эксклюзивно для Windows 10 вышла ремастеринг-версия культовой Gears of War. Совсем скоро появятся игры ААА-класса: Deus Ex: Mankind Divided, Forza Motorsport 6 Apex и Quantum Break. На только что прошедшей выставке GDC представили движок CryEngine V. Отныне все Xbox-эксклюзивы будут выходить в том числе и на ПК. Но только исключительно под Windows 10. Спасибо новой стратегии Microsoft.

Качество

Как я уже говорил, DirectX 12 разработан для более качественной оптимизации под современное железо. Технологии Tiled Resources, Typed UAV и Bind, входящие в состав этого API, существенно (на бумаге) экономят ресурс видеопамяти и ориентируют API на использование большего числа ядер центрального процессора. Принцип консервативной растеризации ускоряет расчет теней и фильтра MSAA. Логично, что оптимизация приведет и к улучшению качества графики, но самое главное — это все же увеличение стабильности и быстродействия.

Давайте сравним графику DirectX 11 и DirectX 12 в HITMAN и Rise of the Tomb Raider. Ниже прикреплено несколько скриншотов в разрешении Ultra HD (осторожно, каждый файл весит 8-10 Мбайт!). Настройки качества — .

DirectX 12 — это не про качество.

Игра про «Агента 47» сразу же получила поддержку DirectX 12. Клиент включает встроенный бенчмарк. Он заметно облегчает процесс тестирования, но некоторые коллеги отмечают, что в игре есть локации, которые сильнее нагружают систему, нежели подготовленный разработчиком скрипт. Rise of the Tomb Raider обзавелась поддержкой нового API при помощи патча. Игра также обзавелась встроенным бенчмарком.

Видите разницу? Я — нет. Понимаю, что по скриншотам тяжело судить о качестве графики, но даже в динамике разницы между DirectX 11 и DirectX 12 я не ощутил. А раз так, то использование нового программного интерфейса должно заметно увеличить производительность системы. Ведь хоть в чем-то должна быть польза от этого API?

Производительность

Тестовый стенд:

  • Процессор: Intel Core i7-5960X @3,5 ГГц
  • Кулер: Corsair H110i
  • Материнская плата: GIGABYTE GA-X99-UD7 WIFI
  • Оперативная память: DDR4-2133 4x 4 Гбайт
  • Видеокарта: AMD Radeon R9 Nano, AMD Radeon R9 290, NVIDIA GeForce GTX 970
  • Накопитель: SSD Patriot Blast 480 Гбайт
  • Операционная система: Windows 10 x64
  • Драйверы: AMD Crimson Edition 16.3 Hotfix, NVIDIA 364.51

Для сравнения DirectX 11 и DirectX 12 я взял две популярные видеокарты: GeForce GTX 970 и Radeon R9 290. Игры запускались с разными настройками качества графики:

  • Rise of the Tomb Raider — пресеты Medium, High и Very High. Сглаживание SMAA всегда включено.
  • HITMAN — пресеты Medium, High и Ultra. Сглаживание SMAA, 16-кратная анизотропная фильтрация и SSAO всегда включены.
  • Ashes of the Singularity — пресеты Standard, High и Crazy.

Скриншоты с описанием всех настроек качества графики расположены в одноименной .

Прежде, чем анализировать полученные результаты, скажу следующее: DirectX 12 привнес в HITMAN и RotTR большое количество багов. Во время тестирования я пару раз столкнулся с элементарным зависанием и отображением просто черного экрана. В DirectX 11 такого не было. Изучив гневные посты в соответствующих топиках клиента Steam, стало понятно, что с нестабильной работой игр с новым API столкнулось приличное количество геймеров. Что ж, оптимизация достойна «похвалы»! Баги и нестабильность в марте стали визитной карточкой DirectX 12, если учесть, что обновленная версия Gears of War тоже тормозит и глючит. Мог бы рассказать и про мои приключения с защитой Denuvo, но к теме DX11/12 они не имеют никакого отношения.

DirectX 12 сырой. Высохнет ли?

Начнем со среднего качества графики. Здесь наблюдается самая интересная картина. У GeForce GTX 970 прирост FPS наблюдается в… да ни в какой игре! В RotTR и HITMAN количество кадров только снизилось. А вот Radeon R9 290 показал другие результаты. Отрендеренные приключения Лары Крофт отреагировали на новый API уменьшением FPS. А вот в саге про «Агента 47» и стратегии Ashes of the Singularity прирост есть: на 5,9% и 20,7% соответственно. Еще сильнее в HITMAN увеличился минимальный FPS — на 36,7%.

Производительность видеокарт в играх. Средние настройки качества графики

Производительность видеокарт в играх. Средние настройки качества графики

При переходе на пресет качества графики High тенденция для видеокарты NVIDIA не изменилась. Разве что минимальный FPS в «Хитмане» увеличилась на 12,8%. Мелочь, а приятно. С Radeon R9 290 новый API работает эффективнее. Не забываем, что HITMAN — «красная» игра, движок оптимизирован под работу с видеокартами Radeon. Поэтому я не удивлен тому факту, что переход с одного DirectX на другой дается архитектуре GCN легче, а Maxwell — никак. В итоге для «двухсот девяностой» прирост составил 40,5% для минимального FPS и 8% для среднего.

Производительность видеокарт в играх. Высокие настройки качества графики

Производительность видеокарт в играх. Высокие настройки качества графики

Впрочем, с увеличением качества графики (читай — нагрузки на видеокарту) эффективность DirectX 12 снизилась даже для Radeon R9 290. В HITMAN минимальный FPS вырос на 35,3%, а среднее количество кадров увеличилось на 9,1%.

Подведем промежуточный итог. Во-первых, я вообще не понимаю, зачем DirectX 12 внедрили в Rise of the Tomb Raider. Качество изображения не улучшилось, FPS упал! Судя по отзывам, не у меня одного. HITMAN в DirectX 12 более-менее работает только с Radeon R9 290. Совпадение? Не думаю. Средний FPS увеличился несильно: на 8-10%. Если честно, от DirectX 12, вокруг которого было столько шума, я ожидал большего. Впрочем, мои ожидания, как сказал один любитель чипсов, — это мои проблемы. В Ashes of the Singularity видно, что с увеличением нагрузки на видеокарту разница между DirectX 11 и DirectX 12 уменьшается. Опять же я говорю о видеокарте AMD. У GeForce GTX 970 все в порядке и в DirectX 11.

DirectX 12 серьезно не увеличил производительность. В некоторых случаях только снизил быстродействие. Приплыли.

Интересно, что новый API ведет себя крайне нестабильно. Судя по отзывам коллег, на одних системах прирост есть. Например, как у меня в HITMAN с видеокартой Radeon R9 290. На других стендах он отсутствует. Какого-то определенного алгоритма не существует. Полный рандом. Конечно же, ни о какой оптимизации речи не идет. Технологии CrossFire и SLI в DX12-режиме не работают.

Производительность видеокарт в играх. Очень высокие настройки качества графики

Производительность видеокарт в играх. Очень высокие настройки качества графики

Потребление ресурсов

Технологии, используемые в DirectX 12, должны оптимизировать работу центрального процессора, а также рациональнее задействовать ресурсы оперативной и видеопамяти. В случае с RotTR и HITMAN ничего такого не наблюдается. Начну с количества ядер процессора. Для этого испытания использовалась более мощная видеокарта Radeon R9 Nano. Настройки — . Rise of the Tomb Raider в режиме DirectX 12 все равно, сколько ядер у твоего CPU. А вот и прирост в сравнении с DirectX 11. Правда, мало кто использует в современных игровых системных блоках 2-ядерные процессоры.

DirectX 12 не задействует все вычислительные мощности центрального процессора и потребляет больше памяти.

С HITMAN’ом ситуация еще интереснее. При активации DX12 для чипов AMD на архитектуре GCN 1.2 вертикальная синхронизация не отключается. То есть у Radeon R9 Nano/Fury/Fury X, а также адаптеров уровня Radeon R9 380/380X есть ограничение в 60 FPS. У Radeon R9 290/290X/390/390X такой «глюк» не наблюдается. Сама игра распараллеливает нагрузку на несколько ядер процессора, но подобная многопоточная оптимизация реализована и в DirectX 11.

Производительность в играх в зависимости от количества ядер (потоков)

Производительность в играх в зависимости от количества ядер (потоков)

А теперь просто приведу два факта: игры с DirectX 12 потребляют больше оперативной и видеопамяти. Сила низкоуровневой оптимизации в действии! Судя по «прожорливости» Rise of the Tomb Raider, 16 Гбайт ОЗУ официально становится необходимым минимумом для игрового компьютера.

Потребление видеопамяти

Потребление видеопамяти

Потребление оперативной памяти

Потребление оперативной памяти

В заключение

Что это было? После знакомства с первыми играми, поддерживающими DirectX 12, я остался крайне недоволен увиденным. Понятно, что новый API только набирает обороты, но зачем выпускать заведомо неготовый продукт? Вопрос, впрочем, риторический. Ладно, в HITMAN на видеокартах Radeon есть хоть какое-то увеличение быстродействия. Но в Rise of the Tomb Raider производительность тупо снизилась, а качество графики, если зрение меня не подвело, не улучшилось. Попахивает откровенной халтурой и маркетингом.

Игры с DirectX 12 оказались нестабильными. Я не могу назвать их оптимизированными, так как в сравнении с DirectX 11 рассмотренные HITMAN и Rise of the Tomb Raider не стали использовать (во благо) больше потоков процессора, не стали потреблять меньше памяти. Даже наоборот!

Выключаю эмоции. Нельзя предъявлять серьезные претензии к DirectX 12, рассмотрев всего три игры. Однако не могу не признать, что на данный момент новый API не выглядит средством, облегчающим жизнь геймерам. Пока от DirectX 12 несет маркетингом, вынуждающим пользователя менять свою старую видеокарту на новую, а заодно переходить на операционную систему Windows 10. Подождем первых игр, разработанных специально под новый API. Надеюсь, что идеи, заложенные в DirectX 12, все же дадут свои плоды.