DirectX 11 против DirectX 12: каковы различия и что следует использовать?

4
компьютеры и технологии 7.webp.webp

Последнее обновление 02.11.2023 — Василий Иванов

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

Однако действительно ли повысить производительность так же просто, как переключиться с DirectX 11 на DirectX 12? Давайте выясним это, посмотрев на различия между DirectX 11 и 12.

Что такое DirectX от Microsoft?

Как объясняется в нашем обзоре Microsoft DirectX, DirectX представляет собой набор интерфейсов прикладного программирования (API), используемых для решения задач, связанных с мультимедиа. Сюда входит программирование игр на платформах Microsoft, таких как Windows и Xbox. Чтобы представить некоторый контекст, давайте кратко поговорим об API.

По теме:  По словам генерального директора STMicro, глобальная нехватка микросхем продлится до первой половины 2023 года

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

Каковы различия между DirectX 11 и DirectX 12?

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

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

По теме:  NVIDIA перестанет поддерживать старые видеокарты

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

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

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

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

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

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

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

Это значительно снижает нагрузку на ЦП, характерную для DirectX 11, и повышает производительность. Итак, как выглядит эта разница? Что ж, по данным Microsoft, DirectX 12 снижает нагрузку на процессор до 50 процентов и повышает производительность графического процессора на целых 20 процентов. Хотя это существенные улучшения, это не означает, что вы увидите те же результаты.

Почему переход с DirectX 11 на DirectX 12 не так прост

DirectX 11 был впервые выпущен для Windows Vista 27 октября 2009 года. Таким образом, с выходом DirectX 12 в 2015 году между DirectX 11 и DirectX 12 образовался шестилетний разрыв. За это время с использованием DirectX 11 были разработаны тысячи игр. К сожалению, перейти с DirectX 11 на DirectX 12 непросто.

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

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

DX 11 против DX 12: что выбрать?

Ответ зависит от нескольких вещей, например, какую игру вы пытаетесь запустить. Например, Guild Wars 2 работает на DirectX 11. Даже если ваша ОС и оборудование могут использовать DirectX 12, у вас не будет возможности выбрать DirectX 11 в Guild Wars 2, поскольку игра его не поддерживает. Это полностью решение разработчика ArenaNet.

Хотите верьте, хотите нет, но ArenaNet потребовалось девять лет, чтобы перейти с DirectX 9 на DirectX 11. Однако некоторые игры поддерживают как DirectX 11, так и DirectX 12, включая Fortnite (читайте нашу шпаргалку по Fortnite), Battlefield 5, Shadow of «Расхитительница гробниц» и многое другое. Пользователи могут переключаться между DirectX 11 и DirectX 12 в настройках игры.

Тот факт, что некоторые игры поддерживают как DirectX 11, так и DirectX 12, вероятно, заставил вас задуматься о производительности в игре. Обеспечивает ли выбор DX 11 или DX 12 лучшую производительность в игре? Следующее видео иллюстрирует различия между DirectX 11 и DirectX 12 в ряде игр, демонстрируя такие важные характеристики, как среднее число кадров в секунду, загрузка ЦП, загрузка графического процессора и т. д. с использованием AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti и 16 ГБ оперативной памяти DDR4.

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

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

Является ли DirectX 12 правильным выбором для вас?

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