Директ3D
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2014 г. ) |
Разработчик(и) | Майкрософт |
---|---|
Первоначальный выпуск | 2 июня 1996 г |
Стабильная версия | 12.0 Бета 3
/ 13 января 2015 г |
Операционная система | Microsoft Windows , Windows CE , Windows Embedded , системное программное обеспечение Xbox |
Платформа | х86 , ARM |
Тип | 3D компьютерной графики API |
Лицензия | Собственный |
Веб-сайт | учиться |
Direct3D — это интерфейс программирования графических приложений (API) для Microsoft Windows . Direct3D, являющийся частью DirectX , используется для рендеринга трехмерной графики в приложениях, где важна производительность, например в играх. Direct3D использует аппаратное ускорение, если оно доступно на видеокарте , позволяя аппаратно ускорять весь конвейер 3D-рендеринга или даже только частичное ускорение. Direct3D раскрывает расширенные графические возможности оборудования для 3D-графики, включая Z-буферизацию . [ 1 ] W-буферизация, [ 2 ] буферизация трафарета , пространственное сглаживание , альфа-смешение , смешивание цветов, MIP-маппинг , смешивание текстур, [ 3 ] [ 4 ] обрезка , отсечение с учетом перспективы , атмосферные эффекты, наложение текстур , программируемые HLSL шейдеры [ 5 ] и эффекты. [ 6 ] Интеграция с другими технологиями DirectX позволяет Direct3D предоставлять такие функции, как отображение видео, аппаратный 3D-рендеринг в плоскостях наложения 2D и даже спрайты , обеспечивая использование 2D- и 3D-графики в интерактивных медиасвязях.
Direct3D содержит множество команд для рендеринга компьютерной 3D-графики ; однако, начиная с версии 8, Direct3D заменил платформу DirectDraw , а также взял на себя ответственность за рендеринг 2D-графики . [ 7 ] Microsoft стремится постоянно обновлять Direct3D для поддержки новейших технологий, доступных на 3D-видеокартах. Direct3D предлагает полную программную эмуляцию вершин , но не обеспечивает программную эмуляцию пикселей для функций, недоступных на оборудовании. Например, если программное обеспечение, запрограммированное с использованием Direct3D, требует пиксельных шейдеров , а видеокарта на компьютере пользователя не поддерживает эту функцию, Direct3D не будет ее эмулировать, хотя он будет вычислять и отображать полигоны и текстуры 3D-моделей, хотя обычно и с высокой скоростью. ухудшение качества и производительности по сравнению с аппаратным эквивалентом. API включает в себя эталонный растеризатор (или устройство REF), который программно эмулирует обычную видеокарту, хотя он слишком медленный для большинства 3D-приложений реального времени и обычно используется только для отладки. Новый программный растеризатор реального времени WARP , предназначенный для эмуляции полного набора функций Direct3D 10.1, включен в Windows 7 и Windows Vista с пакетом обновления 2 вместе с обновлением платформы; Говорят, что его производительность находится на одном уровне с 3D-картами более низкого уровня на многоядерных процессорах. [ 8 ]
Direct3D как часть DirectX доступен для Windows 95 и более поздних версий и является основой для API векторной графики в различных версиях консольных систем Xbox . Уровень совместимости Wine , бесплатная программная реализация нескольких API-интерфейсов Windows, включает реализацию Direct3D.
Основным конкурентом Direct3D является OpenGL от Khronos и его последующий Vulkan . «Фаренгейт» был попыткой Microsoft и SGI объединить OpenGL и Direct3D в 1990-х годах, но в конечном итоге была отменена.
Обзор
[ редактировать ]- Direct3D 6.0 – Мультитекстурирование
- Direct3D 7.0 — аппаратное преобразование, обрезка и освещение (TCL/T&L)
- Direct3D 8.0 — пиксельные шейдеры 1.0/1.1 и вершинные шейдеры 1.0/1.1 [ 9 ]
- Direct3D 8.1 – Пиксельные шейдеры 1.2/1.3/1.4 [ 10 ] [ 11 ] [ 12 ]
- Direct3D 9.0 — модель шейдера 2.0 (пиксельный шейдер 2.0 и вершинный шейдер 2.0)
- Direct3D 9.0a — модель шейдера 2.0a (пиксельный шейдер 2.0a и вершинный шейдер 2.0a)
- Direct3D 9.0b – Пиксельный шейдер 2.0b
- Direct3D 9.0c – последняя версия, поддерживаемая для Windows 98 / ME (ранние выпуски) [ 13 ] и для Windows 2000 / XP (все выпуски); [ 14 ] Модель шейдера 3.0 (пиксельный шейдер 3.0 и вершинный шейдер 3.0)
- Direct3D 9.0L – Windows Vista только для ; Direct3D 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, DXVA 1.0, GPGPU
- Direct3D 10.0 – Windows Vista/Windows 7; Модель шейдеров 4.0 , Windows Graphics Foundation 2.0, DXVA 2.0
- Direct3D 10.1 – Windows Vista SP1/Windows 7; Модель шейдеров 4.1, Windows Graphics Foundation 2.1, DXVA 2.1
- Direct3D 11.0 – Windows Vista SP2/ Windows 7 ; Модель шейдеров 5.0, тесселяция, многопоточный рендеринг, вычислительные шейдеры , реализованные аппаратным и программным обеспечением под управлением Direct3D 9/10/10.1.
- Direct3D 11.1 – Windows 8 (также частично поддерживается в Windows 7 SP1); Стереоскопический 3D-рендеринг
- Direct3D 11.2 – Windows 8.1 ; Плиточные ресурсы
- Direct3D 11.3 — Windows 10
- Direct3D 12.0 – Windows 10 ; низкоуровневого рендеринга API , Shader Model 5.1 и 6.0
- Direct3D 12.1 – Windows 10; Трассировка лучей DirectX
- Direct3D 12.2 – Windows 10; DirectX 12 Ultimate
Директ3D 2.0 и 3.0
[ редактировать ]В 1992 году Серван Кеонджян, Дуг Рэбсон и Кейт Сикингс основали компанию RenderMorphics, которая разработала API 3D-графики под названием Reality Lab , который использовался в программном обеспечении медицинской визуализации и САПР. [ 15 ] Были выпущены две версии этого API. [ 16 ] Microsoft купила RenderMorphics в феврале 1995 года, привлекая своих сотрудников для реализации движка 3D-графики для Windows 95 . [ 17 ] Первая версия Direct3D была выпущена в виде DirectX 2.0 (2 июня 1996 г.) и DirectX 3.0 (26 сентября 1996 г.).
Direct3D изначально реализовал 3D API « немедленного режима » и наложил на него 3D API « сохраненного режима ». [ 18 ] Оба типа API уже предлагались во второй версии Reality Lab до выпуска Direct3D. [ 16 ] Как и другие API DirectX, такие как DirectDraw , оба были основаны на COM . API сохраненного режима представлял собой API графа сцены , который не получил широкого распространения. Разработчики игр требовали более прямого контроля над деятельностью оборудования, чем мог обеспечить режим сохранения Direct3D. Только две игры, которые продавались значительными объемами, Lego Island и Lego Rock Raiders , были основаны на сохраненном режиме Direct3D, поэтому Microsoft не обновляла API сохраненного режима после DirectX 3.0.
Для DirectX 2.0 и 3.0 в немедленном режиме Direct3D использовалась модель программирования «буфер выполнения», которую, как надеялась Microsoft, производители оборудования будут поддерживать напрямую. Буферы выполнения предназначались для размещения в аппаратной памяти и анализа аппаратным обеспечением для выполнения 3D-рендеринга. Однако в то время их считали крайне неудобными для программирования, что препятствовало внедрению нового API и побуждало Microsoft принять OpenGL в качестве официального API 3D-рендеринга для игр, а также приложений для рабочих станций. [ 19 ] (см. OpenGL и Direct3D)
Вместо того, чтобы использовать OpenGL в качестве игрового API, Microsoft решила продолжить улучшение Direct3D не только для того, чтобы конкурировать с OpenGL, но и для более эффективной конкуренции с другими проприетарными API, такими как 3dfx от Glide .
С самого начала непосредственный режим также поддерживал Talisman мозаичный рендеринг с помощью методов BeginScene/EndScene интерфейса IDirect3DDevice.
Директ3Д 4.0
[ редактировать ]Никаких существенных изменений в Direct3D для DirectX 4.0 , выпуск которого планировался в конце 1996 года, а затем был отменен, не планировалось. [ 20 ]
Директ3Д 5.0
[ редактировать ]В декабре 1996 года команда из Редмонда взяла на себя разработку режима Direct3D Immediate, а лондонская команда RenderMorphics продолжила работу над сохраненным режимом. Команда из Редмонда добавила API DrawPrimitive, который устранил необходимость создания приложениями буферов выполнения, что сделало Direct3D более похожим на другие API рендеринга в немедленном режиме, такие как Glide и OpenGL . Первая бета-версия DrawPrimitive вышла в феврале 1997 года. [ 21 ] и окончательная версия была выпущена с DirectX 5.0 в августе 1997 года. [ 22 ]
Помимо введения более простого в использовании API немедленного режима, в DirectX 5.0 был добавлен метод SetRenderTarget, который позволял устройствам Direct3D записывать графический вывод на различные поверхности DirectDraw. [ 23 ]
Директ3Д 6.0
[ редактировать ]DirectX 6.0 (выпущенный в августе 1998 г.) представил множество функций, охватывающих современное оборудование (например, мультитекстурирование) . [ 24 ] и трафаретные буферы ), а также оптимизированные геометрические конвейеры для x87 , SSE и 3DNow! и дополнительное управление текстурами для упрощения программирования. [ 25 ] Direct3D 6.0 также включал поддержку функций, которые были лицензированы Microsoft у конкретных поставщиков оборудования для включения в API в обмен на преимущество времени выхода на рынок для поставщика лицензий. Поддержка сжатия текстур S3 была одной из таких функций, переименованных в DXTC для включения в API. TriTech Другим вариантом была запатентованная технология рельефного картирования . Microsoft включила эти функции в DirectX, а затем добавила их к требованиям, необходимым для получения драйверами логотипа Windows , чтобы стимулировать широкое внедрение этих функций в оборудование других производителей.
Небольшое обновление DirectX 6.0 появилось в обновлении DirectX 6.1 в феврале 1999 года. Помимо DirectMusic первого добавления поддержки , в этом выпуске улучшена поддержка расширений Intel Pentium III 3D. [ 26 ]
Конфиденциальная записка, отправленная в 1997 году. [ 27 ] показано, что Microsoft планирует объявить о полной поддержке Talisman в DirectX 6.0, но API в итоге был отменен ( Microsoft Talisman подробности см. на странице ).
Директ3Д 7.0
[ редактировать ]В DirectX 7.0 (выпущенном в сентябре 1999 г.) появился .dds. формат текстур [ 28 ] и поддержка преобразования и освещения. аппаратного ускорения [ 29 ] (впервые доступно на оборудовании ПК с Nvidia GeForce 256 ), а также возможность выделять буферы вершин в аппаратной памяти. Аппаратные буферы вершин представляют собой первое существенное улучшение по сравнению с OpenGL в истории DirectX. Direct3D 7.0 также расширил поддержку DirectX для оборудования мультитекстурирования и представляет собой вершину функций конвейера мультитекстурирования с фиксированными функциями: хотя он был мощным, его было настолько сложно программировать, что потребовалась новая модель программирования, чтобы раскрыть возможности графического оборудования по затенению. В Direct3D 7.0 также появились функции DXVA .
Директ3Д 8.0
[ редактировать ]В DirectX 8.0 (выпущенном в ноябре 2000 г.) появилась возможность программирования в виде вершинных и пиксельных шейдеров , что позволило разработчикам писать код, не беспокоясь о лишнем состоянии оборудования. [ 30 ] Сложность шейдерных программ зависела от сложности задачи, и драйвер дисплея компилировал эти шейдеры в инструкции, понятные аппаратному обеспечению. Direct3D 8.0 и его возможности программируемого шейдинга были первым серьезным отходом от архитектуры с фиксированными функциями в стиле OpenGL, где рисование контролируется сложным конечным автоматом. Direct3D 8.0 также исключил DirectDraw как отдельный API. [ 31 ] [ 32 ] Direct3D включил в себя все оставшиеся вызовы API DirectDraw, все еще необходимые для разработки приложений, такие как Present(), функция, используемая для отображения результатов рендеринга.
Direct3D не считался удобным для пользователя, но начиная с версии DirectX 8.1 многие проблемы с удобством использования были решены. Direct3D 8 содержал множество мощных функций 3D-графики, таких как вершинные шейдеры , пиксельные шейдеры , туман , наложение рельефа и наложение текстур .
Директ3Д 9
[ редактировать ]Директ3Д 9.0 [ 33 ] (выпущен в декабре 2002 г.) добавлена новая версия языка шейдеров высокого уровня. [ 34 ] [ 35 ] поддержка форматов текстур с плавающей запятой, Multiple Render Targets (MRT), [ 36 ] Многоэлементные текстуры, [ 37 ] поиск текстур в методах вершинного шейдера и трафаретного буфера. [ 38 ]
Директ3Д 9Ex
[ редактировать ]Директ3Д 9Ex [ 39 ] (ранее версия 9.0L («L» означает Longhorn, кодовое название Windows Vista)), расширение, доступное только в Windows Vista, 7, 8, 8.1, 10 и 11, позволяет использовать преимущества, предлагаемые Windows Vista. Модель драйвера дисплея Windows (WDDM) и используется для Windows Aero . [ 40 ] Direct3D 9Ex в сочетании с драйверами WDDM класса DirectX 9 позволяет виртуализировать графическую память и выгружать ее в системную память, позволяет прерывать и планировать графические операции, а также позволяет совместно использовать поверхности DirectX между процессами. [ 41 ] Direct3D 9Ex ранее был известен как версия 1.0 Windows Graphics Foundation (WGF).
Улучшения Direct3D 9Ex — приложения Win32
Директ3Д 10
[ редактировать ]Windows Vista включает крупное обновление API Direct3D. Первоначально назывался WGF 2.0 (Windows Graphics Foundation 2.0), затем DirectX 10 и DirectX Next, Direct3D 10. [ 42 ] включает обновленную модель шейдеров 4.0 и дополнительную возможность прерывания для программ шейдеров. [ 41 ] В этой модели шейдеры по-прежнему состоят из фиксированных этапов, как и в предыдущих версиях, но все этапы поддерживают почти унифицированный интерфейс, а также единую парадигму доступа к таким ресурсам, как текстуры и константы шейдера. Сам язык был расширен, чтобы сделать его более выразительным, включая целочисленные операции, значительно увеличенное количество инструкций и больше языковых конструкций, подобных C. В дополнение к ранее доступным этапам вершинного и пиксельного шейдера API включает этап геометрического шейдера , который разрушает старую модель одной вершины внутри/одной вершины снаружи, чтобы позволить генерировать геометрию изнутри шейдера, что позволяет создавать сложную геометрию. полностью генерироваться графическим оборудованием.
Windows XP и более ранние версии не поддерживаются DirectX 10.0 и более поздних версий. Кроме того, в Direct3D 10 была прекращена поддержка API сохраненного режима, который был частью Direct3D с самого начала, что сделало Windows Vista несовместимой с 3D-играми, которые использовали API сохраненного режима в качестве механизма рендеринга . [ 43 ]
В отличие от предыдущих версий API, Direct3D 10 больше не использует «биты возможностей» (или «капсулы») для указания того, какие функции поддерживаются на данном графическом устройстве. Вместо этого он определяет минимальный стандарт аппаратных возможностей, который должен поддерживаться, чтобы система отображения была «совместимой с Direct3D 10». Это существенное изменение, целью которого является оптимизация кода приложения за счет удаления кода проверки возможностей и особых случаев, основанных на наличии или отсутствии определенных возможностей.
Поскольку аппаратное обеспечение Direct3D 10 было сравнительно редким после первоначального выпуска Windows Vista , а также из-за огромного количества установок видеокарт, не совместимых с Direct3D 10, первые игры, совместимые с Direct3D 10, по-прежнему предоставляют пути рендеринга Direct3D 9. Примерами таких игр являются игры, изначально написанные для Direct3D 9 и перенесенные на Direct3D 10 после их выпуска, такие как Company of Heroes , или игры, изначально разработанные для Direct3D 9 с модификацией Direct3D 10, модифицированной позже во время их разработки, такие как Hellgate: London или Крайзис . DirectX 10 SDK стал доступен в феврале 2007 года. [ 44 ]
Директ3Д 10.0
[ редактировать ]Аппаратное обеспечение уровня Direct3D 10.0 должно поддерживать следующие функции: возможность обработки целых примитивов на новом этапе геометрического шейдера, возможность вывода сгенерированных конвейером данных вершин в память с использованием этапа потокового вывода, поддержку мультисэмплированного альфа-покрытия, обратное чтение глубины/поверхности трафарета или ресурса с мультисэмплированием, как только он больше не привязан к цели рендеринга, полная интеграция HLSL – все шейдеры Direct3D 10 написаны на HLSL и реализованы с использованием ядра общего шейдера, целочисленных и побитовых операций с шейдерами, организация состояние конвейера в 5 неизменяемых объектов состояния, организация констант шейдера в буферах констант, увеличенное количество целей рендеринга, текстур и сэмплеров, отсутствие ограничения длины шейдера, новые типы ресурсов и форматы ресурсов, [ 45 ] многоуровневые уровни среды выполнения/API, [ 46 ] возможность выполнять замену и настройку материалов для каждого примитива с помощью геометрического шейдера, улучшенную генерализацию доступа к ресурсам с помощью представления, удалены биты возможностей устаревшего оборудования (ограничения).
- Стационарные трубопроводы [ 47 ] от них отказываются в пользу полностью программируемых конвейеров (часто называемых унифицированной архитектурой конвейеров), которые можно запрограммировать для эмуляции того же самого.
- Новый объект состояния, позволяющий (в основном) ЦП эффективно изменять состояния.
- Унифицированная шейдерная модель расширяет возможности программирования графического конвейера . Он добавляет инструкции для целочисленных и побитовых вычислений.
- Общее ядро шейдера [ 48 ] предоставляет полный набор совместимых с IEEE 32-битных целочисленных и побитовых операций. Эти операции позволяют использовать новый класс алгоритмов в графическом оборудовании — примеры включают методы сжатия и упаковки, БПФ и управление потоком программ по битовым полям.
- шейдеры геометрии , [ 49 ] [ 50 ] которые работают с соседними треугольниками, образующими сетку .
- Массивы текстур позволяют заменять текстуры в графическом процессоре без вмешательства процессора.
- Предикатный рендеринг позволяет игнорировать вызовы отрисовки на основании некоторых других условий. Это обеспечивает быстрое отсечение окклюзии , что предотвращает визуализацию объектов, если они не видны или находятся слишком далеко, чтобы их можно было увидеть.
- Поддержка Instancing 2.0 , позволяющая отображать несколько экземпляров похожих сеток, таких как армии, трава или деревья, за один вызов отрисовки, сокращая время обработки, необходимое для нескольких похожих объектов, до времени обработки одного. [ 51 ]
Директ3Д 10.1
[ редактировать ]Директ3Д 10.1 [ 52 ] был анонсирован Microsoft вскоре после выпуска Direct3D 10 как незначительное обновление. Спецификация была завершена с выпуском DirectX SDK в ноябре 2007 года, а среда выполнения поставлялась с пакетом для Windows Vista обновления 1 , который доступен с середины марта 2008 года.
Direct3D 10.1 устанавливает еще несколько стандартов качества изображения для поставщиков графики и дает разработчикам больше контроля над качеством изображения. [ 53 ] [ 54 ] Функции включают более точный контроль над сглаживанием (как мультисэмплинг, так и суперсэмплинг с затенением для каждого семпла и контролем приложения над положением сэмпла) и большую гибкость некоторых существующих функций (массивы кубических карт и независимые режимы смешивания). Аппаратное обеспечение уровня Direct3D 10.1 должно поддерживать следующие функции: Мультисэмплинг был улучшен для обобщения прозрачности на основе покрытия и повышения эффективности работы мультисэмплинга с многопроходным рендерингом, улучшенное поведение при отсеивании – грани с нулевой областью отбраковываются автоматически; это влияет только на каркасный рендеринг, независимые режимы наложения для каждой цели рендеринга, новое выполнение пиксельного шейдера с частотой дискретизации с примитивной растеризацией, увеличенная полоса пропускания этапа конвейера, поверхности MSAA цвета и глубины/трафарета теперь могут использоваться с CopyResource как источник или место назначения, MultisampleEnable влияет только на растеризацию линий (точки и треугольники не затрагиваются) и используется для выбора алгоритма рисования линий. Это означает, что некоторая растеризация мультисэмпла из Direct3D 10 больше не поддерживается. Инструкции по выборке текстур — sample_c и sample_c_lz определены для работы как с Text2DArrays, так и с TextureCubeArrays, используют элемент Location (альфа-компонент) для указания индекса массива, поддержка TextureCubeArrays.
- Обязательная 32-битная фильтрация с плавающей запятой .
- Правила с плавающей запятой — для операций с плавающей запятой используются те же правила IEEE-754, ЗА ИСКЛЮЧЕНИЕМ 32-битных операций с плавающей запятой, которые были ужесточены для получения результата в пределах 0,5 единицы последнего разряда (0,5 ULP) от бесконечно точного результата. Это касается сложения, вычитания и умножения. (точность до 0,5 ULP для умножения, 1,0 ULP для обратного).
- Форматы. Точность смешивания float16 увеличена до 0,5 ULP. Смешение также требуется для форматов UNORM16/SNORM16/SNORM8.
- Преобразование формата при копировании между определенными 32/64/128-битными предварительно структурированными типизированными ресурсами и сжатыми представлениями той же разрядности.
- Обязательная поддержка 4x MSAA для всех целей рендеринга, кроме R32G32B32A32 и R32G32B32. [ 55 ]
- Шейдерная модель 4.1
В отличие от Direct3D 10, для которого строго требовались аппаратные средства и интерфейсы драйверов класса Direct3D 10, среда выполнения Direct3D 10.1 может работать на оборудовании Direct3D 10.0, используя концепцию « уровней функций ». [ 56 ] [ 57 ] [ 58 ] но новые функции поддерживаются исключительно новым оборудованием, имеющим уровень функций 10_1.
Единственным доступным оборудованием Direct3D 10.1 по состоянию на июнь 2008 года были серии Radeon HD 3000 и Radeon HD 4000 от ATI ; в 2009 году к ним присоединились графические процессоры Chrome 430/440GT от S3 Graphics и некоторые младшие модели серии GeForce 200 от Nvidia . В 2011 году чипсеты Intel начали поддерживать Direct3D 10.1 с появлением Intel HD Graphics 2000 (GMA HD).
Директ3Д 11
[ редактировать ]Директ3Д 11 [ 59 ] был выпущен как часть Windows 7. Он был представлен на Gamefest 2008 22 июля 2008 г. и продемонстрирован на технической конференции Nvision 08 26 августа 2008 г. [ 60 ] [ 61 ] Техническая предварительная версия Direct3D 11 была включена в выпуск DirectX SDK от ноября 2008 года. [ 62 ] AMD представила работающее оборудование DirectX11 на выставке Computex 3 июня 2009 года, запустив несколько образцов DirectX 11 SDK. [ 63 ]
Среда выполнения Direct3D 11 может работать на оборудовании и драйверах классов Direct3D 9 и 10.x, используя концепцию «уровней функций» , расширяя функциональные возможности, впервые представленные в среде выполнения Direct3D 10.1. [ 56 ] [ 64 ] [ 65 ] Уровни функций позволяют разработчикам унифицировать конвейер рендеринга в рамках API Direct3D 11 и использовать улучшения API, такие как лучшее управление ресурсами и многопоточность, даже на картах начального уровня, хотя расширенные функции, такие как новые модели шейдеров и этапы рендеринга, будут доступны только на более поздних версиях. Аппаратное обеспечение уровня. [ 64 ] [ 66 ] Существует три профиля «10 уровня 9», которые инкапсулируют различные возможности популярных карт DirectX 9.0a, а каждый из Direct3D 10, 10.1 и 11 имеет отдельный уровень функций; каждый верхний уровень является строгим надмножеством нижнего уровня. [ 67 ]
Ранее тесселяция рассматривалась для Direct3D 10, но позже от нее отказались. Графические процессоры, такие как Radeon R600, оснащены механизмом тесселяции, который можно использовать с Direct3D 9/10/10.1. [ 68 ] [ 69 ] [ 70 ] и OpenGL, [ 71 ] но он несовместим с Direct3D 11 (по данным Microsoft). Старое графическое оборудование, такое как Radeon 8xxx, GeForce 3/4, поддерживало другую форму тесселяции (патчи RT, N-патчи), но эти технологии так и не нашли широкого применения. Таким образом, их поддержка была прекращена на новом оборудовании.
Microsoft также намекнула на другие функции, такие как независимая от порядка прозрачность , которая никогда не предоставлялась API Direct3D, но почти прозрачно поддерживалась ранним оборудованием Direct3D, таким как PowerVR линейка чипов от Videologic.
Директ3Д 11.0
[ редактировать ]Возможности Direct3D 11.0 включают: поддержку модели шейдеров 5.0, динамическое связывание шейдеров, адресуемые ресурсы, дополнительные типы ресурсов, [ 72 ] подпрограммы, создание экземпляров геометрии, покрытие входными данными пиксельного шейдера, программируемая интерполяция входных данных, новые форматы сжатия текстур (1 новый формат LDR и 1 новый формат HDR), фиксаторы текстур для ограничения предварительной загрузки WDDM, требуется 8-бит субтекселей и точность sub-mip при фильтрации текстур, ограничения текстур 16K, Gather4 (поддержка для многокомпонентных текстур, поддержка программируемых смещений), DrawIndirect, консервативный oDepth, Depth Bias, [ 73 ] [ 74 ] адресный поток вывода, ограничение MIP-карты для каждого ресурса, области просмотра с плавающей запятой, инструкции преобразования шейдеров, улучшенная многопоточность.
- Шейдерная модель 5 [ 75 ]
- Поддержка тесселяции [ 76 ] и шейдеры тесселяции [ 77 ] для увеличения во время выполнения количества видимых полигонов из полигональной модели с низкой детализацией
- Многопоточный рендеринг — для рендеринга одного и того же объекта устройства Direct3D из разных потоков для многоядерных процессоров.
- Вычислительные шейдеры — которые предоставляют конвейер шейдеров для неграфических задач, таких как потоковая обработка и ускорение физики, по духу схожие с тем, чего OpenCL , Nvidia CUDA , ATI Stream и HLSL Shader Model 5. достигают, среди прочего, [ 60 ] [ 61 ]
- Обязательная поддержка 4x MSAA для всех целей рендеринга и 8x MSAA для всех форматов целей рендеринга, кроме форматов R32G32B32A32. [ 55 ]
Другими примечательными особенностями являются добавление двух новых алгоритмов сжатия текстур для более эффективной упаковки высококачественных и HDR/альфа-текстур, а также увеличенный кэш текстур .
Впервые появившаяся в версии Release Candidate , Windows 7 включает в себя первую выпущенную поддержку Direct3D 11. Обновление платформы для Windows Vista включает полнофункциональную среду выполнения Direct3D 11 и обновление DXGI 1.1, а также другие связанные компоненты из Windows 7, такие как WARP , Direct2D , DirectWrite и WIC . [ 78 ] [ 79 ]
Директ3Д 11.1
[ редактировать ]Директ3Д 11.1 [ 80 ] [ 81 ] — это обновление API, поставляемого с Windows 8 . [ 82 ] [ 83 ] Среда выполнения Direct3D в Windows 8 включает DXGI 1.2. [ 84 ] и требует нового WDDM 1.2 [ 85 ] драйверы устройств. [ 86 ] Предварительная версия Windows SDK для Windows 8 Developer Preview была выпущена 13 сентября 2011 года.
Новый API включает в себя трассировку шейдеров и усовершенствования компилятора HLSL, поддержку скалярных типов данных HLSL минимальной точности, [ 87 ] БПЛА (представления неупорядоченного доступа) на каждом этапе конвейера, растеризация, независимая от цели (TIR), возможность сопоставления SRV динамических буферов с помощью NO_OVERWRITE, шейдерная обработка видеоресурсов, возможность использования логических операций в цели рендеринга, возможность привязки поддиапазона буфера констант в шейдер и его извлечения, возможность создания более крупных константных буферов, чем может получить доступ шейдер, возможность отбрасывания ресурсов и представлений ресурсов, возможность изменения подресурсов с помощью новых параметров копирования, возможность принудительного подсчета выборок для создания растеризатора состояние, возможность очистить все или часть представления ресурса, возможность использовать Direct3D в процессах сеанса 0, возможность указать пользовательские плоскости отсечения в HLSL на уровне функций 9 и выше, поддержка теневого буфера на уровне функций 9, поддержка воспроизведения видео , расширенная поддержка общих ресурсов Text2D и оперативное переключение между контекстами Direct3D 10 и 11 и уровнями функций. Direct3D 11.1 включает новый уровень функций 11_1, который вносит незначительные обновления в язык шейдеров, такие как увеличенные буферы констант и дополнительные инструкции двойной точности, а также улучшенные режимы смешивания и обязательную поддержку 16-битных цветовых форматов для повышения производительности ввода. графические процессоры уровня, такие как Графика Intel HD . [ 86 ] [ 88 ] WARP обновлен для поддержки уровня функций 11_1.
для Обновление платформы Windows 7 включает ограниченный набор функций Direct3D 11.1, однако компоненты, зависящие от WDDM 1.2, такие как уровень функций 11_1 и связанные с ним API или четырехкратная буферизация для стереоскопического рендеринга, отсутствуют. [ 89 ] [ 90 ]
Директ3Д 11.2
[ редактировать ]Директ3Д 11.2 [ 91 ] [ 92 ] [ 93 ] поставлялся с Windows 8.1 . [ 94 ] [ 95 ] Для новых аппаратных функций требуется DXGI 1.3. [ 96 ] с WDDM 1.3 [ 97 ] драйверы и включают в себя модификацию и связывание шейдеров во время выполнения, граф связывания функций (FLG), компилятор входящих сообщений HLSL , возможность аннотировать графические команды. [ 98 ] Уровни функций 11_0 и 11_1 предоставляют дополнительную поддержку мозаичных ресурсов с ограничением уровня детализации шейдера (Tier2). [ 99 ] Последняя функция эффективно обеспечивает контроль над аппаратными таблицами страниц , присутствующими во многих современных графических процессорах. [ 100 ] WARP был обновлен для полной поддержки новых функций. [ 94 ] [ 101 ] Однако функционального уровня 11_2 нет; новые функции рассредоточены по существующим уровням функций. Те, которые зависят от оборудования, можно проверить индивидуально через CheckFeatureSupport
. [ 95 ] [ 102 ] Некоторые из «новых» функций Direct3D 11.2 фактически раскрывают некоторые старые аппаратные функции более детально; например D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT
обеспечивает частичную поддержку создания экземпляров на аппаратном уровне функций 9_1 и 9_2, в противном случае полностью поддерживается, начиная с уровня функций 9_3. [ 103 ]
Директ3D 11.X
Direct3D 11.X — это расширенная версия DirectX 11.2, работающая на Xbox One . [ 104 ] [ 105 ] Он включает в себя некоторые функции, такие как пакеты рисования, которые позже были анонсированы как часть DirectX 12. [ 106 ]
Директ3Д 11.3
[ редактировать ]Директ3Д 11.3 [ 107 ] отправлен в июле 2015 г. вместе с Windows 10; он включает в себя незначительные функции рендеринга из Direct3D 12, сохраняя при этом общую структуру API Direct3D 11.x. [ 108 ] [ 109 ] [ 110 ] В Direct3D 11.3 представлены дополнительные эталонные значения трафарета, заданные шейдером, типизированные нагрузки представлений неупорядоченного доступа, упорядоченные представления растеризатора (ROV), дополнительный стандартный Swizzle, дополнительное наложение текстур по умолчанию, консервативная растеризация (из трех уровней), [ 111 ] дополнительная поддержка унифицированного доступа к памяти (UMA) и дополнительные мозаичные ресурсы (уровень 2) (мозаичные ресурсы тома). [ 112 ]
Директ3Д 11.4
[ редактировать ]- Direct3D 11.4 версии 1511. Первоначальная версия Direct3D 11.4 была представлена вместе с обновлением Windows 10 Threshold 2 (версия 1511), улучшающим поддержку внешних графических адаптеров и DXGI 1.5. [ 113 ]
- Direct3D 11.4 версии 1607 — обновленный Direct3D 11.4 с юбилейным обновлением Windows 10 (версия 1607) включает поддержку WDDM 2.1 и формата UHDTV HDR10 ( ST 2084 ), а также поддержку переменной частоты обновления для приложений UWP.
Директ3Д 12
[ редактировать ]Директ3Д 12 [ 114 ] обеспечивает более низкий уровень аппаратной абстракции, чем в предыдущих версиях, что позволяет будущим приложениям значительно улучшить многопоточное масштабирование и снизить загрузку ЦП. Это достигается за счет лучшего сопоставления уровня абстракции Direct3D с базовым оборудованием с помощью новых функций, таких как косвенное рисование, таблицы дескрипторов, краткие объекты состояния конвейера и пакеты вызовов отрисовки. Снижение накладных расходов на драйверы — главная привлекательность Direct3D 12, как и AMD Mantle ; [ 114 ] по словам ведущего разработчика Макса Макмаллена, основная цель Direct3D 12 — достичь «эффективности на уровне консоли» и улучшить параллелизм процессоров. [ 115 ] [ 116 ] [ 117 ]
Хотя Nvidia объявила о широкой поддержке Direct3D 12, они также были несколько сдержанны в отношении универсальной привлекательности нового API, отмечая, что, хотя разработчики игровых движков могут с энтузиазмом относиться к непосредственному управлению ресурсами графического процессора из кода своего приложения, «многие [другие] люди не были бы счастливы, если бы им пришлось это сделать. [ 118 ]
Некоторые новые аппаратные функции также присутствуют в Direct3D 12. [ 110 ] [ 119 ] [ 120 ] включая модель шейдера 5.1, [ 121 ] Объемные плиточные ресурсы (уровень 2), [ 121 ] Справочное значение трафарета, заданное шейдером, типизированная загрузка БПЛА, консервативная растеризация (уровень 1), улучшенные коллизии и отбраковка с помощью консервативной растеризации, упорядоченные представления растеризатора (ROV), стандартные Swizzles, наложение текстур по умолчанию, цепочки замены, swizzled ресурсы и сжатые ресурсы , [ 122 ] дополнительные режимы наложения , [ 123 ] программируемое смешивание и эффективная независимая от порядка прозрачность (OIT) с БПЛА с пиксельным упорядочением. [ 124 ]
Объекты состояния конвейера (PSO) [ 125 ] произошли от Direct3D 11, а новые краткие состояния конвейера означают, что процесс был упрощен. DirectX 11 предлагал гибкость в изменении его состояний в ущерб производительности. Упрощение процесса и унификация конвейеров (например, состояний пиксельных шейдеров) приводят к более оптимизированному процессу, значительно сокращая накладные расходы и позволяя видеокарте выполнять больше вызовов для каждого кадра. После создания PSO является неизменяемым. [ 126 ]
Корневые подписи вводят конфигурации для связи списков команд с ресурсами, необходимыми шейдерам. Они определяют структуру ресурсов, которые будут использовать шейдеры, и указывают, какие ресурсы будут привязаны к конвейеру. Список графических команд имеет как графическую, так и корневую сигнатуру вычислений, тогда как список вычислительных команд будет иметь только корневую сигнатуру вычислений. Эти корневые подписи полностью независимы друг от друга. Хотя корневая подпись определяет типы данных, которые могут использовать шейдеры, она не определяет и не отображает фактическую память или данные. [ 127 ]
Корневые параметры — это один из типов записей корневой подписи. Фактические значения корневых параметров, которые изменяются во время выполнения, называются корневыми аргументами. Это данные, которые считывают шейдеры. [ 127 ]
Direct3D 12 также учился у AMD Mantle [ нужна ссылка ] в списках команд и пакетах, чтобы обеспечить более сбалансированную совместную работу процессора и графического процессора.
В Direct3D 11 команды передаются от ЦП к графическому процессору одна за другой, а графический процессор обрабатывает эти команды последовательно. Это означает, что команды ограничены скоростью, с которой ЦП может отправлять эти команды линейным образом. В DirectX 12 эти команды отправляются в виде списков команд, содержащих всю необходимую информацию в одном пакете. Тогда графический процессор способен вычислить и выполнить эту команду за один процесс, без необходимости ждать дополнительной информации от ЦП.
В этих списках команд есть пакеты. Если раньше команды просто принимались, использовались, а затем забывались графическим процессором, пакеты можно использовать повторно. Это снижает рабочую нагрузку на графический процессор и означает, что повторяющиеся ресурсы можно использовать гораздо быстрее.
Хотя привязка ресурсов в настоящее время довольно удобна для разработчиков в Direct3D 11, ее неэффективность означает, что некоторые современные аппаратные возможности используются недостаточно. Когда игровому движку требовались ресурсы DX11, ему приходилось каждый раз получать данные с нуля, что означало повторение процессов и ненужное использование. В Direct3D 12 кучи и таблицы дескрипторов означают, что наиболее часто используемые ресурсы могут быть распределены разработчиками в таблицах, к которым графический процессор может быстро и легко получить доступ. Это может способствовать повышению производительности по сравнению с Direct3D 11 на аналогичном оборудовании, но также требует больше работы для разработчика.
Динамические кучи также являются функцией Direct3D 12. [ 128 ]
Direct3D 12 обеспечивает явную поддержку нескольких адаптеров, что позволяет явно управлять системами конфигурации нескольких графических процессоров. Такие конфигурации могут быть построены с использованием графических адаптеров одного и того же производителя оборудования, а также разных производителей оборудования. [ 129 ]
Экспериментальная поддержка D3D 12 для Windows 7 SP1 была выпущена Microsoft в 2019 году через специальный пакет NuGet. [ 130 ] [ 131 ] [ 132 ]
- Direct3D 12, версия 1607. В юбилейном обновлении Windows 10 (версия 1607), выпущенном 2 августа 2016 г., среда выполнения Direct3D 12 была обновлена для поддержки конструкций явной многопоточности и межпроцессного взаимодействия, что позволяет разработчикам массово использовать преимущества современных технологий. параллельные графические процессоры. [ 133 ] Другие функции включают обновленные корневые сигнатуры версии 1.1, а также поддержку формата HDR10 и переменной частоты обновления .
- Direct3D 12 версии 1703. В обновлении Windows 10 Creators Update (версия 1703), выпущенном 11 апреля 2017 г., среда выполнения Direct3D 12 была обновлена для поддержки Shader Model 6.0 и DXIL . а для модели шейдеров 6.0 требуется юбилейное обновление Windows 10 (версия 1607), WDDM 2.1. Новые графические функции — тестирование границ глубины и программируемое MSAA. [ 134 ]
- Direct3D 12 версии 1709 — Direct3D в осеннем обновлении Windows 10 Creators Update (версия 1709), выпущенном 17 октября 2017 г., включает улучшенную отладку. [ 134 ]
- Direct3D 12 версии 1809 — обновление Windows 10 за октябрь 2018 г. (версия 1809) обеспечивает поддержку DirectX Raytracing , поэтому графические процессоры могут извлечь выгоду из его API.
- Direct3D 12 версии 1903 — обновление Windows 10 за май 2019 г. (версия 1903) обеспечивает поддержку DirectML и NPU . [ 135 ] [ 136 ]
- Direct3D 12 версии 2004 г. — обновление Windows 10 за май 2020 г. (версия 2004 г.) обеспечивает поддержку DirectX 12 Ultimate , шейдеров сетки и усиления, [ 137 ] Отзыв о пробнике, [ 138 ] а также DirectX Raytracing уровня 1.1. [ 139 ] и улучшения распределения памяти. [ 140 ]
- Direct3D 12 версии 21H2 — Windows 10 версии 21H2 и Windows 11 версии 21H2 обеспечивают поддержку DirectStorage .
Архитектура
[ редактировать ]Этот раздел необходимо обновить . ( август 2014 г. ) |
Direct3D — это компонент подсистемы API Microsoft DirectX . Целью Direct3D является абстрагирование связи между графическим приложением и драйверами графического оборудования. Он представлен как тонкий абстрактный слой на уровне, сравнимом с GDI (см. прилагаемую диаграмму). Direct3D содержит множество функций, которых нет в GDI.
Direct3D — это графический API немедленного режима . Он обеспечивает низкоуровневый интерфейс для каждой 3D-функции видеокарты ( преобразования, обрезка, освещение , материалы , текстуры , буферизация глубины и т. д.). более высокого уровня Когда-то у него был компонент сохраненного режима , который теперь официально прекращен.
Непосредственный режим Direct3D представляет три основные абстракции: устройства , ресурсы и цепочки обмена (см. прилагаемую диаграмму). Устройства отвечают за рендеринг 3D-сцены. Они предоставляют интерфейс с различными возможностями рендеринга. Например, моно- устройство обеспечивает рендеринг белого и черного цветов, а устройство RGB — цветное. Существует четыре типа устройств:
- Устройство HAL ( уровень аппаратной абстракции ): для устройств, поддерживающих аппаратное ускорение.
- Эталонное устройство: имитирует новые функции, еще не доступные в аппаратном обеспечении. необходимо установить Direct3D SDK . Для использования этого типа устройства
- Нулевое эталонное устройство: Ничего не делает. Это устройство используется, когда SDK не установлен и запрашивается эталонное устройство.
- Сменное программное устройство: выполняет программный рендеринг. Это устройство было представлено с DirectX 9.0 . [ 141 ]
Каждое устройство содержит по крайней мере одну цепочку обмена . Цепочка обмена состоит из одной или нескольких поверхностей заднего буфера . Рендеринг происходит в заднем буфере .
Более того, устройства содержат набор ресурсов ; конкретные данные, используемые во время рендеринга. Каждый ресурс имеет четыре атрибута:
- Тип : определяет тип ресурса: поверхность, объем, текстура, текстура куба, текстура объема, текстура поверхности, буфер индексов или буфер вершин.
- Бассейн : [ 142 ] Описывает, как ресурс управляется средой выполнения и где он хранится. В пуле по умолчанию ресурс будет существовать только в памяти устройства. Ресурсы в управляемом пуле будут храниться в системной памяти и при необходимости отправляться на устройство. Ресурсы в пуле системной памяти будут существовать только в системной памяти. Наконец, временный пул по сути аналогичен пулу системной памяти, но ресурсы не ограничены аппаратными ограничениями.
- Формат : описывает расположение данных ресурса в памяти. Например, значение формата D3DFMT_R8G8B8 24 бита означает глубину цвета (8 бит для красного, 8 бит для зеленого и 8 бит для синего).
- Использование : описывает с помощью набора битов флагов , как ресурс будет использоваться приложением. Эти флаги определяют, какие ресурсы используются в шаблонах динамического или статического доступа. Значения статических ресурсов не изменяются после загрузки, тогда как значения динамических ресурсов могут быть изменены.
Direct3D реализует два режима отображения:
- Полноэкранный режим: приложение Direct3D генерирует всю графическую информацию для устройства отображения. В этом режиме Direct3D автоматически захватывает Alt-Tab и устанавливает/восстанавливает разрешение экрана и формат пикселей без вмешательства программиста. Это также создает множество проблем при отладке из-за «эксклюзивного кооперативного режима». [ нужна ссылка ]
- Оконный режим: результат отображается внутри области окна. Direct3D взаимодействует с GDI для создания графического вывода на дисплее. Оконный режим может иметь тот же уровень производительности, что и полноэкранный, в зависимости от поддержки драйверов.
Трубопровод
[ редактировать ]API Microsoft Direct3D 11 определяет процесс преобразования группы вершин, текстур, буферов и состояния в изображение на экране. Этот процесс описывается как конвейер рендеринга, состоящий из нескольких отдельных этапов. Различные этапы конвейера Direct3D 11: [ 143 ]
- Входной ассемблер : [ 144 ] Считывает данные вершин из буфера вершин, предоставленного приложением, и передает их по конвейеру.
- Вершинный шейдер : [ 145 ] Выполняет операции над одной вершиной одновременно, например преобразования, скиннинг или освещение.
- Халл-шейдер : [ 146 ] Выполняет операции над наборами контрольных точек исправлений и генерирует дополнительные данные, известные как константы исправлений.
- Тесселятор : [ 147 ] Разделяет геометрию для создания представлений корпуса более высокого порядка.
- Доменный шейдер : [ 148 ] Выполняет операции над вершинами, выводимыми на этапе тесселяции, почти так же, как вершинный шейдер.
- Геометрический шейдер : [ 149 ] Обрабатывает целые примитивы, такие как треугольники, точки или линии. Учитывая примитив, на этом этапе он отбрасывается или генерируется один или несколько новых примитивов.
- Поток-выход : [ 150 ] Может записать в память результаты предыдущего этапа. Это полезно для рециркуляции данных обратно в конвейер.
- Растеризатор : [ 151 ] [ 152 ] Преобразует примитивы в пиксели, передавая эти пиксели в пиксельный шейдер. Растеризатор также может выполнять другие задачи, такие как обрезка невидимого или интерполяция данных вершин в попиксельные данные.
- Пиксельный шейдер : [ 153 ] Определяет конечный цвет пикселя, который будет записан в цель рендеринга, а также может вычислить значение глубины, которое будет записано в буфер глубины.
- Выход-Слияние : [ 154 ] Объединяет различные типы выходных данных ( значения пиксельных шейдеров , альфа-смешение, глубину/трафарет...) для получения окончательного результата.
Стадии конвейера, показанные в круглой рамке, полностью программируются. Приложение предоставляет программу шейдера, которая описывает точные операции, которые необходимо выполнить на этом этапе. Многие этапы являются необязательными и могут быть полностью отключены.
Уровни функций
[ редактировать ]
В Direct3D 5–9, когда в новых версиях API появилась поддержка новых аппаратных возможностей, большинство из них были необязательными — каждый поставщик графики поддерживал свой собственный набор поддерживаемых функций в дополнение к основным необходимым функциям. Поддержка отдельных функций должна была определяться с использованием «битов возможностей» или «капсул», что делало программирование графики между поставщиками сложной задачей.
Direct3D 10 представил значительно упрощенный набор обязательных требований к оборудованию, основанный на наиболее популярных возможностях Direct3D 9, которых должны были придерживаться все поддерживающие видеокарты, с лишь несколькими дополнительными возможностями для поддерживаемых форматов текстур и операций.
В Direct3D 10.1 добавлено несколько новых обязательных требований к оборудованию, и, чтобы оставаться совместимыми с оборудованием и драйверами версии 10.0, эти функции были инкапсулированы в два набора, называемых «уровнями функций», причем уровень 10.1 образует надмножество уровня 10.0. Поскольку в Direct3D 11.0, 11.1 и 12 была добавлена поддержка нового оборудования, новые обязательные возможности были дополнительно сгруппированы на верхних уровнях функций. [ 56 ]
В Direct3D 11 также представлен «10level9», подмножество API Direct3D 10 с тремя уровнями функций, инкапсулирующими различные карты Direct3D 9 с WDDM драйверами , а в Direct3D 11.1 вновь представлены несколько дополнительных функций для всех уровней. [ 155 ] которые были расширены в Direct3D 11.2 и более поздних версиях.
Такой подход позволяет разработчикам унифицировать конвейер рендеринга и использовать одну версию API как на новом, так и на старом оборудовании, используя преимущества улучшений производительности и удобства использования в новой среде выполнения. [ 60 ]
Новые уровни функций представлены в обновленных версиях API и обычно инкапсулируют:
- основные обязательные функции – (Direct3D 11.0, 12),
- несколько незначительных функций (Direct3D 10.1, 11.1) или
- общий набор ранее необязательных функций (Direct3D 11.0 «10 уровень 9»).
Каждый верхний уровень представляет собой строгую надстройку нижнего уровня, содержащую лишь несколько новых или ранее необязательных функций, которые переходят в базовую функциональность на верхнем уровне. [ 67 ] Более продвинутые функции основной версии Direct3D API, такие как новые модели шейдеров и этапы рендеринга, доступны только на оборудовании более высокого уровня. [ 65 ] [ 66 ]
Существуют отдельные возможности для указания поддержки определенных операций с текстурами и форматов ресурсов; они указываются для каждого формата текстуры с использованием комбинации флагов возможностей. [ 156 ] [ 157 ]
Уровни функций используют подчеркивание в качестве разделителя (т. е. «12_1»), а версии API/среды выполнения используют точку (т. е. «Direct3D 11.4»).
Direct3D 11 уровней
[ редактировать ]В Direct3D 11.4 для Windows 10 имеется девять уровней функций, предоставляемых D3D_FEATURE_LEVEL
структура; уровни 9_1, 9_2 и 9_3 (вместе известные как Direct3D 10 Level 9 ) повторно инкапсулируют различные функции популярных карт Direct3D 9, уровни 10_0, 10_1 относятся к соответствующим устаревшим версиям Direct3D 10, [ 65 ] 11_0 и 11_1 отражают функции, представленные в API и средах выполнения Direct3D 11 и Direct3D 11.1, а уровни 12_0 и 12_1 соответствуют новым уровням функций, представленным в API Direct3D 12.
Уровень функции | Обязательные аппаратные функции | Дополнительные функции |
---|---|---|
9_1 | Шейдерная модель 2.0 ( vs_2_0 / ps_2_0 ), текстуры 2K, объемные текстуры, запросы событий, BC1-3 (также известный как DXTn), некоторые другие специфические возможности.
|
— |
9_2 | Запросы окклюзии, форматы с плавающей запятой (без смешивания), расширенные ограничения, все функции 9_1. | |
9_3 | vs_2_a / ps_2_x с созданием экземпляров и дополнительными ограничениями шейдеров, текстурами 4K, несколькими целями рендеринга (4 MRT), смешиванием с плавающей запятой (ограниченно), всеми функциями 9_2.
| |
10_0 | Модель шейдера 4.0, геометрический шейдер, потоковый вывод, альфа-покрытие, текстуры 8K, текстуры MSAA, двусторонний трафарет, общие виды целевых объектов рендеринга, массивы текстур, BC4/BC5, полная поддержка формата с плавающей запятой, все функции 9_3. | Логические операции смешивания, DirectCompute (CS 4.0/4.1), расширенные форматы пикселей. [ 155 ] |
10_1 | Модель шейдеров 4.1, массивы кубических карт, расширенное MSAA, все функции 10_0. | |
11_0 | Модель шейдеров 5.0/5.1, шейдеры оболочки и домена, DirectCompute (CS 5.0/5.1), текстуры 16K, BC6H/BC7, расширенные форматы пикселей, все функции 10_1. | |
11_1 | Логические операции смешивания, независимая от цели растеризация, БПЛА на каждом этапе конвейера с увеличенным количеством слотов, рендеринг только БПЛА с принудительным количеством выборок, постоянное смещение буфера и частичные обновления, все функции 11_0. | |
12_0 | Плиточные ресурсы уровня 2 (Texture2D), типизированные загрузки БПЛА (дополнительные форматы). | |
12_1 | Консервативная растеризация уровня 1, упорядоченные представления растеризатора. |
Direct3D 12 уровней
[ редактировать ]Для Direct3D 12 для Windows 10 требуется графическое оборудование, соответствующее уровням функций 11_0 и 11_1, которое поддерживает преобразование адресов виртуальной памяти, и требует драйверов WDDM 2.0. Есть два новых уровня функций, 12_0 и 12_1, которые включают в себя некоторые новые функции, представленные Direct3D 12, которые являются необязательными на уровнях 11_0 и 11_1. [ 158 ] Некоторые ранее необязательные функции перенесены в качестве базовых на уровнях 11_0 и 11_1. Shader Model 6.0 была выпущена вместе с обновлением Windows 10 Creators Update и требует юбилейного обновления Windows 10 и драйверов WDDM 2.1.
Уровень | Обязательные функции | Дополнительные функции |
---|---|---|
11_0 | Все обязательные функции 11_0 из Direct3D 11, модель шейдеров 5.1, уровень привязки ресурсов 1. | Логические операции смешивания, операции с плавающей запятой двойной точности (64 бита), минимальная точность с плавающей запятой (10 или 16 бит).
Привязка ресурсов (три уровня), мозаичные ресурсы (четыре уровня), консервативная растеризация (три уровня), опорное значение трафарета из пиксельного шейдера, упорядоченные представления растеризатора, типизированные загрузки БПЛА для дополнительных форматов, создание экземпляров представлений. Модель шейдера 6.0–6.7 Метакоманды, переменная скорость затенения, трассировка лучей, шейдеры сетки, обратная связь сэмплера. Другие дополнительные функции. [ 159 ] |
11_1 | ||
12_0 | Уровень привязки ресурсов 2, мозаичные ресурсы уровня 2 (Texture2D), типизированные загрузки БПЛА (дополнительные форматы), модель шейдера 6.0. | |
12_1 | Консервативная растеризация уровня 1, упорядоченные представления растеризатора. | |
12_2 | DirectX 12 Ultimate : модель шейдеров 6.5, трассировка лучей уровня 1.1, сетчатые шейдеры, шейдинг с переменной скоростью, обратная связь сэмплера, уровень привязки ресурсов 3, мозаичный уровень ресурсов 3 (Texture3D), консервативная растеризация уровня 3, 40-битное виртуальное адресное пространство. |
Direct3D 12 представляет обновленную модель привязки ресурсов, которая позволяет явно управлять памятью. Абстрактные объекты «представления ресурсов» [ 160 ] теперь представлены дескрипторами ресурсов, которые выделяются с помощью кучи памяти и таблиц. [ 161 ] Уровни привязки ресурсов определяют максимальное количество ресурсов, к которым можно обратиться с помощью CBV (представление постоянного буфера), SRV (представление ресурсов шейдера) и UAV (представление неупорядоченного доступа), а также блоков сэмплера текстур. Аппаратное обеспечение уровня 3 позволяет использовать ресурсы без привязки, ограниченные только размером кучи дескрипторов, в то время как оборудование уровней 1 и 2 накладывает некоторые ограничения на количество дескрипторов («представлений»), которые могут использоваться одновременно. [ 162 ] [ 163 ]
Ограничения ресурсов | Уровень 1 | Уровень 2 | Уровень 3 |
---|---|---|---|
Дескрипторы в куче CBV/SRV/UAV | 1М | 1М | >1 млн |
CBV на этап шейдера | 14 | 14 | полная куча |
SRV на этап шейдера | 128 | полная куча | |
БПЛА на всех этапах | 8, 64 † | 64 | полная куча |
Сэмплеры на этапе шейдера | 16 | полная куча | |
† 64 слота на оборудовании функционального уровня 11_1 |
Многопоточность
[ редактировать ]Модель драйвера WDDM в Windows Vista и более поздних версиях поддерживает сколь угодно большое количество контекстов выполнения (или потоков) в аппаратном или программном обеспечении. Windows XP поддерживала только многозадачный доступ к Direct3D, где отдельные приложения могли выполняться в разных окнах и иметь аппаратное ускорение, а ОС имела ограниченный контроль над тем, что может делать графический процессор, и драйвер мог произвольно переключать потоки выполнения.
Возможность запуска среды выполнения в многопоточном режиме появилась в среде выполнения Direct3D 11. Каждый контекст выполнения представлен представлением ресурсов графического процессора. Контексты выполнения защищены друг от друга, однако мошенническое или плохо написанное приложение может взять на себя управление выполнением в драйвере пользовательского режима и потенциально получить доступ к данным другого процесса в памяти графического процессора, отправив измененные команды. Хотя хорошо написанное приложение защищено от доступа со стороны другого приложения, оно все равно должно защищать себя от сбоев и потери устройства, вызванных другими приложениями.
ОС самостоятельно управляет потоками, позволяя оборудованию переключаться с одного потока на другой, когда это необходимо, а также управляет памятью и подкачкой (в системную память и на диск) посредством интегрированного управления памятью ядра ОС.
Более детальное переключение контекста, то есть возможность переключения двух потоков выполнения на уровне инструкций шейдера вместо уровня одной команды или даже пакета команд, было представлено в WDDM/DXGI 1.2, поставляемом с Windows 8. [ 86 ] Это устраняет потенциальную проблему планирования, когда приложение будет очень долго выполнять одну команду или пакет команд и его придется завершать с помощью сторожевого таймера ОС. [ 164 ]
WDDM 2.0 и DirectX 12 были переработаны, чтобы обеспечить возможность полностью многопоточных вызовов отрисовки. Это было достигнуто за счет того, что все ресурсы стали неизменяемыми (то есть доступными только для чтения), сериализацией состояний рендеринга и использованием пакетов вызовов отрисовки. Это позволяет избежать сложного управления ресурсами в драйвере режима ядра, делая возможными множественные повторные вызовы драйвера пользовательского режима через контексты одновременного выполнения, предоставляемые отдельными потоками рендеринга в одном приложении.
Direct3D для мобильных устройств
[ редактировать ]Direct3D Mobile является производным от Direct3D, но требует меньше памяти . Windows CE обеспечивает поддержку Direct3D Mobile. [ 165 ]
Альтернативные реализации
[ редактировать ]Существуют следующие альтернативные реализации API Direct3D. Они полезны для платформ, отличных от Windows, и для оборудования без некоторых версий поддержки DX:
- WineD3D — проект с открытым исходным кодом Wine имеет рабочие реализации API Direct3D посредством перевода в OpenGL . [ 166 ] Реализация Wine также может быть запущена в Windows при определенных условиях. [ 167 ]
- vkd3d — vkd3d — это библиотека 3D-графики с открытым исходным кодом, созданная на основе Vulkan, которая позволяет запускать приложения Direct3D 12 поверх Vulkan . [ 168 ] В основном он используется проектом Wine , [ 169 ] [ 170 ] и теперь включен в проект Valve Proton, входящий в состав Steam для Linux.
- DXVK — слой перевода на основе Vulkan с открытым исходным кодом для Direct3D 10.09.11, который позволяет запускать 3D-приложения в Linux с помощью Wine. [ 171 ] [ 172 ] Используется Proton / Steam. [ 173 ] для Линукса. DXVK способен запускать большое количество современных игр для Windows под Linux.
- Gallium Nine – Gallium Nine позволяет запускать приложения Direct3D 9 в Linux в исходном виде, то есть без какой-либо трансляции вызовов, что обеспечивает скорость, близкую к исходной. Это зависит от Wine и Mesa . [ 178 ] [ 179 ]
Сопутствующие инструменты
[ редактировать ]D3DX
[ редактировать ]Direct3D поставляется с D3DX, библиотекой инструментов, предназначенной для выполнения общих математических вычислений над векторами , матрицами и цветами, расчета матриц просмотра и проекции , сплайн-интерполяции и ряда более сложных задач, таких как компиляция или сборка шейдеров, используемых для программирования 3D-графики. , сжатое хранилище скелетной анимации и стеки матриц. Существует несколько функций, которые обеспечивают сложные операции над 3D- сетками , такие как вычисление касательного пространства, упрощение сетки, предварительно вычисленная передача яркости , оптимизация удобства кэша вершин и чередование, а также генераторы для 3D-текстовых сеток. 2D-функции включают классы для рисования линий экранного пространства, текста и спрайтов на основе системы частиц . Пространственные функции включают в себя различные процедуры пересечения, преобразование из/в барицентрические координаты и ограничивающих рамок генераторы /сфер. D3DX предоставляется как динамически подключаемая библиотека (DLL). D3DX устарел, начиная с Windows 8, и его нельзя использовать в приложениях Магазина Windows. [ 180 ]
Некоторые функции, присутствующие в предыдущих версиях D3DX, были удалены в Direct3D 11 и теперь предоставляются в виде отдельных источников: [ 181 ]
- Windows SDK и Visual Studio [ 182 ]
- Большая часть математической библиотеки была удалена. Вместо этого Microsoft рекомендует использовать библиотеку DirectX Math.
- Математические вычисления сферических гармоник были удалены и теперь распространяются в качестве исходного кода. [ 183 ]
- Платформа Effect была удалена и теперь распространяется в качестве исходного кода через CodePlex. [ 184 ]
- Интерфейс Mesh и функции геометрии были удалены и теперь распространяются в качестве исходного кода через CodePlex в библиотеке обработки геометрии DirectXMesh. [ 185 ]
- Функции текстур были удалены и теперь распространяются в качестве исходного кода через CodePlex в библиотеке обработки текстур DirectXTex. [ 186 ]
- Общие помощники были удалены и теперь распространяются в качестве исходного кода через CodePlex в рамках проекта DirectX Tool Kit (DirectXTK). [ 187 ]
- Атлас текстур изокарт был удален и теперь распространяется в качестве исходного кода через CodePlex в рамках проекта UVAtlas. [ 188 ]
ДХУТ
[ редактировать ]DXUT (также называемый образцом платформы) — это уровень, построенный на основе Direct3D API. Платформа разработана, чтобы помочь программисту тратить меньше времени на рутинные задачи, такие как создание окна, создание устройства, обработка сообщений Windows и обработка событий устройства. DXUT был удален вместе с Windows SDK 8.0 и теперь распространяется в качестве исходного кода через CodePlex. [ 189 ]
См. также
[ редактировать ]- Vulkan – главный конкурент Direct3D 12
- OpenGL – основной конкурент Direct3D до версии 11.
- 3D компьютерная графика
- УГОЛ (программное обеспечение)
- Директдроу
- DirectX — набор API, в которых реализован Direct3D.
- HLSL — язык шейдеров высокого уровня
- Металл (API)
- Мантия (API)
- Шейдер
- Microsoft Сильверлайт
- Веб-графический процессор
Ссылки
[ редактировать ]- ^ «Настройка функциональности трафарета глубины» . Майкрософт.
- ^ «RenderStateManager.UseWBuffer» . Майкрософт.
- ^ «Смешение текстур (Direct3D 9)» . Майкрософт.
- ^ «Смешивание геометрии (Direct3D 9)» . Майкрософт.
- ^ «ХЛСЛ» . Майкрософт.
- ^ «Эффекты (Direct3D 11)» . Майкрософт.
- ^ «Комплект разработки программного обеспечения DirectX, октябрь 2006 г.» . Майкрософт. Архивировано из оригинала 2 ноября 2011 года.
- ^ «Руководство по платформе расширенной растеризации Windows (WARP) – Архитектура и производительность WARP» . MSDN.
- ^ «DirectX 8: повышение реалистичности графики» (PDF) . evga.com . Проверено 6 сентября 2023 г.
- ^ «Главная> Графические процессоры Технология ATI SMARTSHADER — основа Radeon следующего поколения» . anandtech.com . Проверено 6 сентября 2023 г.
- ^ «Вершинные и пиксельные шейдеры» . thg.ru/ . Проверено 6 сентября 2023 г.
- ^ «Вершинные и пиксельные шейдеры» . archive.org . Архивировано из оригинала 16 августа 2004 года . Проверено 6 сентября 2023 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «Загрузки Microsoft DirectX для Windows (Win95, Win98, Win98SE, WinME, Win2000, WinXP)» . www.falconfly.de . Архивировано из оригинала 10 ноября 2006 года . Проверено 11 января 2022 г.
- ^ «Загрузите среду выполнения DirectX 9.0c для конечных пользователей из официального центра загрузки Microsoft» . www.microsoft.com . Архивировано из оригинала 29 июля 2015 года . Проверено 11 января 2022 г.
- ^ «Команда управления Qube Soft» . qubesoft.com. 4 апреля 2017 года. Архивировано из оригинала 6 апреля 2017 года . Проверено 5 апреля 2017 г.
- ^ Перейти обратно: а б Кларо, Николь (апрель 1995 г.). «Дальнейший рендеринг» (PDF) . Журнал разработчиков игр . Архивировано (PDF) из оригинала 26 января 2021 г. Проверено 21 августа 2022 г.
- ^ Прозайз, Джефф (16 мая 1995 г.). «Вступление в Мультимедийную партию» . Журнал ПК . Проверено 20 августа 2022 г.
- ^ Томпсон, Найджел (август 1996 г.). «Создание сцены с использованием сохраненного режима Direct3D» (PDF) . Журнал разработчиков игр . Архивировано (PDF) из оригинала 26 января 2021 г. Проверено 20 августа 2022 г.
- ^ Беркес, Отто (12 апреля 2015 г.). «ДиректХ» . Блог Отто Беркеса . Проверено 22 августа 2022 г.
- ^ Чен, Раймонд (22 января 2004 г.). «Что случилось с DirectX 4?» . Старая новая вещь . Майкрософт . Проверено 28 августа 2022 г.
- ^ «Пресс-релиз – Крах Microsoft (февраль 1997 г.)» . Корпорация Майкрософт. 18 февраля 1997 г.
- ^ «Пресс-релиз – Крах Microsoft (июль 1997 г.)» . Корпорация Майкрософт. 22 июля 1997 г.
- ^ Рон Фоснер. «Выполните быстрый и простой 3D-рендеринг с помощью DrawPrimitive и DirectX 5.0» . Системный журнал Microsoft.
- ^ «Программирование в Direct3D 7 Immediate Mode Framework 3: Мультитекстурирование» . gamedev.net. 29 мая 2000 года. Архивировано из оригинала 5 августа 2011 года . Проверено 17 сентября 2011 г.
- ^ «Microsoft выпускает финальную версию DirectX 6.0» . Майкрософт. 7 августа 1998 г.
- ^ «Microsoft выпускает DirectX 6.1» . Майкрософт. 3 февраля 1999 г.
- ^ «Обновление талисмана Билла Гейтса, апрель 1997 г.» (PDF) . Майкрософт. 5 мая 1997 г. Архивировано из оригинала (PDF) 8 декабря 2015 г. . Проверено 31 октября 2015 г.
- ^ «DDS (формат DirectDraw Surface)» . MSDN.
- ^ «DirectX 7: [дата выхода] в июле 1999 г.» . ГеймСпот . Великобритания. Март 1999 года. Архивировано из оригинала 8 мая 1999 года . Проверено 20 июля 2019 г.
- ^ «Microsoft объявляет о выпуске DirectX 8.0» . Майкрософт. 9 ноября 2000 года . Проверено 7 января 2015 г.
- ^ «Функция Direct Action: DirectX 8.0» . ГеймСпот . Великобритания. Архивировано из оригинала 23 февраля 2001 года . Проверено 20 июля 2019 г.
- ^ «Графика и видео DirectX 8: новый старт» . gamedev.net. 30 ноября 2000 года. Архивировано из оригинала 4 июня 2007 года . Проверено 18 февраля 2007 г.
- ^ «Графика Direct3D 9» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Написание шейдеров HLSL в Direct3D 9» . MSDN . Проверено 30 сентября 2014 г.
- ^ «HLSL в Direct3D 9.0» . Майкрософт . Архивировано из оригинала 27 августа 2010 года.
- ^ «Несколько целей рендеринга (Direct3D 9)» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Многоэлементные текстуры (Direct3D 9)» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Методы трафаретного буфера (Direct3D 9)» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Усовершенствования Direct3D 9Ex» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Графические API в Windows» . MSDN. Август 2009.
- ^ Перейти обратно: а б «Роль модели драйвера дисплея Windows в DWM» . 2 апреля 2006 г.
- ^ «Функции API (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 г.
- ^ Служба поддержки Microsoft (17 марта 2009 г.). «Сохраненный режим Direct3D удален из Windows Vista» . Архивировано из оригинала 1 июня 2013 года.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ) - ^ «Комплект средств разработки программного обеспечения DirectX, февраль 2007 г.» . Майкрософт. Архивировано из оригинала 3 сентября 2012 года.
- ^ «Типы ресурсов (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Слои API (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Новости CNet» . Проверено 30 сентября 2014 г.
- ^ «Общее шейдерное ядро» . Майкрософт.
- ^ «Особенности шейдера геометрии» . Майкрософт.
- ^ «Этапы шейдеров» . Майкрософт.
- ^ «Что такое Direct3D 10 — дополнительные улучшения» . Аппаратное обеспечение Тома. 8 ноября 2006 г.
- ^ «Возможности Direct3D 10.1» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Microsoft представляет подробности DirectX 10.1 на SIGGRAPH» . ЭкстримТех. 7 августа 2007 г.
- ^ «Возможности Direct3D 10.1» . MSDN.
- ^ Перейти обратно: а б «Метод ID3D11Device::CheckMultisampleQualityLevels» . MSDN . Проверено 30 сентября 2014 г.
- ^ Перейти обратно: а б с Чак Уолборн (20 июня 2012 г.). «Уровни функций Direct3D» . Игры для Windows и блог DirectX SDK .
- ^ «Перечисление D3D10_FEATURE_LEVEL1» . MSDN . Проверено 22 ноября 2009 г.
- ^ «Уровни функций Direct3D» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Функции Direct3D 11» . MSDN . Проверено 30 сентября 2014 г.
- ^ Перейти обратно: а б с «Презентации Gamefest 2008» . Майкрософт. Архивировано из оригинала 13 ноября 2013 года.
- ^ Перейти обратно: а б «Технические презентации Nvision 08» . Нвидиа . Проверено 16 сентября 2011 г.
- ^ «Комплект средств разработки программного обеспечения DirectX, ноябрь 2008 г.» . Майкрософт. 7 ноября 2008 г.
- ^ «AMD демонстрирует первый в мире графический процессор DirectX 11» . Engadget. 3 июня 2009 г.
- ^ Перейти обратно: а б «GameFest 2008: Знакомство с графическим конвейером Direct3D 11» . Майкрософт. Слайд 56. Архивировано из оригинала 28 января 2013 года.
- ^ Перейти обратно: а б с «Direct3D 11 на оборудовании нижнего уровня» . MSDN . Проверено 18 ноября 2012 г.
- ^ Перейти обратно: а б «Комплект драйверов Windows — поддержка Direct3D 11» . MSDN . Проверено 13 июня 2009 г.
- ^ Перейти обратно: а б «Уровни функций Direct3D» . MSDN . Проверено 2 июля 2012 г.
- ^ «Использование аппаратной тесселяции ATI в DX9» . 14 июля 2008 г.
- ^ «SDK тесселяции AMD DX9» . Архивировано из оригинала 8 ноября 2010 года.
- ^ «Программирование тесселяции в реальном времени на графическом процессоре» (PDF) . Архивировано из оригинала (PDF) 27 июля 2011 года.
- ^ «Примеры тесселяции OpenGL» . Архивировано из оригинала 9 апреля 2010 года.
- ^ «Новые типы ресурсов» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Смещение глубины» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Структура D3D11_RASTERIZER_DESC1» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Шейдерная модель 5» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Обзор тесселяции» . Майкрософт.
- ^ «Обзор тесселяции» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Описание обновления платформы для Windows Server 2008 и обновления платформы для Windows Vista» . Support.microsoft.com. 2 октября 2012 года . Проверено 15 июня 2013 г.
- ^ «Обновление платформы для Windows Vista — Блог разработчиков DirectX — Домашняя страница сайта — Блоги MSDN» . Блоги.msdn.com. 10 сентября 2009 года. Архивировано из оригинала 8 апреля 2014 года . Проверено 15 июня 2013 г.
- ^ «Возможности Direct3D 11.1» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Структура D3D11_FEATURE_DATA_D3D11_OPTIONS» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Улучшения функций DirectX в Windows 8» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Возможности Direct3D 11.1» . MSDN . Проверено 13 сентября 2009 г.
- ^ «Улучшения DXGI 1.2» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Функции WDDM 1.2» . MSDN . Проверено 30 сентября 2014 г.
- ^ Перейти обратно: а б с «Усовершенствования модели драйвера дисплея Windows в Windows Developer Preview» . MSDN. 13 сентября 2011 г.
- ^ «Скалярные типы» . Проверено 2 октября 2014 г.
- ^ «Intel Haswell IGP будет поддерживать DirectX 11.1 и расширенную поддержку профессиональных приложений» . АнандТех. 5 августа 2011 г.
- ^ «Графика DirectX — обновление платформы для Windows 7» . MSDN. 14 ноября 2012 г.
- ^ «DirectX 11.1 и Windows 7» . Игры для Windows и блог DirectX SDK . 13 ноября 2012 г.
- ^ «Программирование DirectX» . MSDN. Архивировано из оригинала 31 октября 2013 года . Проверено 30 сентября 2014 г.
- ^ «Возможности Direct3D 11.2» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Структура D3D11_FEATURE_DATA_D3D11_OPTIONS1» . MSDN . Проверено 30 сентября 2014 г.
- ^ Перейти обратно: а б «Руководство по функциям Windows 8.1 – Программирование DirectX» . Библиотека MSDN . 26 июня 2013. Архивировано из оригинала 27 августа 2015 года . Проверено 27 июня 2013 г.
- ^ Перейти обратно: а б Беннетт Сорбо (26 июня 2013 г.). «Что нового в Direct3D 11.2» . Канал9 – СТРОИТЕЛЬ 2013 .
- ^ «Улучшения DXGI 1.3» . Библиотека MSDN . 26 июня 2013 г.
- ^ «Что нового в драйверах дисплея Windows 8.1 Preview (WDDM 1.3)» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Содержимое перемещено (Windows)» . Архивировано из оригинала 4 марта 2016 года . Проверено 6 марта 2015 г.
- ^ «Перечисление D3D11_TILED_RESOURCES_TIER» . MSDN . Проверено 30 сентября 2014 г.
- ^ Чарльз Холлемерш, Мэтт Сэнди (26 июня 2013 г.). «Массивные виртуальные текстуры для игр: мозаичные ресурсы Direct3D» . Канал9 – СТРОИТЕЛЬ 2013 .
- ^ «Возможности Direct3D 11.2» . Библиотека MSDN . 26 июня 2013 г.
- ^ «Блоги MSDN» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Структура D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCEING_SUPPORT» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Поднятие планки с помощью Direct3D» . Создание приложений для Windows . 14 октября 2013 года . Проверено 30 сентября 2014 г.
- ^ «Microsoft официально отказывается от Mantle» . 16 октября 2013 года . Проверено 30 сентября 2014 г.
- ^ Сегмент Криса Тектора на http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (начало примерно с 18-й минуты)
- ^ «Рендеринг (графика Direct3D 12) — приложения Win32» .
- ^ Райан Смит. «AnandTech — Microsoft подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . Проверено 30 сентября 2014 г.
- ^ Райан Смит. «AnandTech – Обзор NVIDIA GeForce GTX 980: Maxwell Mark 2» . Проверено 30 сентября 2014 г.
Прежде всего среди новых функций Maxwell 2 — полная совместимость с Direct3D 11.2/11.3.
- ^ Перейти обратно: а б «Описание новых функций DirectX 11.3 – мозаичные ресурсы – типизированные нагрузки БПЛА» . 19 сентября 2014 года . Проверено 30 сентября 2014 г.
- ^ «Перечисление D3D11_CONSERVATIVE_RASTERIZATION_TIER» . библиотека MSDN . 22 февраля 2015 года . Проверено 22 февраля 2015 г.
- ^ «Функции Direct3D 11.3» . библиотека MSDN . 28 марта 2015 года . Проверено 28 марта 2015 г.
- ^ «Игры для Windows и блог DirectX SDK» .
- ^ Перейти обратно: а б Райан Смит. «AnandTech – Microsoft анонсирует DirectX 12: низкоуровневое графическое программирование переходит в DirectX» . Проверено 30 сентября 2014 г.
- ^ «Зона разработчиков Intel» . Интел . Проверено 21 декабря 2022 г.
- ^ «Обзор Direct3D 12, часть 1: «Ближе к металлу» » . Проверено 2 октября 2014 г.
- ^ первые две минуты https://channel9.msdn.com/Events/Build/2014/3-564 .
- ^ «Более пристальный взгляд на DirectX 12 – Технический отчет – Страница 3» . 31 марта 2014 года . Проверено 30 сентября 2014 г.
- ^ Райан Смит. «AnandTech — Microsoft подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . Проверено 30 сентября 2014 г.
- ^ «Архивная копия» . Архивировано из оригинала 30 апреля 2018 года . Проверено 19 сентября 2014 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Перейти обратно: а б «Модель шейдеров 5.1 — приложения Win32» .
- ^ «Встречайте будущее компьютерной графики: Microsoft представляет более быстрый консольный DirectX 12» . ПКМир . 20 марта 2014 года . Проверено 30 сентября 2014 г.
- ^ «DirectX 12 также добавит новые функции для графических процессоров следующего поколения» . 21 марта 2014 года . Проверено 30 сентября 2014 г.
- ^ Ковалиский, Кирилл (21 марта 2014 г.). «DirectX 12 также добавит новые функции для графических процессоров следующего поколения» . Технический отчет . Проверено 1 апреля 2014 г.
- ^ «Техническая библиотека» . Интел . Проверено 21 декабря 2022 г.
- ^ Стивихимс (30 декабря 2021 г.). «Конвейеры и шейдеры с Direct3D 12 — приложения Win32» . Learn.microsoft.com . Проверено 19 декабря 2023 г.
- ^ Перейти обратно: а б Стивихимс (6 февраля 2023 г.). «Обзор корневых сигнатур — приложения Win32» . Learn.microsoft.com . Проверено 19 декабря 2023 г.
- ^ «Обзор Direct3D 12, часть 7. Динамические кучи» . Проверено 2 октября 2014 г.
- ^ «Мультиадаптер» . Архивировано из оригинала 14 сентября 2016 года . Проверено 3 августа 2016 г.
- ^ «Портирование игр DirectX 12 на Windows 7» . 21 августа 2019 г.
- ^ «Спецификации DirectX» .
- ^ «Microsoft.Direct3D.D3D12On7 1.1.0» .
- ^ Модель шейдера HLSL 6.0
- ^ Перейти обратно: а б «Анонс новых функций DirectX 12» . Блог разработчиков DirectX . Проверено 24 февраля 2018 г.
- ^ «Прямое машинное обучение (DirectML)» . Документы Майкрософт . Проверено 28 июня 2020 г.
- ^ «ДиректМЛ» . Документы Майкрософт.
- ^ «Переход к DirectX 12 — сетчатые шейдеры и шейдеры усиления: новое изобретение геометрического конвейера» . Блог разработчиков DirectX . Проверено 28 июня 2020 г.
- ^ «Переход к DirectX 12 — отзывы о сэмплере: некоторые полезные данные, которые когда-то были скрыты, теперь разблокированы» . Блог разработчиков DirectX . Проверено 4 ноября 2019 г.
- ^ «Трассировка лучей DirectX (DXR) уровня 1.1» . Блог разработчиков DirectX . Проверено 6 ноября 2019 г.
- ^ «Переход к DirectX 12: больше контроля над распределением памяти» . Блог разработчиков DirectX . Проверено 11 ноября 2019 г.
- ^ «Программный растеризатор для DirectX 9.0 SDK» . Майкрософт. 1 августа 2005 г. Архивировано из оригинала 4 сентября 2012 г.
- ^ «Ресурсы Direct3D — Пул памяти» . Архивировано из оригинала 9 мая 2008 года.
- ^ «Графический конвейер» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Этап ввода-ассемблера» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Этап вершинного шейдера» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Этапы тесселяции» . Графика Direct3D 11. Документы Майкрософт . Этап шейдера корпуса . Проверено 19 октября 2021 г.
- ^ «Этапы тесселяции» . Графика Direct3D 11. Документы Майкрософт . Этап Тесселятора . Проверено 19 октября 2021 г.
- ^ «Этапы тесселяции» . Графика Direct3D 11. Документы Майкрософт . Этап доменного шейдера . Проверено 19 октября 2021 г.
- ^ «Этап шейдера геометрии» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Стадия потока-вывода» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Состояния рендеринга» . DirectX 9.0 для управляемого кода. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Этап растеризации» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Этап пиксельных шейдеров» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ «Этап выпуска-слияния» . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
- ^ Перейти обратно: а б «Функции Direct3D 11.1 — приложения Win32» .
- ^ «Перечисление D3D11_FORMAT_SUPPORT» . MSDN . Проверено 16 июня 2015 г.
- ^ «Перечисление D3D11_FORMAT_SUPPORT2» . MSDN . Проверено 16 июня 2015 г.
- ^ «Уровни оборудования — приложения Win32» . Learn.microsoft.com . Проверено 21 декабря 2022 г.
- ^ «D3D12_FEATURE — приложения Win32» .
- ^ «Введение в ресурс в приложениях Direct3D 11 — Win32» .
- ^ Вольфганг Энгель . «Введение в привязку ресурсов в Microsoft DirectX 12» .
- ^ GVCS005 - Microsoft Direct3D 12: новые подробности API и оптимизации Intel. Архивировано 4 апреля 2015 г. на Wayback Machine.
- ^ «Шоу» . Learn.microsoft.com . Проверено 21 декабря 2022 г.
- ^ «Обнаружение и восстановление тайм-аута (TDR) — драйверы Windows» . Майкрософт .
- ^ Direct3D Mobile , Microsoft, 6 января 2010 г.
- ^ «Команда Wine с гордостью сообщает о выпуске стабильной версии Wine 4.0» . Винный штаб-квартира . Проверено 3 апреля 2019 г.
- ^ «WineD3DOnWindows — Официальная винная вики» . Wiki.winehq.org. 2 июня 2013. Архивировано из оригинала 17 января 2009 года . Проверено 15 июня 2013 г.
- ^ WineHQ — vkd3d , Direct3D 12, 3 апреля 2019 г. , получено 30 июня 2020 г.
- ^ «Вышел Vkd3d 1.0» . Винный штаб-квартира . Проверено 3 апреля 2019 г.
- ^ Майкл Ларабель (23 августа 2019 г.). «Valve's Proton предлагает ответвление с VKD3D для Direct3D 12 поверх Vulkan» . Фороникс . Проверено 7 октября 2019 г.
- ^ Джейсон Евангельо (1 марта 2019 г.). «Windows 10 против Linux: 6 игр Steam, протестированные на процессоре Intel Hades Canyon NUC» . Форбс . Проверено 7 октября 2019 г.
- ^ Ребол, Филип (3 апреля 2019 г.), Реализация D3D11 и D3D10 на базе Vulkan для Linux/Wine: doitsujin/dxvk , получено 3 апреля 2019 г.
- ^ Инструмент совместимости Steam Play на основе Wine и дополнительных компонентов: ValveSoftware/Proton , Valve , 3 апреля 2019 г. , получено 3 апреля 2019 г.
- ^ «Репозиторий D9VK GitHub» . Гитхаб . Проверено 6 октября 2019 г.
- ^ Майкл Ларабель (30 июля 2019 г.). «Proton переработан на Wine 4.11, добавлен D9VK Direct3D 9, лучшее использование ЦП и DXVK 1.3» . Фороникс . Проверено 7 октября 2019 г.
- ^ «Реализация внешнего интерфейса Direct3D9 от Джошуа-Эштона · Запрос на извлечение № 1275 · doitsujin/dxvk» . Гитхаб . Проверено 17 декабря 2019 г.
- ^ «Репозиторий D8VK GitHub» . Гитхаб . Проверено 2 февраля 2024 г.
- ^ Создайте поддержку Gallium Nine поверх существующей установки WINE: iXit/wine-nine-standalone , iXit Group, 3 апреля 2019 г. , получено 3 апреля 2019 г.
- ^ Джои Снеддон (10 октября 2018 г.). «В Ubuntu 18.10 добавлена поддержка Gallium Nine, последняя версия Mesa 18.2.2» . МОЙ БОГ! Убунту! . Проверено 7 октября 2019 г.
- ^ «Справочник по D3DX 11» . MSDN . Проверено 30 сентября 2014 г.
- ^ «Жизнь без D3DX» . MSDN.
- ^ «Инструмент компилятора эффектов» . Майкрософт.
- ^ «Математика сферических гармоник» . msdn.com . Проверено 23 ноября 2014 г.
- ^ «Эффекты 11» . КодПлекс . Архивировано из оригинала 24 сентября 2014 года . Проверено 30 сентября 2014 г.
- ^ «Библиотека обработки геометрии DirectXMesh» . КодПлекс . Архивировано из оригинала 29 сентября 2014 года . Проверено 30 сентября 2014 г.
- ^ «Библиотека обработки текстур DirectXTex» . КодПлекс . Архивировано из оригинала 25 сентября 2014 года . Проверено 30 сентября 2014 г.
- ^ «Набор инструментов DirectX» . КодПлекс . Архивировано из оригинала 29 сентября 2014 года . Проверено 30 сентября 2014 г.
- ^ «УВАтрлас» . КодПлекс . Архивировано из оригинала 27 июня 2015 года . Проверено 23 ноября 2014 г.
- ^ «DXUT для обновления рабочего стола Win32» . MSDN.
Внешние ссылки
[ редактировать ]- сайт DirectX
- MSDN: Графика DirectX и игры
- DirectX 10: The Future of PC Gaming , техническая статья, в которой обсуждаются новые функции DirectX 10 и их влияние на компьютерные игры.