stringtranslate.com

Direct3D

Direct3D — это интерфейс программирования графических приложений (API) для Microsoft Windows . Часть DirectX , Direct3D используется для рендеринга трехмерной графики в приложениях, где важна производительность, таких как игры. 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 включает в себя Reference Rasterizer (или устройство REF), которое эмулирует обычную графическую карту в программном обеспечении, хотя оно слишком медленно для большинства 3D-приложений реального времени и обычно используется только для отладки. Новый программный растеризатор реального времени WARP , разработанный для эмуляции полного набора функций Direct3D 10.1, включен в Windows 7 и Windows Vista Service Pack 2 с обновлением платформы; его производительность, как говорят, находится на одном уровне с 3D-картами начального уровня на многоядерных процессорах. [8]

Как часть DirectX , Direct3D доступен для Windows 95 и выше и является основой для API векторной графики на различных версиях консольных систем Xbox . Уровень совместимости Wine , свободное программное обеспечение для повторной реализации нескольких API Windows, включает реализацию Direct3D.

Главным конкурентом Direct3D является OpenGL от Khronos и его последователь Vulkan . Fahrenheit был попыткой Microsoft и SGI объединить OpenGL и Direct3D в 1990-х годах, но в конечном итоге был отменен.

Обзор

Direct3D 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 immediately mode использовал модель программирования «буфера выполнения», которую Microsoft надеялась напрямую поддерживать поставщиками оборудования. Буферы выполнения предназначались для размещения в аппаратной памяти и анализа оборудованием для выполнения 3D-рендеринга. Однако в то время их считали крайне неудобными для программирования, что препятствовало принятию нового API и побудило Microsoft принять OpenGL в качестве официального API 3D-рендеринга для игр и приложений для рабочих станций. [19] (см. OpenGL против Direct3D)

Вместо того чтобы принять OpenGL в качестве игрового API, Microsoft решила продолжить совершенствование Direct3D не только для того, чтобы конкурировать с OpenGL, но и для того, чтобы более эффективно конкурировать с другими фирменными API, такими как Glide от 3dfx .

С самого начала немедленный режим также поддерживал мозаичный рендеринг Talisman с помощью методов BeginScene/EndScene интерфейса IDirect3DDevice.

Direct3D 4.0

Никаких существенных изменений в Direct3D для DirectX 4.0 не планировалось , выпуск которого был запланирован на конец 1996 года, а затем отменен. [20]

Direct3D 5.0

В декабре 1996 года команда в Редмонде взяла на себя разработку Direct3D Immediate Mode, в то время как лондонская команда RenderMorphics продолжила работу над Retained Mode. Команда в Редмонде добавила API DrawPrimitive, который устранил необходимость для приложений создавать буферы выполнения, сделав Direct3D более похожим на другие API рендеринга в немедленном режиме, такие как Glide и OpenGL . Первая бета-версия DrawPrimitive была выпущена в феврале 1997 года, [21] а финальная версия была выпущена с DirectX 5.0 в августе 1997 года. [22]

Помимо внедрения более простого в использовании API немедленного режима, DirectX 5.0 добавил метод SetRenderTarget, который позволил устройствам Direct3D записывать свой графический вывод на различные поверхности DirectDraw. [23]

Direct3D 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 ).

Direct3D 7.0

DirectX 7.0 (выпущен в сентябре 1999 года) представил формат текстур .dds [28] и поддержку аппаратного ускорения преобразования и освещения [29] (впервые доступного на оборудовании ПК с GeForce 256 от Nvidia ), а также возможность выделения вершинных буферов в аппаратной памяти. Аппаратные вершинные буферы представляют собой первое существенное улучшение по сравнению с OpenGL в истории DirectX. Direct3D 7.0 также расширил поддержку DirectX для аппаратного мультитекстурирования и представляет собой вершину функций конвейера с фиксированными функциями мультитекстурирования: хотя он и мощный, его было настолько сложно программировать, что для раскрытия возможностей затенения графического оборудования требовалась новая модель программирования. Direct3D 7.0 также представил функции DXVA .

Direct3D 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-графики, таких как вершинные шейдеры , пиксельные шейдеры , туман , рельефное отображение и текстурное отображение .

Direct3D9

Direct3D 9.0 [33] (выпущен в декабре 2002 г.) добавил новую версию языка шейдеров высокого уровня [34] [35] поддержку форматов текстур с плавающей точкой, множественных целей рендеринга (MRT), [36] многоэлементных текстур, [37] поиска текстур в вершинном шейдере и методах буфера трафарета. [38]

Direct3D 9Ex

Direct3D 9Ex [39] (ранее имевший версию 9.0L («L» означает Longhorn, кодовое название Windows Vista)), расширение, доступное только в Windows Vista, 7, 8, 8.1, 10 и 11, позволяет использовать преимущества, предлагаемые моделью драйвера дисплея Windows Vista (WDDM), и используется для Windows Aero . [40] Direct3D 9Ex в сочетании с драйверами WDDM класса DirectX 9 позволяет виртуализировать графическую память и выгружать ее в системную память, позволяет прерывать и планировать графические операции и позволяет совместно использовать поверхности DirectX между процессами. [41] Direct3D 9Ex ранее был известен как версия 1.0 Windows Graphics Foundation (WGF).

Улучшения Direct3D 9Ex — приложения Win32

Direct3D 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 больше не использует «биты возможностей» (или «caps») для указания того, какие функции поддерживаются на данном графическом устройстве. Вместо этого он определяет минимальный стандарт аппаратных возможностей, которые должны поддерживаться для системы отображения, чтобы быть «совместимой с 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 или Crysis . DirectX 10 SDK стал доступен в феврале 2007 года. [44]

Direct3D 10.0

Аппаратное обеспечение уровня Direct3D 10.0 должно поддерживать следующие функции: возможность обработки целых примитивов на новом этапе геометрического шейдера, возможность вывода сгенерированных конвейером вершинных данных в память с использованием этапа потокового вывода, поддержка мультисэмплированного альфа-покрытия, обратное считывание глубинной/трафаретной поверхности или мультисэмплированного ресурса после того, как он больше не привязан к цели рендеринга, полная интеграция с HLSL — все шейдеры Direct3D 10 написаны на HLSL и реализованы с ядром общего шейдера, целочисленные и побитовые шейдерные операции, организация состояния конвейера в 5 неизменяемых объектов состояния, организация констант шейдера в константные буферы, увеличенное количество целей рендеринга, текстур и сэмплеров, отсутствие ограничения на длину шейдера, новые типы ресурсов и форматы ресурсов, [45] многоуровневые слои среды выполнения/API, [46] возможность выполнять замену и настройку материалов для каждого примитива с помощью геометрического шейдера, повышенное обобщение доступа к ресурсам с помощью представления, удалены устаревшие биты возможностей оборудования (caps).

Direct3D 10.1

Direct3D 10.1 [52] был анонсирован Microsoft вскоре после выпуска Direct3D 10 в качестве небольшого обновления. Спецификация была завершена с выпуском DirectX SDK в ноябре 2007 года, а среда выполнения была поставлена ​​с Windows Vista SP1 , который доступен с середины марта 2008 года.

Direct3D 10.1 устанавливает несколько дополнительных стандартов качества изображения для поставщиков графики и дает разработчикам больше контроля над качеством изображения. [53] [54] Функции включают более точное управление сглаживанием (как мультисэмплинг, так и суперсэмплинг с затенением на выборку и контролем приложения над положением выборки) и большую гибкость некоторых существующих функций (массивы кубических карт и независимые режимы смешивания). Аппаратное обеспечение уровня Direct3D 10.1 должно поддерживать следующие функции: Мультисэмплинг был улучшен для обобщения прозрачности на основе покрытия и повышения эффективности мультисэмплингового рендеринга с многопроходным рендерингом, улучшенное поведение отбраковки — грани нулевой области автоматически отбраковываются; это влияет только на рендеринг каркаса, независимые режимы смешивания для каждой цели рендеринга, новое выполнение пиксельного шейдера с частотой выборки с примитивной растеризацией, увеличенная пропускная способность этапа конвейера, как цветные, так и глубинные/трафаретные поверхности MSAA теперь могут использоваться с CopyResource как в качестве источника или назначения, MultisampleEnable влияет только на растеризацию линий (точки и треугольники не затрагиваются) и используется для выбора алгоритма рисования линий. Это означает, что некоторые растеризации multisample из Direct3D 10 больше не поддерживаются, Выборка текстур — инструкции sample_c и sample_c_lz определены для работы как с Texture2DArrays, так и с TextureCubeArrays, используют член Location (альфа-компонент) для указания индекса массива, поддержка TextureCubeArrays.

В отличие от 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).

Direct3D 11

Direct3D 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.

Direct3D 11.0

Возможности Direct3D 11.0 включают: поддержку Shader Model 5.0, динамическое связывание шейдеров, адресуемые ресурсы, дополнительные типы ресурсов, [72] подпрограммы, создание экземпляров геометрии, покрытие в качестве входных данных пиксельного шейдера, программируемая интерполяция входных данных, новые форматы сжатия текстур (1 новый формат LDR и 1 новый формат HDR), текстурные зажимы для ограничения предварительной загрузки WDDM, требование 8-битной точности субтекселя и суб-MIP при фильтрации текстур, ограничения текстур 16K, Gather4 (поддержка многокомпонентных текстур, поддержка программируемых смещений), DrawIndirect, консервативный oDepth, смещение глубины, [73] [74] адресуемый потоковый вывод, зажим MIP-карты для каждого ресурса, области просмотра с плавающей точкой, инструкции преобразования шейдеров, улучшенная многопоточность.

Другими примечательными особенностями являются добавление двух новых алгоритмов сжатия текстур для более эффективной упаковки высококачественных и HDR/альфа-текстур, а также увеличенный кэш текстур .

Впервые представленная в версии Release Candidate , Windows 7 интегрирует первую выпущенную поддержку Direct3D 11. Обновление платформы для Windows Vista включает полнофункциональную среду выполнения Direct3D 11 и обновление DXGI 1.1, а также другие связанные компоненты из Windows 7, такие как WARP , Direct2D , DirectWrite и WIC . [78] [79]

Direct3D 11.1

Direct3D 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] UAV (Unordered Access Views) на каждом этапе конвейера, целевую независимую растеризацию (TIR), возможность сопоставления SRV динамических буферов с NO_OVERWRITE, шейдерную обработку видеоресурсов, возможность использования логических операций в цели рендеринга, возможность привязки поддиапазона буфера констант к шейдеру и его извлечения, возможность создания буферов констант большего размера, чем может получить шейдер, возможность отбрасывать ресурсы и представления ресурсов, возможность изменять подресурсы с новыми параметрами копирования, возможность принудительного подсчета выборок для создания состояния растеризатора, возможность очистки всего или части представления ресурсов, возможность использования Direct3D в процессах сеанса 0, возможность указания пользовательских плоскостей отсечения в HLSL на уровне объектов 9 и выше, поддержка буфера теней на уровне объектов 9, поддержка воспроизведения видео, расширенная поддержка общих ресурсов Texture2D и «на лету» замена между Контексты и уровни функций Direct3D 10 и 11. Direct3D 11.1 включает новый уровень функций 11_1, который вносит незначительные обновления в язык шейдеров, такие как более крупные буферы констант и дополнительные инструкции двойной точности, а также улучшенные режимы смешивания и обязательную поддержку 16-битных цветовых форматов для повышения производительности графических процессоров начального уровня, таких как Intel HD Graphics . [86] [88] WARP был обновлен для поддержки уровня функций 11_1.

Обновление платформы для Windows 7 включает ограниченный набор функций из Direct3D 11.1, хотя компоненты, зависящие от WDDM 1.2, такие как уровень функций 11_1 и связанные с ним API или четырехъядерная буферизация для стереоскопического рендеринга, отсутствуют. [89] [90]

Direct3D 11.2

Direct3D 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]

Direct3D 11.X

Direct3D 11.X — это надстройка DirectX 11.2, работающая на Xbox One . [104] [105] Она включает в себя некоторые функции, такие как пакеты отрисовки, которые позже были анонсированы как часть DirectX 12. [106]

Direct3D 11.3

Direct3D 11.3 [107] был выпущен в июле 2015 года вместе с Windows 10; он включает в себя незначительные функции рендеринга из Direct3D 12, сохраняя при этом общую структуру API Direct3D 11.x. [108] [109] [110] Direct3D 11.3 вводит необязательное значение ссылки на трафарет, заданное шейдером, загрузки видов с неупорядоченным доступом, упорядоченные виды растеризатора (ROV), необязательный стандартный Swizzle, необязательное отображение текстуры по умолчанию, консервативную растеризацию (из трех уровней), [111] необязательную поддержку унифицированного доступа к памяти (UMA) и дополнительные мозаичные ресурсы (уровень 2) (объемные мозаичные ресурсы). [112]

Direct3D 11.4

Direct3D 12

Direct3D 12 [114] допускает более низкий уровень аппаратной абстракции, чем более ранние версии, что позволяет будущим приложениям значительно улучшить многопоточное масштабирование и снизить загрузку ЦП. Это достигается за счет лучшего соответствия уровня абстракции Direct3D с базовым оборудованием с помощью новых функций, таких как Indirect Drawing, дескрипторные таблицы, краткие объекты состояния конвейера и пакеты вызовов отрисовки. Сокращение накладных расходов драйвера является главной привлекательной чертой Direct3D 12, аналогично Mantle от AMD . [114] По словам его ведущего разработчика Макса МакМаллена, главная цель Direct3D 12 — достичь «эффективности на уровне консоли» и улучшенного параллелизма ЦП. [115] [116] [117]

Хотя Nvidia объявила о широкой поддержке Direct3D 12, они также были несколько сдержаны в отношении универсальной привлекательности нового API, отметив, что, хотя разработчики игровых движков могут быть в восторге от прямого управления ресурсами GPU из кода своего приложения, «многие [другие] люди не были бы» рады делать это. [118]

Некоторые новые аппаратные функции также присутствуют в Direct3D 12, [110] [119] [120], включая Shader Model 5.1, [121] Volume Tiled Resources (Tier 2), [121] Shader Specified Stencil Reference Value, Typed UAV Load, Conservative Rasterization (Tier 1), улучшенные столкновения и отбраковка с Conservative Rasterization, Rasterizer Ordered Views (ROV), Standard Swizzles, Default Texture Mapping, Swap Chains, swizzled resources и compress resources , [122] дополнительные режимы смешивания , [123] программируемое смешивание и эффективная прозрачность, независимая от порядка (OIT), с упорядоченным по пикселям UAV. [124]

Объекты состояния конвейера (PSO) [125] произошли от Direct3D 11, и новые краткие состояния конвейера означают, что процесс был упрощен. DirectX 11 предложил гибкость в том, как его состояния могут быть изменены в ущерб производительности. Упрощение процесса и унификация конвейеров (например, состояний пиксельных шейдеров) привели к более оптимизированному процессу, значительно сократив накладные расходы и позволив графической карте делать больше вызовов для каждого кадра. После создания PSO становится неизменяемым. [126]

Корневые сигнатуры вводят конфигурации для связывания списков команд с ресурсами, необходимыми шейдерам. Они определяют структуру ресурсов, которые будут использовать шейдеры, и указывают, какие ресурсы будут привязаны к конвейеру. Список графических команд имеет как графическую, так и вычислительную корневую сигнатуру, в то время как список вычислительных команд будет иметь только вычислительную корневую сигнатуру. Эти корневые сигнатуры полностью независимы друг от друга. Хотя корневая сигнатура определяет типы данных для использования шейдерами, она не определяет и не отображает фактическую память или данные. [127]

Корневые параметры — это один из типов записи в корневой сигнатуре. Фактические значения корневых параметров, которые изменяются во время выполнения, называются корневыми аргументами. Это данные, которые считывают шейдеры. [127]

В Direct3D 11 команды отправляются от CPU к GPU по одной, и GPU последовательно обрабатывает эти команды. Это означает, что команды являются узким местом из-за скорости, с которой CPU может отправлять эти команды линейно. В DirectX 12 эти команды отправляются в виде списков команд, содержащих всю необходимую информацию в одном пакете. Затем GPU способен вычислять и выполнять эту команду в одном процессе, не дожидаясь какой-либо дополнительной информации от CPU.

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

Хотя привязка ресурсов в 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 — компонент подсистемы Microsoft DirectX API. Цель Direct3D — абстрагировать связь между графическим приложением и драйверами графического оборудования. Он представлен как тонкий абстрактный слой на уровне, сопоставимом с GDI (см. прилагаемую диаграмму). Direct3D содержит множество функций, которых нет в GDI.

Direct3D — это API графики режима Immediate . Он предоставляет низкоуровневый интерфейс для каждой 3D-функции видеокарты ( преобразования, обрезка, освещение , материалы , текстуры , буферизация глубины и т. д.). Когда-то он имел компонент режима Retained более высокого уровня , который теперь официально прекращен.

Direct3D immediately mode представляет три основные абстракции: устройства , ресурсы и цепочки обмена (см. прилагаемую схему). Устройства отвечают за рендеринг 3D-сцены. Они предоставляют интерфейс с различными возможностями рендеринга. Например, моноустройство обеспечивает черно-белый рендеринг, а RGB- устройство — цветной. Существует четыре типа устройств:

Устройство

Каждое устройство содержит по крайней мере одну цепочку обмена . Цепочка обмена состоит из одной или нескольких поверхностей заднего буфера . Рендеринг происходит в заднем буфере .

Более того, устройства содержат набор ресурсов ; конкретные данные, используемые во время рендеринга. Каждый ресурс имеет четыре атрибута:

Direct3D реализует два режима отображения:

Трубопровод

Процесс графического конвейера Direct3D 11

Microsoft Direct3D 11 API определяет процесс преобразования группы вершин, текстур, буферов и состояния в изображение на экране. Этот процесс описывается как конвейер рендеринга с несколькими отдельными этапами. Различные этапы конвейера Direct3D 11: [143]

  1. Входной ассемблер : [144] Считывает данные вершин из предоставленного приложением буфера вершин и передает их по конвейеру.
  2. Вершинный шейдер : [145] Выполняет операции над одной вершиной за раз, такие как преобразования, скиннинг или освещение.
  3. Hull-Shader : [146] Выполняет операции с наборами контрольных точек патча и генерирует дополнительные данные, известные как константы патча.
  4. Тесселятор : [147] Разделяет геометрию для создания представлений корпуса более высокого порядка.
  5. Доменный шейдер : [148] Выполняет операции над вершинами, полученными на этапе тесселяции, во многом так же, как вершинный шейдер.
  6. Геометрический шейдер : [149] Обрабатывает целые примитивы, такие как треугольники, точки или линии. При наличии примитива этот этап отбрасывает его или генерирует один или несколько новых примитивов.
  7. Stream-Output : [150] Может записывать результаты предыдущего этапа в память. Это полезно для рециркуляции данных обратно в конвейер.
  8. Растеризатор : [151] [152] Преобразует примитивы в пиксели, подавая эти пиксели в пиксельный шейдер. Растеризатор может также выполнять другие задачи, такие как обрезка того, что не видно, или интерполяция данных вершин в попиксельные данные.
  9. Пиксельный шейдер : [153] Определяет конечный цвет пикселя, который будет записан в цель рендеринга, а также может вычислить значение глубины, которое будет записано в буфер глубины.
  10. Output-Merger : [154] Объединяет различные типы выходных данных ( значения пиксельного шейдера , альфа-смешивание, глубина/трафарет...) для создания конечного результата.

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

Уровни характеристик

В Direct3D 5–9, когда новые версии API вводили поддержку новых аппаратных возможностей, большинство из них были необязательными — каждый поставщик графики поддерживал собственный набор поддерживаемых функций в дополнение к базовым требуемым функциям. Поддержка отдельных функций должна была определяться с помощью «битов возможностей» или «caps», что делало программирование графики для разных поставщиков сложной задачей.

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 и обычно включают в себя:

Каждый верхний уровень представляет собой строгое надмножество нижнего уровня, с несколькими новыми или ранее необязательными функциями, которые перемещаются в основную функциональность на верхнем уровне. [67] Более продвинутые функции в крупной редакции API Direct3D, такие как новые модели шейдеров и этапы рендеринга, доступны только на оборудовании верхнего уровня. [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.

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 Anniversary Update, драйверов WDDM 2.1.

Direct3D 12 представляет обновленную модель привязки ресурсов, которая позволяет явно контролировать память. Абстрактные объекты «представления ресурсов» [160] теперь представлены дескрипторами ресурсов, которые выделяются с использованием куч памяти и таблиц. [161] Уровни привязки ресурсов определяют максимальное количество ресурсов, к которым можно обратиться с помощью CBV (представление постоянного буфера), SRV (представление ресурса шейдера) и UAV (представление неупорядоченного доступа), а также блоков сэмплера текстур. Аппаратное обеспечение уровня 3 допускает полностью несвязанные ресурсы, ограниченные только размером кучи дескриптора, в то время как оборудование уровня 1 и уровня 2 накладывает некоторые ограничения на количество дескрипторов («представлений»), которые могут использоваться одновременно. [162] [163]

Многопоточность

Модель драйвера 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:

Связанные инструменты

D3DX

Direct3D поставляется с D3DX, библиотекой инструментов, предназначенных для выполнения общих математических вычислений над векторами , матрицами и цветами, вычисления матриц взгляда и проекции , сплайн-интерполяции и нескольких более сложных задач, таких как компиляция или сборка шейдеров, используемых для программирования 3D-графики, сжатого хранилища скелетной анимации и стеков матриц. Существует несколько функций, которые обеспечивают сложные операции над 3D- сетками , такие как вычисление касательного пространства, упрощение сетки, предварительно вычисленная передача излучения , оптимизация для удобства кэширования вершин и полосатости, а также генераторы для 3D-текстовых сеток. 2D-функции включают классы для рисования линий экранного пространства, текстовых и спрайтовых систем частиц . Пространственные функции включают различные процедуры пересечения, преобразование из/в барицентрические координаты и генераторы ограничивающих рамок /сфер. D3DX предоставляется как динамическая библиотека (DLL). D3DX устарел с Windows 8 и более поздних версий и не может использоваться в приложениях Магазина Windows. [180]

Некоторые функции, представленные в предыдущих версиях D3DX, были удалены в Direct3D 11 и теперь предоставляются в виде отдельных источников: [181]

DXUT

DXUT (также называемый образцом фреймворка) — это слой, построенный поверх Direct3D API. Фреймворк разработан, чтобы помочь программисту тратить меньше времени на рутинные задачи, такие как создание окна, создание устройства, обработка сообщений Windows и обработка событий устройства. DXUT был удален с Windows SDK 8.0 и теперь распространяется как исходный код через CodePlex. [189]

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

Ссылки

  1. ^ «Настройка функциональности трафарета глубины». Microsoft.
  2. ^ "RenderStateManager.UseWBuffer". Microsoft.
  3. ^ «Смешивание текстур (Direct3D 9)». Microsoft.
  4. ^ «Смешивание геометрии (Direct3D 9)». Microsoft.
  5. ^ "HLSL". Microsoft.
  6. ^ "Эффекты (Direct3D 11)". Microsoft.
  7. ^ "DirectX Software Development Kit, октябрь 2006". Microsoft. Архивировано из оригинала 2 ноября 2011 г.
  8. ^ «Руководство по платформе Windows Advanced Rasterization Platform (WARP) – Архитектура и производительность WARP». MSDN.
  9. ^ «DirectX 8: повышение ставки на реализм в графике» (PDF) . evga.com . Получено 6 сентября 2023 г. .
  10. ^ "Главная> Графические процессоры Технология ATI SMARTSHADER — основа следующего поколения Radeon". anandtech.com . Получено 6 сентября 2023 г. .
  11. ^ "Вершинные шейдеры и пиксельные шейдеры". thg.ru/ . Получено 6 сентября 2023 г. .
  12. ^ "Vertex Shaders and Pixel Shaders". archive.org . Архивировано из оригинала 16 августа 2004 г. Получено 6 сентября 2023 г.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  13. ^ "MicroSoft DirectX Downloads for Windows (Win95, Win98, Win98SE, WinME, Win2000, WinXP)". www.falconfly.de . Архивировано из оригинала 10 ноября 2006 г. . Получено 11 января 2022 г. .
  14. ^ "Загрузить DirectX 9.0c End-User Runtime из официального центра загрузки Microsoft". www.microsoft.com . Архивировано из оригинала 29 июля 2015 г. Получено 11 января 2022 г.
  15. ^ "Qube Soft Management Team". qubesoft.com. 4 апреля 2017 г. Архивировано из оригинала 6 апреля 2017 г. Получено 5 апреля 2017 г.
  16. ^ ab Claro, Nicole (апрель 1995 г.). "Further Rendering" (PDF) . Game Developer Magazine . Архивировано (PDF) из оригинала 26 января 2021 г. . Получено 21 августа 2022 г. .
  17. Prosise, Jeff (16 мая 1995 г.). «Присоединение к мультимедийной вечеринке». PC Magazine . Получено 20 августа 2022 г.
  18. ^ Томпсон, Найджел (август 1996 г.). «Создание сцены с использованием сохраненного режима Direct3D» (PDF) . Журнал разработчиков игр . Архивировано (PDF) из оригинала 26 января 2021 г. . Получено 20 августа 2022 г. .
  19. ^ Беркес, Отто (12 апреля 2015 г.). «DirectX». Веблог Отто Беркеса . Получено 22 августа 2022 г.
  20. Чен, Рэймонд (22 января 2004 г.). «Что случилось с DirectX 4?». The Old New Thing . Microsoft . Получено 28 августа 2022 г. .
  21. ^ "Пресс-релиз-Microsoft Meltdown (февраль 1997)". Корпорация Microsoft. 18 февраля 1997 г.
  22. ^ "Пресс-релиз-Microsoft Meltdown (июль 1997 г.)". Корпорация Microsoft. 22 июля 1997 г.
  23. ^ Рон Фоснер. «Быстрый и простой 3D-рендеринг с DrawPrimitive и DirectX 5.0». Microsoft Systems Journal.
  24. ^ "Direct3D 7 Immediate Mode Framework Programming 3: Multitexturing". gamedev.net. 29 мая 2000 г. Архивировано из оригинала 5 августа 2011 г. Получено 17 сентября 2011 г.
  25. ^ "Microsoft выпускает финальную версию DirectX 6.0". Microsoft. 7 августа 1998 г.
  26. ^ "Microsoft выпускает DirectX 6.1". Microsoft. 3 февраля 1999 г.
  27. ^ "Обновление Талисмана Билла Гейтса за апрель 1997 года" (PDF) . Microsoft. 5 мая 1997 г. Архивировано из оригинала (PDF) 8 декабря 2015 г. . Получено 31 октября 2015 г. .
  28. ^ "DDS (формат DirectDraw Surface)". MSDN.
  29. ^ "DirectX 7: [выпуск] июль 99". GameSpot . Великобритания. Март 1999. Архивировано из оригинала 8 мая 1999 года . Получено 20 июля 2019 года .
  30. ^ "Microsoft объявляет о выпуске DirectX 8.0". Microsoft. 9 ноября 2000 г. Получено 7 января 2015 г.
  31. ^ "Direct Action Feature: DirectX 8.0". GameSpot . UK. Архивировано из оригинала 23 февраля 2001 г. Получено 20 июля 2019 г.
  32. ^ "DirectX 8 Graphics and Video: A Fresh Start". gamedev.net. 30 ноября 2000 г. Архивировано из оригинала 4 июня 2007 г. Получено 18 февраля 2007 г.
  33. ^ "Direct3D 9 Graphics". MSDN . Получено 30 сентября 2014 г. .
  34. ^ "Написание шейдеров HLSL в Direct3D 9". MSDN . Получено 30 сентября 2014 г. .
  35. ^ "HLSL в Direct3D 9.0". Microsoft . Архивировано из оригинала 27 августа 2010 г.
  36. ^ "Multiple Render Targets (Direct3D 9)". MSDN . Получено 30 сентября 2014 г. .
  37. ^ "Многоэлементные текстуры (Direct3D 9)". MSDN . Получено 30 сентября 2014 г. .
  38. ^ "Техники буферизации трафарета (Direct3D 9)". MSDN . Получено 30 сентября 2014 г. .
  39. ^ "Улучшения Direct3D 9Ex". MSDN . Получено 30 сентября 2014 г. .
  40. ^ "Графические API в Windows". MSDN. Август 2009.
  41. ^ ab "Роль модели драйвера дисплея Windows в DWM". 2 апреля 2006 г.
  42. ^ "API Features (Direct3D 10)". MSDN . Получено 30 сентября 2014 г. .
  43. Microsoft Support (17 марта 2009 г.). «Direct3D Retained Mode удален из Windows Vista». Архивировано из оригинала 1 июня 2013 г.{{cite web}}: CS1 maint: unfit URL (link)
  44. ^ "DirectX Software Development Kit, февраль 2007". Microsoft. Архивировано из оригинала 3 сентября 2012 года.
  45. ^ "Типы ресурсов (Direct3D 10)". MSDN . Получено 30 сентября 2014 г. .
  46. ^ "API Layers (Direct3D 10)". MSDN . Получено 30 сентября 2014 г. .
  47. ^ "CNet News" . Получено 30 сентября 2014 г.
  48. ^ "Common-Shader Core". Microsoft.
  49. ^ «Возможности геометрического шейдера». Microsoft.
  50. ^ "Этапы шейдера". Microsoft.
  51. ^ "Что такое Direct3D 10 – Дополнительные улучшения". Tom's Hardware. 8 ноября 2006 г.
  52. ^ "Возможности Direct3D 10.1". MSDN . Получено 30 сентября 2014 г. .
  53. ^ "Microsoft представляет подробности DirectX 10.1 на SIGGRAPH". ExtremeTech. 7 августа 2007 г.
  54. ^ "Возможности Direct3D 10.1". MSDN.
  55. ^ ab "Метод ID3D11Device::CheckMultisampleQualityLevels". MSDN . Получено 30 сентября 2014 г. .
  56. ^ abc Chuck Walbourn (20 июня 2012 г.). "Уровни возможностей Direct3D". Блог Games for Windows и DirectX SDK .
  57. ^ "D3D10_FEATURE_LEVEL1 enumeration". MSDN . Получено 22 ноября 2009 г. .
  58. ^ "Уровни возможностей Direct3D". MSDN . Получено 30 сентября 2014 г. .
  59. ^ "Возможности Direct3D 11". MSDN . Получено 30 сентября 2014 г. .
  60. ^ abc "Gamefest 2008 Presentations". Microsoft. Архивировано из оригинала 13 ноября 2013 г.
  61. ^ ab "Nvision 08 Tech Presentations". Nvidia . Получено 16 сентября 2011 г. .
  62. ^ "DirectX Software Development Kit, ноябрь 2008". Microsoft. 7 ноября 2008 г.
  63. ^ "AMD демонстрирует первый в мире графический процессор DirectX 11". Engadget. 3 июня 2009 г.
  64. ^ ab "GameFest 2008: Введение в графический конвейер Direct3D 11". Microsoft. Слайд 56. Архивировано из оригинала 28 января 2013 г.
  65. ^ abc "Direct3D 11 на оборудовании нижнего уровня". MSDN . Получено 18 ноября 2012 г. .
  66. ^ ab "Windows Driver Kit – Supporting Direct3D 11". MSDN . Получено 13 июня 2009 г. .
  67. ^ ab "Уровни функций Direct3D". MSDN . Получено 2 июля 2012 г. .
  68. ^ «Использование аппаратной тесселяции ATI в DX9». 14 июля 2008 г.
  69. ^ "AMD DX9 Tessellation SDK". Архивировано из оригинала 8 ноября 2010 г.
  70. ^ "Программирование для тесселяции в реальном времени на GPU" (PDF) . Архивировано из оригинала (PDF) 27 июля 2011 г.
  71. ^ "OpenGL Tessellation Samples". Архивировано из оригинала 9 апреля 2010 г.
  72. ^ "Новые типы ресурсов". MSDN . Получено 30 сентября 2014 г. .
  73. ^ "Depth Bias". MSDN . Получено 30 сентября 2014 г.
  74. ^ "Структура D3D11_RASTERIZER_DESC1". MSDN . Получено 30 сентября 2014 г. .
  75. ^ "Shader Model 5". MSDN . Получено 30 сентября 2014 г. .
  76. ^ «Обзор тесселяции». Microsoft.
  77. ^ "Обзор тесселяции". MSDN . Получено 30 сентября 2014 г. .
  78. ^ «Описание обновления платформы для Windows Server 2008 и обновления платформы для Windows Vista». Support.microsoft.com. 2 октября 2012 г. Получено 15 июня 2013 г.
  79. ^ "The Platform Update for Windows Vista – DirectX Developer Blog – Site Home – MSDN Blogs". Blogs.msdn.com. 10 сентября 2009 г. Архивировано из оригинала 8 апреля 2014 г. Получено 15 июня 2013 г.
  80. ^ "Возможности Direct3D 11.1". MSDN . Получено 30 сентября 2014 г. .
  81. ^ "Структура D3D11_FEATURE_DATA_D3D11_OPTIONS". MSDN . Получено 30 сентября 2014 г. .
  82. ^ "Улучшения функций DirectX в Windows 8". MSDN . Получено 30 сентября 2014 г. .
  83. ^ "Возможности Direct3D 11.1". MSDN . Получено 13 сентября 2009 г. .
  84. ^ "DXGI 1.2 Improvements". MSDN . Получено 30 сентября 2014 г. .
  85. ^ "Функции WDDM 1.2". MSDN . Получено 30 сентября 2014 г. .
  86. ^ abc "Улучшения модели драйвера дисплея Windows в Windows Developer Preview". MSDN. 13 сентября 2011 г.
  87. ^ "Скалярные типы" . Получено 2 октября 2014 г.
  88. ^ "Intel Haswell IGP будет поддерживать DirectX 11.1, расширенную поддержку профессиональных приложений". AnandTech. 5 августа 2011 г.
  89. ^ "DirectX Graphics – Обновление платформы для Windows 7". MSDN. 14 ноября 2012 г.
  90. ^ "DirectX 11.1 и Windows 7". Блог Games for Windows и DirectX SDK . 13 ноября 2012 г.
  91. ^ "Программирование DirectX". MSDN. Архивировано из оригинала 31 октября 2013 г. Получено 30 сентября 2014 г.
  92. ^ "Возможности Direct3D 11.2". MSDN . Получено 30 сентября 2014 г. .
  93. ^ "Структура D3D11_FEATURE_DATA_D3D11_OPTIONS1". MSDN . Получено 30 сентября 2014 г. .
  94. ^ ab "Windows 8.1 Feature Guide – DirectX programming". Библиотека MSDN . 26 июня 2013 г. Архивировано из оригинала 27 августа 2015 г. Получено 27 июня 2013 г.
  95. ^ ab Bennett Sorbo (26 июня 2013 г.). "Что нового в Direct3D 11.2". Channel9 – BUILD 2013 .
  96. ^ "DXGI 1.3 Improvements". Библиотека MSDN . 26 июня 2013 г.
  97. ^ "Что нового в драйверах дисплея Windows 8.1 Preview (WDDM 1.3)". MSDN . Получено 30 сентября 2014 г. .
  98. ^ "Content Moved (Windows)". Архивировано из оригинала 4 марта 2016 г. Получено 6 марта 2015 г.
  99. ^ "D3D11_TILED_RESOURCES_TIER enumeration". MSDN . Получено 30 сентября 2014 г. .
  100. ^ Чарльз Холлемеерш, Мэтт Сэнди (26 июня 2013 г.). «Огромные виртуальные текстуры для игр: Direct3D Tiled Resources». Channel9 – BUILD 2013 .
  101. ^ "Возможности Direct3D 11.2". Библиотека MSDN . 26 июня 2013 г.
  102. ^ "Блоги MSDN". MSDN . Получено 30 сентября 2014 г. .
  103. ^ "Структура D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT". MSDN . Получено 30 сентября 2014 г. .
  104. ^ "Поднимаем планку с Direct3D". Создание приложений для Windows . 14 октября 2013 г. Получено 30 сентября 2014 г.
  105. ^ "Microsoft официально отказывается от Mantle". 16 октября 2013 г. Получено 30 сентября 2014 г.
  106. ^ Сегмент Криса Тектора с http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (начинается примерно с 18-й минуты)
  107. ^ «Рендеринг (графика Direct3D 12) — приложения Win32».
  108. ^ Райан Смит. «AnandTech – Microsoft Details Direct3D 11.3 & 12 New Rendering Features» . Получено 30 сентября 2014 г. .
  109. ^ Райан Смит. "AnandTech – Обзор NVIDIA GeForce GTX 980: Maxwell Mark 2" . Получено 30 сентября 2014 г. Первой и самой важной из новых функций Maxwell 2 является включение полной совместимости с Direct3D 11.2/11.3.
  110. ^ ab "DirectX 11.3 New Features Outline – Tiled Resources – Typed UAV Loads". 19 сентября 2014 г. Получено 30 сентября 2014 г.
  111. ^ "D3D11_CONSERVATIVE_RASTERIZATION_TIER enumeration". Библиотека MSDN . 22 февраля 2015 г. Получено 22 февраля 2015 г.
  112. ^ "Direct3D 11.3 Features". Библиотека MSDN . 28 марта 2015 г. Получено 28 марта 2015 г.
  113. ^ «Блог «Игры для Windows и DirectX SDK»».
  114. ^ ab Райан Смит. "AnandTech – Microsoft анонсирует DirectX 12: низкоуровневое графическое программирование приходит в DirectX" . Получено 30 сентября 2014 г. .
  115. ^ "Intel Developer Zone". Intel . Получено 21 декабря 2022 г. .
  116. ^ "Обзор Direct3D 12, часть 1: «Ближе к металлу»" . Получено 2 октября 2014 г.
  117. ^ первые две минуты https://channel9.msdn.com/Events/Build/2014/3-564
  118. ^ "Более подробный обзор DirectX 12 – Технический отчет – Страница 3". 31 марта 2014 г. Получено 30 сентября 2014 г.
  119. ^ Райан Смит. «AnandTech – Microsoft Details Direct3D 11.3 & 12 New Rendering Features» . Получено 30 сентября 2014 г. .
  120. ^ "Архивная копия". Архивировано из оригинала 30 апреля 2018 г. Получено 19 сентября 2014 г.{{cite web}}: CS1 maint: archived copy as title (link)
  121. ^ ab "Shader Model 5.1 - Win32 apps".
  122. ^ «Встречайте будущее графики ПК: Microsoft представляет более быструю консольную версию DirectX 12». PCWorld . 20 марта 2014 г. Получено 30 сентября 2014 г.
  123. ^ "DirectX 12 также добавит новые функции для графических процессоров следующего поколения". 21 марта 2014 г. Получено 30 сентября 2014 г.
  124. ^ Ковалиски, Сирил (21 марта 2014 г.). «DirectX 12 также добавит новые функции для графических процессоров следующего поколения». Технический отчет . Получено 1 апреля 2014 г.
  125. ^ "Техническая библиотека". Intel . Получено 21 декабря 2022 г. .
  126. ^ stevewhims (30 декабря 2021 г.). «Конвейеры и шейдеры с Direct3D 12 — приложения Win32». learn.microsoft.com . Получено 19 декабря 2023 г. .
  127. ^ ab stevewhims (6 февраля 2023 г.). "Обзор сигнатур root - приложения Win32". learn.microsoft.com . Получено 19 декабря 2023 г. .
  128. ^ "Обзор Direct3D 12, часть 7: Динамические кучи" . Получено 2 октября 2014 г.
  129. ^ "Multi-Adapter". Архивировано из оригинала 14 сентября 2016 года . Получено 3 августа 2016 года .
  130. ^ "Перенос игр DirectX 12 на Windows 7". 21 августа 2019 г.
  131. ^ "DirectX-Specs".
  132. ^ "Microsoft.Direct3D.D3D12On7 1.1.0" .
  133. ^ Модель шейдера HLSL 6.0
  134. ^ ab "Анонс новых функций DirectX 12". Блог разработчиков DirectX . Получено 24 февраля 2018 г.
  135. ^ "Прямое машинное обучение (DirectML)". Microsoft Docs . Получено 28 июня 2020 г.
  136. ^ "DirectML". Документация Microsoft.
  137. ^ "Coming to DirectX 12— Mesh Shaders и Amplification Shaders: Reinventing the Geometry Pipeline". Блог разработчиков DirectX . Получено 28 июня 2020 г.
  138. ^ "Coming to DirectX 12— Sampler Feedback: некоторые полезные когда-то скрытые данные, разблокированы". DirectX Developer Blog . Получено 4 ноября 2019 г.
  139. ^ "DirectX Raytracing (DXR) Tier 1.1". Блог разработчиков DirectX . Получено 6 ноября 2019 г.
  140. ^ "Coming to DirectX 12: More control over memory distribution". Блог разработчиков DirectX . Получено 11 ноября 2019 г.
  141. ^ "Software Rasterizer for DirectX 9.0 SDK". Microsoft. 1 августа 2005 г. Архивировано из оригинала 4 сентября 2012 г.
  142. ^ "Ресурсы Direct3D – Пул памяти". Архивировано из оригинала 9 мая 2008 г.
  143. ^ "Графический конвейер". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  144. ^ "Input-Assembler Stage". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  145. ^ "Vertex Shader Stage". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  146. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs . Hull-Shader Stage . Получено 19 октября 2021 г.
  147. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs . Tessellation Stage . Получено 19 октября 2021 г.
  148. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs . Domain-Shader Stage . Получено 19 октября 2021 г.
  149. ^ "Geometry Shader Stage". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  150. ^ "Stream-Output Stage". Графика Direct3D 11. Microsoft Docs . Получено 19 октября 2021 г.
  151. ^ "RenderStates". DirectX 9.0 для управляемого кода. Microsoft Docs . Получено 19 октября 2021 г.
  152. ^ "Rasterizer Stage". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  153. ^ "Pixel Shader Stage". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  154. ^ "Output-Merger Stage". Direct3D 11 Graphics. Microsoft Docs . Получено 19 октября 2021 г.
  155. ^ ab "Возможности Direct3D 11.1 - Приложения Win32".
  156. ^ "D3D11_FORMAT_SUPPORT enumeration". MSDN . Получено 16 июня 2015 г. .
  157. ^ "D3D11_FORMAT_SUPPORT2 enumeration". MSDN . Получено 16 июня 2015 г. .
  158. ^ "Уровни оборудования - приложения Win32". learn.microsoft.com . Получено 21 декабря 2022 г. .
  159. ^ "D3D12_FEATURE - Приложения Win32".
  160. ^ «Введение в ресурсы в Direct3D 11 — приложения Win32».
  161. ^ Вольфганг Энгель . «Введение в привязку ресурсов в Microsoft DirectX 12».
  162. ^ GVCS005 - Microsoft Direct3D 12: новые подробности API и оптимизации Intel Архивировано 4 апреля 2015 г. на Wayback Machine
  163. ^ "Шоу". learn.microsoft.com . Получено 21 декабря 2022 г. .
  164. ^ "Обнаружение и восстановление тайм-аута (TDR) - драйверы Windows". Microsoft .
  165. ^ Direct3D Mobile, Microsoft, 6 января 2010 г.
  166. ^ "Команда Wine с гордостью сообщает о выходе стабильной версии Wine 4.0". WineHQ . Получено 3 апреля 2019 г. .
  167. ^ "WineD3DOnWindows – The Official Wine Wiki". Wiki.winehq.org. 2 июня 2013 г. Архивировано из оригинала 17 января 2009 г. Получено 15 июня 2013 г.
  168. ^ WineHQ - vkd3d, Direct3D 12, 3 апреля 2019 г. , получено 30 июня 2020 г.
  169. ^ "Vkd3d 1.0 Released". WineHQ . Получено 3 апреля 2019 г. .
  170. ^ Майкл Ларабель (23 августа 2019 г.). «Valve's Proton предлагает ответвление с VKD3D для Direct3D 12 через Vulkan». Phoronix . Получено 7 октября 2019 г. .
  171. Джейсон Эванджело (1 марта 2019 г.). «Windows 10 против Linux: 6 игр Steam, протестированных на Intel Hades Canyon NUC». Forbes . Получено 7 октября 2019 г.
  172. ^ Ребол, Филипп (3 апреля 2019 г.), Реализация D3D11 и D3D10 на базе Vulkan для Linux / Wine: doitsujin/dxvk , получено 3 апреля 2019 г.
  173. Инструмент совместимости для Steam Play на основе Wine и дополнительных компонентов: ValveSoftware/Proton, Valve , 3 апреля 2019 г. , получено 3 апреля 2019 г.
  174. ^ "D9VK GitHub repository". GitHub . Получено 6 октября 2019 г. .
  175. ^ Майкл Ларабель (30 июля 2019 г.). "Proton Re-Based To Wine 4.11, Adds D9VK Direct3D 9, Better CPU Utilization & DXVK 1.3". Phoronix . Получено 7 октября 2019 г. .
  176. ^ "Implement Direct3D9 Frontend by Joshua-Ashton · Pull Request #1275 · doitsujin/dxvk". GitHub . Получено 17 декабря 2019 г. .
  177. ^ "D8VK GitHub repository". GitHub . Получено 2 февраля 2024 г. .
  178. ^ Поддержка Gallium Nine поверх существующей установки WINE: iXit/wine-nine-standalone, iXit Group, 3 апреля 2019 г. , получено 3 апреля 2019 г.
  179. ^ Джоуи Снеддон (10 октября 2018 г.). «Ubuntu 18.10 добавляет поддержку Gallium Nine, последнюю версию Mesa 18.2.2». ОМГ! Ubuntu! . Получено 7 октября 2019 г. .
  180. ^ "D3DX 11 Reference". MSDN . Получено 30 сентября 2014 г. .
  181. ^ «Жизнь без D3DX». MSDN.
  182. ^ "Инструмент компиляции эффектов". Microsoft.
  183. ^ "Математика сферических гармоник". msdn.com . Получено 23 ноября 2014 г. .
  184. ^ "Effects 11". CodePlex . Архивировано из оригинала 24 сентября 2014 г. Получено 30 сентября 2014 г.
  185. ^ "Библиотека обработки геометрии DirectXMesh". CodePlex . Архивировано из оригинала 29 сентября 2014 г. Получено 30 сентября 2014 г.
  186. ^ "Библиотека обработки текстур DirectXTex". CodePlex . Архивировано из оригинала 25 сентября 2014 г. Получено 30 сентября 2014 г.
  187. ^ "DirectX Tool Kit". CodePlex . Архивировано из оригинала 29 сентября 2014 г. Получено 30 сентября 2014 г.
  188. ^ "UVAtrlas". CodePlex . Архивировано из оригинала 27 июня 2015 г. Получено 23 ноября 2014 г.
  189. ^ "DXUT для Win32 Desktop Update". MSDN.

Внешние ссылки