Что такое Direct3D 12?

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

Как direct3D 12 может быть намного быстрее и эффективнее?

Direct3D 12 уникален тем, что обеспечивает более низкий уровень аппаратной абстракции, чем в предыдущих версиях, что позволяет значительно улучшить масштабирование многоядерных ЦП названия (или другого приложения). Во-первых, в Direct3D 12 ваш заголовок отвечает за собственное управление памятью. Кроме того, при использовании Direct3D 12 заголовки и приложения получают преимущества от сокращения затрат gpu за счет таких функций, как очереди команд и списки, таблицы дескрипторов и краткие объекты состояния конвейера.

Direct3D 12 и Direct3D 11.3 представляют набор новых возможностей для конвейера отрисовки.

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

Насколько глубоко следует инвестировать в Direct3D 12?

Direct3D 12 предоставляет четыре преимущества main для разработчиков графики (по сравнению с Direct3D 11).

  • Значительно сокращается нагрузка на ЦП.
  • Значительно снижается энергопотребление.
  • Повышение эффективности GPU до (приблизительно) на 20 %.
  • Кроссплатформенная разработка для Windows 10 устройства (пк, планшет, консоль, мобильное устройство).

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

Еще одним преимуществом Direct3D 12 является небольшая занимаемая площадь API. Существует около 200 функций; и около одной трети из них делают все тяжелые работы. Это означает, что вы как разработчик графики должны иметь возможность обучать себя и master полный набор API без необходимости запоминать слишком много имен API.

Direct3D 11 по-прежнему является жизнеспособным вариантом наряду с Direct3D 12. Многие новые функции отрисовки Direct3D 12 доступны в Direct3D 11.3. Direct3D 11.3 — это низкоуровневый API графического обработчика; и Direct3D 12 идет еще глубже.

Существует по крайней мере два способа, которыми ваша команда разработчиков может подойти к заголовку Direct3D 12.

Использование Direct3D 12

Для проекта, который использует все преимущества Direct3D 12, необходимо с нуля разработать высоко настроенную подсистему Direct3D 12.

Если вы, как разработчик графики, понимаете использование и повторное использование ресурсов в ваших названиях и можете воспользоваться этим, минимизировав загрузку и копирование, вы можете разработать и настроить высокопроизводительный механизм для этих названий. Повышение производительности может быть очень значительным, что позволяет освободить время ЦП для увеличения числа вызовов draw и, таким образом, добавить больше блеска к вашей графике.

Инвестиции в программирование являются значительными, и вам следует рассмотреть возможность отладки и инструментирования проекта с самого начала. Потоки, синхронизация и другие ошибки времени могут быть сложными.

Совместное использование Direct3D 12 с Direct3D 11

Более короткий подход — устранение известных узких мест в заголовке Direct3D 11. Вы можете решить эти проблемы с помощью методов взаимодействия Direct3D 12 и (или) D3D11On12 , которые обеспечивают совместную работу двух версий API. Такой подход сводит к минимуму изменения, необходимые для существующего графического обработчика Direct3D 11. Однако повышение производительности будет ограничено облегчением узких мест, которые устраняет код Direct3D 12.

Видео о Microsoft DirectX 12 (и графическом обучении)

Улучшенное образование для разработчиков графики. В этих видео рассматриваются такие темы, как режимы презентации, перенос в DirectX 12, консервативная растеризация, графические инструменты, Angle, Win2D, а также такие события, как GDC, build и многое другое. Техническое содержимое DirectX 12 предваряется DirectX 12. Здесь вы можете ознакомиться с советами и рекомендациями непосредственно от команды разработчиков функций Direct3D 12. Мы хотим помочь вам использовать наши последние выпуски и инструменты, чтобы сделать вашу игру максимально возможной!

Заключение

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

Direct3D 12 — это новая территория. Территория, которая ждет любознательного эксперта, чтобы приехать и исследовать.