Какие игры поддерживают directx 12
Microsoft анонсировала DirectX 12 в 2014 году, но никакой информации по совместимости тогда не предоставила. На момент анонса новой версии DirectX, последней версией Windows была Windows 8. Релиз Windows 10 состоялся только в 2015 году.
Изначально предполагалось, что Microsoft искусственно ограничит поддержку DirectX 12 и реализует ее только в Windows 8 и последующей версии Windows (тогда считалось, что это будет Windows 9).
В конце 2014 года Microsoft объявила, что Windows 10 действительно будет поставляться с поддержкой DirectX 12. Появились мнения, что новая версия DirectX не будет доступна для более ранних версий Windows. Эта информация была официально подтверждена на портале поддержки Microsoft. Для систем Windows 7 были доступны только DirectX 11.0 и 11.1, а для Windows 8.1 – DirectX 11.1 и 11.2.
Четыре года спустя, в начале 2019 года Microsoft неожиданно объявила о своих планах добавить поддержку DirectX 12 для ряда игр в Windows 7. Разработчики игр попросили Редмонд интегрировать DirectX 12 в Windows 7, чтобы воспользоваться дополнительными возможностями и снизить издержки на разработку.
Microsoft решила пойти навстречу разработчикам и приступила к портированию среды выполнения Direct3D 12 в Windows 7. Компания Blizzard, разработчик World of Warcraft и других популярных проектов, первой добавила поддержку DirectX 12 для своих игр в Windows 7. Игроки World of Warcraft получили возможность наслаждаться более высокой частотой кадров и другими улучшениями, связанными с использованием DirectX 12.
Первоначально возможности переноса игр DirectX 12 на устройства с Windows 7 были ограничены. Microsoft работала лишь с несколькими игровыми студиями, из которых в официальных анонсах упоминалась только Blizzard.
В августе 2019 года Microsoft выпустила новое руководство по разработке, чтобы позволить разработчикам запускать свои DirectX 12 игры в Windows 7.
Чтобы помочь создателям игр, мы публикуем следующие ресурсы, позволяющие разработчикам запускать свои игровые проекты DirectX 12 в Windows 7.
Чтобы подготовить свои игры DirectX 12 к запуску в Windows 7, разработчики могут ознакомиться с руководством «Porting D3D12 games to Windows 7». Данный материал разбит на несколько глав. В начале руководства приводится информация по файлам и драйверам, которые требуются для настройки среды разработки и тестовых машин. В других главах рассказывается, как настроить DirectX 12 игры для ПК Windows 7, приводятся советы по оптимизации и рекомендации по подготовке релиза.
Никогда не поздно?
Самый главный вопрос, который сразу же назревает: «Почему именно сейчас?». В январе 2020 года Windows 7 достигнет окончания срока поддержки и перестанет получать какие-либо обновления. Хотя компании могут на платной основе продлить поддержку до трех лет, они не являются основной целевой аудиторией игровых проектов.
С другой стороны, системы Windows 7 мгновенно не исчезнут в январе 2020 года. По аналогии с Windows XP, могут пройти годы, прежде чем рыночная доля операционной системы упадет ниже 10 процентов. Поэтому разработчики игр могут продолжать поддерживать Windows 7 даже после официального прекращения поддержки системы.
В любом случае, время для данного нововведения выбрано не самое удачное. Понятно, что изначально Microsoft хотела мотивировать геймеров переходить на Windows 10, сделав поддержку DirectX 12 эксклюзивной в своей новой ОС. Напомним, что прошлая аналогичная попытка в случае с Windows Vista и DirectX 10 Vista не сработала. Геймеры и разработчики игр преимущественно проигнорировали DirectX 10.
Уже 29 числа, с выходом Windows 10, станет доступна новая версия DirectX, которая обещает увеличить производительность в играх и не только. В отличие от DirectX 11, вам не потребуется покупать новую видеокарту, и это не может не радовать. DirectX 12 обещает работу на многих устройствах: на смартфонах, планшетах, ноутбуках, персональных компьютерах и Xbox One. Для последнего сама Microsoft предрекает увеличение производительности, даже по сравнению с PS4.
Что такое DirectX?
«DirectX (от англ. direct — прямой, непосредственный) — это набор API, разработанных для решения задач, связанных с программированием под Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Windows бесплатно доступен на сайте Microsoft. Зачастую обновленные версии DirectX поставляются вместе с игровыми приложениями.» (с) Wikipedia
Нововведения в DirectX 12
Низкоуровневый доступ
Поскольку ранее DirectX завоевывал рынок, Microsoft была нацелена на универсальность программного обеспечения и не давала разработчикам прямого доступа к низкоуровневым функциям видеокарты. Но теперь, благодаря новым процедурам вызова, доступ к ним открыт. Но если разработчики не используют новшества, то драйверы смогут автоматически оптимизировать их использование для решения стандартных задач.
Многопоточная оптимизация и разгрузка CPU
В марте 2014 года свет увидела большая (на то время) порция информации о новой версии API. Главной темой была оптимизация использования CPU, и в качестве примера были показаны результаты теста скорости вывода кадра в бенчмарке 3DMark. На скриншоте ниже можно увидеть сокращение скорости отображеня кадра в два (!) раза из-за оптимизации использования лишь CPU и более «умного» распределения ресурсов по ядрам.
Также оптимизирована работа процессоров, имеющих более четырех ядер. Если раньше не имело смысла переплачивать за лишние ядра, если процессор покупался для игр, то теперь все поменялось.
Использование нескольких GPU
Настал праздник для геймеров, имеющих встроенное видео ядро в своих процессорах, но не слишком мощную дискретную видеокарту. DirectX 12 позволит работать одновременно не только видеокартам с технологиями SLI или CrossFire, но и связкам «дискретная + интегрированная».
Но и для владельцев известных связок есть приятная новость. Видеокарты работают одновременно, а не поочередности, а видеопамять ваших видеокарт суммируется. Теперь multi GPU системы имеют раздельный буфер, где доступна вся память видеоадаптера, а не общий, как раньше.
DirectX 12 и встраиваемые low-end GPU
Улучшение производительности, как и сам DirectX 12, будет доступно не только на суперсовременных игровых станциях, но и для относительно слабых встраиваемых решений. По тестам, проведенным на Surface Pro 3 с процессором Core i5, имеющим встроенное видео ядро Intel HD Graphics 4400, производительность увеличилась на 50%. Все благодаря более рациональному использованию GPU.
Использование всего потенциала eSRAM (только Xbox One)
eSRAM – особая высокоскоростная память, используемая в GPU Xbox One. Ранее использовалось специальное API для управления, но сейчас, с выходом DirectX 12, всем управляет одно API – DirectX. Данное улучшение обещает увеличение быстродействия памяти и более рациональное ее использование. Вероятно это поможет сократить, а может и вовсе избавиться, от отставания от PS4.
Обратная совместимость с DirectX 11 видеокартами
Большинство современных видеокарт, которые поддерживают DirectX 11, полностью совместимы с DirectX 12. Но, к сожалению, далеко не все смогут использовать все нововведения в новом API.
- Windows 10;
- Видеокарта, совместимая с DirectX 12 API;
- Видео драйвер, поддерживающий DirectX 12 API;
Моя видеокарта поддерживает DirectX 12?
Список видеокарт с поддержкой DirectX 12 API:
*В этом списке предоставлены видеокарты, поддерживающие DirectX 12 API, но далеко не все из них поддерживают DirectX 12_0 и DirectX 12_1.
- AMD Radeon™ R9 285, 290/290X, 295X2, M295X
- AMD Radeon™ R7 260/260X
- AMD Radeon™ HD 8770
- AMD Radeon™ HD 7790
- GeForce, GTX Titan X
- GTX 980, GTX 980Ti
- GTX 970
- GTX 960
- GeForce, GTX Titan X
- GTX 980, GTX 980Ti
- GTX 970
- GTX 960
DirectX 12_0
Только GPU или архитектуры, специально разработанные для поддержки DirectX 12, будут поддерживать уровень функций DirectX 12_0, который содержит ряд новых технологий. Среди них – тайловые ресурсы Tiled Resources. В принципе, тайловые ресурсы известны ещё по DirectX 11, они отличаются высокой эффективностью по используемой памяти, а также могут значительно улучшить уровень детализации. С помощью мелких текстур в многократных ориентациях можно симулировать крупные текстуры. Кроме того, существенно экономится память. А качество картинки приносить в жертву не придётся.
В примере приводится классическая текстура Texture 3D под DirectX 11 с разрешением 1.200 x 600 x 600 пикселей с 32-битным цветом – она занимает 1,6 Гбайт. С тем же качеством можно использовать тайловую текстуру Tiled Texture 3D через многократные повторения – она будет иметь разрешение 32 x 32 x 16 пикселей с 32-битным цветом. Размер при этом будет составлять 156 Мбайт. В одном из примеров приведена сцена рендеринга, в которой тайловая 3D-текстура используется 2.500 раз. Для создания и симуляции некоторых материалов в 3D добавляется ещё одно информационное поле. Им может быть, например, значение прозрачности или вязкости. Такой подход позволяет лучше симулировать жидкости и газы.
Ещё один тип тайловых ресрусов – объёмные тайловые ресурсы (Volume Tiles Resources), однако они относятся к уровню функций уже не DirectX 12_0, а 12_1.
К уровню DirectX 12_0 относится Typed UAV и новая модель Bind, которые ориентируют API на большее число ядер CPU, что обеспечивает более широкую параллелизацию и производительность.
DirectX 12_1
Ещё на шаг дальше Microsoft и разработчики GPU пошли с DirectX 12_1. Но данный урвоень функций поддерживают только самые новейшие GPU. К ним относятся все GPU на основе 2-го поколения "Mawell". Одна из новых технологий – консервативная растеризация (Conservative Rasterization). Она используется для фильтра динамического суперразрешения (Dynamic Super Resolution) и сглаживания Multiframe Sampled Anti-Aliasing.
При растеризации небольшого объекта/пикселя в некоторых случаях лучше учитывать все покрытые точки семплирования, пусть даже частично. Также консервативная растеризация важна при вокселизации VXGI. Улучшенная методика наиболее заметна и при расчете теней.
Видео демонстрации DirectX 12:
Заключение
Все выглядит очень многообещающе. Для AMD в частности. AMD славится своими шести и восьми-ядерными процессорами – улучшена поддержка многоядерных процессоров. AMD имеет процессоры с хорошими графическими ядрами (APU) – мощности встроенной и дискеретной графики суммируются. Улучшена поддержка высоких разрешений, в которых даже не самые новые видеокарты от AMD и так хорошо себя чувствуют. Графика от Nvidia или Intel тоже не останется в дураках, все получат прирост производительности. Но на самом деле, больше от этого выиграем мы – игроки.
Остается надеяться, что игры с ужасной оптимизацией будут выходить реже, чем сейчас, а железо не придется апгрейдить так часто. Мечты-мечты :)
//Статья не является копипастой. Вся собранная тут информация была получена из общедоступных источников, обработана и описана в этой статье. Весь заимствованный контент имеет под собой ссылку на первоисточник.
В марте текущего года в рамках ежегодной конференции разработчиков игр GDC 2014 (Game Developer Conference) компания Microsoft анонсировала API нового поколения — DirectX 12. С момента запуска предыдущей версии API прошло почти 5 лет (напомним, DirectX 11 увидел свет аж в июле 2009 года), и, даже несмотря на то, что программный интерфейс Microsoft получил несколько обновлений, его позиции заметно пошатнулись. Влияние API OpenGL, напротив, стало более существенным. А компания AMD даже запустила свой собственный низкоуровневый программный интерфейс Mantle. «Тишина» из стана Microsoft дала почву для не самых лучших прогнозов относительно дальнейшего развития DirectX, однако весенний анонс двенадцатой версии API расставил все точки над «ё». Microsoft снова в игре.
Одной из первых компьютерных игр с поддержкой DirectX 12 стала демо-версия Forza Motorsport 5
О нелегкой судьбе Microsoft
Последние несколько лет стали не самыми удачными для Microsoft. Пользователи с прохладой встретили новую операционную систему Windows 8, не с лучшей стороны проявила себя и мобильная платформа Surface. Вдобавок ко всему, компания подпортила себе репутацию всем известным лейблом Games for Windows и сервисом LIVE. DirectX 11 едва ли не пошел по стопам других неудачных проектов Microsoft последних лет: разработчики не спешили переводить игры «на рельсы» нового API, и большинство развлекательных программ поддерживали его только опционально. А та же Valve и вовсе в открытую склонялась к OpenGL. В общем, американской компании пришлось нелегко на всех фронтах — и не только в игровой сфере.
Платформа Microsoft Surface не снискала особого успеха
Как уже говорилось выше, с момента выпуска DirectX 11 до анонса двенадцатой итерации API прошло почти 5 лет. Microsoft еще никогда так не затягивала с выпуском нового поколения программного интерфейса. Ходит множество слухов относительно такой политики, но, скорее всего, основная причина этого кроется в долгом жизненном цикле игровой консоли Xbox 360. В компании были попросту не заинтересованы в развитии нового API для уходящей в прошлое приставки. DirectX 12 разрабатывается уже с прицелом на ее преемницу — Xbox One, которая была выпущена лишь в ноябре прошлого года, а в России, кстати, официально не представлена до сих пор. Но не консолью единой: DirectX 12 будет поддерживаться целой гаммой устройств, начиная от смартфонов и планшетов и заканчивая десктопами.
Официальные продажи Xbox One в России стартуют 26 сентября
Что же нового принесет нам двенадцатая версия «директирисы»? Главным отличием нового API от всех его предшественников стало снижение уровня абстрагирования оборудования. DirectX 12 предоставит иную модель программирования. Как говорят в Microsoft, «приближенную к железу» («closer to the metal»). Используя такую модель, разработчики получат более широкий доступ к различным возможностям графического чипа. Кроме этого, DirectX 12 теперь поддерживает объекты состояния конвейера (PSO, pipeline-state object) и таблицы дескрипторов. Наконец, API получил новые возможности для конвейера рендеринга, которые значительно увеличивают производительность в таких алгоритмах, как определение коллизий, расчет прозрачности или геометрическая отбраковка. А теперь давайте подробнее остановимся на каждом изменении.
CD Projekt: DirectX 12 не повысит производительность Xbox One
Объекты состояния конвейера
Одним из недостатков Direct3D 11 была так называемая проблема вызовов отрисовки (draw call). С ней благополучно справились программисты AMD при разработке API Mantle. Похожим образом эта проблема была решена и в Direct3D 12. Для этого потребовалась значительная переработка графического конвейера. Однако для начала нужно объяснить, как же происходит рендеринг картинки в Direct3D 11 и в чем конкретно заключается недостаток вызовов отрисовки.
Схема рендеринга в Direct3D 11
Для описания любого объекта на экране Direct3D 11 использует состояния конвейера: это и состояние входного ассемблера (input assembler state), и состояние пиксельного шейдера (pixel shader state), а также состояния растеризатора (rasterizer state) и выходного смесителя (output merger state). Все они могут изменяться независимо друг от друга. Такая архитектура представляет собой удобную и относительно высокоуровневую реализацию графического конвейера. Однако в силу того, что между этими состояниями существуют различного рода зависимости, такое представление графического конвейера не совсем подходит для современного «железа». Объясним почему. Важно понимать, что стадии конвейера выполняются не последовательно, а в какой-то степени параллельно. К примеру, многие GPU обрабатывают состояния пиксельных шейдеров и выходного смесителя в одном аппаратном блоке. Всякий раз от рантайм-компонента DirectX требуется определить состояние конвейера (совокупность состояний каждой стадии) и ресурсов (вершин, текстур и так далее), над которыми будут производиться операции. Как только все данные известны, производится вызов отрисовки. Иными словами, draw call вызывает рендеринг объекта. Все эти операции выполняются силами центрального процессора. И когда объектов на экране становится много, скорости CPU не хватает для их обработки, и максимальное количество вызовов отрисовки на кадр уменьшается. В этом и заключается смысл проблемы draw calls.
Схема рендеринга в Direct3D 12
В Direct3D 12 большая часть состояний объединена в неизменяемый объект состояния конвейера (PSO). Это позволяет драйверу, не дожидаясь вызова отрисовки, конвертировать этот объект в аппаратные инструкции, необходимые для последующей работы GPU. Тут же стоит отметить, что система может динамически менять используемый объект PSO. После этого в аппаратные регистры копируется лишь небольшой объем рассчитанных состояний, тогда как в Direct3D 11 аппаратное состояние определялось «на ходу». В итоге такой подход ликвидирует то «бутылочное горлышко», коим являлся центральный процессор, и обеспечивает большее количество вызовов отрисовки на каждый кадр.
Списки команд и пакеты
В Direct3D 12 также появилась новая модель управления нагрузкой GPU, включающая в себя списки команд и пакеты. В Direct3D 11 все задания GPU отправлялись через непосредственный контекст (immediate context), который представляет собой единый поток команд. А для того чтобы обеспечить многопоточность, в играх также используются отложенные контексты, которые тем не менее не совсем подходят под архитектуру нынешних процессоров.
Модель отправки заданий в Direct3D 12 базируется на списках команд, который содержат все данные, необходимые для работы GPU. В каждом списке команд указывается, какой объект PSO нужно использовать, какие текстуры и буферные данные необходимы. Также в списке находятся аргументы для всех вызовов отрисовки. Список команд сам по себе автономный и не имеет состояния, поэтому драйвер может заранее рассчитать все необходимые для GPU команды. В конце все списки сериализуются и отправляются в GPU посредством очереди команд.
Схематичное представление очереди команд
Кроме списков команд, в Direct3D 12 появилась поддержка пакетов. Пакеты представляют собой наборы команд, которые могут быть использованы несколько раз с различными исходными данными. Пакеты, к примеру, будут использоваться в том случае, если на экране нужно нарисовать два и более одинаковых объекта с разными текстурами. При этом драйвер готовит инструкции для GPU лишь один раз.
Таблицы и наборы дескрипторов
Привязка ресурсов в Direct3D 11 довольно удобна и при этом обладает довольно высоким уровнем абстрагирования. Тем не менее принцип ее работы также не позволяет «на полную катушку» использовать возможности нынешнего «железа». При использовании Direct3D 11 в играх создаются специальные объекты представления, а затем эти представления привязываются к определенным «слотам» различных этапов шейдера в конвейере. Шейдеры, в свою очередь, считывают информацию из этих слотов, которые фиксируются в момент отрисовки. Основной недостаток такой модели заключается в том, что, когда в игре требуется отрисовка с использованием иных ресурсов, необходимо выполнить повторную привязку и только после этого делать draw call. Как вы понимаете, этот процесс очень трудоемкий. Поэтому в Direct3D 12 он был переработан с учетом возможностей новых процессоров и видеокарт.
Схематичное изображение дескриптора
В двенадцатой версии API на смену явной привязке к слотам пришла модель, использующая набор дескрипторов (descriptor heap), в которые игра записывает свои представления ресурсов. Такой подход позволяет графическому процессору напрямую записывать аппаратное описание ресурса в память. Для определения того, какие именно ресурсы будет использовать конвейер для конкретного вызова отрисовки, в играх указываются одна или несколько таблиц дескрипторов, которые представляют собой подмассивы полного набора дескрипторов. И поскольку набор дескрипторов состоит из специфичных, понятных «железу» данных, то смена таблиц осуществляется намного быстрее, нежели процесс повторной привязки в Direct3D 11.
Схематичное изображение набора дескрипторов
В дополнение к таблицам и наборам дескрипторов Direct3D 12 поддерживает динамическую индексацию в шейдерах, что обеспечивает высокую гибкость и позволяет использовать новые технологии рендеринга. Например, современные движки рендеринга, использующие отложенный подход (deferred rendering engines), обычно кодируют идентификатор объекта или материал в предварительный g-буфер. В Direct3D 11 при использовании большого количества материалов значительно замедлялась заключительная стадия рендеринга. Динамическая индексация решает именно эту проблему. При использовании Direct3D 12 сцена с одной тысячей материалов финализируется так же быстро, как и сцена с десятью материалами.
Практическая часть
Как говорят сами разработчики: «для нас, пользователей, основным преимуществом DirectX 12 станет увеличенная эффективность API, а следовательно, и скорость работы.» Свои слова программисты Microsoft подтвердили на деле. Во время конференции GDC производительность двенадцатой версии DirectX была оценена с помощью известного бенчмарка 3DMark. Пакет работает сейчас только с DirectX 11, но для тестирования он был специально портирован на DirectX 12. Одиннадцатая итерация API активно использует многопоточность, однако в силу особенностей работы, связанных с драйверами и рантаймом, ядра и потоки графического процессора время от времени простаивают. Это наглядно отображено на графиках, приведенных чуть ниже. При использовании DirectX 12 ситуация меняется в лучшую сторону. Примерно на 50% улучшается эффективность использования CPU, а также обеспечивается более эффективное распараллеливание работы между потоками.
Результаты тестирования в режимах DirectX 11 (сверху) и DirectX 12 (снизу). Новый API эффективнее использует ресурсы CPU. В качестве тестового стенда использовалась система GIGABYTE BRIX Pro (Intel Core i7-4770R + Iris Pro Graphics 5200)
Режим Direct3D 11
Режим Direct3D 12
Во время презентации DirectX 12 разработчики Microsoft упомянули и об автомобильном симуляторе Forza Motorsport 5, который является эксклюзивом для платформы Xbox One. Они отметили, что игра использует все возможности приставки «на полную катушку», а все благодаря низкоуровневому API, доступному для Xbox One. И если раньше такую эффективность можно было достичь только на консолях, то теперь она доступна также на смартфонах и настольных компьютерах — конечно же, благодаря DirectX 12. Это было продемонстрировано на примере вышеупомянутой игры Forza Motorsport 5, которая была портирована на PC в качестве технической демо-версии. К слову, разработчики автосимулятора, компания Turn 10 Studios, уже пытались портировать игру на PC с помощью DirectX 11, однако так и не смогли добиться приемлемого фреймрейта посредством этой версии API.
Помимо высокой производительности, DirectX 12 может похвастаться впечатляющей энергоэффективностью. По данным Microsoft, двенадцатая генерация API потребляет в среднем на 50% меньше энергии, чем ее предшественница. И это наглядно показало проведенное во время конференции SIGGRAPH 2014 тестирование платформы Surface Pro 3, оснащенной графическим процессором Intel HD4400.
Специально для тестов программисты Intel написали демо-приложение Asteroids. В Asteroids на экране одновременно отрисовываются 50 тысяч уникальных астероидов, каждый из которых имеет свою комбинацию вершин, текстур и констант. Приложение запускалось в двух режимах: DirectX 11 и DirectX 12. В первом тестовом прогоне сравнивалась энергоэффективность двух API. Для этого количество кадров в секунду блокировалось, и одна и та же сцена рендерилась сначала под управлением DirectX 11, а затем — DirectX 12. На картинке ниже можно увидеть, что энергопотребление CPU в режиме DirectX 12 уменьшилось наполовину. Отличный результат! И особенно важный для мобильной платформы.
Так выглядит приложение Asteroids. Справа внизу вы можете увидеть графики энергопотребление CPU (синий) и GPU (красный). После переключения в режим DirectX 12 энергопотребление CPU уменьшилось вдвое
Результаты еще одного тестирования с фиксированным фреймрейтом. Результат такой же: при использовании DirectX 12 CPU потребляет примерно на 50% меньше энергии
Во втором тестовом прогоне измерялась производительность двух API. Само собой, количество кадров в секунду уже не фиксировалось. Неудивительно, что DirectX 12 вновь оказался впереди. Средний фреймрейт в режиме DirectX 12 составил 33 FPS против 19 FPS у DirectX 11 — еще немного, и прирост скорости составил бы 50%. Скриншоты и графики энергопотребления смотрите ниже.
Производительность системы в режиме DirectX 11
Производительность системы в режиме DirectX 12. Обратите внимание на график энергопотребления: при переключении в режим DirectX 12 CPU потребляет меньше энергии, что позволяет GPU работать быстрее. При этом энергопотребление всей системы находится в прежних границах
Результаты еще одного тестового прогона без фиксированного фреймрейта. Ранее полученные результаты подтверждаются: при переключении в режим DirectX 12 GPU начинает работать быстрее
В общем и целом, результаты предварительных тестирований DirectX 12 оказались более чем положительными и обнадежили многих пользователей. Высказывались даже предположения, что новый API позволит достичь разрешения 1080p на Xbox One. Но стоит ли доверять столь ранним выводам, тем более сделанным самими разработчиками Microsoft?
Взгляд со стороны
Первым, кто посеял сомнения в тотальном превосходстве DirectX 12, стал глава Xbox Фил Спенсер. Отвечая на вопросы в Twitter, Спенсер сказал, что «DirectX 12 не привнесет каких-то масштабных изменений на Xbox One. Новый API лишь даст программистам больше свободы при создании новых проектов». Интерпретировать слова главы Xbox можно по-разному. Очевидно одно: даже если DirectX 11 игры начнут «переводить на рельсы» DirectX 12, большого прироста производительности на первых порах ожидать не стоит. Причина этого кроется в том, что программирование под DirectX 11 и DirectX 12 будет значительно различаться. И игры, разработанные с учетом всех ограничений DirectX 11, вряд ли смогут работать быстрее с DirectX 12 — как раз из-за этих самых ограничений одиннадцатой версии, заложенных на стадии проектирования приложений. Конечно, на помощь всегда может прийти оптимизация. Однако, на наш взгляд, по-настоящему раскрыть потенциал нового API смогут лишь заточенные под него игры.
Свою ложку дёгтя в бочку мёда добавил и программист компании CD Projekt RED Балаш Торок. По его словам, достичь разрешения 1080p на Xbox One будет непросто. «Думаю, многие просто не понимают, что и как будет упрощать DirectX 12, — говорит Торок. — В большинстве игр нагрузка на шейдерные блоки консоли очень велика. И новая версия DirectX эту ситуацию не исправит. Конечно, можно будет увеличить количество полигонов, но их все равно не получится сгладить. И в таком случае теряется весь смысл. Думаю, выход нового API повлияет лишь на то, как будут мыслить при разработке графические дизайнеры, вот и всё».
CD Projekt RED сейчас занимается разработкой игры The Witcher 3, выход которой запланирован на 24 февраля 2015 года на PC, Sony Playstation 4 и Xbox One
Тем не менее в IT-индустрии преобладают позитивные настроения относительно DirectX 12. Например, о новом API довольно лестно отзывается Эндрю Лауритцен — ведущий инженер подразделения Advanced Technology Group компании Intel. «Девелоперы уже достаточно долго просили внести в API эти изменения (которые получил DirectX 12 — прим. автора), и пока что все ими довольны». Отвечая на вопрос о сравнении API, Лауритцен не стал делать никаких выводов об их производительности, сделав акцент лишь на ключевых различиях. По его словам, в плане архитектуры к DirectX 12 наиболее приближен API компании AMD Mantle. Что касается OpenGL, то этот интерфейс имеет много общего с одиннадцатой версией DirectX. О конкуренции между Mantle и DirectX 12 речи пока быть не может. «У Mantle и DirectX 12 похожие задачи, однако Mantle работает только на графических процессорах AMD. Эти API можно сравнивать только на AMD’шном железе, а для этого нам стоит дождаться официального выхода DirectX 12». Не забыл Лауритцен и об OpenCL, однако уточнил, что это скорее вычислительный API, не предназначенный для графики и более схожий с пакетом DirectCompute.
В положительном ключе о DirectX 12 высказался и представитель AMD Роберт Хэллок, отметив при этом, что не рассматривает интерфейс Microsoft как прямого конкурента Mantle. «DirectX 12, Mantle и OpenGL будут дополнять друг друга за счет своих уникальных возможностей», — сказал Хэллок. Как и Лауритцен, он отметил важность того, что в лице Mantle и DirectX 12 разработчики наконец-то получают похожие на консольные, низкоуровневые API для создания игр. Также представителю AMD был задан вопрос, не станет ли поддержка Mantle преимуществом для видеокарт Radeon в плане работы с низкоуровневым DirectX 12. «Пока что об этом сложно говорить, — ответил Хэллок. — Но к моменту запуска DirectX 12 разработчики будут работать с Mantle уже на протяжении 20-24 месяцев, поэтому это может сыграть нам на руку».
Шутер Battlefield 4 поддерживает API Mantle
Наконец, не остались в стороне от обсуждения нового API Microsoft и ведущие разработчики игр. О своем видении ситуации рассказал инженер Crytek Тьяго Соуза. «С точки зрения разработчика DirectX находился в стагнации уже несколько лет, — сказал Соуза. — Однако двенадцатая версия подоспела как раз вовремя. Изменения в новом API позволят нам решить растущие проблемы с рендерингом в реальном времени». Прокомментировал инженер Crytek и решенную проблему draw calls: «Теперь художники получат больше свободы и смогут рисовать более интересные уровни». Соуза также отметил, что многое, о чем программисты просили Microsoft, было реализовано в DirectX 12. Однако в одном моменте Microsoft пока что не пошла навстречу девелоперам: несмотря на их просьбы, операционная система Windows 7 не будет поддерживать новый API. Пока план таков. Не секрет, что многим игровым компаниям хотелось бы, чтобы DirectX 12 поддерживался на «семёрке», поскольку это значительно расширит потенциальный рынок для их продуктов.
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 трудно сказать, когда это действительно произойдет.
Покупаю новый комп, он соответствует DirectX 12.
Говорят игры будут летать, но вопрос:
Какие!?
Игры наоборот будут тормозить.
DX12 сейчас начал только в играх появляться.
Недавно вышло переиздание Gears of War: Ultimate Edition, ожидается обновление до DX12 в игре Rise of the Tomb Raider, так же DX12 будет в Quantum Break
тормозить? похоже тормоз тут только ты :) надо же быть таким идиотом
PortalX3 Искусственный Интеллект (252196) А пруфы будут, или просто попердеть в лужу решил?
хорошо, все будет тормозить, как ты сказал)) отъебись только) малец недоношенный ска.
PortalX3 Искусственный Интеллект (252196) Пхахаха - ты только что слил сам себя. Ппц ты даун, ахахаха. Вступил со мной в трольство - а чуть я на тебя надавил, так ты сам себя и слил. БРАВО! Вы, троли, такие жалкие, такие ТУПЫЕ. Просто дико с вас ору в последнее время.
Во первых, на "говорят" никогда не ориентируйся, потому что в магазинах с этим всегда наёб. И укажи характеристики компьютера. А насчёт игры на DirectX 12, то ещё не выпускались игры, где поддерживается данная технология.
Теперь новый Rust Experimental поддерживает DirectX12.
комп соответствует DirectX12, помоему операционка должна соответствовать
Эм, если у тебя NVIDIA GT 9500 то у тебя ток DIrectX 9 будет, почитай там что-ль
Gears of War: Ultimate Edition
Caffeine
Star Wars Battlefront
Rise of the Tomb Raider
Hitman
Tom Clancy's The Division
Ashes of the Singularity
Quantum Break
Total War: Warhammer
Deus Ex: Mankind Divided
Halo 5: Forge
Forza Motorsport 6: Apex
Forza Horizon 3
Gears of War 4
Civilization VI
Battlefield 1
Watch Dogs 2
Star Citizen
Фишка в том что у новых видеокарт gtx1050 1060 вырезали подержку SLI в надежде что ее заменит DX12 но как видно счастливые обладатели видеокарт с подержкой SLI будут играть и на dx11 и на dx12 одинаково круто. исползуя всю мощь своего железа в зависимости от игры что в gtx1050 1060 не получиться, сколько стоят две gtx 960 или одна 1060. аа? (( а пока dx12 укоренится как щас виндовс7 все это железо безнадежно устареет!!)))) ДА!! так что лучший вариант подешевле это б\у две видюхи в sli подороже новую 1050 но это тупик! а 1060 это безсмысленно за такие бабки покупать!! К примеру я в свое время купил gtx570 за 11000руб. прошло несколько лет ее стало мало и я купил точно такую же за 5000руб. и сделал SLI. До сих пор не обламываюсь и играю во все в том числе включал DX12 на некоторых играх.
Слышал наоборот, что дх12 еще пока сырая и что дх11 будет и стабильнее и быстрее.
НО, судя по качеству картинки и Форца Моторспорт 7 и Форца Хорайзн 3 (особенно в 4к), версия дх12 в визуальном плане является своего рода прорывом: картинка, эффекты - МЕГА КРУТЫЕ, реалистичность визуалки прям на месте убивает. да так, что челюсть на пол падает от качества и детализации картинки!
Дх12 по УАУ-эффекту можно сравнить с Дх10. вспомните когда вышел 1-й Крайзис и как он выглядел в свое время по сравнению с конкурентами - "небо и вода" в пользу "кукурузы"!
Читайте также: