DirectX 12 вышел еще 29 июля 2015 года вместе с Windows 10, при этом по заявлениям Microsoft данный API разрабатывался около 5 лет. Новый API сильно отличается от DirectX 11, и позволяет практически равномерно распределять нагрузку процессора по всем ядрам, а не держать почти все дроуколы на одном ядре. Сам по себе API — это программная прослойка между железом компьютера и операционной системой, на которой вы запускаете игры и различные программы. DirectX 12 имеет низкоуровневый доступ, что дает возможность получить полный доступ к аппаратным ресурсам. Что-то похожее уже давно имеется на консолях.

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

Хотя и нужно отметить, что с каждым годом эти показатели все лучше и лучше. Тот же недавний Battlefield 5 показывает местами прирост производительности до 70 кадров, правда такие отличия вы найдете, если не будет упора в видеокарту. Видно, что спустя время допилили как саму поддержку DX12 так и сам движок Frostbite, и кто чтобы что про него не говорил и не снимал 50-минутные разоблачающие видео, но он показывает до сих пор выдающиеся результаты. Оптимизация идет процессорной нагрузки, что и обещала Microsoft. Похожая ситуация и с другими играми.

Когда только презентовали DX12, а это было в 2014 году, то нам рассказывали просто невероятные вещи, а именно то, что приложения, которые будут использовать DX12, смогут в 2-3 раза быстрее работать, нежели приложения с DX11. С выходом Windows 10 вышел и новый API DX12, который можно было протестировать в бенчмарке 3D Mark и производительность была двукратная, в два раза больше вызовов отрисовки по сравнению с DX11, даже на картах лишь с программной поддержкой. Многие начали думать, что теперь их старенькие 2-х ядерными монстры просто смогут вывозить новенькие игры, даже оптимизацию карты до 30% обещали завести, но что-то не срослось. Уже прошло больше 3-х лет, а игр с поддержкой DX12 довольно-таки мало, ну по сравнению с DX11 это уж точно. С каждым годом эта поддержка увеличивается, но не настолько сильно, как это бы хотелось. Сейчас мы коснемся этой темы, а также затронем и другие.

Если вы помните, то DX11 вышел в 2009 году, а активно данный API начали использовать примерно в 2015 году, когда практически все игры начали выходить с нативной поддержкой DirectX 11, а не с двумя API DX9 и DX11, как это было долгое время. А DirectX 9 до сих пор иногда используется, хотя данному API уже больше 17 лет, но не суть, мы говорим про новые крупные проекты. Чтобы выпускать все игры с поддержкой DX12 нужно, чтобы большинство пользователей перешли на видеокарты с DX12, а на это понадобиться минимум еще года 3, а в лучшем случае лет 5. Хотя и нужно отметить, что старые карты поддерживают DX12, но они его поддерживают лишь программно и лишь некоторые библиотеки, а значит для полноценной поддержки понадобиться видеокарта с полноценной аппаратной поддержкой DX12.

Во-вторых, полностью на DX12 мы перейдем, когда прекратится поддержка также и оригинального Xbox One, который на рынке уже больше 5 лет и оборудование там мягко говоря устарело и также там имеется только программная, т.е. неполноценная поддержка DX12, а значит пока будут разрабатываться игры под оригинальный Xbox One, то ждать DX12 в массы не стоит, а его списывание произойдет примерно через года 2-3, тем более что на его замену уже вышел Xbox One X с аппаратной поддержкой DX12. Поэтому нужно минимум дождаться окончания поддержки оригинального Xbox One, а это наверно произойдет не скоро.

Еще стоит отметить, что API DirectX 12 обновляется каждый год. К примеру, вы знали, что данный API поддерживает унифицированную шейдерную модель 6-й версии? Не знали? Так вот, поддержка есть, но на уровне драйверов их до сих пор нет, хотя она появилось примерно 2 года назад в юбилейном обновлении Windows 10. Также в DirectX интегрирован физический движок Havok, да, Microsoft его довольно давно выкупила и при разработке игр на DX12 разработчики могут бесплатно его использовать. Данный компонент имеет название Direct Physics.

Разработчики жаловались, что очень сложно заставить карты разных производителей работать вместе. И тут же Microsoft выпустила упрощенный инструментарий для внедрения данной поддержки, из-за чего естественно будет теряться производительность, но это так никто и не реализовал, хотя и стоит отметить, что была и серьезная реализация с использованием разных карт, к примеру, в игре Ashes of the Singularity.

И вот совсем недавно вышло обновление для Windows 10 под названием October 2018 Update и помимо обновления системы произошло обновление API DirectX 12, в котором появилась поддержка на уровне API технологии трассировки лучей – DirectX Ray Tracing (DXR). Многие ошибочно полагают, что это технология NVIDIA, но нет. NVIDIA лишь дает аппаратное ускорение для трассировки, вот и все. Microsoft просто стандартизировала Рей Трэйсинг, так как по факту этой технологии уже не один десяток лет. По идее, уже должен был выйти API DirectX 13, но майки просто обновляют имеющийся DirectX, что также не очень хорошо, так как постоянно его стандарт меняется. Кстати, на консолях нового поколения AMD обещает также запилить аналогичные RT-ядра для аппаратного ускорения, но изменения от этой технологии будут не большие, как и сейчас при Рей Трейсинге, но они будут.

Если говорить про 2019 год, то DirectX 12 снова обновится, неожиданно, правда? Привыкайте, что каждый год будет обновляться данный API, при этом некоторые изменения требуются на аппаратном уровне железа. С весенним обновлением 19H1 ожидается, что Microsoft внедрит новый компонент в DirectX под названием DirectML. Данный компонент, думаю понятно из названия, будет отвечать за машинное обучение и искусственный интеллект. Для его работы потребуются тензорные RT-ядра, хотя скорее всего и обычные CUDA-ядра сгодятся, просто вычисления будут гораздо медленнее идти. Но, с другой стороны, в том же 5-й Battlefield если нет поддержки трассировки на аппаратном уровне, то и меню выбора DXR также нет, это нужно учитывать. Ну так вот, благодаря DirectML вы сможете выполнять различные профессиональные задачи, по сути, на дому, если вы занимаетесь изучением нейронных сетей, к примеру. Также немаловажным событием стоить отметить и гейминг.

На закрытой демонстрации показывали многократное повышение разрешения с FullHD до 4K при помощи машинного обучения, при этом от увеличения разрешения нагрузка на карту не росла, по крайней мере разработчики из Microsoft так говорят. Из той презентации единственное что есть, это демонстрация этого масштабирования при помощи того самого машинного обучения. Как видите, отличия есть, но при этом практически никакой дополнительной нагрузки на карту нет, кроме наверно вышеупомянутых тензорных ядер, вот до чего техника дошла.

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

В общем, полноценно DX12 еще появится не скоро, но может быть я ошибаюсь. Уже даже есть неплохие примеры. К примеру, тот же Battlefield 5 при использовании DX12 имеет прирост в 30 кадров в секунду, а в некоторых моментах и 70 кадров, как я и отмечал ранее, правда, при этом настройки графики средне-низкие. Также не нужно забывать и про альтернативу, например API Vulkan, судьба которого еще не известна. У Microsoft есть ресурсы на поддержание DX12, есть игры и монополия в ПК-сегменте. Даже если игры разрабатываются параллельно, то упор идет на DX, если мы говорим платформы Microsoft – Xbox и PC. AMD очень активно занимается продвижением Вулкана, правда с их картами серии RX задача намного усложняется и скорее всего все закончится печально как и с Mantle, но кто знает, может я опять ошибаюсь. Vulkan – очень перспективный API, одна его кроссплатформенность чего стоит, но если посмотреть на игры с поддержкой Vulkan, то как-то все не очень радужно. Многие заявляют, что они будут поддерживать Вулкан, но по факту этого нет, но при этом скромная, но доминация DX12 присутствует, хотя многие разработчики говорят, что разрабатывать игры под DX12 довольно сложная затея.

3D-программист из Ubisoft Тьяго Родригез рассказывал на мероприятии GDC 2017, что пока добиться производительности уровня DX11 с применением API DX12 очень сложно, не говоря уже про увеличение этой самой производительности. Хотя, глядя на текущие игры Ubisoft не особо понимаешь, о какой производительности там идет речь. Но тем не менее, программист похвалил новый API за счет Async Compute, они же асинхронные шейдеры.

Nixxes Software, которые занимаются портированием ПК-игр Square Enix заявляет, что из-за DX12 требуется больше усилий, но оно того стоит.

Разработчики из The Coalition, которые занимаются игровой серией Gears of War заявляют, что благодаря переходу на DX12 в Xbox One удалось освободить некоторые ресурсы, а также появились ресурсы для поддержки HDR и масштабирования до 4K.

Кстати, если кому интересно, то первой игрой с поддержкой API DX12 считается игра Star Wars Battlefront 2015 года для Xbox One. Изменений там видно было не много, так как игра работала в 720p + в основном там была программная поддержка.

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

В принципе, можно через эмулятор DirectX попробовать запустить игру на DX11-12 на карте с DX9-10, но многих текстур и эффектов вы не будете наблюдать. Кстати, интересная программа, надо бы как-то про нее написать статью. Поэтому те, кто говорят, что на старых картах нельзя запустить новые игры – в принципе можно, но многих шейдеров, текстур, теней и частиц вы просто не увидите, а может и вообще не запустится. Хоть Microsoft и говорила, что старые карты будут поддерживать DX12, но по факту только Microsoft в своих релизах делает такую поддержку, сторонние разработчики требуют нативную поддержку DX12. Не зря же Microsoft представила 3 варианта поддержки DX12 – с ума сойти.

Если коснуться конкретнее уровней поддержки DirectX 12, то DirectX 12 API – данный уровень поддерживается всеми видеокартами как с нативной поддержкой DX11, так и с DX12. Суть его заключается в основном в равномерном и более продуктивном использовании ядер процессора.

DirectX 12_0 – данную версию API поддерживают все современные видеокарты NVIDIA и AMD. Суть ее заключается в использовании тайловых текстур, которые позволяет хранить текстуру не целиком, а лишь ее часть, после чего, ее можно будет многократно продублировать на экране. Благодаря этому размер самой текстуры уменьшается в разы, но при этом скорость рендеринга очень сильно увеличивается.

DirectX 12_1 – данную версию поддерживает пока что только видеокарты NVIDIA начиная с Maxwell 2-го поколения. Здесь главное новшество – использование консервативной растеризации, которая используется в технологии динамического суперразрешения. Естественно, я здесь все сказал, обобщенно. Но идея заключается в том, что только GPU и их архитектуры, разработанные под DirectX 12 смогут использовать все его возможности по максимуму, думаю теперь это стало ясно.

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

Корпорация Microsoft опубликовала короткий промо-ролик DirectX 12, перечислив, судя по всему, все игры, на данный момент поддерживающие новый API: Deus Ex: Mankind Divided, Forza Motorsport 6, Quantum Break, Ashes of the Singularity, Just Cause 3, Gears of War: Ultimate Edition, Fable Legends и King of Wushu, о которой вы наверняка ничего не слышали.

Обратите внимание: в ролике, кажется, впервые показывается разница между DirectX 11 и DirectX 12 на примере реальной игры (Deus Ex: Mankind Divided).

Странно, что в список не попала Rise of the Tomb Raider — на этой неделе публике уже продемонстрировали версию игры с поддержкой DirectX 12.

Доктор Сон07.11.2019
Кома14.11.2019
Ангелы Чарли14.11.2019
Ford против Ferrari14.11.2019
Холодное сердце 228.11.2019
Джуманджи: Новый уровень12.12.2019
Звездные войны: Скайуокер. Восход19.12.2019
The Outer Worlds25.10.2019
Call of Duty: Modern Warfare25.10.2019
MediEvil25.10.2019
Luigi’s Mansion 331.10.2019
Just Dance 202005.11.2019
Death Stranding08.11.2019
Star Wars Jedi: Fallen Order15.11.2019

Таблица игр с поддержкой DirectX 12

Игры с поддержкой DirectX 12

Название

Дата Релиза

Разработчик

Издатель

Жанр

Примечание

Gears of War: Ultimate Edition

25 августа 2015

Поддержка добавлена 1 марта 2016 года

Caffeine

Поддержка добавлена 5 октября 2015

Star Wars Battlefront

First-person shooter, third-person shooter

Поддержка добавлена 17 ноября 2015

Rise of the Tomb Raider

Поддержка добавлена 11 марта 2016

Hitman

Поддержка добавлена 11 марта 2016

Tom Clancy’s The DivisionMassive EntertaimentUbisoftThird-person shooterПоддержка добавлена 14 декабря 2016

Ashes of the Singularity

Поддержка добавлена 29 июля 2015

Quantum Break

Action-adventure, third-person shooter

Поддержка добавлена 5 апреля 2016

Total War: Warhammer

Turn-based strategy, real-time tactics

Поддержка добавлена 29 июля 2016

Deus Ex: Mankind Divided

23 августа 2016

Action role-playing, first-person shooter, stealth

Поддержка добавлена 8 сентября 2016

Halo 5: Forge

7 сентября 2016

Поддержка добавлена 7 сентября 2016

Forza Motorsport 6: Apex

7 сентября 2016

Turn 10 Studios

Поддержка добавлена 5 мая 2016

Forza Horizon 3

27 сентября 2016

Поддержка добавлена с релиза

Gears of War 4

11 октября 2016

Поддержка добавлена с релиза

Civilization VI

21 октября 2016

Turn-based strategy, 4X

Поддержка добавлена 17 ноября 2016

Battlefield 1

21 октября 2016

Поддержка добавлена с релиза

Sniper Elite 4

14 февраля 2017

Tactical shooter, Stealth

Поддержка добавлена с релиза

Halo Wars 2

21 февраля 2017

343 Industries
Creative Assembly

Поддержка добавлена с релиза

The Turing Test

30 августа 2016

Поддержка добавлена с релиза

Ark: Survival Evolved

Star Citizen

Cloud Imperium Games

Cloud Imperium Games

Space trading and combat, first-person shooter