Чем отличается директ 11 от 12. DX11 и DX12: а есть ли между ними разница? Графические 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 требует больших трудозатрат, а пользователям не стоит рассчитывать на существенный рост производительности.

В 2015 году компания Microsoft представила новый графический API (средство интеграции приложений) - DirectX 12 для Windows 10. Как отметили многи пользователи, новый «директ икс» намного лучше и шустрее предыдущего. Однако и в его работе есть определённые огрехи. Благо, устранить их не так сложно.

Что такое DirectX 12

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

Зачем DirectX 12 в Windows 10

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


Вы можете увидеть, что второе изображение лучше прорисовано: нет размытости деревьев и дальних объектов

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

Чем DirectX 12 отличается от предыдущих версий

Ещё при разработке DirectX 12 производители сообщили, что он разрабатывается для более качественного взаимодействия с современной аппаратной частью. Если сравнивать его с предыдущими версиями, то можно отметить следующие отличия:

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

    Видео: сравнение DirectX версий 11 и 12

    Можно ли использовать DirectX 11.2 вместо DirectX 12

    DirectX 12 идёт в комплекте с Windows 10: все необходимые библиотеки уже имеются на компьютере после установки операционной системы или её обновления до 10 версии. Другими словами, если вы поставили Windows 10, то DirectX 12 уже тоже установлен. Однако не все видеокарты его поддерживают, поэтому иногда, даже с последней Windows, используется DirectX 11.2. Сегодня это не оказывает значительного влияния на работу компьютера, так как DirectX 12 ещё довольно «сырой» продукт. Вы можете использовать DirectX 11.2 вместо версии 12.

    Почему в Windows 10 установлен DirectX 11.2, а не DirectX 12

    Вы установили Windows 10, но вместо DirectX 12 используется версия 11.2. Почему так происходит? Есть две причины:

  • DirectX 12 не поддерживается видеоадаптером (временно, пока производители не выпустили новые драйверы);
  • драйверы графической карты устарели (их можно обновить на официальных сайтах NVIDIA, AMD или Intel).
  • Учитывайте, что производители не будут выпускать драйверы под старые модели видеокарт, поэтому вам, возможно, придётся либо менять графический адаптер, либо использовать предыдущие версии DirectX.

    Как узнать версию установленного DirectX

  • Нажмите одновременно клавиши Win + R. Откроется окно «Выполнить».
    Заметьте, что для диагностики системы нужны права администратора
  • Введите dxdiag в строке для текста. Нажмите «ОК».
    Команда dxdiag открывает «Средство диагностики DirectX»
  • Найдите во вкладке «Система» пункт «Версия DirectX».
    Если у вас стоит Windows 10, то версия DirectX либо 11.2, либо 12
  • Видео: как узнать версию DirectX

    Как установить DirectX 12 на Windows 10

    Если вы хотите установить DirectX 12 на Windows 10 с нуля, то вам понадобится установщик. Его можно скачать с официального сайта компании Microsoft:

  • Перейдите на страницу загрузки библиотек DirectX 12 на сайте Microsoft.
    Файл скачается автоматически, а вы увидите сообщение о начале загрузки
  • Дождитесь начала автоматической загрузки установщика.
    Вы скачаете файл-установщик DirectX 12
  • Запустите скачанный файл.
    Запустите скачанный файл, чтобы начать установку
  • Подтвердите, что принимаете условия пользовательского соглашения. Нажмите «Далее».
    Вы сможете выбрать кнопку «Далее» после принятия условий соглашения
  • Откажитесь от «Установки Панели Bing» (она не нужна для DirectX 12), убрав флажок.
    По желанию можно установить «Панель Bing»
  • Нажмите «Далее», чтобы начать установку.
    Подождите, пока DirectX установится на ваш компьютер
  • Нажмите «Готово», чтобы завершить установку.
    Нажмите на кнопку «Готово», чтобы завершить установку
  • Как обновить установленный DirectX до версии 12

    Если у вас на компьютере уже установлен DirectX, то вы можете просто обновить его до версии 12:

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

    Нужно ли настраивать DirectX 12

    DirectX 12 не является пользовательской программой в привычном смысле: её не нужно запускать (она работает постоянно) или настраивать.

    Когда вы устанавливаете или обновляете DirectX 12, то все настройки, которые нужны для её работы, задаются по умолчанию. Фактически DirectX - средство связи между «железом» и компьютерными программами, к которому у вас нет доступа.

    Все ваши действия по настройке DirectX ограничиваются установкой или обновлением программы.

    Проблемы установки DirectX 12 и способы их решения

    При работе с DirectX 12 могут возникнуть проблемы двух видов:

  • внутренняя системная ошибка (во время процесса установки);
  • постоянные сбои в работе уже установленной программы.
  • Что делать, если возникает внутренняя системная ошибка

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

    Внутренняя системная ошибка во время процесса установки DirectX 12

    Если вы скачали DirectX с Microsoft, а ошибка возникла, то нужно проверить жёсткий диск:

  • Нажмите Win + R для открытия «Командной строки».
    Комбинация клавиш Win + R всегда используется для работы с командами
  • Напишите в текстовом поле chkdsk и нажмите «ОК».
    Команда chkdsk запустит утилиту, проверяющую жёсткий диск на ошибки файловой системы
  • Дождитесь окончания проверки жёсткого диска, не закрывая окно. Нас интересует наличие повреждённых файлов.
    Посмотрите на строку «Обработка повреждённых файлов», чтобы определить их наличие
  • Если повреждённых файлов нет, то перейдите к следующей инструкции. Если есть, то нужно использовать утилиту повторно. Откройте «Командную строку» нажатием Win + R и напишите команду chkdsk /F. Эта утилита исправит ошибки файловой системы.
    Команда chkdsk /F запустит утилиту, которая исправит повреждённые файлы
  • Дождитесь автоматического закрытия окна «Командной строки». Исправление ошибок может занять некоторое время.
  • Откройте «Командную строку» комбинацией клавиш Win + R. Введите команду sfc /scannow и нажмите «ОК».
    Утилита просканирует и восстановит системные файлы
  • Дождитесь окончания работы утилиты.
    Утилита нашла и восстановила повреждённые файлы
  • Перезагрузите компьютер.
  • Может быть и такое, что проверка жёсткого диска не помогла решить проблему. В этом случае нужно проверить совместимость DirectX 12 с вашей системой:

  • Откройте на компьютере папку, куда скачан установщик DirectX 12. Щёлкните правой кнопкой мыши по названию файла и выберите «Исправление проблем с совместимостью».
    Кнопка «Исправление проблем с совместимостью» открывает нужный нам режим диагностики
  • Выберите пункт «Использовать рекомендованные параметры» в окне «Устранение проблем с совместимостью».
    Выберите первый пункт, чтобы параметры DirectX соответствовали возможностям вашего компьютера
  • Дождитесь, пока завершится поиск параметров. Нажмите «Проверить программу», чтобы запустить установку DirectX. После установки нажмите «Далее».
    С помощью кнопки «Проверить программу» вы установите DirectX 12 на компьютер
  • Выберите «Да, сохранить эти параметры для программы».
    Сохраните подобранные параметры, чтобы DirectX стабильно работал в будущем
  • Видео: устранение системной ошибки в процессе установки DirectX 12

    Что делать, если DirectX 12 работает некорректно

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

  • обновить DirectX 12 в «Центре обновления Windows» (последовательность действий описана в пункте «Как обновить установленный DirectX до версии 12»). Обновление настроено таким образом, что недостающие файлы просто подгружаются в уже существующий пакет библиотек на вашем компьютере. Система выдаёт ошибки, потому что ей не хватает каких-то файлов для стабильной работы, а обновление DirectX это исправит;
  • удалить DirectX 12 и установить с нуля (пошаговые инструкции описаны в «Как полностью удалить DirectX 12» и «Как установить DirectX 12 на Windows 10»). Этот вариант следует использовать только в том случае, если обновление DirectX не помогло, так как вам придётся работать с системными файлами.
  • Как откатить DirectX 12 до предыдущей версии

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

    Даже полное удаление DirectX 12 и установка одной из предыдущих версий не помогут, так как в Windows 10 нельзя отключить обновление системы. Даже если вы вручную установите, к примеру, DirectX 11, то он автоматически обновится до версии 12.

    Если вам кажется, что с DirectX 12 компьютер стал работать хуже, то нужно исправить проблемы с совместимостью (последовательность описана в третьей инструкции пункта «Что делать, если возникает внутренняя системная ошибка»). Не беспокойтесь о том, что для некоторых игр нужны предыдущие версии DirectX: библиотеки предыдущих версий обновляются во время установки всех обновлений для Windows 10.

    Как полностью удалить DirectX 12

    DirectX 12 является встроенным в Windows 10 приложением, то есть его нельзя удалить обычными способами. Для корректной работы вам нужно, чтобы эта программа присутствовала на компьютере, поэтому разработчики Windows убрали возможность её удаления. Однако бывают случаи, когда необходимо переустановить DirectX из-за постоянных сбоев в его работе. Для этого придётся использовать сторонние программы. Если есть возможность избежать удаления DirectX (например, проблема решается простым обновлением системы), то лучше ею воспользоваться. Перед удалением DirectX обязательно создайте точку восстановления системы, чтобы в случае некорректного удаления иметь возможность восстановить все данные.

    Восстановление системы

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

    Как создать точку восстановления в Windows 10

  • Щёлкните по значку поиска в левом нижнем углу экрана.
    Щёлкните по полю поиска, чтобы ввести текст
  • Напишите «Панель управления». Откройте её. «Панель управления» позволяет выполнять основные действия по настройке системы
  • Выберите раздел «Система и безопасность».
    Раздел «Система и безопасность» позволяет отслеживать состояние компьютера и восстанавливать систему
  • Выберите подраздел «Система».
    Раздел «Система» позволяет совершать администрирование ПК
  • Выберите пункт «Защита системы».
    Пункт «Защита системы» откроет окно «Свойства системы»
  • Нажмите «Настроить», чтобы включить защиту диска С. Нажмите «Настроить», чтобы открыть окно настройки защиты диска
  • Выберите «Включить защиту системы», объем дискового пространства и кликните «Применить». Нажмите «Применить», чтобы вернуться к окну «Свойства системы»
  • Нажмите «Создать» для создания точки восстановления системы. Кнопка «Создать» стала активна, так как вы включили защиту диска С
  • Укажите дату. Нажмите «Создать».
    Точка восстановления сохранит все программы и состояние вашего компьютера на эту конкретную дату
  • Дождитесь сообщения о завершении процесса и нажмите «Закрыть».
  • Теперь вы сможете восстановить систему, если удаление DirectX пройдёт некорректно, или компьютер станет хуже работать.

    Видео: как создать точку восстановления системы

    Как восстановить систему

  • Выполните пункты 1–5 инструкции «Как создать точку восстановления в Windows 10», чтобы открыть окно «Свойства системы». Кликните «Восстановить». Вы можете восстановить предыдущее состояние компьютера в любой момент
  • Нажмите «Далее» в окне восстановления системы.
    Обратите внимание, что восстанавливаются только системные файлы и параметры
  • Выберите точку восстановления системы с нужной датой, которую вы указали во время создания. Нажмите «Далее».
    Тип точки восстановления будет «Вручную», так как её создали вы, а не Windows
  • Подтвердите выбор точки восстановления.
    Нажмите «Готово», чтобы запустить восстановление системы
  • Согласитесь с запуском процесса восстановления.
    Учитывайте, что вы не сможете работать за компьютером до тех пор, пока не закончится восстановление системы
  • Дождитесь окончания восстановления системы.
  • Видео: как восстановить Windows 10

    Удаление DirectX 12

    Так как удаление DirectX в Windows 10 не предусмотрено, то придётся использовать стороннее ПО. Программа DirectX Happy Uninstall - довольно распространённая утилита, которая поможет полностью удалить все библиотеки DirectX с компьютера.

    DirectX Happy Uninstall не является официальным ПО. Скачивайте её только с проверенных сайтов.

    Чтобы удаление DirectX произошло корректно, воспользуйтесь следующими советами:

  • Создайте точку восстановления.
  • Скачайте установщик DirectX с сайта Microsoft.
  • Скачайте и установите программу DirectX Happy Uninstall.
  • Отключите интернет, чтобы система не смогла автоматически скачать и установить DirectX.
  • Отключите защиту системных файлов:
  • Теперь можно приступать к удалению DirectX 12:

  • Запустите DirectX Happy Uninstall. Создайте точку восстановления системы во вкладке «Backup». При необходимости вы сможете вернуть удалённый DirectX с её помощью.
    Нажмите «Start Backup», чтобы создать точку восстановления
  • Выберите вкладку «Uninstall», чтобы удалить программу.
    Нажмите «Uninstall», чтобы запустить удаление DirectX
  • Дождитесь завершения удаления и закройте программу.
  • Видео: как удалить DirectX

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


    DirectX 12: Новый этап в развитии игр

    29 июля состоится релиз Windows 10. И в составе новой ОС мы увидим пакет API DirectX 12, который является эксклюзивным для данной версии.

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

    Более детально обо всех изменениях и нововведениях мы расскажем вам в нашей статье, посвященной DirectX 12.

    “Свершилась мечта всех любителей графония! Появилась поддержка нескольких видеокарт на уровне интерфейса! Причем совместно можно использовать не только видеоадаптеры, работающие в SLI или CrossFire, но и GPU встроенные в CPU, даже от разных производителей.”


    С выходом Windows 10 всем станет доступна новая версия API DirectX, которая сильно изменит производительность в играх в лучшую сторону. В отличие от предыдущих версий, для работы вам не потребуется новая видеокарта, так как почти все выпущенные GPU за последние несколько лет будут иметь поддержку Dx12.

    Новая версия интерфейса для игр и мультимедийных приложений, которая будет работать на всех устройствах Microsoft: смартфонах, планшетах, ноутбуках, персональных компьютерах и Xbox One. DX12, давая доступ разработчикам к низкоуровневому программированию и улучшенной многопоточности, позволит улучшить производительность уже имеющегося железа в играх. По данным AMD, использование нового API позволяет увеличить количество обрабатываемых объектов в 16.5 раз по сравнению с DX11 при той же частоте кадров. А встроенная поддержка DX12 в Windows 10 сулит ему невероятную популярность. (c) Windows 10 - Восемь самых важных нововведений для геймера

    Про DirectX

    Перед тем как детально рассказать про Dx12 и все нововведения, напомню, что же такое DirectX, из каких частей состоит весь пакет этого API.

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

    Основной библиотекой, в которой чаще всего происходят изменения и внедрение новых технологий, является Direct3D. С каждым важным апдейтом этой библиотеки весь пакет DirectX получает новый индекс. Самые важные нововведения в Dx12 сделаны именно в ней. Остальные библиотеки тоже обновлены, но никаких новых технологий в них почти нет, хотя Microsoft обещают что-то новое в будущих обновлениях DirectX.

    В целом пакет DirectX подразделяется на такие библиотеки:

    • Direct2D - интерфейс вывода двухмерной графики.
    • Direct3D (D3D) - интерфейс вывода трёхмерных примитивов.
    • DirectInput - интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров.
    • DirectPlay - интерфейс сетевой коммуникации игр.
    • DirectSound - интерфейс низкоуровневой работы со звуком (формата Wave)
    • DirectMusic - интерфейс воспроизведения музыки в форматах Microsoft.
    • DirectShow - интерфейс, используемый для ввода/вывода аудио- и/или видеоданных.

    Каждая новая версия DirectX приурочена к определенному важному техническому прорыву. В основном это новые версии шейдерных моделей, которые поддерживаются только определенными поколениями GPU и версиями Windows.

    Ключевые особенности версий:

    • 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 10 - Шейдерная модель 4.0
    • DirectX 10.1 - Шейдерная модель 4.1
    • DirectX 11 - Шейдерная модель 5.0
    • DirectX 11.1 - Шейдерная модель 5.1
    • DirectX 12 - API низкоуровневого рендеринга, улучшенная многопоточность, поддержка нескольких GPU на уровне API

    Особенности и новые технологии в DirectX 12


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

    Многопоточная оптимизация
    DirectX 12 – первая из всех версий, которая оптимизирована под многопоточность на низком уровне. Игры смогут более равномерно нагружать все доступные ядра CPU, в связи с чем повышается производительность игры в целом. Уменьшается время на обработку основного потока игры, и также позволяет вызывать больше Draw-call. В итоге – на том же железе можно отрисовывать в разы больше объектов без понижения частоты кадров. DX 12 выжмет из вашего ПК весь потенциал!

    Оптимизация многопоточности CPU





    Использование нескольких GPU
    Свершилась мечта всех любителей графония! Появилась поддержка нескольких видеокарт на уровне интерфейса! Причем совместно можно использовать не только видеоадаптеры, работающие в SLI или CrossFire, но и GPU встроенные в CPU, даже от разных производителей. Игры будут обращаться не к конкретному GPU за обработкой графики, а ко всему массиву видеокарт, доступных в системе, как к единому GPU.


    Подтверждения того, можно ли будет объединить две дискретные видеокарты от AMD или Nvidia, пока нет, но сами компании демонстрируют совместную работу APU+GPU от AMD, или встроенного видео ядра Intel + дискретной карты Nvidia GTX. Возможно, нас ждут кроссбрендовые связки или использование видеокарт разных поколений в одной системе, что положит конец многолетней войне фанбоев AMD и Nvidia.


    Главным достоинством объединения всех GPU в один кластер является возможность обработки каждого отдельного кадра всем массивом, что устраняет проблемы совместимости игр с Multi-GPU, а также позволяет не копировать видеопамять каждого устройства, а использовать ее совместно, то есть теперь объём памяти нескольких видеокарт суммируется!



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


    Обратная совместимость с DirectX 11 видеокартами
    Большинство современных видеокарт, которые поддерживают DX 11.1, полностью совместимы с DX 12. Более ранние видеокарты будут поддерживать новое API только частично. Сейчас более 70% видеокарт, которые есть у геймеров, будут иметь полную или частичную поддержку всех нововведений. Полный список видеокарт, совместимых с DX 12, по заявлениям производителей, будет представлен в конце статьи.


    DirectX 12 + встроенные и low-end GPU
    Все преимущества DirectX 12 будут доступны не только игровым ПК c видеокартами последнего поколения, но и устройствам с бюджетными видеокартами или даже встроенными в процессоры GPU, например, ноутбукам и планшетам. Тесты, произведенные на Surface Pro 3 с процессором Core i5 с встроенным Intel 4400 GPU, показывают прирост производительности свыше 50% в графических приложениях и играх на примере специального бенчмарка, в котором частота кадров увеличилась с 19 FPS до 33 FPS, при использовании нового API.


    4k + DirectX 12
    Также нас ждет оптимизация работы с высокими разрешениями, и при переходе на DX12 средний уровень повышения производительности в разрешениях 4k составит 30-40 процентов. Такие числа назвал главный разработчик Project CARS - Ian Bell.


    Похожие технологии

    До выхода Dx12 некоторые компании представили свои API, схожие по функционалу, но ориентированные на конкретные GPU определенного производителя или на другие графические библиотеки, такие как OpenGL.

    Mantle - спецификация низкоуровневого API, разработанная компанией AMD в качестве альтернативы DirectX и OpenGL. В настоящее время поддерживается лишь графическими процессорами AMD архитектуры GCN, хотя есть вероятность, что другие производители GPU могли бы реализовать её в будущем, но в связи с выходом Dx12, который поддерживается всеми производителями GPU на рынке, вероятность этого крайне мала. Ну а последним гвоздем в гроб может стать то, что, судя по тестам проведенным самой AMD, Dx12 работает быстрее их собственной технологии на их же видеокартах.

    Vulkan API - изначально был известен как «новое поколение OpenGL» или просто «glNext», но после анонса компания Khronos Group отказалась от этих наименований в пользу названия Vulkan. Как и OpenGL, Vulkan позволяет с высокой производительностью отображать в реальном времени различные приложения с 3D графикой, такие как игры или интерактивные книги, на всех платформах, а также обеспечивает более высокую производительность и меньшую нагрузку на процессор, аналогично Direct3D 12 и Mantle. Vulkan основан на технологиях AMD в Mantle. Как и в прошлом OpenGL, в будущем Vulkan станет единственной достойной альтернативой DirectX и будет поддерживаться Open Source объединениями и такими гигантами игростроя, как Valve.

    Список видеокарт с поддержкой DirectX 12 в настоящее время

    • 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 and up)
    • AMD Radeon™ HD 8000M Series graphics for notebooks
    • AMD Radeon™ HD 7000 Series graphics (HD 7730 and up)
    • AMD Radeon™ HD 7000M Series graphics for notebooks (HD 7730M and up)
    • AMD A4/A6/A8/A10-7000 Series APUs (codenamed “Kaveri”)
    • AMD A6/A8/A10 PRO-7000 Series APUs (codenamed “Kaveri”)
    • AMD E1/A4/A10 Micro-6000 Series APUs (codenamed “Mullins”)
    • AMD E1/E2/A4/A6/A8-6000 Series APUs (codenamed “Beema”)
    • Nvidia Fermi (GTX 400, GTX 500)
    • Nvidia Kepler (GTX 600, GTX 700)
    • Nvidia Maxwell (GTX 700, GTX 900)
    • Intel Haswell (HD 5000, 4600, 4400 and 4200; Iris 5200 and 5100)
    • Intel Broadwell (HD 6000, 5600, 5500 and 5300; Iris 6200 and 6100)

    Вместо заключения. Выводы

    Если Microsoft и производители GPU выполнят свои обещания и не будут блокировать кросс-вендорные связки, как сейчас происходит с PhysX и Mantle, нас ждет технический прорыв. Спустя столько лет и разочарований вроде ПК версии Batman Arkham Knight, разработчики API и игр взялись за оптимизацию кода под имеющееся железо. Что еще нужно геймеру? Конечно, больше FPS бесплатно! Следующие поколения видеокарт будут оптимизированы еще больше под DX12 и будут иметь больше мегагерц и гигабайт, поддержку новых технологий, но играть комфортно в новые игры можно будет уже совсем скоро. Многие скажут, что игр под новый DirectX еще нет и не будет, и они будут почти правы. Но множество хитовых тайтлов этого года получат обновления для поддержки нового API после выхода Windows 10. А 90% игр, релиз которых состоится в конце этого года, уже заявили о его поддержке. А что будет на самом деле, узнаем в ближайшие месяцы, оставайтесь на связи!

    Сменяются видеокарты, игры, процессоры, а смена 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 12 - это особый компонент, обеспечивающий слаженную работу ОС и других приложений, в основном игр, с драйверами видеокарты.

    Если вы регулярно следили за нашей серией материалов, связанных с новой Windows 10, вы, вероятно, заметили, что не редко в них упоминался DirectX 12. Это не случайно – с того момента, когда Microsoft заговорила о следующей версии операционной системы, компания не раз подчеркивала центральную роль, отведенную в ней последнему DirectX. Почему это так важно для вас, как пользователя, и какие улучшения принесет новая версия графического интерфейса с предстоящей Windows 10? Сегодня мы постараемся кратко ответить на эти вопросы.

    Немного предыстории

    Хотя он часто воспринимается как неотъемлемая часть каждой Windows, на самом деле впервые DirectX появился во втором пакете обновления для Windows 95. Он представляет собой комплексный набор различных модулей, объединенных под общим названием «интерфейс прикладного программирования» (application programming interface или API). Каждый из них выполняет многочисленные и разнообразные функции, но их главная цель заключается в обеспечении прямого доступа для различных мультимедийных и видеопрограмм (в основном игры, конечно) к аппаратной части компьютерной системы, работающей под управлением Windows.

    До появления первой версии DirectX (которая носила серийный номер 2.0а) с Windows 95 Service Release 2, запуск и выполнение подобных приложений (игр) был громоздким и сложным процессом. Чтобы получить прямой доступ к аппаратному обеспечению, программа обращалась к DOS – предшественник Windows без графического интерфейса. Это был, мягко говоря, неэффективный механизм использования компонентов, таких как оперативная память, видео и звуковая карта и т.д.

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

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

    В начале принятие нового API пошло сравнительно медленно, особенно на фоне достаточно сильной конкуренции со стороны появившегося несколькими годами ранее OpenGL. Постепенно, однако, DirectX становился все лучше и лучше, и сегодня практически в одиночку доминирует в мире компьютерных видеоигр – по крайней мере, на платформе Windows.

    Счастливый номер 12

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

    Правда в том, что все последнее десятилетие – с момента появления версии 10, Microsoft в основном «лежала на старых лаврах», если говорить о DirectX. Доминирующее положение интерфейса (и Windows в частности) в сегменте PC сделало компанию немного ленивой, и в результате большинство улучшений в версиях 10 и 11 были скорее эволюционными, чем революционными. Каждая из этих версий получила промежуточные обновления, которые добавили относительно небольшие оптимизации и новые, но не особенно впечатляющие возможности.

    В отличие от них версия 12 является большим, решительным шагом вперед не только для DirectX в частности, но и для Microsoft в целом.

    Поскольку Windows 10 будет единой платформой, работающей на смартфонах, планшетах, ноутбуках, настольных компьютерах и игровых консолях (Xbox One), появление DirectX 12 отразится на гораздо более широком спектре аппаратных устройств.

    Владельцам Xbox One, например, новый интерфейс обещает ускорение возможностей рендеринга и, следовательно, более красивые на вид игры. Более того, в Microsoft надеются, что переход к DirectX 12 уничтожит превосходство их главного конкурента – консоли Sony PlayStation 4, которая в настоящее время предлагает более высокую вычислительную мощность, чем Xbox One. Например, новый API позволит разработчикам игр получить более быстрый доступ к высокопроизводительному ESRAM буферу Xbox, а это в свою очередь приведет к росту количества кадров в секунду.

    DirectX 12 обещает и ускорение приборной панели Xbox One, как и полноценную поддержку 4К видео.

    Новая жизнь для старых компьютеров

    Другое очень интересное обещание, связанное с DirectX 12, звучит так: оптимизация. Microsoft говорит, что только с обновлением до Windows 10 (и DirectX соответственно) мультимедийная (т.е. игровая) производительность вашего компьютера может увеличиться почти в два раза. А предварительные тесты PCWord показали, что рост может быть даже больше.

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

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

    Возвращаясь в прошлое, когда Intel закончила «войну за мегагерцы» и приняла концепцию повышения производительности посредством параллелизма, т.е. путем разделения операций/расчетов между двумя и более процессорными ядрами, тогдашнее программное обеспечение было не готового к такому гигантскому скачку вперед.

    Ни массовые операционные системы (читай Windows), ни приложения, работающие под их управлением, не были оптимизированы так, чтобы максимально использовать преимущества от наличия более одного процессорного ядра.

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

    Одна из основных задач нового DirectX 12 как раз таки и заключается в том, чтобы позволить играм по максимуму использовать все доступные ядра процессора и нагружать их на полную мощность. Эффект от такой оптимизации мягко говоря впечатляет – результаты в популярном тесте 3D Mark показывают 10-15-кратное увеличение производительности при переходе от DirectX 11 к DirectX 12!

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

    Разумеется, это не означает, что они чудесным образом превратятся в полноценную альтернативу настольному игровому PC, но благодаря Windows 10 и DirectX 12 они предложат более гладкую и качественную графику.

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

    И наконец – DirectX 12 подготовит Windows для нового мира разрешения 4К, которое мы надеемся, закрепится в мире ПК в ближайшие несколько лет.

    Отличного Вам дня!