Microsoft DirectX 12 | |
---|---|
Тип | Графический API |
Разработчики | Microsoft |
Операционная система | Windows 10 |
Первый выпуск | 29 июля 2015 |
Состояние | Выпущено вместе с OC Windows 10. |
Лицензия | Пользовательское соглашение |
Сайт | windows.microsoft.com |
DirectX 12 — компонент интерфейса программирования приложений. DirectX 12 обеспечивает функции для взаимодействия операционной системы и приложений с драйверами видеокарты. Эти функции привязаны к операционной системе в линейке Windows и доступны в Windows 10. DirectX 12 вышел в 2015 году.
Содержание
Содержание
Возможности и нововведения [ править | править код ]
- Увеличение производительности.
- Возможность создания более сложных эффектов и сцен.
- Более эффективное использование мощностей многоядерных процессоров.
- Новые режимы наложения и консервативная растеризация, которая должна улучшить процесс отсечения объектов и определения столкновений.
- Поддержка новых графических ускорителей.
- Снижение уровня абстрагирования оборудования.
- Улучшение от объектов состояния конвейера и таблиц дескрипторов.
- Возможность объединения в единую графическую подсистему графических карт разных производителей.
- Консервативная растеризация
- Трассировка лучей в реальном времени
История развития [ править | править код ]
Корпорация Microsoft в марте 2014 года на конференции GDC анонсировала низкоуровневый API нового поколения — DirectX 12, нацеленный на конкуренцию с Mantle и OpenGL.
DirectX 12 стал доступен после выхода 29 июля 2015 года Windows 10, остающейся на данный момент единственной ОС, поддерживающей DirectX 12.
В 2018 году на конференции GDC Microsoft представила обновление для DirectX 12 — Microsoft DXR, которое позволяет API выполнять трассировку лучей в реальном времени.
Двенадцатая версия Директ Икс необходимо для запуска некоторых современных игр. Доступна она только на Windows 10. Но помимо программной совместимости, есть еще и аппаратная. Речь, разумеется, о компьютерном «железе», в частности, о графических адаптерах. Видеокарты, поддерживающие DirectX 12, сейчас легко найти в продаже. Собственно говоря, к ним относятся все современные модели от компаний Nvidia и AMD. Но мы все же остановимся на вопросе совместимости более подробно.
Вопрос совместимости
DirectX 12 является одним из модулей операционной системы Виндовс 10. Он активируется только в том случае, если на аппаратном уровне поддерживается графическим адаптером. Чтобы проверить его доступность, воспользуйтесь диагностическим инструментом DxDiag. Вызывается он из диалогового окна «Выполнить» (Win + R на клавиатуре). Введите туда одноименную команду и нажмите Enter. Снизу окна вы увидите необходимую информацию.
Теперь перейдем непосредственно на вопросе совместимости. На сайте производителей видеокарт есть подробные технические характеристики, в том числе и поддерживаемые версии ДиректХ. Чтобы узнать модель графического устройства, сделайте следующее:
Рекомендуем! InstallPack | Стандартный установщик |
Официальный дистрибутив DirectX | Тихая установка без диалоговых окон | Рекомендации по установке необходимых программ | Пакетная установка нескольких программ |
---|
DirectX-for-pc.ru рекомендует InstallPack, с его помощью вы сможете быстро установить программы на компьютер, подробнее на сайте.
- Нажмите на клавиатуре Win + Q. Тогда откроется поисковая форма в меню «Пуск».
- Впечатайте туда «Сведения» и кликните по первому элементу.
- В «Компоненты» выделите строку «Дисплей».
- Нужная информация размещена в «Описание адаптера».
Предостережение
Нередко на непроверенных ресурсах мелькают ссылки на якобы рабочие версии Директ Икс 12 для неподдерживаемых видеоадаптеров и операционных систем. Неподготовленного пользователя это может ввести в заблуждение. Хотим вас предостеречь: ни в коем случае не доверяйте таким сайтам и не загружайте какие-либо программы. Это все со стопроцентной вероятностью вирусы.
Близится выход Windows 10, поэтому сегодня внимание производителей видеокарт, разработчиков игр и геймеров приковано к новым API. Но большинство пользователей по-прежнему путаются в том, какие видеокарты будут поддерживать новый DX 12 и в каком виде. Нас вновь ожидают несколько уровней поддержки. Они соответствуют разным уровням аппаратной и программной поддержки, ниже мы как раз рассмотрим их более детально.
Большинство современных видеокарт, будь то от AMD или NVIDIA, поддерживают DirectX 12 в "родном" режиме. Однако речь здесь идёт о минимальном уровне поддержки, старые GPU не смогут полностью реализовать все технологии, поскольку они вышли два-три года назад. Но позвольте пролить свет на данный вопрос.
DirectX 12 API
Начнём с API DirectX 12. Важной частью API является снижение избыточной вычислительной нагрузки, что верно и для других низкоуровневых API, таких как Mantle. Здесь суть кроется не столько в представлении новых технологий, сколько в более эффективном использовании доступных ресурсов. Первые тесты под Windows 10 уже показали существование потенциала производительности. Но данные тесты были ограничены определёнными сценариями, и пока не совсем понятно, какой прирост производительности можно ожидать в играх из-за снижения избыточной вычислительной нагрузки.
На низком уровне API DirectX 12 обеспечивает для программистов более эффективные средства доступа к "железу". Сюда входит и улучшенное управление видеопамятью. Так что потенциально перед программистами открываются дополнительные возможности, но при этом и влияние ошибок может быть весьма печальным.
Технология Asynchronous Compute тоже является частью низкоуровневой поддержки, она позволяет лучше и эффективнее использовать ступени фиксированного конвейера рендеринга и уменьшить время рендеринга. Так что одновременно можно выполнять больше команд, а также задействовать больше ступеней конвейера. Уменьшение времени рендеринга приведёт к более высокой частоте кадров в секунду и к снижению задержек, что положительно сказывается на некоторых областях – например, на поддержке очков виртуальной реальности VR.
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
К уровню DirectX 12_0 относится Typed UAV и новая модель Bind, которые ориентируют API на большее число ядер CPU, что обеспечивает более широкую параллелизацию и производительность. Обе функции мы уже рассматривали в обзоре GeForce GTX 980 и GTX 970.
DirectX 12_1
Ещё на шаг дальше Microsoft и разработчики GPU пошли с DirectX 12_1. Но данный урвоень функций поддерживают только самые новейшие GPU. К ним относятся все GPU на основе 2-го поколения "Mawell". Одна из новых технологий – консервативная растеризация (Conservative Rasterization). Она используется для фильтра динамического суперразрешения (Dynamic Super Resolution) и сглаживания Multiframe Sampled Anti-Aliasing.
Новые технологии DirectX 12
При растеризации небольшого объекта/пикселя в некоторых случаях лучше учитывать все покрытые точки семплирования, пусть даже частично. Также консервативная растеризация важна при вокселизации VXGI. Улучшенная методика наиболее заметна и при расчете теней.
Аппаратная поддержка
Конечно, многих читателей интересует вопрос о том, какие GPU или видеокарты будут поддерживать DirectX 12 и на каком уровне. Хотя оба разработчика GPU AMD и NVIDIA несколько лет говорят о поддержке DirectX 12, она пока остаётся довольно ограниченной.
Архитектура GPU | DirectX 12 API | DirectX 12_0 | DirectX 12_1 | DirectX "12_2" |
---|---|---|---|---|
NVIDIA "Maxwell" 2-го поколения | Да | Да | Да | Да |
NVIDIA "Maxwell" 1-го поколения | Да | Нет | Нет | Нет |
NVIDIA Kepler | Да | Нет | Нет | Нет |
NVIDIA Fermi | Да | Нет | Нет | Нет |
AMD GCN 1.2 | Да | — | — | — |
AMD GCN 1.1 | Да | — | — | — |
AMD GCN 1.0 | Да | — | — | — |
По крайней мере, NVIDIA вместе с представлением GeForce GTX 980 Ti пролила свет на поддержку нового API. Только видеокарты 2-го поколения архитектуры "Maxwell" будут поддерживать все упомянутые ранее функции и технологии. Среди них — GeForce GTX Titan X, GTX 980 Ti, GTX 980, GTX 970 и GTX 960. Все другие видеокарты вплоть до линейки GeForce 500 с GPU "Fermi" смогут поддерживать DirectX 12 API на базовом уровне, пользователи выиграют от улучшенного взаимодействия между драйвером и API.
К сожалению, со стороны AMD картина не такая понятная. Архитектура "Graphics Core Next" тоже даёт разные уровни поддержки. GCN версии 1.2 была реализована на видеокартах Radeon R9 285, в модифицированном виде мы получим поддержку и на новых видеокартах "Fiji". Версии GCN 1.1 (линейки Radeon 290 и Radeon 260) и GCN 1.0 (линейки Radeon 200 и Radeon 7000) тоже совместимы с DirectX 12, но, скорее всего, тоже на самом нижнем уровне. К сожалению, от AMD пока нет чётких утверждений по поводу поддержки DirectX 12. Некоторые функции, подобные асинхронным шейдерам (Asynchronous Shaders), должны работать на всех GPU с архитектурой "Graphics Core Next".
Вероятно, нам придётся подождать некоторое время, прежде чем AMD, NVIDIA и Intel представят более конкретную информацию об уровне функций. По крайней мере со стороны NVIDIA ситуация с поддержкой прояснилась.