Список игр, поддерживающих 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 Мбайт!). Настройки качества - .

Технологии принадлежит будущее, — столь много усовершенствований вобрал в себя новый интерфейс программирования. Direct3D 12 (и его кроссплатформенный коллега Vulkan) позволяет игровому движку более эффективно распоряжаться ресурсами GPU за счет прямого управления теми задачами, которые в предыдущих итерациях API выполнял драйвер или сами библиотеки Direct3D. Современные GPU в полной мере поддерживают функции рендеринга Direct3D 12 и обеспечивают эффективную интеграцию графики с вычислениями общего назначения (так называемыми асинхронными вычислениями).

Вот только на практике API нового поколения еще далеки от реализации всего заложенного в них потенциала. Не будем приукрашивать картину, которая открылась в первой части тестирования видеокарт в Direct3D 12 и Vulkan. Фактически лишь две из игр, которые мы постоянно используем в качестве бенчмарков GPU, показали, на что способно новое ПО при должном старании разработчиков, — мы говорим о Ashes of the Singularity и DOOM. В остальных тестах при смене API можно рассчитывать в лучшем случае на умеренный рост быстродействия, и то с массой оговорок.

Так, среди графических процессоров последних поколений только большие чипы AMD — Hawaii (Radeon R9 390X), Fiji (Radeon R9 Fury X) и Vega (Radeon RX Vega 64) — проявили большую симпатию по отношению к Direct3D 12. На быстродействие флагманской видеокарты NVIDIA (GeForce GTX 1080 Ti) программный интерфейс в среднем никак не влияет, а остальные «зеленые» процессоры работают под ним хуже, чем под старым. Наконец, Microsoft невольно выдала черную метку чипам с архитектурой Kepler и Maxwell, которые, по всей видимости, уже никогда не обретут полноценной поддержки в игровых движках под Direct3D 12.

Слабость API нового поколения является обратной стороной их силы: «тонкие» библиотеки Direct3D 12 отдали множество функций разработчикам игровых движков, а внедрение нужных приемов программирования в массовом ПО идет с запозданием. Неудивительно, ведь в игровых компьютерах по-прежнему стоит масса видеокарт, которые в лучшем случае лишь формально совместимы с Direct3D 12 и Vulkan, поэтому мощную оптимизацию игр под новые API пока можно наблюдать лишь в отдельных проектах на основе собственных движков.

Графические API и процессорозависимость

Однако часть функций Direct3D 12 и Vulkan не требует от разработчиков игр особенных усилий. Сама структура конвейера этих API позволяет снизить нагрузку на центральный процессор за счет сокращения времени подготовки draw call, что особенно важно, когда на экране присутствует множество отдельных моделей [прим.: Draw call - команда, требующая создать единственную полигональную сетку (mesh)] .

Впервые на эту проблему обратили внимание AMD и DICE, создатели проприетарного низкоуровневого интерфейса Mantle. Первым тайтлом с поддержкой Mantle стала Battlefield 4, но тогда, в 2014 году, игровая графика не была настолько богата геометрией, чтобы центральный процессор ограничивал частоту смены кадров в сбалансированной системе. Даже год спустя мы пришли к выводу (см. наше тестирование процессорозависимости), что любой современный процессор Intel с четырьмя ядрами раскрывает потенциал топовых GPU того времени.

Но за прошедшее время обстановка поменялась: игры стали сложнее, а GPU получили многократно возросшую вычислительную мощность. CPU, напротив, развиваются достаточно медленно с точки зрения однопоточной производительности, а пятое, шестое, седьмое и так далее ядра в играх используются редко. Многие геймеры производили апгрейд с двухъядерного процессора на четырехъядерный с расчетом не менять его еще долгие годы, поэтому сейчас вопрос процессорозависимости вновь стал актуальным.

Самый яркий, хотя и довольно экзотический пример — стратегия Ashes of the Singularity. Ее движок именно за счет быстрой отдачи draw call сильно наращивает быстродействие под Direct3D 12 и Vulkan даже при мощном центральном процессоре. Но в нашей методике есть и другие игры с богатой геометрией. В этот раз мы проведем тестирование на платформе с четырьмя ядрами и сниженной частотой CPU, а потом сравним результаты с тем, что было получено ранее при помощи высокопроизводительного процессора.

В предыдущей части тестирования процессор нашего тестового стенда, Core i7-5960X, работал на постоянной частоте 4 ГГц при восьми активных ядрах. Для имитации более слабого CPU мы отключили половину ядер и установили тактовую частоту на отметке 2,5 ГГц.

Честно говоря, это не очень реалистичная конфигурация для современных CPU Intel (даже младшие модели Core i5 поколений Caby Lake и Coffee Lake берут более высокие частоты при полной загрузке четырех ядер), но она вполне соответствует некоторым моделям предыдущих поколений. 1,5 ГГц — подходящая разница, чтобы наглядно показать связь версии графического API и процессорозависимости, а измерение кадровой частоты на всем спектре моделей современных CPU пусть останется задачей для следующей части нашей серии «Процессорозависимость».

С другой стороны, мы зашли не настолько далеко, чтобы оставить два активных ядра. В современном домашнем ПК такому процессору уже не место, и некоторые игры просто не будут нормально работать на двух ядрах.

По итогам первого тестирования мы дисквалифицировали из участников несколько видеокарт, в первую очередь GeForce GTX 970 и GTX 980 Ti, которые не годятся для игр под Direct3D 12 и Vulkan в силу архитектурных особенностей. Кроме того, были исключены бюджетные игровые видеокарты Radeon RX 560 и GeForce GTX 1050 Ti — у них попросту недостаточно мощные GPU, чтобы оптимизация API сыграла большую роль даже на слабой платформе.

Наконец, мы нашли несколько ошибок в тестовых результатах первой части стати и приведем все данные (как при сильном, так и при слабом CPU) в обобщающих графиках и таблицах. Для того чтобы обеспечить корректное сравнение, новые результаты получены на тех же версиях драйверов (Radeon Software Crimson Adrenalin Edition 18.1.1 и GeForce Game Ready Driver 390.65), которые мы использовали в прошлый раз. Драйверы довольно старые, но, если бы мы повторили тесты на актуальных версиях, это бы не повлияло сколь-либо существенно на результаты. В конце концов, самая свежая из выбранных игр вышла еще в сентябре прошлого года, и драйверы уже содержат оптимизации для всех них. За прошедшее время каких-либо глобальных изменений в ПО, которые поднимают общее быстродействие, производители GPU не внесли.

Тестовый стенд, методика тестирования

Конфигурация тестовых стендов
CPU Intel Core i7-5960X (4 ядра @ 2,5 ГГц, постоянная частота)
Intel Core i7-5960X (8 ядер @ 4,0 ГГц, постоянная частота)
Материнская плата ASUS RAMPAGE V EXTREME
Оперативная память Corsair Vengeance LPX, 2133 МГц, 4 × 4 Гбайт
ПЗУ Intel SSD 520 240 Гбайт + Crucial M550 512 Гбайт
Блок питания Corsair AX1200i, 1200 Вт
Система охлаждения CPU Thermalright Archon
Корпус CoolerMaster Test Bench V1.0
Монитор NEC EA244UHD
Операционная система Windows 10 Pro x64
ПО для GPU AMD
Все видеокарты Radeon Software Crimson Adrenalin Edition 18.1.1
ПО для GPU NVIDIA
Все видеокарты GeForce Game Ready Driver 390.65
Бенчмарки: игры
Игра (в порядке даты выхода) API Настройки, метод тестирования Полноэкранное сглаживание
1920 × 1080 / 2560 × 1440 3840 × 2160
Rise of the Tomb Raider DirectX 11/12 Макс. качество, VXAO выкл. Встроенный бенчмарк Выкл.
Tom Clancy’s The Division DirectX 11/12 Макс. качество, HFTS выкл. Встроенный бенчмарк SMAA 1x Ultra + TAA: Supersampling TAA: Stabilization
DOOM OpenGL 4.5 / Vulkan Макс. качество. Миссия Foundry TSSAA 8TX Выкл.
Deus Ex: Mankind Divided DirectX 11/12 Макс. качество. Встроенный бенчмарк Выкл.
Battlefield 1 DirectX 11/12 Макс. качество. OCAT, начало миссии Over the Top TAA
Ashes of the Singularity: Escalation DirectX 11/12/ Vulkan Выкл.
Total War: WARHAMMER II, встроенный бенчмарк DirectX 11/12 Макс. качество. Встроенный бенчмарк (Battle Benchmark) Выкл.

В тестовую обойму вошли семь игр 2016-2017 годов выпуска, среди которых шесть поддерживают API Direct3D 12 и две — Vulkan. Доподлинно известно, что все они так или иначе задействуют функцию Multi-Engine («асинхронные вычисления»). И пара слов о DOOM. Эта игра использует так называемые Shader Intrinsitc Functions — шейдеры, непосредственно исполняемые на GPU избранной архитектуры, в обход стадии компиляции из высокоуровневого кода. Только Vulkan, в отличие от OpenGL и Direct3D любой версии, дает такую возможность, и только AMD выпустила для Vulkan соответствующее расширение. Собственные Shader Intrinsics есть и у NVIDIA, но они доступны только через проприетарый интерфейс NVAPI или библиотеки GameWorks. Именно поэтому Vulkan в DOOM принес GPU AMD такой мощный прирост быстродействия, хотя не обижены и чипы NVIDIA.

Сменяются видеокарты, игры, процессоры, а смена DX11 на DX12 тянется еще с 2015 года, поэтому многие и забыли, чем эти версии отличаются друг от друга, и что же принесет новая API. В большей части на этом лежит вина и самого Microsoft, так как они сделали DX12 достоянием исключительно Win10, заявив что на более старых системах DX12 невозможно реализовать, но не так давно появилась информация, что поддержка DX12 все же появится на win7, и первой игрой будет World of Warcraft. В результате долгое время компьютеров с поддержкой DX12 было крайне мало, чтобы разработчикам игр вообще стоило обращать на этот сегмент свое внимание. Пожалуй, только сама Microsoft и ее дочерние игровые компании перешли на полноценный выпуск игр на DX12, но среди них не было значимых шедевров, и, пожалуй, самая узнаваемая серия - это Forza Horizon.

Однако, на начало 2019 года ситуация стала меняться, и, прежде всего, мы уже видим в статистике STEAM, что большинство компьютеров (64.53%) уже имеют как видеокарту так и операционную систему, совместимую с DX12, и стоит напомнить, что последнее поколение приставок Microsoft и Sony тоже поддерживают DX12, что в итоге дает нам абсолютное большинство игровых устройств DX12 ready.

В итоге мы видим, что на конец 18 и начало 19 года все больше и больше игр отказываются от DX11 как основного API в пользу как DX12, так и Vulkan. Вот их список:

  • Resident evil 2 (remake)
  • Crackdown 3
  • Metro Exodus
  • The Division2
  • Devil may cry 5

Готовятся к выходу и, скорее всего, будут иметь поддержку Vulkan или DX12

  • DOOM Eternal
  • Wolfenstein Youngblood
  • Serious Sam 4
  • Star wars fallen order
  • Rage 2

Поскольку мы выяснили, что для полномасштабного ввода DX12 есть как готовность со стороны пользователей, так и достаточное кол-во крупных проектов, то стоит освежить знания о этом API. Вероятнее всего, вы считаете, что самым главным отличием DX12 от своего предшественника является возможность трассировки лучей, и на этом все отличия заканчиваются, но это вовсе не так. Давайте взглянем на отличия этих двух версий, чтобы нам лучше понимать, чего эти версии могут и не могут, и что реально принесет DX12.

Помимо упомянутой трассировки лучей DX12 включал в себя такую технологию как Multi Gpu - это возможность объединения нескольких видеокарт даже различных производителей для обработки изображения. Звучит здорово, но, на мой взгляд, технология имеет мало шансов на широкое применение, и вот почему. Для разработчика игр придется сначала заставить работать просто неимоверное кол-во различных вариаций видеокарт, потом еще это все протестировать, а это очень много времени и очень много затрат, а выгоды от введения сомнительны. Для разработчика GPU это будет означать, что можно купить менее мощную видеокарту и установить ее параллельно, причем это может быть видеокарта их конкурента, в итоге это будет влиять на среднюю цену купленных у них устройств - для достижения искомой производительности можно будет покупать видеокарту классом ниже. Вообще стоит вспомнить SLI и CrossFire - много ли игр поддерживают эти технологии? Вот мы и добрались до наиболее значимых отличий DX12 от предшественника - работа с потоками CPU.


Таким образом выглядит пример работы игры с DX11: один поток отвечает за обработку видео, на остальных работают другие части движка, например звуковой движок, сетевая часть, расчет NPC и так далее, главное, что за самую емкую и сложную часть отвечает только 1 ядро процессора. Теоретически DX11 может работать максимум с двумя потоками, но, к сожалению, как показывает практика, это остается только теорией. DX12 уже способен работать с восемью потоками, и выглядит это так:


DX12 распределяет по потокам/ядрам самую объемную задачу по подготовке данных и последующей обработке их на GPU, что влияет положительно на производительность. Производительность, разумеется, не вырастает в 8 раз, так как этот процесс не идеально масштабируемый, и есть и другие узкие места. Забавно отметить, что результаты работы в случае всего одного потока или восьми отправляются на GPU о обрабатываются тысячами ядер CUDA или CU в зависимости от вендора GPU.

Что же происходит с данными попавшими в GPU?


Вверху видна последовательность обработки данных DX11, которая происходит в строго установленном порядке, и без выполнения предыдущих задач следующие не могут быть реализованы, тогда как DX12 имеет возможность разделения и исполнения этих задач на разных ядрах нашего GPU, что обеспечивает большую загрузку самого GPU и приводит к уменьшению задержек и росту FPS. Важно отметить, что скорость исполнения самих элементов, из которых состоит вся задача, не увеличивается. Весь выигрыш в производительности достигается только за счет оптимизации очереди - это и называется асинхронные вычисления.

Давайте теперь взглянем на то, что же конкретно подготавливает CPU для последующей обработки на GPU, если конечную картинку мы видим в таком виде:


То процессор передает каркас изображения в виде сетки полигонов для последующей закраски - аналогия с деткой книжкой-раскраской более чем уместна.


Каждый из полигонов обрабатываются на CPU и называется вызовом отрисовки или draw call. Соответственно, чем больше полигонов в кадре мы видим, тем больше нагрузка на CPU, такие ситуации наиболее характерны для игр с открытым миром и появления большого количества объектов в кадре, особенно если это очень детализированные объекты как NPC. В других случаях - когда мы смотрим в небо или видим незначительное кол-во полигонов в каком-нибудь ограниченном пространстве, например, коридоре, где вызовов отрисовки не так много, преимущества DX12 тают. Давайте перейдем к выводам из теоретической части знакомства с DX12.

    В визуальном плане DX12 имеет очень скудные преимущества перед DX11 - лучи это самое яркое отличие.

    Программирование под DX12 сложнее, и все преимущества нового API раскрываются полностью, только когда движок изначально разрабатывается, а не адаптируется под него.

    Для несложных сцен, где в кадре мало объектов/предметов и полигонов, DX12 может показывать меньшую производительность по сравнению с DX11, так как все вызовы отрисовки прекрасно успевают обрабатываться на 1 ядре процессора, а в случае с DX12 результаты работы восьми потоков надо еще синхронизировать. Это может быть верно для целых игр, а не просто сцен, если они в своей основе имеют несложную графику.

    DX12 не снижает нагрузку на процессор, а, наоборот, увеличивает, только при этом нагрузка распределяется до 8ми ядер/потоков процессора а не ложится на 1 ядро.

    Выигрыш от перехода на DX12 будет у процессоров с небольшой производительностью на ядро, но большим их количеством, например, как серия FX от AMD.


Наблюдаем в кадре то самое большое количество объектов, и результат - отличие на порядок,- это действительно огромная разница, даже если сделать скидку на то, что это синтетический тест.

Игровые тесты

Тестовая конфигурация

  • FX 6300 @4500
  • DDR3 2133
  • RX 580 8GB
Lara Croft Shadow of the Tomb Raider

Для рассмотрения возьмем последнюю сцену из 3х тестовых отрезков - она наиболее характерна большим количеством вызовов отрисовок.


Обратите внимание на загрузку процессора: слева DX11 74%, справа DX12 100%.


Первые 3 значения относятся к последней сцене теста, четвертое же значение - это результат по всем трем сценам. Примечательно что максимальный кадр, который был отмечен, был в момент показа именно куска неба, и разницы между API нету, в то время как наибольшая разница отмечена именно в минимальных кадрах, и достигает она внушительных 43%. То есть, в самых графически нагруженных сложных сценах мы видим наибольшую пользу от перехода на DX12.

Resident Evil 2 remake

В этом тесте мы видим куда менее тривиальные результаты: падение максимального и среднего кадра, но и подъем минимальных значений аж на целых 33%. То есть, в моментах, где производительности 1 потока вполне хватает, DX11 даже быстрее, но как только сцена усложняется и производительности 1 потока недостаточно, DX12 раскрывается, что переносит весь игровой процесс до 60+ кадров, а DX11 опускается до условно неиграбельных 45. Боюсь именно с такими результатами и связана такая нелюбовь тестеров к DX12, так как в нем может быть меньше максимальных кадров, и даже, что может показаться совсем неприемлемым, и средние кадры, однако, как ни парадоксально, DX12 при этом более комфортен для игры.

Давайте перейдем к связкам с другим видеокартами и процессорами и понаблюдаем за результатами. Для этого выберем 4 игры:

  • Lara Croft Shadow of the Tomb Raider
  • Resident Evil 2 remake
  • Division2
  • Metro Exodus

Все эти игры работают как в режиме DX11, так и DX12. Давайте сравним, каковы будут изменения от смены API. Во всех тестах в качестве CPU применялся 9900K в разгоне до 5.0. Другими словами, мы увидим ситуацию, когда процессор не ограничивал нашу производительность.


Данные в таблице - это изменения в % между API. Интересно, что видеокарты семейства Pascal по-разному реагируют на DX12, несмотря на одинаковую архитектуру в их основе, прироста на младших моделях нет, связано ли это с работой драйвера или аппаратной части, находится за рамками этого блога. Нужно констатировать только одно: на видеокартах, формально имеющих поддержку DX12_1, прироста от перехода на новый API может не быть. С другой стороны, видеокарта RX 580, формально имеющая поддержку только DX12_0, дает прирост в 9% как топовая GTX 2080, прирост у видеокарт Vega доходит до 17%, что является просто потрясающим результатом. В любом случае мы замечаем прирост на последних сериях видеокарт от 5% до почти 20% производительности, и это очень значительное изменение. Что можно сказать - даже в связке с мощным процессором на современных видеокартах переход на DX12 оправдан и увеличивает производительность, если провести подобные тесты с менее производительным процессором, то отличия будут еще более существенны.

Справедливо будет заметить, что у компании Nvidia традиционно была хорошая производительность под DX11, и можно было бы предположить, что DX12 просто мог не давать таких преимуществ как у конкурентов. Давайте немного отвлечемся от темы сравнения API и взглянем более пристально на сами видеокарты.


Что ж, в DX11 видим тотальное доминирование продуктов Nvidia, и только Vega 56 немного опережает своего визави в виде GTX1070.


Однако при переходе на DX12 ситуация кардинально меняется, и Vega 56 опережает GTX 1070 уже на 13% и отстает на 7,6% от GTX1080, Vega 64 же опережает GTX 1080 5.4% и не дотягивает до RTX 2070 всего 2%! Да, похоже, AMD не зря в своих презентациях много внимание уделяла DX12 - действительно, их продукция намного лучше чувствует себя под новым API.

В качестве вывода можно сказать, что для владельцев старых процессоров, которые приобрели одни из последних серий видеокарт, переход на DX12 в любимой игре даст ощутимую прибавку производительности вплоть до 50%, при использовании DX12 на топовых видеокартах и процессорах выигрыш DX12 может составлять 10-20%, что тоже крайне не мало, поэтому все больше и больше разработчиков обращают внимание на новый API, и если в 19 году как минимум 50% из крупных, так называемых AAA, игр вышло с поддержкой DX12, то с выходом консолей нового поколения как от Microsoft, так и от Sony игровая индустрия окончательно перейдет на новый стандарт, поэтому при покупке видеокарты уже сейчас стоит обращать внимание преимущественно на тесты именно в этом API. Поэтому, скажем, новые серии Turing в виде 1660 1660ti 1650 1650ti могут быть намного привлекательнее, чем это могло бы казаться на первый взгляд т.к. по сравнению с 1050ti,1060, 1070 они действительно быстрее работают под новым API.

Результаты последних тестов взяты со страниц сайта

Больше моих тестов и обзоров вы найдете на моем .

P.S. Говоря о различиях Vulkan и DX12, надо упомянуть, что в состав последнего входит DirectX Audio, который стандартизирует работу с аудио, что очень сильно упрощает разработку, в Vulkan подобного нет. Так же эти API отличаются в топологии своей работы, и программирование под ними несколько разное, но основная цель DX12 и Vulkan - это отвязать работу вызовов отрисовки от одного лишь ядра, и с этой задачей оба API справляются.

Юрген Катсман (Jurjen Katsman), исполнительный директор разработчика игр Nixxes, рассказал о ряде проблем, с которыми столкнулась его компания при переходе с DirectX 11 на DirectX 12. Он сказал, что это вовсе не тривиальная задача, а весьма сложный процесс - создание кода, оптимизированного для DirectX 12, занимает много времени. Особенно в начале 2016, когда Nixxes стала одним из первых разработчиков игр, решивших реализовать поддержку DirectX 12, и столкнулась со множеством трудностей: отсутствующие инструменты отладки, неполная документация, а также проблемы с драйверами привела к задержке публикации обновлений с поддержкой DirectX 12 для обеих игр.

Даже сейчас, когда ситуация по всем перечисленным выше пунктам существенно улучшилась, всё равно осталось много моментов, которые негативно влияют на производительность и сложность. Например, управление памятью - особо проблемная область. Для DirectX 12 требуется больше памяти, чем DirectX 11, и превышение физического объема памяти видеоадаптера вызывает проблемы. Так как DirectX 12 - низкоуровневый API, то код необходимо тестировать на множестве аппаратных конфигураций, поскольку встречаются случаи падения производительности на некоторых конфигурациях (отличных от использовавшихся при разработке - разных ценовых категорий). Более того, выигрыш от использования DX12 может быть не так заметен при использовании высоких настроек, быстрых процессоров, или игре на высоких разрешениях.

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

В другой презентации, разработчик из Ubisoft (Assassin"s Creed) тоже упомянул, что разработка под DX 12 - тяжёлый труд. Только лишь переход на эту версию API, без какой-либо оптимизации, приведёт к существенному падению производительности (в их случае - 200%, как указано на слайде).

Положительный эффект от DirectX 12 есть в случае SLI или Crossfire

Возможность использования нескольких графических адаптеров (Multi GPU) - одно из ключевых преимуществ DX12. Разработчики в целом довольны возможностями прямого управления в конфигурациях с несколькими адаптерами. Режим AFR (alternate frame rate) в драйвере (SLI и CrossFire в DirectX 11) приводит к непредсказуемым результатам, неэффективному расходу ресурсов основного процессора, а также слабо контролируем, уточнил Катсман. Более того, он сказал, что объединение памяти (memory stacking, использование всей памяти обоих видеоадаптеров, без повторения данных) не будет реализовано. Это непростая задача, а рынок не так велик, чтобы оправдать инвестиции (время и деньги) в решение этой проблемы.

Рост производительности до 10 %

Другой большой проблемой DirectX 12 является надутый пузырь ожиданий. Катсман говорит, что многие пользователи рассчитывают на приличный рост производительности, в то время как реальный рост не превысит 10%. Именно это, в сочетании с высокой трудоёмкостью создания качественно оптимизированного кода для DirectX 12, ставит вопрос ребром - а стоит ли DirectX 12 того? "Это хороший вопрос", отвечает Катсман, хотя он видит ответ скорее положительным. В конечном итоге, ожидания к DirectX 12 немного завышены. Создание кода для этого низкоуровневого API требует больших трудозатрат, а пользователям не стоит рассчитывать на существенный рост производительности.

Список игр, поддерживающих 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 Мбайт!). Настройки качества - .