Directx 11 или directx 12 что лучше: сравнение производительности на новых картах с новыми драйверами, Страница 1. GECID.com

Содержание

сравнение производительности на новых картах с новыми драйверами, Страница 1. GECID.com

Отобразить одной страницейСтраница 1Страница 2

В этом материале мы хотим опять вернуться к теме сравнения производительности в DirectX 11 и DirectX 12 на новых видеокартах от AMD и NVIDIA. Ведь за прошедшие месяцы разработчики игр и производители GPU неустанно улучшали свои продукты, в том числе оптимизировали поддержку нового программного интерфейса. Насколько лучше и перспективнее теперь смотрится DirectX 12 в разрешении Full HD? Давайте проверим на практике.

По традиции начнем с представления участников. Первой тестовую полосу препятствий пройдет видеокарта Inno3D iChill GeForce GTX 1080 TI X3 ULTRA. Она обладает отличной 3-вентиляторной системой охлаждения и хорошим заводским разгоном не только GPU, но и видеопамяти.

Затем мастер-класс покажет ROG STRIX Radeon RX 580 OC Edition от компании ASUS. Она также использует эффективный 3-вентиляторный кулер и небольшой разгон графического процессора. Конфигурация остального стенда не изменилась:

  • Intel Core i7-6700K (OC 4.5 GHz)
  • Aardwolf Gh500
  • ASUS MAXIMUS VIII RANGER
  • 2 x 8 GB DDR4-3200 G.SKILL Trident Z
  • SSHD Seagate ST2000DX001 2 TB
  • HDD WD WD1000DHTZ 1 TB
  • Seasonic Snow Silent 1050 1050W
  • ASUS Vh328H

Deus Ex Mankind Divided при очень высоком пресете настроек качества обеспечивает более высокую загрузку процессора и видеокарты в режиме DirectX 11. А вот оперативной и видеопамяти потребовалось больше в новом API. В плане производительности лучше смотрится DirectX 12: 122 против 120 кадров/с по среднему показателю и 91 против 83 по минимальному.

Hitman при ультравысоких настройках уже с первых кадров демонстрирует солидный прирост скорости видеоряда от перехода на DirectX 12. Правда, теперь уже загрузка центрального и графического процессоров выше именно в новом API. Обратите внимание и на использование видеопамяти: около 6 ГБ в 12-ом DirectX и менее 3,5 ГБ в 11-ом. В итоге получаем 145 против 123 FPS в пользу DirectX 12, что эквивалентно 18%.

Очень высокий пресет настроек в Rise of the Tomb Raider хорошо загружает процессор и видеокарту в обоих случаях, хотя в режиме DirectX 12 от процессора требуется больше мощности. Разница в потреблении видеопамяти небольшая, а вот ОЗУ в новом DirectX съедается почти на 2 ГБ больше. Минимальный фреймрейт в обоих случаях составил 66 FPS, а по среднему лидирует DirectX 12: 179 против 166.

Sniper Elite 4 при ультра настройках больше загружает процессор в режиме DirectX 11, зато требует чуть больше видеопамяти и оперативки в DirectX 12. Также в нем демонстрируются чуть более высокие скоростные показатели: 190 против 187 FPS по средней частоте кадров и 170 против 166 по минимальной. То есть разница составляет 1-2%.

Сюжетная кампания в Battlefield 1 при ультра настройках более стабильно и высоко загружает видеокарту в новом DirectX. В нем же требуется на 700 МБ больше видеопамяти, зато в DirectX 11 использование ОЗУ выше на 1200 МБ. Да и скорость видеоряда в старом API также выше: 162 против 143 по средней частоте и 138 против 108 по минимальной. Разница составляет 13% и 28% соответственно.

The Division при максимальных настройках графики отдает предпочтение DirectX 12. В нем и видеокарта лучше загружена, и фреймрейт чуть выше. Правда, видеопамяти и ОЗУ также требуется чуть больше. В среднем имеем 147 против 141 кадра/с, что эквивалентно приросту в 4%. 

И завершает первую часть игра DOOM при ультравысоких настройках графики. В данном случае сравниваем режимы OpenGL и Vulkan. Ранее видеокарты NVIDIA лучше смотрелись именно в первом из них, но теперь ситуация поменялась: в OpenGL были просадки до 183 FPS, поэтому средний показатель ориентировочно составляет 192 кадра/с.

А вот в Vulkan частота стабильно находилась в районе 200 FPS. 


Социальные комментарии Cackle

а есть ли между ними разница? / Видеокарты и мониторы / iXBT Live

Сменяются видеокарты, игры, процессоры, а смена 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. Вот их список:

  • Lara Croft Shadow of the Tomb Raider
  • 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.

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

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

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

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

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

Синтетический тест 3D mark Api Overhead Test https://3dnews.ru/911658

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

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

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

  • 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.

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

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

P.S. Говоря о различиях Vulkan и DX12, надо упомянуть, что в состав последнего входит DirectX Audio, который стандартизирует работу с аудио, что очень сильно упрощает разработку, в Vulkan подобного нет. Так же эти API отличаются в топологии своей работы, и программирование под ними несколько разное, но основная цель DX12 и Vulkan — это отвязать работу вызовов отрисовки от одного лишь ядра, и с этой задачей оба 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 Мбайт!). Настройки качества — .

Технологии принадлежит будущее, — столь много усовершенствований вобрал в себя новый интерфейс программирования. 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 не внесли.

Тестовый стенд, методика тестирования
Конфигурация тестовых стендов
CPUIntel 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 Вт
Система охлаждения CPUThermalright 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 × 14403840 × 2160
Rise of the Tomb RaiderDirectX 11/12Макс. качество, VXAO выкл. Встроенный бенчмаркВыкл.
Tom Clancy’s The DivisionDirectX 11/12Макс. качество, HFTS выкл. Встроенный бенчмаркSMAA 1x Ultra + TAA: SupersamplingTAA: Stabilization
DOOMOpenGL 4.5 / VulkanМакс. качество. Миссия FoundryTSSAA 8TXВыкл.
Deus Ex: Mankind DividedDirectX 11/12Макс. качество. Встроенный бенчмаркВыкл.
Battlefield 1DirectX 11/12Макс. качество. OCAT, начало миссии Over the TopTAA
Ashes of the Singularity: EscalationDirectX 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 Мбайт!). Настройки качества — .

до 20 fps разницы по ходу

Накануне будущего ЗБТ Division 2 компания Ubisoft в лице своего техдиректора пообещала, что на ПК игра работать будет «не хуже», более того, на DirectX 12 играть будет лучше, чем на DirectX 11.

И вот ресурс DSOGaming как раз и протестил новую Division 2 на предмет выяснить разницу в производительности между DirectX 11 и DirectX 12. Получилось интересно…

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

К слову, согласно описанию, данное тестирование проводилось на компе с «Intel i7 4930K (разогнанном до  4.2Ггц) с 16GB оперативки DDR3 2133Mhz, видеокартой NVIDIA RTX 2080Ti, 64-разрядной Windows 10 и драйвером GeForce 419.35«.

Во-вторых, поначалу тест не выявил значительной разницы в производительности, и это как бы доказывает на то, что игрушка изначально оптимизирована неплохо. Но, в-третьих, по итогу ограничения DirectX 11 все равно дали о себе знать.

Как оказалось, с DirectX 11 в плотном бою (когда выстрелов воспроизводится много) Division 2 показывает в среднем не более 59 fps, а с DirectX 12 при тех же условиях (и на том же компе) — 80 fps, то бишь на целых 20 fps больше.

Следовательно, есть очередной повод вспомнить не новый уже факт, что DirectX 12 при условии грамотной реализации позволяет существенно повысить производительность игры. И Division 2 — не первый тому пример. В Shadow of the Tomb Raider с DX12 FPS тоже выше.

С другой стороны, это также не означает, что DirectX 11 больше не годится. Как мы уже сказали, для Division 2 важнее ресурс графического процессора, ресурс центрального тоже нужен, но реже и в меньшем объеме.

Так вот, по ходу игры в тех её эпизодах, где RAM и CPU не задействуются по максимуму, DirectX 11 обеспечивает почти такую же производительность, как и DX12. Но как только игровой ИИ вводит в бой больше «живой силы», повышая тем самым нагрузку на проц, преимущества DirectX 12 моментом становятся очевидными.

И тем не менее, если или когда в Division 2 FPS у вас таки начнет падать, то подобным неприятностям в игре мы уже посвятили целый пост:

а есть ли между ними разница? Разница между директ х 11 и 12.

Уже 29 числа, с выходом Windows 10 , станет доступна новая версия DirectX , которая обещает увеличить производительность в играх и не только. В отличие от DirectX 11, вам не потребуется покупать новую видеокарту, и это не может не радовать. DirectX 12 обещает работу на многих устройствах: на смартфонах, планшетах, ноутбуках, персональных компьютерах и Xbox One . Для последнего сама Microsoft предрекает увеличение производительности, даже по сравнению с PS4 .

Что такое DirectX?

«DirectX (от англ. direct — прямой, непосредственный) — это набор API, разработанных для решения задач, связанных с программированием под Windows . Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Windows бесплатно доступен на сайте Microsoft . Зачастую обновленные версии DirectX поставляются вместе с игровыми приложениями.» (с) Wikipedia

  • DirectX 6.0 — мультитекстурирование
  • DirectX 7.0 — аппаратная поддержка преобразований, обрезания и освещения
  • DirectX 8.0 — шейдерная модель 1.1
  • DirectX 8.1 — пиксельные шейдеры 1.4 и вершинные шейдеры 1.1
  • DirectX 9.0 — шейдерная модель 2.0
  • DirectX 9.0b — пиксельные шейдеры 2.0b и вершинные шейдеры 2.0
  • DirectX 9.0c — шейдерная модель 3.0
  • DirectX 9.0L — версия DirectX 9.0 для Windows Vista
  • DirectX 10 — шейдерная модель 4.0
  • DirectX 10.1 — шейдерная модель 4.1
  • DirectX 11 — шейдерная модель 5.0
  • DirectX 11.1 – множество улучшений, среди которых увеличение гибкости программного кода и защита от переполнения буферов
  • DirectX 11.2 – разного рода улучшения, среди которых уменьшения времени ввода и улучшение качества рендера с применением карт текстур
  • DirectX 11.3 – является альтернативой DirectX 12, но без низкоуровневого API
  • Нововведения в DirectX 12

    Низкоуровневый доступ
    Поскольку ранее DirectX завоевывал рынок, Microsoft была нацелена на универсальность программного обеспечения и не давала разработчикам прямого доступа к низкоуровневым функциям видеокарты. Но теперь, благодаря новым процедурам вызова, доступ к ним открыт. Но если разработчики не используют новшества, то драйверы смогут автоматически оптимизировать их использование для решения стандартных задач.

    Многопоточная оптимизация и разгрузка CPU
    В марте 2014 года свет увидела большая (на то время) о новой версии API. Главной темой была оптимизация использования CPU , и в качестве примера были показаны результаты теста скорости вывода кадра в бенчмарке 3DMark . На скриншоте ниже можно увидеть сокращение скорости отображеня кадра в два (!) раза из-за оптимизации использования лишь CPU и более «умного» распределения ресурсов по ядрам.


    Также оптимизирована работа процессоров, имеющих более четырех ядер. Если раньше не имело смысла переплачивать за лишние ядра, если процессор покупался для игр, то теперь все поменялось.

    DirectX 11:


    DirectX 12:


    Использование нескольких GPU
    Настал праздник для геймеров, имеющих встроенное видео ядро в своих процессорах, но не слишком мощную дискретную видеокарту. DirectX 12 позволит работать одновременно не только видеокартам с технологиями SLI или CrossFire , но и связкам «дискретная + интегрированная».

    Ходят слухи об объединении дискретных видеокарт разных производителей в связки, но подтверждений этому нет, да и мы знаем, как Nvidia не любит подобные решения.


    Но и для владельцев известных связок есть приятная новость. Видеокарты работают одновременно, а не поочередности, а видеопамять ваших видеокарт суммируется. Теперь multi GPU системы имеют раздельный буфер, где доступна вся память видеоадаптера, а не общий, как раньше.


    DirectX 12 и встраиваемые low-end GPU
    Улучшение производительности, как и сам DirectX 12 , будет доступно не только на суперсовременных игровых станциях, но и для относительно слабых встраиваемых решений. По тестам, проведенным на Surface Pro 3 с процессором Core i5 , имеющим встроенное видео ядро Intel HD Graphics 4400 , производительность увеличилась на 50%. Все благодаря более рациональному использованию GPU .


    Использование всего потенциала eSRAM (только Xbox One)
    eSRAM – особая высокоскоростная память, используемая в GPU Xbox One . Ранее использовалось специальное API для управления, но сейчас, с выходом DirectX 12 , всем управляет одно API – DirectX. Данное улучшение обещает увеличение быстродействия памяти и более рациональное ее использование. Вероятно это поможет сократить, а может и вовсе избавиться, от отставания от PS4 .


    Обратная совместимость с DirectX 11 видеокартами
    Большинство современных видеокарт, которые поддерживают DirectX 11 , полностью совместимы с DirectX 12 . Но, к сожалению, далеко не все смогут использовать все нововведения в новом API.


    Обязательные требования для DirectX 12:
    • Windows 10;
    • Видеокарта, совместимая с DirectX 12 API;
    • Видео драйвер, поддерживающий DirectX 12 API;

    Имея этот набор, вам останется лишь дождаться выхода игр с поддержкой DirectX 12, чтобы проверить все самому.

    Моя видеокарта поддерживает DirectX 12?

    Список видеокарт с поддержкой DirectX 12 API:
    *В этом списке предоставлены видеокарты, поддерживающие DirectX 12 API, но далеко не все из них поддерживают DirectX 12_0 и DirectX 12_1.

    • AMD Radeon™ R9 Series graphics
    • AMD Radeon™ R7 Series graphics
    • AMD Radeon™ R5 240 graphics
    • AMD Radeon™ HD 8000 Series graphics for OEM systems (HD 8570 и выше)
    • AMD Radeon™ HD 8000M Series graphics for notebooks
    • AMD Radeon™ HD 7000 Series graphics (HD 7730 и выше)
    • AMD Radeon™ HD 7000M Series graphics for notebooks (HD 7730M и выше)
    • AMD A4/A6/A8/A10-7000 Series APUs (“Kaveri”)
    • AMD A6/A8/A10 PRO-7000 Series APUs (“Kaveri”)
    • AMD E1/A4/A10 Micro-6000 Series APUs (“Mullins”)
    • AMD E1/E2/A4/A6/A8-6000 Series APUs (“Beema”)
    Nvidia
    • Nvidia Fermi (GTX 400, GTX 500)
    • Nvidia Kepler (GTX 600, GTX 700)
    • Nvidia Maxwell (GTX 700, GTX 900)
    Intel
    • Intel Haswell (HD 5000, 4600, 4400 и 4200; Iris 5200 и 5100)
    • Intel Broadwell (HD 6000, 5600, 5500 и 5300; Iris 6200 и 6100)

    AMD

    • AMD Radeon™ R9 285, 290/290X, 295X2, M295X
    • AMD Radeon™ R7 260/260X
    • AMD Radeon™ HD 8770
    • AMD Radeon™ HD 7790
    Nvidia
    • GeForce, GTX Titan X
    • GTX 980, GTX 980Ti
    • GTX 970
    • GTX 960

    Nvidia

    • GeForce, GTX Titan X
    • GTX 980, GTX 980Ti
    • GTX 970
    • GTX 960

    DirectX 12_0
    Только GPU или архитектуры, специально разработанные для поддержки DirectX 12, будут поддерживать уровень функций DirectX 12_0, который содержит ряд новых технологий. Среди них – тайловые ресурсы Tiled Resources. В принципе, тайловые ресурсы известны ещё по DirectX 11, они отличаются высокой эффективностью по используемой памяти, а также могут значительно улучшить уровень детализации. С помощью мелких текстур в многократных ориентациях можно симулировать крупные текстуры. Кроме того, существенно экономится память. А качество картинки приносить в жертву не придётся.

    В примере приводится классическая текстура Texture 3D под DirectX 11 с разрешением 1.200 x 600 x 600 пикселей с 32-битным цветом – она занимает 1,6 Гбайт. С тем же качеством можно использовать тайловую текстуру Tiled Texture 3D через многократные повторения – она будет иметь разрешение 32 x 32 x 16 пикселей с 32-битным цветом. Размер при этом будет составлять 156 Мбайт. В одном из примеров приведена сцена рендеринга, в которой тайловая 3D-текстура используется 2.500 раз. Для создания и симуляции некоторых материалов в 3D добавляется ещё одно информационное поле. Им может быть, например, значение прозрачности или вязкости. Такой подход позволяет лучше симулировать жидкости и газы.

    Ещё один тип тайловых ресрусов – объёмные тайловые ресурсы (Volume Tiles Resources), однако они относятся к уровню функций уже не DirectX 12_0, а 12_1.

    К уровню DirectX 12_0 относится Typed UAV и новая модель Bind, которые ориентируют API на большее число ядер CPU, что обеспечивает более широкую параллелизацию и производительность.

    DirectX 12_1
    Ещё на шаг дальше Microsoft и разработчики GPU пошли с DirectX 12_1. Но данный урвоень функций поддерживают только самые новейшие GPU. К ним относятся все GPU на основе 2-го поколения «Mawell». Одна из новых технологий – консервативная растеризация (Conservative Rasterization). Она используется для фильтра динамического суперразрешения (Dynamic Super Resolution) и сглаживания Multiframe Sampled Anti-Aliasing.

    При растеризации небольшого объекта/пикселя в некоторых случаях лучше учитывать все покрытые точки семплирования, пусть даже частично. Также консервативная растеризация важна при вокселизации VXGI. Улучшенная методика наиболее заметна и при расчете теней.

    Интерфейсы прикладного программирования (API) долгое время оставались самым консервативным компонентом 3D-графики. Стандарт Direct3D 11 был представлен еще в 2008 году, и до сих пор основная масса новых игр на ПК использует его в качестве основного и в подавляющем большинстве случаев единственного API. Этот островок стабильности в чрезвычайно быстро развивающейся индустрии, какой являются компьютерные игры, образовался отнюдь не из-за традиционализма разработчиков ПО или производителей железа. Напротив, единый стандарт Microsoft, который вытеснил из большой игры некогда могущественного соперника (OpenGL), дал возможность всем участникам рынка сконцентрировать усилия на своих прямых задачах без необходимости оптимизировать драйверы, архитектуру GPU и игровые движки под несколько API одновременно (как в былинные времена под Glide и популярный OpenGL).

    Недавние потрясения в этой сфере, связанные с названиями DirectX 12 и Vulkan, вызваны, по сути, усилиями единственной компании — AMD, которая в 2013 году выпустила собственный интерфейс программирования в сотрудничестве с DICE, автором игровой серии Battlefield. В данный момент работа над Mantle прекращена, но оба универсальных API нового поколения заимствовали идеи AMD и преследуют ту же цель — более эффективно использовать вычислительные ресурсы, которые имеются в распоряжении современных GPU.

    Несмотря на столь привлекательную идею Direct3D 12 (здесь и далее мы будем говорить именно о графической библиотеке в составе DirectX) и Vulkan, темп внедрения новых API оставляет желать лучшего даже по сравнению с Direct3D 11, которому потребовался чрезвычайно долгий срок, чтобы целиком переманить разработчиков с Direct3D 9. И все же создатели значительного числа громких и высокобюджетных проектов последних двух лет внедрили поддержку Direct3D 12 или Vulkan по крайней мере в виде экспериментальной или побочной функции. В конце концов, методика тестирования GPU на 3DNews уже по большей части состоит из игр с поддержкой этих API. Подходящее время для того, чтобы провести исследование и сделать промежуточные выводы о том, насколько в действительности полезны DirectX 12 и Vulkan для производительности современного железа.

    Новые функции Direct3D 12 и Vulkan

    О принципах, лежащих в основе Direct3D 12, и его отличиях от предыдущей версии API Microsoft, мы в 2014 году, когда стандарт находился на ранней стадии разработки и многие из его особенностей еще не были финализированы. Главное, что изменилось в облике Direct3D 12 с тех пор, — это набор дополнительных функций рендеринга, открытых для графических процессоров с теми или иными аппаратными возможностями.

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

    Самой привлекательной чертой Direct3D 12 и Vulkan является быстрая подготовка т. н. draw call. В то время, когда AMD стремилась популяризировать Mantle, множество людей, ранее далеких от программирования компьютерной графики, были вынуждены познакомиться с этим термином. В 3D-рендеринге так называется команда, требующая создать единственную полигональную сетку (mesh). В играх каждая модель персонажа, юнита и практически любого независимого объекта представляет собой mesh. Следовательно, чем больше таких объектов присутствует на экране, тем больше draw calls должен отдать центральный процессор. Короткая подготовка draw call в Direct3D 12 при прочих равных условиях снижает нагрузку на CPU, сокращает время бездействия графического процессора и в результате дает возможность выводить больше объектов на экран. Помогает и распределение нагрузки в многоядерной системе, которое в Direct3D 12 происходит более эффективно.

    Многоядерные CPU в Direct3D 12

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

    Direct3D 12 принес массу функций рендеринга, описанных в рамках feature levels 12_0 и 12_1. Но в отличие от предыдущих итераций Direct3D, 12-я версия предназначена не для того, чтобы явить миру нечто ранее невиданное (как это было с шейдерами в Direct3D 8 и тесселяцией полигонов в Direct3D 11). Действительно, некоторые возможности feature levels 12_0 и 12_1 повышают качество определенных эффектов (к примеру, связанных с прозрачными текстурами), а иные используются в перспективных алгоритмах рендеринга (см. описание VXGI в нашем ). И все же большинство пунктов feature levels 12_0 и 12_1 служит для того, чтобы графический процессор выполнял быстрее ряд уже известных задач, которые в противном случае создают большую нагрузку на пропускную способность блоков наложения текстур, шину памяти и пр.

    В принципе, дополнительная вычислительная мощность, которую высвобождает новая версия API, сама по себе позволяет обогатить игровую графику более детализированными текстурами и объектами. Более того, в некоторых играх под Direct3D 12 и Vulkan геймплей тесно связан с выбором API (как в Ashes of the Singularity, которая за счет множества юнитов на экране создает огромное количество draw calls). Но если поставить вопрос в формулировке «Станет ли игра выглядеть лучше, если включить в ней Direct3D 12 или Vulkan?», то на данный момент ответ будет в подавляющем большинстве случаев отрицательным. Масштаб внедрения новых API все еще слишком мал, а железо на руках пользователей слишком разнообразно, чтобы разработчики игр открыли для видеокарт, хорошо работающих под Ditect3D 12 и Vulkan, эксклюзивный доступ к заметной части визуального контента.

    При этом от графического процессора не требуется совместимость с feature level 12_0 и 12_1 для работы под Direct3D 12. В действительности GPU с возможностями на уровне feature level 11_0 и 11_1, созданные в ту пору, когда Direct3D 12 не было и в помине (архитектуры Femi и Kepler от NVIDIA и GCN первого поколения от AMD), могут воспользоваться всеми преимуществами runtime-библиотеки Direct3D 12 и, потенциально, получить выигрыш в быстродействии. У AMD и NVIDIA поддержка Direct3D 12 в драйвере начинается с серий Radeon HD 7000 и GeForce GTX 400 соответственно.

    Асинхронные вычисления в Direct3D 11 и Direct3D 12

    Современные GPU лишь в силу привычки называются графическими процессорами. Архитектура, состоящая из большого количества исполнительных блоков (ALU, потоковых процессоров или CUDA-ядер, в терминологии различных производителей), подходит для исполнения любых программ, легко разделяющихся на независимые друг от друга цепочки операций (GP-GPU, General Purpose GPU) — будь то промышленные задачи, майнинг криптовалюты, машинное обучение и т. д.

    Методы GP-GPU применяются и в играх (по меньшей мере с того времени, когда NVIDIA купила компанию — создателя «физического ускорителя» Ageia и адаптировала ее API PhysX для работы на графических процессорах), но ни одна из коммерческих игр еще не может похвастаться тем, что раскрыла потенциал неграфических расчетов в такой степени, как «демки» PhysX, которые периодически демонстрирует NVIDIA. Причина лежит на поверхности: даже лучшие GPU не обладают избытком ресурсов для того, чтобы действительно масштабные вычисления игровой физики не уничтожили частоту смены кадров. Тем более в то время, как перед разработчиками ПО и железа открылись более заманчивые перспективы — разрешение сверхвысокой четкости и VR.

    Однако актуальные и потенциальные функции вычислений общего назначения в современных играх не ограничиваются физикой. SSAO (Screen-Space Ambient Occlusion), локальные отражения в экранном пространстве (Screen-Space Reflections), генерация карт теней, различные модели глобального освещения и пр. могут быть реализованы в качестве методов GP-GPU. Нетрудно заметить, что в данном случае отсутствует принципиальная граница между задачами двух типов. Она существует лишь на уровне архитектуры приложения и API, когда графика и вычисления представляют собой отдельные очереди инструкций. Именно одновременное исполнение множественных очередей инструкций лежит в основе того, что называют (не вполне корректно, но об этом позже) асинхронными вычислениями .

    В рамках Direct3D 11 существует единственная очередь инструкций для рендеринга графики. И как бы тщательно ни была оптимизирована архитектура GPU, в процессе рендеринга неизбежно возникают «пузыри», когда шейдерные ALU простаивают, в то время как свою работу выполняют другие компоненты процессора — блоки наложения текстур, ROP, шина памяти и т. д.

    В свою очередь, Direct3D 12 и Vulkan позволяют создать две отдельные очереди — для графики и вычислений соответственно (не считая очереди для передачи данных по шине PCI Express), а задача распределения ресурсов GPU между ними ложится на сам процессор и его драйвер, которые следят за возникновением «пузырей» в той или иной очереди и эффективно их закрывают за счет инструкций из соседней очереди. В общих чертах подход аналогичен функции Hyper-Threading центральных процессоров.

    Прим.: н а самом деле в Direct3D 12 и Vulkan можно создавать множественные очереди всех трех типов — в зависимости от того, сколько поддерживает GPU.

    Осталось пояснить, почему термин «асинхронность» не лучшим образом описывает то, что происходит в процессе рендеринга с двумя очередями инструкций, которые мы осторожно назвали отдельными, но не независимыми. Корректный (и официальный для Direct3D 12) термин — Multi-Engine. Дело в том, что те процедуры, которые исполняются в «графической» и «вычислительных» очередях Direct3D 12 или Vulkan, как правило, содержат взаимные зависимости данных: исполнение инструкций в одной очереди должно быть остановлено, пока не будет получен результат определенной инструкции из другой очереди.

    В таком случае можно говорить лишь об одновременном (concurrent), но не асинхронном (независимом по времени завершения) исполнении. Примером истинной асинхронности является фоновый процесс с низким приоритетом, протекающий одновременно с рендерингом кадра, — такой, как декомпрессия ресурсов, обновление карт теней в моделях глобального освещения и пр. (см. слайд AMD выше). Таким образом, термин «асинхронные вычисления» применим к узкому кругу задач, в то время как понятие Multi-Engine описывает одновременное исполнение нескольких очередей вычислительных инструкций безотносительно к структуре зависимостей между ними.

    Multi-Engine на GPU различной архитектуры: AMD GCN

    Рассмотрим животрепещущий вопрос практической реализации Multi-Engine. Популярное мнение гласит, что а) графические процессоры AMD выигрывают от применения Multi-Engine, в то время как чипы NVIDIA (включая Pascal) не могут столь же эффективно использовать его в силу архитектурных ограничений, б) среди архитектур NVIDIA только Pascal поддерживает Multi-Engine. Как нам предстоит убедиться, оба утверждения в целом верны, но полная картина далеко не столь однозначна.

    Самый простой для анализа случай — это архитектура GCN (Graphics Core Next), на которой основаны все графические процессоры AMD последних лет, начиная с Tahiti ( /) и заканчивая Vega 10 ( /). Как достоинства, так и недостатки чипов AMD в действительности располагают к применению Multi-Engine. GCN в своей основе ориентирована на вычисления GP-GPU в не меньшей степени, чем на рендеринг графики, и устроена таким образом, что добрая часть задачи насыщения GPU параллелизмом решается на уровне «железа», а не драйвера или приложения. Даже самые ранние чипы GCN обеспечивают одновременное исполнение нескольких очередей «вычислительных» команд одновременно с очередью рендеринга графики за счет командных процессоров двух типов — GCP (Graphics Command Processor) и ACE (Advanced Compute Engine). А начиная с третьего поколения архитектуры (чипы и ), GCN также включает раздельные планировщики для шейдерных и «вычислительных» инструкций. В результате процессор может динамически передавать вычислительные ресурсы отдельных CU (Compute Unit — блок, содержащий 64 ALU) между несколькими очередями инструкций.

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

    Таким образом, управляющая логика GCN способна эффективно загружать исполнительные блоки GPU за счет инструкций из отдельных очередей, заполняя даже сравнительно небольшие «пузыри» конвейера. Итоговый прирост быстродействия зависит от того, насколько часто «пузыри» возникают в режиме одной очереди. Но ведь правда, графические процессоры AMD существенно недогружены в большинстве игр по сравнению с чипами NVIDIA, и с каждым новым поколением ситуация усугубляется. Достаточно взглянуть на Radeon RX Vega 64, которая в задачах GP-GPU по меньшей мере не уступает , но в играх едва справляется с . GCN — «широкая» архитектура, требующая высокого параллелизма для полной нагрузки. Поэтому да, возможности Multi-Engine, которые открывают современные API, могут стать большим подспорьем для AMD — с большой оговоркой о том, что разработчики игр начнут их активно использовать.

    Multi-Engine на GPU различной архитектуры: NVIDIA Kepler, Maxwell и Pascal

    Ситуация с поддержкой Multi-Engine в графических процессорах NVIDIA далеко не столь прозрачна, как в случае с AMD. Материалы NVIDIA, находящиеся в широком доступе, не дают ясного ответа на все вопросы. С полной уверенностью можно говорить лишь о том, каким именно из GPU архитектур Kepler, Maxwell и Pascal вообще разрешено иметь дело со смешанной нагрузкой (графика/вычисления) под управлением Direct3D 12 и Vulkan. А наше представление о том, почему это так, а не иначе, основано по большей части на сторонних источниках и не претендует на истину в последней инстанции. Что поделать, такова политика этой компании, особенно когда речь идет о недостатках их продуктов.

    В отличие от AMD, NVIDIA решила разделить свои GPU на преимущественно потребительские либо профессиональные модели, начиная с архитектуры Kepler. Первые изначально лишены массы вычислительных функций, бесполезных в игровых задачах (таких как быстрое исполнение расчетов двойной точности). Кроме того, на пути от архитектуры Fermi (GeForce 400/500) к Kepler, а затем Maxwell разработчики последовательно сокращали управляющую логику GPU, переложив часть функций на драйвер.

    Тем не менее поддержка смешанной нагрузки даже в массовых чипах NVIDIA значительно расширилась со времен Kepler. «Мелкие» чипы архитектуры Kepler (GK10X, GeForce GTX 680 и ниже, а также GeForce GTX 770) способны работать с единственной очередью команд, будь то графика или чисто вычислительная задача (ни о каком Multi-Engine речи не идет). В «большом» Кеплере (GK110/210, / и ) и чипах Maxwell первого поколения (GK107, GeForce GTX 750/) внедрили отдельный блок для приема «вычислительных» очередей Hyper-Q, но отдельная «вычислительная» нагрузка одновременно с графикой возможна только под проприетарным API CUDA. Кроме того, «вычислительная» очередь может задействовать один и только один из 32 слотов блока CWD (CUDA Work Distributor), распределяющего цепочки операций между отдельными SM.

    Динамическое распределение мощностей между графической и «вычислительной» очередями появилось только в Maxwell второго поколения (серия GeForce 900), но существует критически важное ограничение: перераспределение происходит лишь на границе draw call, а значит, драйверу нужно выделить необходимую для той или иной задачи группу SM (Streaming Multiprocessor, блок, в который организованы CUDA-ядра) заранее. Отсюда возникают ошибки планирования, которые невозможно устранить на лету, и даже при идеальном предсказании эвристики драйвера Maxwell будет пропускать мелкие «пузыри» конвейера. Кроме того, Maxwell несет тяжелые потери от смены контекста, т. к. промежуточные результаты вычислений сохраняются в (обладающей сравнительно высокой латентностью) оперативной памяти, при этом происходит полная очистка кеша L1 и разделяемой памяти GPU. В таких условиях быстродействию не настолько сильно вредит достаточно короткий простой отдельных SM, как смена контекста.

    Похоже, именно эти архитектурные ограничения побудили NVIDIA заблокировать Multi-Engine в драйвере для Kepler и Maxwell. Приложение может создать сколько угодно «вычислительных» очередей, но драйвер все равно объединит их с графической очередью. По-прежнему единственная лазейка для разработчиков — это использовать CUDA, хотя на ситуацию с распределением ресурсов и смену контекста API никак не влияет.

    Среди «зеленых» GPU только семейство Pascal допущено к функции Multi-Engine в Direct3D 12 и Vulkan, ибо Pascal, в отличие от Maxwell, умеет передавать ресурсы SM между очередями графики и «вычислений» динамически, не дожидаясь завершения draw call. При этом цена смены контекста осталась высокой (вплоть до 0,1 мс или 170 тыс. циклов GPU в случае /1080!), а значит, Pascal по-прежнему ограничен в гибкости при работе с несколькими очередями команд по сравнению с GCN.

    В итоге NVIDIA довольно сильно усложнила жизнь разработчикам приложений, желающим использовать Multi-Engine. GCN неприхотлива и предсказуема в плане смешанной нагрузки, но ускорители Radeon на рынке в меньшинстве. С другой стороны, видеокарты с графическими процессорами NVIDIA стоят во множестве игровых ПК и вдобавок принадлежат к нескольким поколениям с различным уровнем поддержки Multi-Engine и методами его использования. Но, к счастью для NVIDIA, ее продукты и без того не испытывают недостатка в быстродействии. Чипы Maxwell и Pascal в сравнении с процессорами GCN соответствующего класса имеют более «узкую» архитектуру с меньшим числом шейдерных ALU, а значит — не требуют столь же высокого параллелизма для полной загрузки.

    Графика + вычисления, макс. N очередейВычисления, макс. N очередейРаспределение CU/SM в смешанном режиме
    AMD GCN 1.4 (Vega)1 +Динамическое
    AMD GCN 1.3 (Polaris)1 +Динамическое
    AMD GCN 1.2 (Tonga, Fiji)1 +Динамическое
    AMD GCN 1.1 (Hawaii)1 + 6464Динамическое
    AMD GCN 1.1 (Bonaire)1 + 1616Динамическое
    AMD GCN 1.0 (Cape Verde, Bonaire, Pitcair, Tahiti)1 + 82Динамическое
    NVIDIA Pascal (GP10X)1 + 3132Динамическое
    NVIDIA Maxwell 2 (GM20X)1 + 31 (CUDA)32Статическое
    NVIDIA Maxwell 1 (GM107)1 + 31 (CUDA)32Статическое
    NVIDIA Kepler (GK110)1 + 31 (CUDA)32Статическое
    NVIDIA Kepler (GK10X)11

    Новая версия DirectX 12, прямо скажем, подзадержалась. DirectX 11 был представлен еще в октябре 2009 года — более четырех лет назад. Для сравнения: путь от DirectX 10 к DirectX 11 занял около трех лет. Сразу отметим: DirectX 12 на Game Developers Conference в Сан-Франциско был всего лишь анонсирован — первые игры на основе DX 12 появятся не раньше конца 2015 года. К этому времени Microsoft может успеть с выпуском Windows 9, какое бы имя эта ОС ни получила в конечном счете.

    В общем, на вопрос «Где я могу скачать DirectX 12?» пока нет ответа. Есть только определенные перспективы относительно того, что новая версия API принесет разработчикам и нам, геймерам. А пока что анонс DirectX 12 следует рассматривать как сигнал, что активная работа по развитию DirectX продолжается. Ранее отсутствие видимой активности со стороны Microsoft довело до того, что некоторые уже вообще поставили под сомнение выход новых версий DirectX. Речь идет о прошлогоднем интервью Роя Тейлора, вице-президента AMD по продажам в «канале» (Roy Taylor, Vice President of Global Channel Sales), ресурсу heise.de . Хотя такие заявления следует принимать, как говорится, «со щепоткой соли», особенно в свете собственной инициативы AMD — Mantle (подробнее о ней в нашем обзоре и тестировании AMD Mantle). Как бы то ни было, Microsoft решила напомнить о DirectX и действовать.

    В отличие от предыдущих итераций, новый релиз сосредоточен не на графических эффектах и поддержке новых аппаратных функций GPU, а на оптимизации программного стека DirectX под уже существующее железо. AMD убедительно продемонстрировала, что в некоторых отношениях DirectX 11 является бутылочным горлышком, ограничивающим производительность системы. Конкретно: DirectX 11 неэффективен при большом количестве draw calls. Мы исследовали эту проблему в обзоре AMD Mantle, который продемонстрировал весьма впечатляющие результаты в подобных условиях.

    Ожидается, что благодаря DirectX 12 эффективность использования CPU увеличится на 50% по сравнению с показателями DX11. По крайней мере такой результат получен с помощью закрытой версии 3DMark 2011, портированной на DX12. Microsoft называет несколько факторов, благодаря которым это стало возможным.

    ⇡ Многопоточное исполнение инструкций драйвера

    Результаты профилирования того же бенчмарка демонстрируют более эффективное распределение нагрузки на CPU между несколькими потоками. На диаграмме видно, что на четыре потока теперь распределяются операции не только самой программы 3DMark, но и драйвера графической карты — речь о компоненте, исполняемом в User Mode.

    Кроме того, если присмотреться к диаграмме, то можно заметить, что при использовании DirectX 12 пропадает компонент графического драйвера в Kernel Mode. Речь идет о низкоуровневой подсистеме Direct3D, которая включает менеджер видеопамяти, планировщик GPU, а также miniport driver, который производитель GPU должен предоставить для непосредственного доступа к функциям железа.

    Таким образом, вся кухня Direct3D теперь полностью переместилась в User Mode. Сам по себе такой шаг негативно отразится на производительности, но, по идее, он должен быть скомпенсирован за счет более эффективной многопоточности, а также отсутствия смены контекста между User Mode и Kernel Mode.

    ⇡ Pipeline State Objects

    Кроме того, Microsoft непосредственно поработала над проблемой draw calls, которую столь успешно решает Mantle. Для этого потребовалась основательная переделка графического конвейера Direct3D. Здесь необходим небольшой ликбез относительно того, как выполняется рендеринг в Direct3D. Существует несколько стадий (stages) конвейера, которые на абстрактном уровне олицетворяют этапы подготовки изображения. Важно то, что стадии, вопреки тому, как это может показаться, не выполняются одна за другой в реальном времени. От runtime-компонента DirectX требуется определить состояние конвейера (pipeline state), представляющее собой совокупность состояний каждой из стадий, то есть параметры операций, которые выполняет GPU в процессе рендеринга, и ресурсы — данные, над которыми будут произведены операции (текстуры, вершины и так далее). Только когда все это собрано вместе, делается draw call — вызов, запускающий рендеринг объекта. И вот тогда miniport driver графического процессора, в свою очередь, транслирует pipeline state в набор инструкций для GPU на понятном ему языке (hardware state).

    Последний этап вносит свой вклад в общее время отрисовки объекта (напомним, эта и все вышеупомянутые процедуры все еще выполняются на CPU). А если объектов на экране много, то возникает пресловутая проблема draw calls, когда производительность CPU становится бутылочным горлышком. AMD Mantle, будучи низкоуровневым API, уменьшает время подготовки конвейера к отдаче draw call просто за счет отсутствия этапа трансляции pipeline state в hardware state . Хотя кто знает, какие еще оптимизации в Mantle включила AMD. Mantle SDK вместе с подробной документацией пока не распространяется публично.

    Direct3D 12 по-прежнему является высокоуровневым API, относительно безразличным к железу, на котором выполняется рендеринг (GPU только сообщает о поддерживаемых им функциях). В нем проблема решается по-другому. Вместо того чтобы передавать драйверу pipeline state целиком в момент draw call, состояния множества отдельных стадий конвейера объединены в несколько более крупных объектов — PSO (Pipeline State Objects), которые формируются незавимисо и отдаются драйверу немедленно. Таким образом, не дожидаясь draw call, драйвер может сразу конвертировать PSO в аппаратные инструкции и чуть ли не отправить последние в регистры GPU (в источнике на MSDN этот момент не совсем понятен). Кроме того, укрупнение объектов, олицетворяющих состояния стадий конвейера, позволяет драйверу быстрее разрешать зависимости между последними. Если в процессе подготовки к draw call какой-либо из PSO поменялся, также требуется пересчитать только соответствующие инструкции, а не hardware state целиком.

    Также не совсем ясно, почему именно раздельная репрезентация pipeline state должна привести к драматическому уменьшению времени подготовки к draw call. Так или иначе, на трансляцию pipeline state в hardware state все равно расходуется процессорное время. Возможно, ранняя подготовка отдельных PSO как-то поможет быстрее разрешать зависимости при подготовке hardware state, о чем пишут на MSDN. Может быть, преимущество будет получено за счет исполнения runtime-компонента Direct3D и драйвера GPU на разных потоках.

    ⇡ Command lists, bundles

    DirectX 12 также представляет новую модель управления нагрузкой GPU с помощью списков команд (command lists). В модели DirectX 11 уже существует этот термин. API предоставляет два типа контекста устройства (device context): immediate context и deferred context. В первом случае команды непосредственно отправляются на драйвер GPU, во втором — записываются списки команд, которые затем могут воспроизводиться в immediate context. Нововведение DX12 состоит в том, что драйвер GPU в модели Direct3D 11 может заранее просчитывать низкоуровневые инструкции на основе различных списков команд.

    В дополнение к спискам команд в Direct3D 12 появилась еще одна сущность — bundles. Bundle представляет собой набор команд, которые могут быть исполнены неоднократно в сочетании с различными ресурсами — к примеру, для рендеринга идентичных объектов с разной текстурой. В этом случае от драйвера требуется только один раз подготовить инструкции для GPU.

    ⇡ Совместимость, выводы

    В отличие от предшествующих версий, DirectX 12 не потеряет совместимости с уже существующими GPU, поддерживающими DirectX 11. NVIDIA уже заявила, что DX12 будет принят процессорами на архитектуре Fermi, Kepler и Maxwell. AMD гарантирует совместимость для GPU на архитектуре GCN, Intel — для графики Iris и Iris Pro в чипах Haswell. DirectX 12 также ожидает портирование на Xbox One.

    Впрочем, появилась информация о некоторых дополнительных функциях DirectX 12, которые все-таки потребуют аппаратных модификаций GPU. В целом эту неопределенность, вместе с долгим временем ожидания первых игр с поддержкой DirectX 12, можно рассматривать как знак того, что разработка API пока находится на весьма ранней стадии. В пользу данного предположения говорит и тематика оптимизации использования CPU, которая объединяет DX12 и AMD Mantle, представленный относительно недавно — осенью прошлого года.

    Естественно, что DirectX 12 бросает тень на будущее инициативы AMD, которая довольно успешно стартовала и набирает обороты, получая поддержку в популярных игровых движках (Frostbite 3, следующая версия CryEngine). Возможно, именно AMD мотивировала Microsoft тем, что привлекла внимание к недостаткам DirectX 11, но Mantle через полтора-два года уже перестанет быть единственным API, который дает возможность их избежать. При этом совместимость DirectX 12 не ограничивается видеоадаптерами на базе архитектуры GCN. И все же хоронить Mantle рано, ведь у AMD есть много времени, чтобы завоевать лояльность разработчиков. Кроме того, нет никаких гарантий, что DirectX 12 в конце концов будет столь же эффективным, как и Mantle. Как ни крути, DX12 по-прежнему не является низкоуровневым API, в отличие от Mantle, что автоматически дает последнему преимущество в производительности. В этом вопросе рано делать предположения, пока не появились первые результаты публично доступных бенчмарков.

    Технологии принадлежит будущее, — столь много усовершенствований вобрал в себя новый интерфейс программирования. 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 не внесли.

    Тестовый стенд, методика тестирования
    Конфигурация тестовых стендов
    CPUIntel 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 Вт
    Система охлаждения CPUThermalright 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 × 14403840 × 2160
    Rise of the Tomb RaiderDirectX 11/12Макс. качество, VXAO выкл. Встроенный бенчмаркВыкл.
    Tom Clancy’s The DivisionDirectX 11/12Макс. качество, HFTS выкл. Встроенный бенчмаркSMAA 1x Ultra + TAA: SupersamplingTAA: Stabilization
    DOOMOpenGL 4.5 / VulkanМакс. качество. Миссия FoundryTSSAA 8TXВыкл.
    Deus Ex: Mankind DividedDirectX 11/12Макс. качество. Встроенный бенчмаркВыкл.
    Battlefield 1DirectX 11/12Макс. качество. OCAT, начало миссии Over the TopTAA
    Ashes of the Singularity: EscalationDirectX 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 справляются.

    Чем отличается DirectX 9 от 11

    Вулкан,dx9 или же все-таки dx11 в Dota 2

    Тема в разделе «Техническая поддержка по Dota 2», создана пользователем Vitsir, 13 Mar 2018 в 09:43 .

    Оценить пост #

    Выбрать вулкан или dx11 на 1080ti и i7 6700 ? И почему?

    По идеи с твоим железом будет 0 разницы. Это тем у кого просадки надо колдовать над дотой, чтобы выиграть пару фпс.

    По идеи с твоим железом будет 0 разницы. Это тем у кого просадки надо колдовать над дотой, чтобы выиграть пару фпс.

    Графика не меняется?

    Serezhka86

    В смысле? В какой именно игре есть выбор dx11 и вулкана? Dx9 cразу отлетает. А там смотри по фпсу

    аа, дотка, надо было не в этом разделе создавать тему

    Выбрать вулкан или dx11 на 1080ti и i7 6700 ? И почему?

    Вулкан тебе не нужен, он для слабых машин, для тебя будет 0 толку

    В смысле? В какой именно игре есть выбор dx11 и вулкана? Dx9 cразу отлетает. А там смотри по фпсу

    япростотутзашел

    Ну вообще вулкан он больше к АМД товарам, но в играх где он есть я использую именно его

    Вулкан тебе не нужен, он для слабых машин, для тебя будет 0 толку

    Понял,спасибо.Изменений в графике нет?То есть лучше поставить dx11 и не париться?

    Понял,спасибо.Изменений в графике нет?То есть лучше поставить dx11 и не париться?

    Нет не будет никаких изменений в графике.

    Оставляй всё по дефолту и играй

    Нет не будет никаких изменений в графике.

    Оставляй всё по дефолту и играй

    Спасибо большое.Да я так и оставлял по дефолту,но во вчерашнем обновлении в настройках графики появился выбор API

    Понял,спасибо.Изменений в графике нет?То есть лучше поставить dx11 и не париться?

    Нормальный такой вопросец,учитывая то,что ты собираешься катать на gtx 1080 ti

    А не вбросер ли ты часом?

    Нормальный такой вопросец,учитывая то,что ты собираешься катать на gtx 1080 ti

    А не вбросер ли ты часом?

    В чем вброс?Я имею в виду не разницу ФПС,а разницу по качеству графики (освещение другое,детализация получше)

    В чем вброс?Я имею в виду не разницу ФПС,а разницу по качеству графики (освещение другое,детализация получше)

    Я давно делал видос со сравнением фпс и графики

    Я давно делал видос со сравнением фпс и графики

    Chloe Price

    Я давно делал видос

    Он уже не актуален)
    По сабжу — ДХ11, ибо плавнее график кадра = меньше просадок.

    Он уже не актуален)
    По сабжу — ДХ11, ибо плавнее график кадра = меньше просадок.

    Спасибо,я так и сделал)

    Он уже не актуален)
    По сабжу — ДХ11, ибо плавнее график кадра = меньше просадок.

    а нагрузка на видюху ? сильнее греется при дх11?

    Lover Left You Bleeding

    Ты хоть пробовал вулкан в дотке или сразу полез темку создавать? Он багнутый шо псц.

    Chloe Price

    а нагрузка на видюху ? сильнее греется при дх11?

    Хмм, не проверял.

    Говорю лишь что знаю.

    no1lovesme

    Хмм, не проверял.

    Говорю лишь что знаю.

    На dx11 комп сходил с ума после выхода из игры. И после пиков долгая загрузка, иногда вплоть до кика с сервера. Может у меня только. С вулканом та же история. Видимо нагрузка на систему все же у dx11 выше.

    Проблема решилась на более чем 50 процентов после постановки dx9.

    DX9 vs. DX11: различия в игре

    Разница совсем невелика, может модельки стали и посглажаней, но из-за низких текстур не заметно, но все равно графика как-то приятна глазу

    Хорош по графону ценить, цени сюжет и геймплей!

    Спасибо. Если ФПС побольше и на этом спасибо)

    DX11, все на максимуме:

    На DX9 не пробовал.

    да я на direct 9 играю и мне плевать на direct 11

    если все пользователи playground.ru скинуться мне по 1 гривне вот тогда я буду с класной видюхой, с Direct 11 и с новой квартирой, которую заставлю экранами и холодильниками с бухлом. вот это мечта xD. . . ладно не об этом! не у всех есть возможность поиграть с 50 фпс и насладиться супер качеством!

    на счет разницы. . . конечно есть! по скринам не видно! сделай 2 АБСОЛЮТНО одинаковых видео(ролики добавь туда) и слепи что бы была видна разница, на скринах плохо видно =\

    На DX11 как уже было замечено выше, игра работает ощутимо быстрее, есть возможность выставить улучшенные мягкие тени и DOF на высоко, а так же тесселяция которую кстати очень хорошо видно! На DX9 тени и DOF ограничены в положении «нормально» тессиляция не доступна ну и работает игра заметно медленнее. Других различий пока не заметил.

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

    Железный эксперимент: 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

    Коротко o DirectX 12

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

    Directx9 или directx11?

    DirectX11 Инициализация
    Всем привет.. Пытаюсь инициализировать ДХ но постоянно ругается. Подскажите плис в чём моя.

    Прорисовка куба с использованием DirectX11
    Начал изучать DirectX. Написал первую программу (вывод куба) и столкнулся с проблемой. Выводимая на.

    Обработка нажатия клавиш в Directx11
    Доброе время суток. Наверняка мой вопрос окажется довольно простым для многих, но я справиться с.

    Мерцание при движении DirectX11
    Двигаю камеру вправо или влево и при этом картинка ниче так мерцает (если что выдает 300 fps). То.

    Нужен простой пример скелетной анимации на DirectX11
    Может у кого есть рабочий пример скелетной анимации (GPU). Желательно с загрузкой анимации из fbx.

    Что лучше: Directx 9 или 10?

    Завершаю теоретическое и практическое изучение С++, пора потихоньку определяться с АПИ, почитал про OGL и DX, выбрал для себя DX, почему, объяснять здесь не буду, так собс-но сабж: Какой лучше изучать сейчас, 9 или 10?

    ИМХО лучше 10. 9 отживает своё потихоньку.
    Добавление:Если 10, то тогда про XP забудь. Тока 7 или Vista. Про другие оси не знаю.

    Почему это имеет значение, думаю, что объяснять не нужно.

    Скажите конкретно, пусть даже 11, с чего мне начинать, чтобы потом не переучиваться?

    vq#
    > Скажите конкретно, пусть даже 11, с чего мне начинать, чтобы потом не переучиваться?
    Ща начнется. По 10 и 11 книг толком нет. Тока примеры, наверное. Английские доки. Хотя есть какая-то книга по 10 на англ.

    Ну гугл много выдал, так, что глаза разбегаются, поэтому и спрашиваю.

    vq#
    > Ну гугл много выдал, так, что глаза разбегаются, поэтому и спрашиваю.
    Например. Дай ссылки на статьи (тока нормальные), а не так что 10 умеет и какие у неё новшества.
    Вот почитай:
    http://www.google.ru/url?sa=t&rct=j&q=%D0%B4%D0%BE%D0%BA%… x2N0uONAqiuCQ

    К примеру, http://pmg.org.ru/rm/index.html ниже книги есть + названия на озоне есть, в гугл вбиваешь «программирование графики на directx и c++»

    vq#
    > Какой лучше изучать сейчас, 9 или 10?
    10ый — мертворожденный. На нем вообще никто не пишет. Поэтому только 11.

    vq#
    > К примеру, http://pmg.org.ru/rm/index.html ниже книги есть + названия на озоне есть, в гугл вбиваешь «программирование графики на directx и c++»
    Это все по 9.
    Там тока одна книга по 10. Тока хрен где скачаешь. Да отзовы о ней н-р такие
    «Где это я уже слышал… Такое впечатление, что автор книги положил перед глазами книгу Горнакова DirectX 9 Уроки программирования на С++ и смотря в нее, написал свою. Содержание почти идентично, только кое-что переставлено местами, примеры одинаковы, справочник тот же. Но главное, что в книге местами есть текст, который ОДИН В ОДИН списан и даже не измен из вышеупомянутой книги! Например, в кратком описании о DirectDraw проскакивают слова и обороты просто идентичные! Понравилось только одно — быстрая доставка ОЗОНОМ книги домой, за что нужно благодарить совсем не автора. «

    VirT
    > 10ый — мертворожденный. На нем вообще никто не пишет. Поэтому только 11.
    Соглашусь. Но у меня, н-р, 11 не все поддерживает на аппаратном уровне (GTS 250).

    asvp
    FeatureLevel, и использовать хоть девятый. Суть в том, что ДХ10 не нужен, потому что ДХ11 полностью включает его в себя.

    vq#
    Есть такая книга: «Introduction to 3D Game Programming with DirectX 10»

    Borderlands 3. Анализ производительности

    В сентябре Gearbox Software выпустила третью часть Borderlands, которая порадовала фанатов бодрыми перестрелками и фирменным накалом безумия. Новая игра стала масштабнее, предлагая приключения сразу на нескольких планетах, а новый движок обеспечил яркую сочную картинку. Выросли и системные требования, которые оказались достаточно серьезными. В данном обзоре мы определим лучшие видеокарты для Borderlands 3, сравним их возможности под DirectX 11 и DirectX 12 и определим оптимальный режим.

    Borderlands 3 сохранила узнаваемую стилистику с сел-шейдингом. Из-за мультяшного стиля изменения кажутся не столь критичными, но общая детализация заметно выросла. Игра лучше работает с освещением, а взрывы, вспышки и прочие эффекты выглядят красивее.

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

    Лучше оценить максимальное качество графики можно по нашей отдельной подборке скриншотов в разрешении 4K.

    В основе игры движок Unreal Engine 4. Поддерживается DirectX 11 и DirectX 12, причем второй API числится в бета-режиме, что намекает на возможные проблемы. По умолчанию используется сглаживание TAA, для лучшей четкости мелких деталей рекомендуем использовать FXAA. Также поддерживается технология AMD FidelityFX, которая улучшает четкость картинки, но для высоких разрешений это не принципиально.

    Сравним видеокарты при Ultra-настройках качества графики. В тестировании примут участие модели разных поколений и разных ценовых категорий. Их характеристики приведены в двух таблицах.

     

    GeForce RTX 2080 Ti FE

    GeForce RTX 2070 Super

    GeForce RTX 2060 Super

    GeForce GTX 1080 Ti

    GeForce GTX 1060 6GB

    GeForce GTX 1060 3GB

    GeForce GTX 1050 Ti

    GeForce GTX 960

    Архитектура

    Turing

    Turing

    Turing

    Pascal

    Pascal

    Pascal

    Pascal

    Maxwell

    Кодовое имя GPU

    TU102

    TU104

    TU106

    GP102

    GP106

    GP106

    GP107

    GM206

    Количество транзисторов, млн.

    18600

    13600

    12000

    12000

    4400

    4400

    3300

    2940

    Техпроцесс, нм

    12

    12

    12

    16

    16

    16

    14

    28

    Площадь ядра, кв. мм

    754

    545

    445

    471

    200

    200

    132

    228

    Количество потоковых процессоров

    4352

    2506

    2176

    3584

    1280

    1152

    768

    1024

    Количество текстурных блоков

    272

    160

    136

    224

    80

    72

    48

    64

    Количество блоков ROP

    88

    64

    64

    88

    48

    48

    32

    32

    Частота ядра (Base-Boost)*, МГц

    1350-1635

    1605-1770

    1470-1650

    1480-1582

    1506-1708

    1506-1708

    1290-1392

    1126-1178

    Шина памяти, бит

    352

    2560

    256

    352

    192

    192

    128

    128

    Тип памяти

    GDDR6

    GDDR6

    GDDR6

    GDDR5X

    GDDR5

    GDDR5

    GDDR5

    GDDR5

    Эффективная частота памяти, МГц

    14000

    14000

    14000

    11016

    8000

    8000

    7010

    7010

    Объём памяти, Гбайт

    11

    8

    8

    11

    6

    3

    4

    2

    Интерфейс

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    Уровень TDP, Вт

    260

    215

    175

    250

    120

    120

    75

    120

    *Указаны частоты Base Clock и Boost Clock, отвечающие стандартным спецификациям.

     

    Radeon VII

    Radeon RX 2700 XT

    Radeon RX 5700

    Radeon RX 580

    Radeon RX 480

    Radeon RX 570

    Архитектура

    GCN

    RDNA

    RDNA

    GCN

    GCN

    GCN

    Кодовое имя GPU

    Vega 20

    Navi 10

    Navi 10

    Polaris 20

    Polaris 10

    Polaris 20

    Количество транзисторов, млн.

    12500

    10300

    10300

    5700

    5700

    5700

    Техпроцесс, нм

    7

    7

    7

    14

    14

    14

    Площадь ядра, кв. мм

    331

    251

    251

    232

    232

    232

    Количество потоковых процессоров

    3840

    2560

    2304

    2304

    2304

    2048

    Количество текстурных блоков

    240

    160

    144

    144

    144

    128

    Количество блоков ROP

    64

    64

    64

    32

    32

    32

    Частота ядра, МГц

    1400-1750

    1605-1905

    1465-1725

    1257-1340

    1120-1266

    1168-1244

    Шина памяти, бит

    4096

    256

    256

    256

    256

    256

    Тип памяти

    HBM2

    GDDR6

    GDDR6

    GDDR5

    GDDR5

    GDDR5

    Эффективная частота памяти, МГц

    2000

    14000

    14000

    8000

    8000

    7000

    Объём памяти, Гбайт

    16

    8

    8

    8

    8

    4

    Интерфейс

    PCI-E 3.0

    PCI-E 4.0

    PCI-E 4.0

    PCI-E 3.0

    PCI-E 3.0

    PCI-E 3.0

    Уровень TDP, Вт

    300

    225

    180

    185

    150

    150

    Все графические ускорители протестированы в номинале. Использовались референсные модели, а у нереференсных частоты подгонялись под уровень стандартных версий.

    На графиках указан полный диапазон частот GPU — от базового к максимальному значению Boost.

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

    • процессор: Intel Core i7-6950X @4,2 ГГц
    • материнская плата: MSI X99S MPOWER
    • память: DDR4 HyperX Predator HX432C16PB3K4/32, 3200 МГц, 4×8 ГБ
    • жесткий диск: Hitachi HDS721010CLA332, 1 TБ
    • блок питания: Seasonic SS-750KM
    • операционная система: Windows 10 Ultimate x64
    • драйвер NVIDIA GeForce 4412
    • драйвер AMD Radeon Adrenalin Edition 19.10.2

    Для тестирования использовался встроенный игровой бенчмарк, который прогонялся несколько раз на каждой видеокарте. Для контроля минимального fps использовались средства MSI Afterburner.

    Основное тестирование проведено при Ultra-настройках, но игра предполагает и более высокий уровень качества, в котором максимальные значения принимают два параметра — «объемный туман» и «отражения в экранном пространстве». В стилистике игры эти настройки слабо улучшают общее восприятие. Для наглядности оценим влияние этих параметров на примере трех видеокарт, а потом сконцентрируемся на стандартном режиме Ultra.

    Падение производительности при переходе от Ultra к максимальной графике 5-6%. Для мощных видеокарт это не критично. На бюджетных видеокартах дополнительные настройки не имеют смысла, поскольку им и обычные Ultra-настройки даются им с трудом. Производительность в DirectX 11 выше.

    Теперь посмотрим на результаты при Ultra-настройках.

    Видеокарты NVIDIA и AMD показывают противоположные результаты в DirectX 11 и DirectX 12. GeForce GTX 1060 обходит Radeon RX 580 в первом режиме, но уступает Radeon RX 570 во втором. Причина в том, что все GeForce показывают падение частоты кадров при переходе к DirectX 12, а все Radeon получают ускорение около 10%. У Radeon VII это ускорение достигает 10-13%. Зато на Radeon RX 570 игра в DirectX 12 выдавала ошибку, возможно, из-за малого объема памяти. Меняется ситуация и в старшем сегменте. Если GeForce RTX 2070 Super быстрее Radeon RX 5700 XT в DirectX 11, то в DirectX 12 все наоборот; а если сравнить их лучшие результаты, то соперники примерно на одном уровне. Референсная версия GeForce GTX 1080 Ti сопоставима с GeForce RTX 2070 Super, в DirectX 11 даже чуть быстрее. Загрузка видеопамяти во время прохождения тестов достигала 5 ГБ, у решений AMD чуть выше.

    Посмотрим на производительность старших видеокарт в разрешении 2560×1440:

    Привычное соотношение в DirectX 11 и DirectX 12. Видеокарты NVIDIA показывают наивысшую частоту кадров в старом API, а модели AMD в новом. Если сравнивать лучшие результаты, то снова GeForce RTX 2070 Super и Radeon RX 5700 XT будут примерно на одном уровне. Чуть быстрее Radeon VII, если использовать для видеокарты DirectX 12. Разница между GeForce RTX 2080 Ti и GeForce RTX 2070 Super на уровне 28-38%. Загрузка видеопамяти 5,5-6 ГБ.

    В 4K протестированы только старшие видеокарты NVIDIA и AMD. Примечательно, что в этом режиме DirectX 12 уже не повышает минимальный fps у Radeon VII. GeForce RTX 2080 Ti заметно лучше соперника, оптимальным режимом для флагмана является DirectX 11.

    Дополнительные видеоматериалы

    Сравнение GeForce RTX 2060 Super, GeForce RTX 2070 Super, Radeon RX 5700 XT и Radeon RX 5700 в формате 1440p:

    Данное видео отражает ситуацию только в DirectX 11.

    Сравнение GeForce GTX 1650 Super, GeForce GTX 1060, Radeon RX 5500 XT и Radeon RX 580 в формате 1080p:

     

    Демонстрация игры в 4K на GeForce RTX 2080 Ti Founders Edition.

    Задействованы Ultra-настройки при простом сглаживании FXAA и отключенном эффекте размытия в движении. Почти во всех сценах мы видим около 50 fps, на пустынных локациях Пандоры даже выше. 

    Выводы

    Borderlands 3 — требовательная игра, которой требуются мощные видеокарты. В разрешении Full HD с Ultra-настройками даже GeForce GTX 1060 и Radeon RX 580 выдают производительность ниже комфортного уровня, тут нужны GeForce GTX 1070/1080 или аналоги. Максимальный комфорт в таком разрешении обеспечат GeForce RTX 2060 Super и Radeon RX 5700, а GeForce RTX 2070 Super и Radeon RX 5700 XT отлично справляются с разрешением 2560×1440. Играть в 4K позволяет только GeForce RTX 2080 Ti, производительность других видеокарт будет крайне низкой.

    На видеокартах NVIDIA GeForce для максимальной производительности нужно использовать DirectX 11. Для AMD лучше включать DirectX 12, но этот режим может вызвать проблемы на бюджетных моделях с небольшим объемом видеопамяти.

    Читайте другие наши обзоры. Следите за обновлениями через ВКонтакте, Facebook и Twitter!

    В чем разница между DirectX 11 и DirectX 12

    DirectX 12 дебютировал два года назад, обещая значительное повышение производительности и задержек по всем направлениям. Это включает в себя лучшее использование ЦП, более близкий к доступу металл, а также множество новых функций, в первую очередь трассировку лучей или DXR (трассировка лучей DirectX). Но что такое DirectX 12 и чем он отличается от DirectX 11. Давайте посмотрим.

    Что такое DirectX: это API

    Подобно Vulkan и OpenGL, DirectX — это API, который позволяет запускать видеоигры на вашем компьютере.Однако, в отличие от своих аналогов, DX является проприетарной платформой Microsoft и поддерживает только Windows. OpenGL и Vulkan, с другой стороны, работают как на Mac, так и на Linux.

    Итак, что делает графический API, такой как DirectX? Он действует как промежуточное звено между игровым движком и графическими драйверами, которые, в свою очередь, взаимодействуют с ядром ОС. Графический API — это платформа, на которой определяется фактический дизайн и механика игры. Думайте об этом как о MS Paint, где игра — это рисование, а приложение для рисования — это API.Однако, в отличие от paint, программа вывода графического API доступна для чтения только API, который использовался для ее разработки. В общем, API разработан для конкретной ОС. Вот почему игры для PS4 не запускаются на Xbox One и наоборот.

    DirectX 12 Ultimate — первый графический API, нарушающий это правило. Он будет использоваться как в Windows, так и в Xbox Series X следующего поколения. В DX12 Ultimate MS в основном интегрирует две платформы.

    DirectX 11 против DirectX 12: что это означает для геймеров на ПК

    Существует три основных преимущества API DirectX 12 для ПК-геймеров:

    Лучшее масштабирование с многоядерными процессорами
    Накладные расходы на процессор с DX11 и 12 (ниже — лучше)

    Одним из основных преимуществ низкоуровневых API, таких как DirectX 12 и Vulkan, является улучшенная загрузка ЦП.Традиционно с играми на основе DirectX 9 и 11 в большинстве игр использовалось только 2-4 ядра для различных механик: физики, искусственного интеллекта, вызовов отрисовки и т. Д. Некоторые игры даже ограничивались одним. С DirectX 12 все изменилось. Нагрузка более равномерно распределяется по всем ядрам, что делает многоядерные процессоры более актуальными для геймеров.

    Максимальное использование оборудования

    Многие из вас, возможно, заметили, что вначале графические процессоры AMD отдавали предпочтение играм DirectX 12 больше, чем конкурирующим компонентам NVIDIA. Это почему?

    Причина в лучшем использовании.Традиционно у NVIDIA была гораздо лучшая поддержка драйверов, в то время как оборудование AMD всегда страдало от ее отсутствия. В DirectX 12 добавлено множество технологий для улучшения использования, например асинхронные вычисления, которые позволяют одновременно выполнять несколько этапов конвейера (чтение : вычисления и графика ). Это делает плохую поддержку драйверов менее насущной проблемой.

    Ближе к металлической поддержке

    Еще одно важное преимущество DirectX 12 состоит в том, что разработчики имеют больший контроль над тем, как их игра использует оборудование.Раньше это было более абстрактным и в основном решалось драйверами и API (хотя некоторые движки, такие как Frostbyte и Unreal, также предоставляли инструменты низкого уровня).

    Теперь задача ложится на разработчиков. Доступ к ним ближе к металлическому, а это означает, что большая часть обязанностей по рендерингу и распределению ресурсов выполняется игровыми движками с некоторой помощью графических драйверов.

    Это палка о двух концах, поскольку существует множество архитектур графических процессоров, и для инди-разработчиков невозможно оптимизировать игру для них всех.К счастью, сторонние движки, такие как Unreal, CryEngine и Unity, делают это за них, и им нужно только сосредоточиться на проектировании.

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

    Опять же, есть три основных усовершенствования API, которые способствуют этому увеличению:

    Объекты состояния конвейера

    В DirectX 11 объекты конвейера графического процессора существуют в широком диапазоне состояний такие как вершинный шейдер, шейдер корпуса, геометрический шейдер и т. д. Эти состояния иногда взаимозависимы друг от друга, и следующее последующее не может продвигаться, если не определен предыдущий этап.

    Каждый из объектов в DirectX 11 должен быть определен индивидуально (во время выполнения), и следующее состояние не может быть выполнено до тех пор, пока предыдущее не будет завершено, поскольку для них требуются разные аппаратные блоки (шейдеры против ROP, TMU и т. Д.). Это фактически оставляет оборудование недостаточно используемым, что приводит к увеличению накладных расходов и сокращению количества вызовов отрисовки.

    DirectX 12 заменяет различные состояния объектами состояния конвейера (PSO), которые завершаются при самом создании. Эти PSO включают байт-код для всех шейдеров, включая вершинный, пиксельный, домен, корпус и геометрический шейдер, и могут быть преобразованы в любое состояние в соответствии с требованиями, независимо от какого-либо другого объекта или состояния.PSO могут динамически переключаться туда и обратно из регистров путем передачи небольшого количества данных.

    NVIDIA Mesh и Task Shaders (Turing uarch)

    NVIDIA Turing GPU с помощью DirectX 12 представляет Task Shaders и Mesh Shaders. Эти два новых шейдера заменяют различные громоздкие этапы шейдера, задействованные в конвейере DX11, для более гибкого подхода.

    Сетчатый шейдер выполняет ту же задачу, что и шейдер домена и геометрии, но внутри он использует многопоточную вместо однопоточной модели.Шейдер задач работает аналогично. Основное отличие здесь состоит в том, что, хотя входом шейдера корпуса были патчи, а выходом тесселированного объекта, вход и выход шейдера задачи определяются пользователем.

    В сцене ниже есть тысячи объектов, которые необходимо отрендерить. В традиционной модели для каждого из них потребуется уникальный вызов отрисовки от ЦП. Однако с помощью шейдера задачи список объектов отправляется с помощью одного вызова отрисовки. Затем шейдер задач обрабатывает этот список параллельно и назначает работу шейдеру сетки (который также работает синхронно), после чего сцена отправляется в растеризатор для преобразования из 3D в 2D.

    Этот подход помогает значительно сократить количество вызовов отрисовки ЦП на сцену, тем самым повышая уровень детализации.

    Сеточные шейдеры также упрощают отсечение неиспользуемых треугольников. Это делается с помощью шейдера усиления. Он запускается до шейдера сетки и определяет количество необходимых групп потоков шейдера сетки. Они проверяют различные мешлеты на предмет возможных пересечений и видимости экрана, а затем проводят необходимую отбраковку. Отбор геометрии на этой ранней стадии рендеринга значительно улучшает производительность.Вы можете узнать больше здесь…

    В шейдерах сетки и корпуса NVIDIA также используется DX12.
    Очередь команд

    В DirectX 11 только одна очередь идет к графическому процессору. Это приводит к неравномерному распределению нагрузки между различными ядрами ЦП, что существенно снижает нагрузку на многопоточные ЦП.

    Это несколько смягчается за счет использования отложенного контекста, но даже тогда, в конечном счете, есть только один поток команд, ведущих к ЦП на заключительном этапе. DirectX 12 представляет новую модель, которая использует списки команд, которые могут выполняться независимо, что увеличивает многопоточность.Это включает в себя разделение рабочей нагрузки на более мелкие команды, требующие разных ресурсов, что позволяет выполнять одновременное выполнение. Вот как работают асинхронные вычисления, разделяя вычислительные и графические команды на отдельные очереди и выполняя их одновременно.

    Связывание ресурсов

    В DirectX 11 связывание ресурсов было очень абстрактным и удобным, но не лучшим с точки зрения использования оборудования. Из-за этого многие аппаратные компоненты оставались неиспользованными или простаивающими. Большинство игровых движков будут использовать «объекты просмотра» для выделения ресурсов и привязки их к различным этапам шейдера конвейера графического процессора.

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

    DirectX 12 заменяет представления ресурсов на кучи дескрипторов и таблицы. Дескриптор — это небольшой объект, содержащий информацию об одном ресурсе. Они сгруппированы вместе, чтобы сформировать таблицы дескрипторов, которые, в свою очередь, хранятся в куче.

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

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

    Другие функции, которые поставляются с DirectX 12:

    DirectX Raytracing (DXR): По сути, это поддержка API для трассировки лучей в реальном времени, которую NVIDIA с любовью называет RTX.

    Затенение с переменной скоростью: Затенение с переменной скоростью позволяет графическому процессору фокусироваться на областях экрана, которые более «видимы» и затрагиваются в каждом кадре. В шутере это будет пространство вокруг перекрестия. Напротив, область вокруг границы экрана в основном не в фокусе, и ее можно игнорировать (в некоторой степени).

    Это позволяет разработчикам сосредоточиться на областях, которые действительно влияют на видимое визуальное качество (в большинстве случаев в центре кадра), уменьшая при этом затенение на периферии.

    VRS бывает двух типов: Content Adaptive Shading и Motion Adaptive Shading:

    CAS позволяет индивидуальное затенение каждой из экранных плиток 16 × 16 (мозаичный рендеринг), позволяя графическому процессору увеличивать скорость затенения в регионах которые выделяются, уменьшая их в остальных.

    Адаптивное затенение движения — это так, как кажется. Он увеличивает скорость затенения движущихся объектов (изменяя каждый кадр) при одновременном снижении скорости затенения относительно статичных объектов.В случае гоночной игры, автомобиль получит усиленное затемнение, в то время как небо и бездорожье будут иметь меньший приоритет.

    Поддержка нескольких графических процессоров: DirectX 12 поддерживает два типа поддержки нескольких графических процессоров, а именно неявную и явную. Неявный, по сути, SLI / XFX и оставляет работу драйверу производителя. Явный более интересен и позволяет игровому движку управлять параллельной работой двух графических процессоров. Это позволяет лучше масштабировать, смешивать и сопоставлять разные графические процессоры, даже от разных поставщиков (включая ваш dGPU и iGPU).

    Еще одним важным преимуществом является то, что изображения VRAM двух графических процессоров не зеркалируются и могут быть объединены в стек, чтобы удвоить объем видеопамяти. Эта и множество других функций делают DirectX 12 серьезным обновлением программного обеспечения компьютерных игр.

    DirectX 12 Ultimate: чем он отличается от DirectX 12?

    DirectX 12 Ultimate — это постепенное обновление существующего DirectX 12 (уровень 1.1). Его основным преимуществом является кроссплатформенная поддержка: как Xbox Series X следующего поколения, так и новейшие игры для ПК будут использовать ее.Это не только упрощает кроссплатформенный перенос, но и упрощает разработчикам оптимизацию своих игр для новейшего оборудования.

    К тому времени, когда Xbox Series X появится в конце этого года, разработчики игр уже будут иметь достаточно времени с оборудованием, использующим тот же графический API (NVIDIA Turing), что упростит процесс переноса и оптимизации. В то же время это также позволит лучше использовать новейшее аппаратное обеспечение ПК, тем самым повышая производительность. В общем, это еще один шаг Microsoft по унификации игровых платформ Xbox и ПК.

    Помимо этого, в нем представлены DirectX Raytracing 1.1, обратная связь сэмплера, сеточные шейдеры и шейдинг с переменной скоростью. Последние два уже поддерживались графическими процессорами NVIDIA RTX Turing (и объяснены выше), но теперь они получат широкое распространение в новых играх и разработчиках.

    Текстура Sampler Отзыв: TSF — это то, на чем MS действительно делает упор. Проще говоря, он отслеживает текстуры (карты MIP), которые отображаются в игре, а какие нет. Следовательно, неиспользуемые удаляются из памяти, что дает чистую выгоду до 2.В 5 раз больше общего использования видеопамяти. На изображении выше вы можете видеть, что справа (без TSF) все ресурсы текстуры для глобуса загружаются в память. С TSF слева сохраняется только та часть, которая фактически видна на экране, а неиспользуемые биты удаляются, тем самым экономя ценную память.

    Это также можно сделать по кадрам (временно). В относительно статическом изображении объекты на расстоянии могут повторно использовать затенение для нескольких кадров, например, для каждых двух-четырех кадров и даже больше.Сохраненная графическая производительность может быть использована для повышения качества близлежащих объектов или мест, которые оказывают более заметное влияние на качество.

    DXR 1.1 — это незначительное обновление по сравнению с существующей версией 1.0:

    • Raytracing теперь полностью контролируется графическим процессором и не требует вызовов отрисовки от центрального процессора, что снижает нагрузку на центральный процессор и повышает производительность.
    • Новые шейдеры трассировки лучей могут быть загружены по мере необходимости, в зависимости от местоположения игрока в игровом мире.
    • Встроенная трассировка лучей — одно из основных дополнений к DirectX 12 Ultimate. Это дает разработчикам больше контроля над процессом трассировки лучей. Он доступен на любом этапе конвейера рендеринга и возможен в случаях, когда сложность затенения минимальна.

    Продолжайте читать о DX12 Ultimate здесь…

    DirectX 12 против DirectX 11 — Как DX12 изменит компьютерные игры на Windows 10

    DirectX 12 против DirectX 11 — Почему это важно?


    Windows 10 прибыла, и, наряду со встроенной Cortana, потоковой передачей игр на Xbox One и новым модным веб-браузером, одной из его ключевых функций является DirectX 12, последняя версия игрового API операционной системы.

    Программный уровень, который находится между оборудованием, на котором работают наши компьютеры, и программным обеспечением, которое на них работает, DirectX лежит в основе подавляющего большинства игр, работающих в Windows. Другой важный игровой API — это OpenGL, который, как следует из названия, является API с открытым исходным кодом. Оба предлагают очень похожие ключевые функции, но именно DirectX, как правило, лежит в основе большинства крупных игр.

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

    Итак, давайте посмотрим, что дает DirectX 12.

    Watch — Краткое руководство по новым возможностям Windows 10

    DirectX 12 против DirectX 11– Аппаратная абстракция на низком уровне

    Самая большая новая функция DirectX 12 — это изменение в части 3D-графики, называемой Direct3D, которая значительно расширит возможности разработчиков по оптимизации своих игр для конкретного оборудования.Это связано с тем, что Direct3D предлагает более низкий уровень аппаратной абстракции и реконфигурацию управления графическим конвейером по сравнению с DirectX 11 и предыдущими версиями.

    Что такое аппаратная абстракция? Что ж, это корень того, что делает API полезным. Вместо того, чтобы разработчикам писать код для работы с различным оборудованием и драйверами, API решает все это, и вместо этого у разработчиков есть упрощенный набор инструкций для работы.

    Ранее DirectX обеспечивал только довольно высокий уровень аппаратной абстракции, чтобы облегчить жизнь кодировщикам.Однако недостатком является то, что разработчики не могут оптимизировать производительность для конкретного оборудования. С Direct3D 12 Microsoft предоставит более прямой доступ к аппаратным функциям.

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

    По теме: Что такое HoloLens? Объяснение гарнитуры Microsoft AR

    DirectX 12 против DirectX 11 — сокращение накладных расходов на вызовы отрисовки

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

    Эта проблема действительно затрагивает только игры с ограниченным ЦП, а большинство игр ограничено скоростью графического процессора, поэтому вероятное влияние в реальном мире будет различным. Но поскольку в последних играх все больше и больше используются такие вещи, как искусственный интеллект и физика, ЦП может делать все больше.Кроме того, многопользовательские игры также могут быть подвержены ограничению ЦП. Хорошим примером является Battlefield 4, который может быть ограничен ЦП даже на довольно мощном оборудовании.

    Это сокращение времени вызова отрисовки является тем же преимуществом, которое AMD представила в Mantle, поэтому Battlefield 4 была одной из первых игр, в которых использовался этот новый API.

    По теме: HoloLens против Google Glass: в чем разница?

    DirectX 11: общее время на поток составляет 6,6 мс.


    DirectX 12: общее количество на поток уменьшено вдвое до 3.2 мс

    Мультиадаптер DirectX 12

    Еще одна ключевая новая функция — явный мультиадаптер. Это позволит играм использовать мультиграфические процессоры разных производителей и скоростей, независимо от существующих решений, таких как SLI и Crossfire.

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

    Это, пожалуй, самая сложная из возможностей DirectX 12 для реализации, поэтому еще неизвестно, использует ли кто-нибудь ее в какой-либо степени, но, безусловно, приятно знать, какие возможности существуют.

    Почему именно DirectX 12 сейчас?

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

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

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

    Связано: Практическое применение HoloLens: что говорят эксперты

    Кроме того, все последние консоли теперь оснащены APU (комбинированными процессорами и графическими процессорами) производства AMD, поэтому оптимизация для этих платформ также дает уроки по оптимизации для ПК с оборудованием AMD. Фактически, Xbox One перейдет на использование DirectX 12, что полностью устранит любые накладные расходы.По этой же причине AMD представила расширение Mantle для DirectX11, поскольку знала, что разработчики будут лучше ориентированы на оптимизацию своего оборудования благодаря выигрышу в дизайне консоли.

    Наконец, есть тот факт, что DirectX 12 будет использоваться на всех устройствах с Windows 10, включая не только ПК, но и планшеты и телефоны. Эта кроссплатформенная простота снова потенциально компенсирует любую дополнительную работу, которую может внести новый API.

    Когда выйдет DirectX 12?

    DirectX 12 будет поставляться в составе Windows 10, которая выйдет 29 июля 2015 года.Тем не менее, чтобы увидеть результаты этой возможности, Microsoft нацелена на праздничный сезон 2015 года, когда появятся игры, использующие DirectX 12.

    Будет ли моя карта работать с DirectX 12?

    DirectX 12 будет поддерживаться подавляющим большинством видеокарт для ПК, уже имеющихся на рынке. Любая карта Nvidia с момента запуска архитектуры Fermi (серия GTX 400), любая графика Intel со времен Haswell и любые карты AMD на базе GCN (серия HD 7000) поддерживают ее, что составляет около 70% от существующей базы установки.

    Точное увеличение производительности, которое вы увидите, будет сильно различаться, но, по крайней мере, теоретически вы получите выгоду.

    Связанные: Xbox One против PS4

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

    Эдвард Честер проводил компьютерные обзоры в Trusted Reviews в период с 2007 по 2019 год.…

    Сравнение нового DirectX 11 и DirectX 12 показывает неравные результаты, улучшения ограничены.

    Этот сайт может получать партнерские комиссии за ссылки на этой странице. Условия эксплуатации.

    Последние несколько лет ведутся споры о преимуществах и преимуществах (или их отсутствии) DirectX 12.Никому не помогло то, что этот аргумент был крайне партийным: графические процессоры Nvidia часто демонстрировали минимальные преимущества или даже снижение производительности, в то время как карты AMD часто демонстрировали значительное повышение производительности.

    [H] ardOCP недавно сравнили производительность AMD и Nvidia в Ashes of the Singularity, Battlefield 1, Deus Ex: Mankind Divided, Hitman, Rise of the Tomb Raider, Sniper Elite 4 и Tom Clancy’s The Division. Имейте в виду, что это было специально разработано как высококлассное сравнение, которое будет сравнивать два API в сценариях с ограниченным графическим процессором при высоких разрешениях и уровнях детализации, а также с Core i7-6700K с тактовой частотой 4.Испытательный стенд на частоте 7 ГГц. GTX 1080 Ti тестировался в 4K, а менее мощные 1080 и RX 480 тестировались в 1440p. Прежде чем вы начнете кричать о сравнении GTX 1080 и RX 480, имейте в виду, что каждый графический процессор сравнивался только с самим и в DX11 против DX12.

    Sniper Elite 4 была редкой игрой с очень хорошими результатами в DX12 против DX11 на Polaris. Данные и график сделаны [H] ardOCP.

    Ответ на вопрос, был ли DirectX 12 лучше или хуже, чем DirectX 11, сводится к следующему: «Это зависит от обстоятельств.«В частности, это зависит от того, используете ли вы графический процессор AMD или Nvidia, а также от самой игры. Графические процессоры AMD с меньшей вероятностью демонстрируют разницу в производительности между двумя API-интерфейсами, в то время как карты Nvidia по-прежнему склонны к DX11 в целом. [H] ardOCP в своем заключении отмечает, что DX11 по-прежнему является лучшим вариантом API в целом, но что поддержка DX12 улучшилась от обеих компаний, разница в производительности между двумя API снизилась, и в некоторых случаях DX12 дает сильные победы.

    Почему DirectX 12 не изменил игры

    Несколько лет назад, когда API с низким уровнем накладных расходов, такие как DirectX 12 и Vulkan, не были выпущены, и даже Mantle находился в зачаточном состоянии, было сделано много самонадеянных прогнозов относительно того, как они Предстоящие API-интерфейсы в корне преобразуют игры, высвободят скрытую мощь всех наших компьютеров и преобразуют игровую индустрию.Правда до сих пор была прозаичнее. Насколько игра выигрывает от DirectX 12, зависит от того, на каком процессоре вы ее тестируете, насколько ограничены ваши настройки качества графическим процессором, насколько опытен разработчик в использовании API для начала, и было ли разработано название. до основания, чтобы воспользоваться преимуществами DX12, или если его поддержка API была исправлена ​​позднее.

    И компоненты, которые вы выбираете, могут существенно повлиять на вид масштабирования, который вы видите.Рассмотрим приведенный ниже график от TechSpot, на котором сравниваются различные процессоры при использовании Fury X.

    Данные и график TechSpot

    Intel Core i7-6700K почти не дергается, в то время как Core i3-6100T имеет среднюю частоту кадров 1,14x. выше и минимальная частота кадров вдвое ниже. У AMD FX-6350 и FX-8370 средняя частота кадров увеличивается почти на 27%, но, опять же, минимальная частота кадров сильно падает.

    Аналогичная точка показана ниже с графиком результатов Hitman.6700K способен управлять Fury X почти так же быстро в DX11, как и в DX12, в то время как FX-8370 значительно улучшился.

    Одна из причин, по которой мы видим, что вещи разыгрываются таким образом, заключается в том, что цели и функции повышения производительности API с низкими накладными расходами были неправильно поняты. В течение многих лет было известно, что графические процессоры Nvidia часто бывают быстрее с процессорами Intel или AMD более низкого уровня (до Ryzen), чем собственные графические процессоры AMD. Частично это связано с тем, что собственные драйверы Nvidia DX11 реализуют многопоточность, а AMD — нет.Это одна из причин, почему в таких играх, как Ashes of the Singularity, производительность графического процессора AMD в DX12 взлетела до небес. Но по сути, DX12, Vulkan и Mantle — это методы компенсации слабой однопоточной производительности (или для более равномерного распределения рабочей нагрузки, чтобы не было узких мест в одном потоке).

    Эта статья от Eurogamer более старая, но в ней все же есть важный момент — улучшения производительности, демонстрируемые Mantle и DX12, происходят из-за того, что ЦП может обрабатывать больше вызовов отрисовки в секунду.Если графический процессор уже насыщен всей обработкой, которую он может обрабатывать, добавление дополнительных вызовов отрисовки в конвейер ничего не улучшит.

    Итак, после всего сказанного, был ли вообще смысл в DirectX 12? Абсолютно да. Игры, как категория приложений, были одними из самых медленных для освоения многоядерных процессоров и получения преимуществ от них. Даже сегодня количество игр, которые могут масштабироваться выше четырех ядер, довольно невелико. Предоставление процессорам более низкого уровня свободы для более эффективного использования своих ресурсов может полностью принести дивиденды потребителям, использующим оборудование более низкого уровня.DirectX 12 также все еще довольно новый, с несколькими поддерживающими названиями. Нет ничего необычного в том, что новому API требуется несколько лет, чтобы встать на ноги, а разработчики начинают поддерживать его в качестве основного варианта. Чтобы с ним хорошо работать, необходимо разработать игровые движки. Разработчики должны привыкнуть к этому. AMD, NV и Intel необходимо выпустить драйверы, которые используют его более эффективно, а в некоторых случаях могут вносить изменения в оборудование своих собственных графических процессоров, чтобы API с низкой задержкой работали более эффективно.

    Ни тот факт, что преимущества DX12 по сравнению с DX11 не менее драматичны, чем многие предпочли бы, ни его ограниченное распространение на данный момент, не являются необычными для нового API, который вносит столько же фундаментальных изменений, сколько DX12 вносит по сравнению с DX11.Как эти изменения повлияют на игры будущего, еще неизвестно.

    Насколько DX12 ДЕЙСТВИТЕЛЬНО улучшает производительность?

    2014 кажется очень давно, но именно тогда Microsoft впервые обнародовала новость о том, что она работает над выпуском DirectX 12, чтобы компании ответили на запросы разработчиков о низкоуровневом API. DX12 был разработан с нуля для решения проблем и ограничений, которые в то время мешали разработке компьютерных игр. Microsoft DX12 (вместе с Khronos Groups Vulkan) может поблагодарить AMD Mantle API за то, что он заложил основную основу для тогдашних новых API.AMD Mantle стимулировала разработку (и в случае Vulkan фактически использовалась как свободное ядро ​​API, хотя и с удаленными специфическими оптимизациями AMD и другими настройками) и продемонстрировала, на что действительно способно оборудование ПК. Разработчики, наконец, получили доступ к инструментам для правильного доступа к истинной производительности как CPU, так и GPU ПК той эпохи.

    * EDIT * у нас также есть обновленная версия этой статьи и видео, которые вы можете найти здесь.

    Мы здесь, в RedGamingTech, широко освещали Vulkan, DX12 и Mantle во время их первоначальных анонсов (на самом деле у нас есть несколько эксклюзивных интервью с Робертом Хэллоком из AMD относительно Vulkan, ссылки на которые приведены в описании, если вы хотите их проверить).Было очень легко увидеть очень впечатляющую демонстрацию ведьм и с открытым ртом пускать слюни на то, что должно было произойти. DirectX 12 и Vulkan позволили многое дать играм возможность запускать большее количество потоков, что позволило графическому процессору лучше получать данные, и, кроме того, дал разработчикам гораздо лучший контроль над ресурсами графического процессора.

    И пока я пишу это, Nvidia, AMD и Microsoft (и все остальные в отрасли) лирически рассказывают о преимуществах RayTracing, а DXR (DirectX RayTracing) — это еще одно продолжение того, как отрасль будет развиваться, подталкивая графическая оболочка будущих игр еще больше.Такие игры, как Metro Exodus, выглядят потрясающе, а Nvidia в настоящее время совершенствует Adaptive Temporal Antialiasing, что является верным признаком будущего графики.


    Легко было предположить, что к настоящему времени подавляющее большинство компьютерных игр будет DX12 или Vulkan, а DX11 будет отнесен к меньшим инди-студиям или играм, которые не выходят за рамки визуального восприятия. Но этого не произошло, и такие игры, как Resident Evil 7, Final Fantasy 15 и даже Black Ops 4, прочно закрепились на DX11. Причины более медленного внедрения многочисленны — сложнее разрабатывать игры с использованием DX12 или Vulkan (если вы действительно продвигаете лодку оптимизации), старое оборудование обычно лучше работает с DX11 (хотя это начинает меняться, поскольку люди обновляют свои машины. естественно), а драйверы и SDK были незрелыми (и это еще одна область, которая быстро развивается).

    Внедрение Microsoft DX12 как на платформу Xbox, так и на ПК, а также головокружительное множество платформ, на которые вы можете ориентироваться с помощью Vulkan, увеличили темпы выпуска игр, использующих эти API. Теперь, когда речь идет о продвижении новых API, особенно легко указать на Doom (и Doom Eternal) программного обеспечения ID, игры Wolfenstein, собственные игры Microsoft и Square Enix.

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

    х

    х

    Мы будем использовать процессор Intel I7-8700 в качестве ЦП, проводить тестирование с различными конфигурациями числа ядер ЦП и отключать Hyper Threading, чтобы увидеть, как масштабируются различные API. Что касается графики, мы будем использовать видеокарту Nvidia GeForce GTX 1080 Ti и протестировать ее в трех самых популярных разрешениях — 1080P, 1440P и, наконец, 4K. Да, и мы будем использовать комбинацию ручных запусков вместе со встроенными тестами, и это будет вместе с RAM Crucial Ballistix и материнской платой MSI B360 Gaming Pro Carbon.Для программного обеспечения мы будем использовать Windows 10 со всем программным обеспечением, исправленным до последних розничных версий через Steam.

    Прежде чем мы продолжим, мы хотели бы поблагодарить MSI за предоставленную материнскую плату и процессор, использованные в этом обзоре; и если вы хотите ознакомиться с обзором материнской платы, пожалуйста, найдите его встроенным в статью.

    Если вам нужны дополнительные результаты для игр с разными разрешениями, меньшее количество ядер и тестирование с GTX 1080, а также 1080 Ti, а также с другими играми (включая FF15), вы можете проверить наше видео о масштабировании ЦП и разрешения, которое тоже встроено ниже.

    х

    х

    Один из наших любимых тестов — rise of the tomb raider, и этот набор тестов ничем не отличается. Мы запускаем игру, используя как встроенный тест, так и ручной прогон игры на уровне GeoThermal Valley.

    Начнем со встроенного теста, который показывает бегущую демонстрацию нескольких локаций с играми. 1080P показывает небольшой кивок в сторону DX12, но ключевое слово — «легкий».DX12 имеет преимущество всего в 10 кадров в секунду при работе I7-8700 со всеми его ядрами и потоками. Отключение HT показывает небольшое улучшение результатов как для DX12, так и для DX11, но DX12 по-прежнему приносит домой победу между двумя API-интерфейсами Microsoft. Единственной аномалией здесь было 4 ядра с 4 потоками, которые показали лучшие результаты, чем все остальные тесты вместе взятые. Мы запускали тест несколько раз и каждый раз получали один и тот же результат.

    Естественно, более высокое разрешение перекладывает больше ответственности на графический процессор, и даже при 1440P вы часто будете ограничены графическим процессором, несмотря на наши настройки только «высокое» и только SMAA.

    К тому времени, как 4K развернется, и результатов DX11 против DX12 будет очень мало, а производительность будет почти в пределах погрешности. Не забывайте, что мы использовали ROTR всего для нескольких потоков в нашем видео о масштабировании ЦП (см. Выше), и результаты были очень похожими.

    Так; Итак, мы идем вправо — DX12 немного быстрее, чем DX11 в этих тестах, но ничего особенного? Что ж, давайте попробуем запустить несколько ручных запусков — снова с помощью GeoThermal Valley.Это отличная область в игре, потому что происходит много «вещей», и ее легко повторить, выполняя ручные прогоны без особых отклонений. Он также нагружает CPU и GPU, что делает его фантастическим худшим сценарием для игрового движка, поскольку мы просим его подтолкнуть воду, физику, множество вызовов отрисовки, большое количество NPC и обширные участки земли, таким образом постоянная подкачка данных как в графический процессор, так и в основную системную оперативную память.

    Выполнение вручную сработало, и разница между двумя API становится невероятно очевидной.Сфокусируясь на 12-поточном DX12 и DX 11 на мгновение, мы увидим огромный разрыв между «средней» частотой кадров, составляющий около 40 процентов. Но на самом деле настоящий тест исходит из минимальной частоты кадров, которая почти вдвое больше. Подумайте об этом — тесты DX12 с 4 ядрами и 4 потоками очень похожи по производительности (не считая максимального FPS) на тесты DX11 с 12 потоками.

    Хорошо, хорошо — достоверные данные, но мы даем графическому процессору большую свободу действий. Давайте увеличим количество пикселей на 2.25x (AKA, 1440P) — что теперь? Что ж, средний FPS — это не совсем так — около 8 FPS разделяют лучшую производительность (DX12 с 12 потоками) и худшую производительность (DX11 с 4 потоками). Но…. минимальная и 1 процентная частота кадров и даже 0,1 процента — все они имеют поразительную разницу. Еще раз, 4 потока и DX12 опережают 12 потоков DX11. В худшем случае, всего с 4 физическими ядрами, средний FPS лишь немного лучше на DX12, НО 0,1, 1 процент, минимум и максимум — все лучше.По сути, вы получите более плавный и стабильный опыт игры, работающей в режиме DX12, даже если для решения проблемы потребуется всего 4 ядра.

    Hitman 2016 — это еще одна игра, которая полностью поддерживает DX12, и результаты здесь также почти довольно очевидны. Разница между DX12 и DX11 со всеми 12 потоками составляет 20 процентов, хотя DX11 немного лучше работает без HT в наших 6 физических тестах ядра, хотя идет дальше вниз по стеку ядер ЦП, и да, DX12 продолжает побеждать конкурентов, завершая 6 процентов. быстрее всего с 4 ядрами… хотя ясно, что всего с 4 ядрами, тесты действительно начинают зависеть от ЦП.

    На 1440P ситуация схожая: DX12 выходит на первое место, но при 4K (где вы привязаны к графическому процессору) мы сталкиваемся с постоянной ситуацией, когда DX12 проигрывает DX11. Мы рассмотрим это подробнее во второй части нашего анализа, когда мы добавим больше игр и видеокарт в микс (и, конечно же, само собой разумеется, что если вы хотите увидеть это, поддержите канал!)

    Deus Ex немного странный — потому что мы ясно видим, что игра, даже с высокими настройками и 1080P, имеет наш эталонный дизайн GTX 1080 Ti, работающий против стены, привязанной к графическому процессору.Результаты действительно близки, и особо нечего сказать, кроме того, что DX11 здесь хоть немного быстрее, если не считать выключенного HT со всеми 6 ядрами.

    Но по мере увеличения разрешения ситуация полностью меняется, DX12 оказывается немного впереди, а на 4K мы получаем результаты, которые практически идентичны. Здесь немного лучшие минимумы и высокие FPS, но результаты не так уж и важны, особенно при более высоких разрешениях и графических настройках.

    AOTS Escalation не требует особого представления, и Брэд Уорделл и его команда в Stardock с самого начала были убежденными сторонниками DX12 и низкоуровневых API. Я мало что могу сказать, кроме того, что DX12 продолжает доминировать в производительности по всей гамме по сравнению с DirectX 11.

    Проще говоря, AOTS лучше справляется с дополнительными потоками и возможностью их использования. Движок игры предназначен для демонстрации масштабных сражений с большим количеством юнитов и расчета всего ИИ, траекторий огня оружия, отслеживания всего происходящего и, конечно же, рисования, которое действительно выполняет определенную часть ЦП.

    То, что мы имеем здесь, является идеальным сценарием для низкоуровневых API-интерфейсов для демонстрации своей работы, а DirectX 12 полностью доминирует над DirectX 11.

    Другой популярный тест для DX12 — Civilization 6, и мы используем тест AI с DX12 против DX11. Это не частота кадров, а время, необходимое ИИ для выполнения серии ходов.

    Наконец, мы будем использовать Doom, который в свое время использовался в качестве публичной демонстрации, чтобы продемонстрировать Vulkan против OpenGL, работающего на Nvidia GeForce GTX 1080.Мы запускаем игру (так как встроенного теста не существует) и смотрим на средние значения. Мы решили придерживаться 1080P, потому что это отличный пример, когда устаревший OpenGL явно находится в невыгодном положении по сравнению с последним и лучшим API Khronos Groups.

    Вкратце, мы, конечно же, расширим наше тестирование в новом Wolfenstein, а также в грядущей Doom Eternal, а также в других играх Vulkan — так что, если это то, что вас интересует, оставайтесь и помогите сделать наше тестирование еще лучше. .

    Мы решили взять Intel I7-8700, полностью задействовав 6 ядер и 12 потоков, а затем сократив его до 4 физических ядер. Максимальная частота кадров здесь не является проблемой, поскольку игровой движок явно является ограничивающим фактором (Doom 2016 ограничен всего 200 FPS). Но средние… средние очень интересные. OpenGL явно ужасно справляется с 12 доступными потоками, и это сразу видно с низким FPS, всего 139 FPS в среднем. Это значительно хуже, чем 4 ядра с OpenGL и 4 ядра с Vulkan.Но… но, Вулкан — это совсем другая история.

    х

    х

    Для начала, Vulkan либо на 4 ядрах, либо на 12 потоках, по сути, блокируется до 200 FPS (с нагрузкой текстуры / области здесь или там, или когда у нас действительно много чего происходит на экране, поэтому на мгновение или два 1080 Ti это проблема). Низкий FPS также поразителен: 1 процентный FPS подскочил почти на 40 процентов, а минимальная частота кадров увеличилась вдвое с 12 потоков с OpenGL до 12 потоков с Vulkan.Мы видим увеличение минимума более чем на 66 FPS от OpenGL до Vulkan. Я мало что могу сказать, кроме того, что показывают цифры — Vulkan уничтожает OpenGL, и увеличение производительности не просто ощутимо, это совершенно новый мир.

    Выводы

    Итак, вот и все — первая часть нашего взгляда на современные API по сравнению с устаревшими API. И мы надеемся, что вам понравилось; это был труд любви, и не беспокойтесь; впереди еще много всего. Мы планируем в ближайшее время взглянуть на это с оборудованием среднего класса, а также продолжим рассказывать о новейших играх, большем количестве разрешений и новейшем оборудовании.

    Если вы хотите увидеть больше и у вас нет подписчика на наш канал YouTube, вы знаете, что делать! И если вы подписчик, то большое спасибо за вашу поддержку; мы очень благодарны!

    Мы на Patreon, так что если вы хотите проверить нас — что ж, не стесняйтесь! Конечно, никакого давления, но знайте, что ваш вклад действительно помогает сделать такой контент возможным.

    В чем разница между DirectX 11 и DirectX 12?

    DirectX — это набор API или интерфейсов прикладного программирования, используемых программным обеспечением для рендеринга мультимедийного контента и взаимодействия с графическим оборудованием.API основных компонентов DirectX, Direct3D, обеспечивает обмен данными между программным обеспечением и графическим оборудованием. Поскольку все оборудование отличается, использование стандартизированной библиотеки функций и вызовов для связи с вашей видеокартой ускоряет разработку игр. Это называется аппаратной абстракцией, и это основная задача API.

    Подумайте о машинах: если вы умеете водить одну машину, вы можете управлять всеми ими. Педали газа и тормоза находятся в одном месте, рулевое колесо вращается в одном направлении, а двери открываются наружу.Могут быть небольшие различия в некритичных функциях, таких как радио, но в целом вы знаете, чего ожидать. DirectX и Direct3D похожи на это, позволяя разработчикам взаимодействовать с широким спектром оборудования, используя одни и те же инструменты. А поскольку большинство разработчиков игр используют стандартную библиотеку Direct3D, любые изменения в API могут повлиять как на геймеров, так и на программистов.

    Что нового в DirectX 12?

    Каждое крупное обновление DirectX и Direct3D приносит с собой новые функции и разработки.Однако Direct3D 12 привнес некоторые особенно значительные изменения. Фактически, это может означать начало новой области низкоуровневых графических API, которые изменят способ разработки игр.

    Аппаратная абстракция нижнего уровня

    DirectX 12 теперь позволяет разработчикам приблизиться к «металлу» графического оборудования своих пользователей, обеспечивая доступ к функциям, ранее недоступным для разработчиков. Открытие оборудования более низкого уровня означает, что опытные разработчики могут писать более эффективный код, который выполняется быстрее.В частности, разработчики могут улучшить оптимизацию за счет более высокой многопоточной производительности и более эффективного использования ЦП. Это потенциально может позволить провести оптимизацию на низком уровне, аналогичную той, которую мы видим в консольных играх, где игры настроены для чрезвычайно специфического оборудования среднего уровня, обеспечивая производительность, которая была бы невозможна без таких гиперспецифичных оптимизаций.

    Ранее DirectX 11 предлагал только довольно высокий уровень аппаратной абстракции, что значительно упрощало процесс кодирования.Собственно, в этом вся идея, которая делает аппаратные API такими мощными. Но это также означало, что возможности для точной настройки кода с учетом конкретных аппаратных функций были менее частыми. Блог разработчиков Microsoft дает отличную информацию о том, как именно DirectX 12 это делает.

    Повышенная производительность многоядерных процессоров

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

    Снижение накладных расходов на вызовы на розыгрыш

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

    Явный мультиадаптер

    DirectX 12 позволяет объединить несколько графических процессоров (также называемых «видеоадаптерами») в одну логическую единицу. Эта функция, называемая явным мультиадаптером, позволяет программному обеспечению управлять несколькими графическими процессорами, например, одним графическим процессором.Например, с DirectX 12 интегрированный графический процессор на вашем компьютере теперь может помечать команду вашим дискретным графическим процессором, предоставляя свою собственную вычислительную мощность. Расширенная поддержка API также может означать большую надежность и эффективность в установках SLI / CrossFire с несколькими графическими процессорами. В тестировании Microsoft использование интегрированной графики в тандеме с дискретной графикой дало небольшое, но заметное преимущество в тестах.

    Насколько важен DirectX 12 для геймеров?

    Как и множество дополнительных улучшений, геймеры не увидят ежедневных различий между DirectX 11 и DirectX 12.Новые функции не предоставляют новых возможностей рендеринга, которые удивляют пользователей. Вы также не увидите скачка в 100 FPS между двумя стандартами. Но это повышение эффективности в конечном итоге приведет к повышению производительности на менее мощном оборудовании, увеличивая мощность вашего ПК без обновления его оборудования.

    Александр Фокс

    Александр Фокс — технический и научный писатель из Филадельфии, штат Пенсильвания, с одним котом, тремя компьютерами Mac и большим количеством USB-кабелей, чем он когда-либо мог бы использовать.

    Эта статья полезна? да Нет

    Насколько по-разному выглядят игры в DX11 и DX12? Эээ… не очень

    Мы много слышали об элементе производительности, который DirectX 12 привносит в игры благодаря двум большим архитектурным нововведениям: многопоточной записи командного буфера и асинхронным шейдерам.Но вот в чем дело: переход от DX10 к DX11 был заметен не только с точки зрения частоты кадров, но и с точки зрения реализации новых графических эффектов, таких как динамическая тесселяция. Однако переход с DX11 на DX12 настолько сфокусирован на производительности, что гораздо сложнее указать на что-либо, что происходит на вашем экране, и сказать «вот, это DirectX 12.»

    Хотите купить видеокарту DirectX 12? Ознакомьтесь с нашим групповым тестом GTX 970.

    Вот как вы в конечном итоге смотрите на видео ниже, любезно предоставленное PC Games Hardware, которое показывает Ashes of the Singularity, работающую в обеих средах API и заставляющую ваши глаза увидеть любые заметные различия:

    Ага.Окружение выглядит идентично, так же как количество объектов на экране и уровень детализации каждого из них. Плотность оружейных эффектов в DX12 временами немного выше, но это ни в коем случае не ночь и не день.

    Для сравнения, вот тест Heaven 4.0 DirectX 11 (через Colony of Gamers) с выключенной и включенной тесселяцией:

    Читая собственный рекламный ход AMD о DirectX 12 (который сами по себе являются лидером в API, поддерживая асинхронные вычисления на аппаратном этапе), они дают очень четкое сообщение о том, что улучшения 12 по 11 основаны на производительности:

    «Асинхронные шейдеры DirectX 12 ускоряют завершение работы в совместимом графическом процессоре AMD Radeon, чередуя эти задачи между несколькими потоками, чтобы сократить общее время рендеринга.

    «Асинхронные шейдеры очень важны для игрового процесса на ПК, потому что более короткое время рендеринга снижает задержку графического конвейера, а меньшая задержка означает большую производительность. «Производительность» может означать более высокую частоту кадров в игровом процессе и лучшую отзывчивость в среде VR. Кроме того, более тонкий уровень детализации при разделении рабочей нагрузки может привести к еще большему сокращению рабочего времени. Как говорится: работай умнее, а не усерднее ».

    «Но многие геймеры также знают, что разработчики игр должны взять на себя обязательство использовать функцию, прежде чем она появится в реальном мире, — мы позаботимся об этом.Наше сотрудничество с такими разработчиками, как Oxide / Stardock (и другие, о которых не было объявлено), чтобы внедрить крутые технологии в отличные игры, является путеводной звездой для программы AMD Gaming Evolved, и мы уже наблюдаем здоровый интерес к этим функциям. Это хорошо для всех! »

    В этом и суть — то, как DirectX 12 выглядит , будет зависеть от того, как разработчики используют эту улучшенную линию связи между GPU и CPU. В DX11 нет такой новой техники, как тесселяция. Оксид добился отличительного вида Ashes of the Singularity, заполнив экран независимыми трехмерными объектами, каждое из которых испускало лазерные лучи и клубы дыма, как будто завтрашнего дня не наступит.

    Этот объем устройств по-прежнему составляет возможных в среде DX11 — он просто бежит, как трехпалый ленивец, плывущий на спине через ямы с смолой Ла-Бреа, и, таким образом, ни один здравомыслящий разработчик не стал бы так сильно выходить за рамки. Итак, прямо сейчас DirectX 12 выглядит как уже знакомые нам красивые игры, с увеличенными циферблатами. По мере того, как разработчики станут более свободно работать с DX12, они найдут способы еще больше расширить кругозор.

    Тем не менее, для тех, у кого есть компьютеры с графическими картами DirectX 11, хорошая новость заключается в том, что вы не упустите огромный шаг вперед в точности воспроизведения.Если вы чувствуете себя особенно одержимым, запустите Ashes of the Singularity с предустановленными настройками «безумной» графики. Это будет выглядеть примерно так же, как если бы у вас была карта DX 12, управляющая действием. Именно частота кадров показывает разницу между ними.

    WoW Player сравнивает производительность DX11 и DX12

    Новости видеоигры 21 октября 2020, 20:38

    автор: Яков Блажевич

    Может ли DirectX 12, наконец, иметь дело с World of Warcraft? На этот вопрос ответил пользователь Reddit, которого два года назад не впечатлила производительность последнего поколения библиотек DirectX.

    В последние месяцы внимание игроков World of Warcraft было приковано к грядущему расширению Shadowlands и недавнему обновлению, которое подготовило игру к ее запуску. Однако некоторые пользователи находят время для других занятий, связанных с этой популярной MMO. Так было с пользователем Reddit samfishersam. Два года назад он проверил производительность WoW с помощью недавно представленной поддержки DirectX 12. Теперь пользователь решил повторить тест и посмотреть, будет ли на этот раз 12-е поколение DirectX работать лучше, чем DirectX 11. Он опубликовал результаты на Imgur.

    Предположения эталонного теста

    Как и в 2018 году, компания samfishersam решила провести тест с помощью так называемых траекторий полета. Они соединяют разные зоны в WoW , и каждое путешествие с их использованием почти одинаково. Это, вместе с возможностью быстро повторить полет, делает траектории полета идеальными для тестов. Пользователь выбрал два маршрута с Острова Клыков в Зулдазаре: один ведет к Убежищу Тортака в Вол’дуне, а второй — к Заброшенным руинам в Назире. Чтобы быть уверенным, после каждого теста самфишерсам полностью закрыл клиент и перезапустил World of Warcraft , а после включения игра ждала две минуты, пока она полностью загрузит все элементы. Кроме того, пользователь использовал приложение ProcessLasso для автоматического назначения игре 8 потоков ЦП вместо стандартных 4. Все это для устранения факторов, которые могут исказить результаты.

    WoW DX11 vs DX12 — результаты тестов

    Источник: Reddit.

    Как и два года назад, DirectX 11 теперь имеет более высокую максимальную частоту кадров, чем его младший брат.Это единственное, что объединяет оба теста. Не только разница намного меньше, чем в 2018 году, но и во всех других отношениях DirectX 12 показал себя лучше, чем DX11.

    Но что еще важнее, DirectX 12 оказался намного более стабильным, чем DX11.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *