• Главная

Отличия DirectX 12 от DX11 разглядеть непросто. Директ 12 что такое


Что такое DirecrX? Немного о DirectX 12

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

В новой операционной системе Windows 10 будет доступен DirectX 12. Об этом мы поговорим ниже. Кстати, сегодня 29 июня, и как раз вышла Windows 10. Вы можете почитать об этом в этой статье.

Переходим к истине. DirectX – это среда, с помощью которой, разработчики реализовывают какие-либо задачи. В эту среду входит ряд различных компонентов, которые необходимы для корректной работы, например, игр.

Другими словами, это платформа, которая позволяет запускать различные компоненты от момента клика и до конечного результата. И делает все это сама, за Вас.

Что такое DirectX

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

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

Этому есть пример. Например, видеокарты с DirectX 11 должны иметь поддержку Shader Model 5.0.

Теперь поговорим о DirectX 12.

DirectX 12: Новые возможности

Что такое DirectXДля того, чтобы иметь прямой доступ к аппаратным ресурсам, разработчикам приложений требуется более совершенный и эффективный интерфейс программирования приложений (API). Нужно это для того, чтобы выжать больший максимум производительности из современные систем. Есть игры, которые не поддерживают многоядерность, например 8 ядер не поддерживаются, а значит не задействованы в работе.

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

Для этого и был сделан DirectX 12, который написан с нуля.

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

На сегодняшний момент Windows 10 используется на множестве устройств – это и планшеты, и компьютеры, и ноутбуки, а также смартфоны, поэтому DirectX 12 будет использован в более широком спектре устройств. И да, DirectX 12 будет работать только с Windows 10.

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

Тесты в 3D Mark показали прирост производительности в 10-15 раз. Ошеломительные результаты.

DirectX12

Кроме того, повышение производительности заметно не только в мощных устройствах, но и в более слабых, например, в планшетах.

Еще одним сюрпризом является переход Windows к разрешению нового поколения 4К. Все это возможно с DirectX 12.

И наконец, последнее, как я писал выше, DirectX 12 будет доступен только на операционной системе Windows 10.

Поэтому, если хотите выжать больше возможностей из своего ПК, переходите на Windows 10 с DirectX 12.

http://computerinfo.ru/chto-takoe-directx-i-nemnogo-o-directx-12/http://computerinfo.ru/wp-content/uploads/2015/07/chto-takoe-directx-i-nemnogo-o-directx-12.jpghttp://computerinfo.ru/wp-content/uploads/2015/07/chto-takoe-directx-i-nemnogo-o-directx-12-150x150.jpg2015-07-29T16:44:56+00:00EvilSin225WindowsdirectX,Directx 11,DirectX 12,какие возможности дает DirectX,что такое directxЧто же такое DirectX, ведь мы знаем только то, что он нужен для запуска игр и других приложений, поэтому и устанавливаем его. При установке каких-либо приложений, в частности игр, мастер установки может потребовать установить DirectX. В новой операционной системе Windows 10 будет доступен DirectX 12. Об этом мы поговорим ниже....EvilSin225Андрей Терехов[email protected]Компьютерные технологииИнформация о компьютерах, Windows и других операционных системах, а также новости мобильных технологий

Похожие статьи

computerinfo.ru

Отличия DirectX 12 от DX11 разглядеть непросто

Мы достаточно наслышаны о производительности и инновационных элементах DirectX 12, в частности о многопоточной буферизации и асинхронных шейдерах. Но вот в чём дело: переход между DX10 и DX11 проявлялся не только в частоте кадров, но также в реализации новых графических эффектов, к примеру, динамической тесселяции. Перемены между DX11 и DX12 заметить гораздо сложнее. Нет ничего такого, на что можно было бы показать и заявить: “это — DirectX 12”. Посмотреть все игровые видеокарты с поддержкой DirectX 12.

Ролик издания PC Games Hardware демонстрирует работу Ashes of Singularity на обоих API. Попытаемся напрячь глаза и разглядеть какие-нибудь отличия:

Да-да. Окружение выглядит идентичным, количество объектов не изменилось, уровень детализации одинаков. Насыщенность эффектов оружия немного подросла, но нельзя сказать, что это день и ночь.

Официальное мнение AMD (данная компания — своего рода лидер API, она внедряет поддержку ассинхронных вычислений на аппаратном уровне) указывает, что разница между 11 и 12 заключается в производительности:

«Асинхронные шейдеры очень важны, поскольку с их помощью уменьшается задержка рендеринга графики. Меньше задержка — выше производительность. “Производительность” может означать повышение fps во время игры и ускорение генерации и ответа VR-окружения. Кроме того, разбитие детализации на тонкие уровни ещё сильнее сокращает рабочее время — как говорится, работаем не тяжелее, а умнее».

ashes of the singularity screenshot 1

«Геймеры знают, что прежде чем разработчики смогут взять эту технологию на вооружение, они должны её увидеть — и мы заботимся об этом. Наше сотрудничество с разработчиками Oxide/Stardock ( и другими неназванными) на предмет крутых новых технологий во время проведения AMD Gaming Evolved Program показало здоровый интерес игроделов к этим функциям. Это служит хорошим предзнаменованием для всех!».

Это в самом деле важно — раскрытие потенциала DirectX12 будет зависеть от разработчиков игр — как именно они будут использовать улучшенную линию связи между GPU и CPU. Ведь принципиально новых технологий (вроде теселляции в DX11) в DirectX12 нет. В ролике видно, каким количеством независимых 3D объектов наполнила поле боя в Ashes of the Singularity компания Oxid.

С таким количеством объектов DX11 тоже справляется — правда со скоростью ленивца, плывущего в бассейне. Ни один разработчик в здравом уме не будет так нагружать оборудование. Подытожим: Визуальные эффекты DirectX12 не отличаются от знакомых нам игр с хорошей графикой, но работает он быстрее и лучше. Уверен, как только разработчики изучат его как следует, они найдут способ расширить возможности DX12 ещё глубже.

etalongame.com

новый этап в развитии игр |NVIDIA

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

NVIDIA BlogNVIDIA BlogNVIDIA Bloghttp://blogs.nvidia.com/blog/2014/03/20/directx-12/

 

В марте на ежегодной Конференции разработчиков игр (Game Developer Conference - GDC) в Сан-Франциско компания Microsoft представила DirectX 12. DX12 – это новейшая версия графического API от Microsoft, который является доминирующим стандартом в продолжающей расти 25-миллиардной (USD) индустрии ПК-игр.

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

Выступая перед аудиторией, насчитывающей порядка 500 разработчиков и журналистов, Ануж Гозалия (Anuj Gosalia), менеджер по разработке DirectX в Microsoft, представил DX12 как совместный проект производителей аппаратного обеспечения, разработчиков игр и команды Microsoft.

Г-н Гозалия продемонстрировал работу нового API на примере технологической демонстрации на базе игры Forza, изначально созданной для Xbox One.

Сотрудничество NVIDIA и Microsoft по DirectX 12 началось более четырех лет назад с обсуждения подходов к уменьшению затрат на управление ресурсами GPU. В течение последнего года NVIDIA плотно работала с командой DirectX, чтобы представить на GDC рабочую версию DX12.

Г-н Гозалия продемонстрировал работу нового API на примере технологической демонстрации на базе игры Forza, изначально созданной для Xbox One. Демонстрация была запущена на ПК, оснащенном NVIDIA GeForce GTX Titan Black.

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

 

Критическим фактором принятия любого нового API является размер доступного рынка. В прошлом, распространение новых возможностей было ограничено отсутствием поддержки на рынке консолей, а также отсутствием поддержки этих возможностей в популярных версиях ОС Windows. DX12 позволит обеспечить беспрецедентное сближение интерфейсов API и широту поддержки. DX12 будет доступен как на ПК, так и на XBox One, планшетах и даже телефонах.

NVIDIA обеспечит поддержку DX12 во всех ОС Microsoft. Сегодня свыше 70% игровых ПК поддерживают DX11. NVIDIA будет поддерживать API DX12 на всех отгруженных на рынок GPU, поддерживающих DX11 (GPU на базе архитектур Fermi, Kepler и Maxwell). С учетом более чем 50%-ной доли NVIDIA на рынке игровых систем на базе DX11 (в случае дискретной графики - 65%), одна только NVIDIA уже сможет обеспечить разработчикам игр доступ к бОльшей части потенциальных пользователей нового API.

Истоки DX12 можно увидеть в тенденциях развития технологий. В то время как производительность GPU стремительно росла, потенциал развития одноядерных CPU был ограничен энергопотреблением. Многоядерные CPU обеспечили движение вперед, однако их пиковая производительность все еще не дотягивала до пиковой производительности GPU. Одновременно приложения стали использовать параллелизм на уровне задач, используя сложные планировщики для масштабирования производительности при увеличении количества ядер CPU. Это вызвало необходимость в создании API, который бы масштабировался соответственно изменению числа ядер.

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

 

Производительность GPU можно реализовывать в 3-х направлениях: более сложная обработка пикселей, отрисовка большего количества пикселей и увеличение количества объектов. В нынешней ситуации мы практически выжали максимум из GPU по количеству и качеству пикселей. С выпуском DX12 мы хотим сделать изображение визуально значительно более богатым за счет значительного сокращения ресурсов CPU, которые тратятся внутри API. Традиционно, памятью, состоянием и синхронизацией управляли операционная система и драйверы. Однако недостаток информации о задачах, решаемых приложениями, приводил к неэффективному использованию CPU. DX12 позволяет приложениям напрямую управлять ресурсами и состоянием и выполнять необходимую синхронизацию. В результате, разработчики передовых приложений смогут эффективно управлять GPU, используя знания о внутренней работе своей собственной игры.

Сегодняшний анонс нацелен в первую очередь на демонстрацию подхода к формированию новой версии графического API, его модели. Помимо описанной сегодня новой модели работы драйверов/приложений, в будущих версиях Direct3D появятся новые возможности рендеринга. Представленный на GDC проект – это только часть работы, проделанной в процессе подготовки к будущим релизам. NVIDIA и Microsoft продолжат и дальше серьезно инвестировать в будущее PC-игр.

www.nvidia.ru

чего ждать игрокам и разработчикам? / Видеокарты

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

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

3dnews.ru

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

www.playground.ru

DirectX 12 / Блог компании Microsoft / Хабр

20 марта, в рамках конференции GDC 2014, состоялся анонс следующей версии DirectX 12. Основным ядром DirectX являетcя Direct3D, именно на нем создаются наиболее критичные компоненты игровых приложений. Команда разработки внесла ряд изменений в Direct3D, в результате которых возросла скорость и эффективность многих графических операций. Эти изменения позволяют создавать более детальные сцены и достичь полного использования возможностей современных GPU. Но эти возможности появятся не только в «хай-энд» игровых компьютерах. Direct3D 12 будет работать на всех устройствах Microsoft. Телефоны, планшеты, ноутбуки, десктопы и конечно, Xbox One, все они позволят использовать API Direct3D 12. Что делает Direct3D 12 лучше, чем предыдущие версии? В первую, и самую главную очередь, это более низкий уровень абстрагирования оборудования. Это позволяет играм значительно улучшить поточную масштабируемость и уровень использования GPU. В дополнение, игры получат выигрыш от таблиц дескрипторов и объектов состояния конвейера. Это конечно не все, Direct3D включает набор новых возможностей для конвейера рендера, которые могут в разы увеличить эффективность расчетов прозрачности, определения коллизий и геометрической выбраковки.

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

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

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

Это именно наша работа — создавать API, и мы работали вместе с нашими партнерами производителями ПО и железа, для того чтобы доказать значительные улучшения производительности Direct3D 12. Те новинки, которые включены в Direct3D 12, не являются хаками каких-то микро-бенчмарков. Цифры, которые мы получили, базируются на коммерческих играх и признанных бенчмарках, протестированных на альфа версии. Скриншоты, которые вы увидите были сделаны на реальных Direct3D 12 приложениях с реальной реализацией рантайма и драйверов Direct3D 12.

3DMark – поточное масштабирование +50% к утилизации CPU
Если вы заядлый геймер, то наверняка знаете о 3DMark. Это отличный инструмент оценки производительности на большом спектре устройств и железе. 3DMark работающий на Direct3D 11 позволяет использовать поточное масштабирование, но из-за некоторых накладок, связанных с рантаймом и драйверами, существует холостое время ожидания потоков и ядер. После переноса 3DMark на Direct3D 12 мы увидели два значительных улучшения – 50% прироста к утилизации CPU и улучшение распределения работы между потоками.

Direct3D11
Direct3D 12
Forza Motorsport 5 Tech Demo – консольная эффективность на PC
Forza Motorsport 5 это пример игры которая выжимает максимум из XboxOne. Под капотом Forza находится низкоуровневый API взаимодействия с графической подсистемой консоли. Традиционно, такой уровень эффективности достижим только на унифицированном железе. Теперь такая возможность, даже в альфа версии, есть и на компьютере, и даже на телефоне. При переносе кода графического ядра, базирующегося на Direct3D 11.1, команда Turn 10 добилась такого же уровня оптимизации на PC, и все благодаря возможностям Direct3D 12.
Откуда взялась такая производительность?
Direct3D 12 отходит от старой модели программирования Direct3D 11, позволяя приложению быть значительно ближе к железу как никогда ранее. Мы пересмотрели значительное количество областей API ключевыми из которых являются механизмы представления состояний конвейера, методы отправки заданий и доступ к ресурсам.
Объекты состояний конвейера
Direct3D11 позволяет манипулировать состояниями конвейера через большой набор перекрестных объектов. Например, состояние входного ассемблера, состояние пиксельного шейдера, состояние растеризатора и состояние выходного смесителя, все они могут быть изменены независимо. Этот механизм предоставляет удобный, относительно высокоуровневый уровень представления графического конвейера, но к сожалению, он не очень хорошо ложится на современное железо. В первую очередь из-за того, что существуют взаимозависимости между многими состояниями. Например, многие GPU комбинируют состояние пиксельного шейдера и выходного смесителя в одно аппаратное представление. Direct3D 11 API позволяет менять их состояние независимо, но драйвер не может разрешить это пока не будет знать что состояние завешено, а это не возможно до начала отрисовки. Это приводит к задержкам при установке состояний железа, означает издержки и меньшее количество вызовов отрисовки на каждый кадр.

Direct3D 12 позволяет решить эту проблему унифицируя большую часть состояния конвейера в неизменяемый объект состояния конвейера (ОСК), который фиксируется сразу же после его создания. Это позволяет железу и драйверу немедленно превратить ОСК в соответствующие аппаратные инструкции, а состояние необходимо для выполнения работы GPU. При этом можно динамически выбирать, какой ОСК на текущий момент необходимо использовать. Теперь остается только скопировать в аппаратные регистры небольшой объем заранее просчитанного состояния, вместо вычисления аппаратного состояния на лету. Это означает значительно меньший объем накладных расходов между вызовами отрисовки, и большее количество вызовов отрисовки на каждый кадр.

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

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

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

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

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

Хотите быть одним из первых?
Если вы профессиональный разработчик игр и предполагаете, что Direct3D 12 может ускорить производительность вашего приложения, вы можете подать заявку на участие в предварительной программе ознакомления.

habr.com


Смотрите также