Личный кабинет        19.04.2022   

Что лучше директ 11 12. DX11 и DX12: а есть ли между ними разница? ⇡ Совместимость, выводы

Новая версия 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, что автоматически дает последнему преимущество в производительности. В этом вопросе рано делать предположения, пока не появились первые результаты публично доступных бенчмарков.

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К, которое мы надеемся, закрепится в мире ПК в ближайшие несколько лет.

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

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

Качество

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

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


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

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% игр, релиз которых состоится в конце этого года, уже заявили о его поддержке. А что будет на самом деле, узнаем в ближайшие месяцы, оставайтесь на связи!

Юрген Катсман (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 требует больших трудозатрат, а пользователям не стоит рассчитывать на существенный рост производительности.