stringtranslate.com

Директ3D

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-х годах, но в конечном итоге была отменена.

Обзор

Директ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, такими как Glide от 3dfx .

С самого начала непосредственный режим также поддерживал мозаичный рендеринг 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 для оборудования мультитекстурирования и представляет собой вершину функций конвейера мультитекстурирования с фиксированными функциями: несмотря на то, что он был мощным, его было настолько сложно программировать, что потребовалась новая модель программирования, чтобы раскрыть возможности графического оборудования по затенению.

Директ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

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

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

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

Директ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] опция для выполнения замены и настройки материалов для каждого примитива с использованием геометрического шейдера, улучшенная генерализация доступа к ресурсам с помощью представления, удалены биты возможностей устаревшего оборудования (ограничения).

Директ3Д 10.1

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

Direct3D 10.1 устанавливает еще несколько стандартов качества изображения для поставщиков графики и дает разработчикам больше контроля над качеством изображения. [53] [54] Возможности включают более точный контроль над сглаживанием (как мультисэмплинг, так и суперсэмплинг с затенением для каждой выборки и контроль приложения над положением выборки) и большую гибкость некоторых существующих функций (массивы кубических карт и независимые режимы смешивания). Аппаратное обеспечение уровня Direct3D 10.1 должно поддерживать следующие функции: Мультисэмплинг был улучшен для обобщения прозрачности на основе покрытия и повышения эффективности работы мультисэмплинга с многопроходным рендерингом, улучшенное поведение при отсеивании – грани с нулевой областью отбраковываются автоматически; это влияет только на каркасный рендеринг, независимые режимы наложения для каждой цели рендеринга, новое выполнение пиксельного шейдера с частотой дискретизации с примитивной растеризацией, увеличенная полоса пропускания этапа конвейера, поверхности MSAA цвета и глубины/трафарета теперь могут использоваться с CopyResource как источник или место назначения, MultisampleEnable влияет только на растеризацию линий (точки и треугольники не затрагиваются) и используется для выбора алгоритма рисования линий. Это означает, что некоторая растеризация мультисэмпла из Direct3D 10 больше не поддерживается. Инструкции по выборке текстур — sample_c и sample_c_lz определены для работы как с Text2DArrays, так и с 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).

Директ3Д 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.

Директ3Д 11.0

Возможности Direct3D 11.0 включают в себя: поддержку модели шейдеров 5.0, динамическое связывание шейдеров, адресуемые ресурсы, дополнительные типы ресурсов, [72] подпрограммы, создание экземпляров геометрии, покрытие входными данными пиксельного шейдера, программируемую интерполяцию входных данных, новые форматы сжатия текстур (1 новый формат LDR). и 1 новый формат HDR), ограничения текстур для ограничения предварительной загрузки WDDM, требуют 8-битной точности субтекселей и суб-mip при фильтрации текстур, ограничения текстур 16 КБ, Gather4 (поддержка многокомпонентных текстур, поддержка программируемых смещений), DrawIndirect, консервативный oDepth, Depth Bias, [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]

Директ3Д 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] БПЛА (представления неупорядоченного доступа) на каждом этапе конвейера, растеризацию, независимую от цели (TIR), возможность сопоставления SRV динамических буферов с помощью NO_OVERWRITE, шейдерная обработка видеоресурсов, опция использования логических операций в цели рендеринга, опция привязки поддиапазона буфера констант к шейдеру и его извлечения, опция создания больших константных буферов, к которым шейдер не может получить доступ, опция отбрасывания ресурсов и представления ресурсов, возможность изменить подресурсы с помощью новых параметров копирования, возможность принудительного подсчета выборок для создания состояния растеризатора, возможность очистить все или часть представления ресурсов, возможность использовать Direct3D в процессах сеанса 0, возможность указать пользовательский клип плоскости в HLSL на уровне функций 9 и выше, поддержка теневого буфера на уровне функций 9, поддержка воспроизведения видео, расширенная поддержка общих ресурсов Text2D и оперативное переключение между контекстами 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]

Директ3Д 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]

Директ3D 11.X

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

Директ3Д 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]

Директ3Д 11.4

Директ3Д 12

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

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

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

Устройство

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

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

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

Трубопровод

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

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

  1. Input-Assembler : [144] Считывает данные вершин из буфера вершин, предоставленного приложением, и передает их по конвейеру.
  2. Вершинный шейдер : [145] Выполняет операции над одной вершиной за раз, например преобразования, скиннинг или освещение.
  3. Hull-Shader : [146] Выполняет операции над наборами контрольных точек патча и генерирует дополнительные данные, известные как константы патча.
  4. Тесселятор : [147] Разделяет геометрию для создания представлений корпуса более высокого порядка.
  5. Domain-Shader : [148] Выполняет операции над вершинами, выводящимися на этапе тесселяции, во многом так же, как вершинный шейдер.
  6. Геометрический шейдер : [149] Обрабатывает целые примитивы, такие как треугольники, точки или линии. Учитывая примитив, на этом этапе он отбрасывается или генерируется один или несколько новых примитивов.
  7. Stream-Output : [150] Может записывать в память результаты предыдущего этапа. Это полезно для рециркуляции данных обратно в конвейер.
  8. Растеризатор : [151] [152] Преобразует примитивы в пиксели, передавая эти пиксели в пиксельный шейдер. Растеризатор также может выполнять другие задачи, такие как обрезка невидимого или интерполяция данных вершин в попиксельные данные.
  9. Пиксельный шейдер : [153] Определяет окончательный цвет пикселя, который будет записан в цель рендеринга, а также может вычислить значение глубины, которое будет записано в буфер глубины.
  10. Output-Merger : [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», подмножество Direct3D 10 API с тремя уровнями функций, инкапсулирующими различные карты 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 и драйверов 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]

Альтернативные реализации

Существуют следующие альтернативные реализации Direct3D API. Они полезны для платформ, отличных от Windows, и для оборудования без некоторых версий поддержки DX:

Сопутствующие инструменты

D3DX

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

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

ДХУТ

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

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

Рекомендации

  1. ^ «Настройка функциональности трафарета глубины» . Майкрософт.
  2. ^ "RenderStateManager.UseWBuffer". Майкрософт.
  3. ^ «Смешивание текстур (Direct3D 9)» . Майкрософт.
  4. ^ «Смешивание геометрии (Direct3D 9)» . Майкрософт.
  5. Ссылки Майкрософт.
  6. ^ «Эффекты (Direct3D 11)» . Майкрософт.
  7. ^ «Комплект разработки программного обеспечения DirectX, октябрь 2006 г.» . Майкрософт. Архивировано из оригинала 2 ноября 2011 года.
  8. ^ «Руководство по платформе расширенной растеризации Windows (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. ^ «Вершинные шейдеры и пиксельные шейдеры». archive.org . Архивировано из оригинала 16 августа 2004 года . Проверено 6 сентября 2023 г.{{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  13. ^ «Загрузки Microsoft DirectX для Windows (Win95, Win98, Win98SE, WinME, Win2000, WinXP)» . www.falconfly.de . Архивировано из оригинала 10 ноября 2006 года . Проверено 11 января 2022 г.
  14. ^ «Загрузите среду выполнения DirectX 9.0c для конечных пользователей из официального центра загрузки Microsoft» . www.microsoft.com . Архивировано из оригинала 29 июля 2015 года . Проверено 11 января 2022 г.
  15. ^ "Команда управления Qube Soft" . qubesoft.com. 4 апреля 2017 года. Архивировано из оригинала 6 апреля 2017 года . Проверено 5 апреля 2017 г.
  16. ^ аб Кларо, Николь (апрель 1995 г.). «Дальнейший рендеринг» (PDF) . Журнал разработчиков игр . Архивировано (PDF) из оригинала 26 января 2021 г. Проверено 21 августа 2022 г.
  17. Прозис, Джефф (16 мая 1995 г.). «Вступление в Мультимедийную партию». Журнал ПК . Проверено 20 августа 2022 г.
  18. ^ Томпсон, Найджел (август 1996 г.). «Создание сцены с использованием сохраненного режима Direct3D» (PDF) . Журнал разработчиков игр . Архивировано (PDF) из оригинала 26 января 2021 г. Проверено 20 августа 2022 г.
  19. Беркес, Отто (12 апреля 2015 г.). «ДиректХ». Блог Отто Беркеса . Проверено 22 августа 2022 г.
  20. Чен, Раймонд (22 января 2004 г.). «Что случилось с DirectX 4?». Старая новая вещь . Майкрософт . Проверено 28 августа 2022 г.
  21. ^ «Пресс-релиз-Microsoft Meltdown (февраль 1997 г.)» . Корпорация Майкрософт. 18 февраля 1997 г.
  22. ^ «Пресс-релиз-Microsoft Meltdown (июль 1997 г.)» . Корпорация Майкрософт. 22 июля 1997 г.
  23. ^ Рон Фоснер. «Получите быстрый и простой 3D-рендеринг с помощью DrawPrimitive и DirectX 5.0». Системный журнал Microsoft.
  24. ^ «Программирование в Direct3D 7 Immediate Mode Framework 3: Мультитекстурирование» . gamedev.net. 29 мая 2000 года. Архивировано из оригинала 5 августа 2011 года . Проверено 17 сентября 2011 г.
  25. ^ «Microsoft выпускает финальную версию DirectX 6.0» . Майкрософт. 7 августа 1998 г.
  26. ^ «Microsoft выпускает DirectX 6.1» . Майкрософт. 3 февраля 1999 г.
  27. ^ «Обновление талисмана Билла Гейтса, апрель 1997 г.» (PDF) . Майкрософт. 5 мая 1997 г. Архивировано из оригинала (PDF) 8 декабря 2015 г. . Проверено 31 октября 2015 г.
  28. ^ «DDS (формат DirectDraw Surface)» . MSDN.
  29. ^ «DirectX 7: [дата выхода] в июле 1999 г.». ГеймСпот . ВЕЛИКОБРИТАНИЯ. Март 1999 года. Архивировано из оригинала 8 мая 1999 года . Проверено 20 июля 2019 г.
  30. ^ «Microsoft объявляет о выпуске DirectX 8.0» . Майкрософт. 9 ноября 2000 года . Проверено 7 января 2015 г.
  31. ^ «Функция прямого действия: DirectX 8.0» . ГеймСпот . ВЕЛИКОБРИТАНИЯ. Архивировано из оригинала 23 февраля 2001 года . Проверено 20 июля 2019 г.
  32. ^ «Графика и видео DirectX 8: новый старт» . gamedev.net. 30 ноября 2000 года. Архивировано из оригинала 4 июня 2007 года . Проверено 18 февраля 2007 г.
  33. ^ «Графика Direct3D 9» . MSDN . Проверено 30 сентября 2014 г.
  34. ^ «Написание шейдеров HLSL в Direct3D 9» . MSDN . Проверено 30 сентября 2014 г.
  35. ^ «HLSL в Direct3D 9.0» . Майкрософт . Архивировано из оригинала 27 августа 2010 года.
  36. ^ «Несколько целей рендеринга (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 (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 г.
  43. ^ Служба поддержки Microsoft (17 марта 2009 г.). «Сохраненный режим Direct3D удален из Windows Vista». Архивировано из оригинала 1 июня 2013 года.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  44. ^ «Комплект разработки программного обеспечения DirectX, февраль 2007 г.» . Майкрософт. Архивировано из оригинала 3 сентября 2012 года.
  45. ^ «Типы ресурсов (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 г.
  46. ^ «Уровни API (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 г.
  47. ^ "Новости CNet" . Проверено 30 сентября 2014 г.
  48. ^ «Ядро общего шейдера». Майкрософт.
  49. ^ «Особенности шейдера геометрии» . Майкрософт.
  50. ^ «Этапы шейдеров». Майкрософт.
  51. ^ «Что такое Direct3D 10 – Дополнительные улучшения» . Аппаратное обеспечение Тома. 8 ноября 2006 г.
  52. ^ «Функции Direct3D 10.1» . MSDN . Проверено 30 сентября 2014 г.
  53. ^ «Microsoft представляет подробности DirectX 10.1 на SIGGRAPH» . ЭкстримТех. 7 августа 2007 г.
  54. ^ «Функции Direct3D 10.1» . MSDN.
  55. ^ ab "Метод ID3D11Device::CheckMultisampleQualityLevels". MSDN . Проверено 30 сентября 2014 г.
  56. ↑ abc Чак Уолборн (20 июня 2012 г.). «Уровни функций Direct3D». Игры для Windows и блог DirectX SDK .
  57. ^ "Перечисление D3D10_FEATURE_LEVEL1" . MSDN . Проверено 22 ноября 2009 г.
  58. ^ «Уровни функций Direct3D» . MSDN . Проверено 30 сентября 2014 г.
  59. ^ «Функции Direct3D 11» . MSDN . Проверено 30 сентября 2014 г.
  60. ^ abc "Презентации Gamefest 2008" . Майкрософт. Архивировано из оригинала 13 ноября 2013 года.
  61. ^ ab «Технические презентации Nvision 08». Нвидия . Проверено 16 сентября 2011 г.
  62. ^ «Комплект разработки программного обеспечения DirectX, ноябрь 2008 г.» . Майкрософт. 7 ноября 2008 г.
  63. ^ «AMD демонстрирует первый в мире графический процессор DirectX 11» . Engadget. 3 июня 2009 г.
  64. ^ ab «GameFest 2008: Знакомство с графическим конвейером Direct3D 11». Майкрософт. Слайд 56. Архивировано из оригинала 28 января 2013 года.
  65. ^ abc «Direct3D 11 на оборудовании нижнего уровня». MSDN . Проверено 18 ноября 2012 г.
  66. ^ ab «Комплект драйверов Windows — поддержка Direct3D 11» . MSDN . Проверено 13 июня 2009 г.
  67. ^ ab «Уровни функций Direct3D». MSDN . Проверено 2 июля 2012 г.
  68. ^ «Использование аппаратной тесселяции ATI в DX9» . 14 июля 2008 г.
  69. ^ "SDK тесселяции AMD DX9" . Архивировано из оригинала 8 ноября 2010 года.
  70. ^ «Программирование тесселяции в реальном времени на графическом процессоре» (PDF) . Архивировано из оригинала (PDF) 27 июля 2011 года.
  71. ^ «Образцы тесселяции OpenGL» . Архивировано из оригинала 9 апреля 2010 года.
  72. ^ «Новые типы ресурсов». MSDN . Проверено 30 сентября 2014 г.
  73. ^ «Смещение глубины». MSDN . Проверено 30 сентября 2014 г.
  74. ^ "Структура D3D11_RASTERIZER_DESC1" . MSDN . Проверено 30 сентября 2014 г.
  75. ^ «Шейдерная модель 5». MSDN . Проверено 30 сентября 2014 г.
  76. ^ «Обзор тесселяции» . Майкрософт.
  77. ^ «Обзор тесселяции» . MSDN . Проверено 30 сентября 2014 г.
  78. ^ «Описание обновления платформы для Windows Server 2008 и обновления платформы для Windows Vista». Поддержка.microsoft.com. 2 октября 2012 года . Проверено 15 июня 2013 г.
  79. ^ «Обновление платформы для Windows Vista - Блог разработчиков DirectX - Домашняя страница сайта - Блоги MSDN» . Блоги.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» . 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, расширенную поддержку профессиональных приложений» . АнандТех. 5 августа 2011 г.
  89. ^ «Графика DirectX — обновление платформы для Windows 7» . MSDN. 14 ноября 2012 г.
  90. ^ «DirectX 11.1 и Windows 7». Игры для 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 — Программирование DirectX» . Библиотека MSDN . 26 июня 2013. Архивировано из оригинала 27 августа 2015 года . Проверено 27 июня 2013 г.
  95. ↑ аб Беннетт Сорбо (26 июня 2013 г.). «Что нового в Direct3D 11.2». Канал9 – СТРОИТЕЛЬ 2013 .
  96. ^ «Улучшения DXGI 1.3» . Библиотека MSDN . 26 июня 2013 г.
  97. ^ «Что нового в драйверах дисплея Windows 8.1 Preview (WDDM 1.3)» . MSDN . Проверено 30 сентября 2014 г.
  98. ^ «Содержимое перемещено (Windows)» . Архивировано из оригинала 4 марта 2016 года . Проверено 6 марта 2015 г.
  99. ^ "Перечисление D3D11_TILED_RESOURCES_TIER" . MSDN . Проверено 30 сентября 2014 г.
  100. Чарльз Холлемерш, Мэтт Сэнди (26 июня 2013 г.). «Массивные виртуальные текстуры для игр: мозаичные ресурсы Direct3D». Канал9 – СТРОИТЕЛЬ 2013 .
  101. ^ «Функции Direct3D 11.2» . Библиотека MSDN . 26 июня 2013 г.
  102. ^ "Блоги MSDN" . MSDN . Проверено 30 сентября 2014 г.
  103. ^ "Структура D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCEING_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 подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . Проверено 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 – мозаичные ресурсы – типизированные нагрузки БПЛА». 19 сентября 2014 года . Проверено 30 сентября 2014 г.
  111. ^ "Перечисление D3D11_CONSERVATIVE_RASTERIZATION_TIER" . библиотека MSDN . 22 февраля 2015 года . Проверено 22 февраля 2015 г.
  112. ^ «Функции Direct3D 11.3» . библиотека MSDN . 28 марта 2015 года . Проверено 28 марта 2015 г.
  113. ^ «Игры для Windows и блог DirectX SDK» .
  114. ^ AB Райан Смит. «AnandTech – Microsoft анонсирует DirectX 12: низкоуровневое графическое программирование переходит в DirectX» . Проверено 30 сентября 2014 г.
  115. ^ "Зона разработчиков 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 подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . Проверено 30 сентября 2014 г.
  120. ^ «Архивная копия». Архивировано из оригинала 30 апреля 2018 года . Проверено 19 сентября 2014 г.{{cite web}}: CS1 maint: archived copy as title (link)
  121. ^ ab «Модель шейдеров 5.1 — приложения Win32».
  122. ^ «Встречайте будущее графики для ПК: Microsoft представляет более быстрый консольный DirectX 12» . ПКМир . 20 марта 2014 года . Проверено 30 сентября 2014 г.
  123. ^ «DirectX 12 также добавит новые функции для графических процессоров следующего поколения» . 21 марта 2014 года . Проверено 30 сентября 2014 г.
  124. Ковалиски, Кирилл (21 марта 2014 г.). «DirectX 12 также добавит новые функции для графических процессоров следующего поколения». Технический отчет . Проверено 1 апреля 2014 г.
  125. ^ «Техническая библиотека». Интел . Проверено 21 декабря 2022 г.
  126. Стивихимс (30 декабря 2021 г.). «Конвейеры и шейдеры с Direct3D 12 — приложения Win32». Learn.microsoft.com . Проверено 19 декабря 2023 г.
  127. ↑ Ab Stevewhims (6 февраля 2023 г.). «Обзор корневых сигнатур — приложения Win32». Learn.microsoft.com . Проверено 19 декабря 2023 г.
  128. ^ «Обзор Direct3D 12, часть 7: Динамические кучи» . Проверено 2 октября 2014 г.
  129. ^ «Мультиадаптер». Архивировано из оригинала 14 сентября 2016 года . Проверено 3 августа 2016 г.
  130. ^ «Портирование игр DirectX 12 на Windows 7» . 21 августа 2019 г.
  131. ^ "Спецификации DirectX" .
  132. ^ "Microsoft.Direct3D.D3D12On7 1.1.0" .
  133. ^ Модель шейдера HLSL 6.0
  134. ^ ab «Анонс новых функций DirectX 12». Блог разработчиков DirectX . Проверено 24 февраля 2018 г.
  135. ^ «Прямое машинное обучение (DirectML)» . Документы Майкрософт . Проверено 28 июня 2020 г.
  136. ^ "ДиректМЛ". Документы Майкрософт.
  137. ^ «Переход к DirectX 12 — сетчатые шейдеры и шейдеры усиления: новое изобретение конвейера геометрии» . Блог разработчиков DirectX . Проверено 28 июня 2020 г.
  138. ^ «Переход к DirectX 12 — Обратная связь с сэмплером: некоторые полезные, когда-то скрытые данные, разблокированы» . Блог разработчиков DirectX . Проверено 4 ноября 2019 г.
  139. ^ «Трассировка лучей DirectX (DXR) Уровень 1.1» . Блог разработчиков DirectX . Проверено 6 ноября 2019 г.
  140. ^ «Переход к DirectX 12: больше контроля над распределением памяти». Блог разработчиков DirectX . Проверено 11 ноября 2019 г.
  141. ^ «Программный растеризатор для DirectX 9.0 SDK» . Майкрософт. 1 августа 2005 г. Архивировано из оригинала 4 сентября 2012 г.
  142. ^ «Ресурсы Direct3D — Пул памяти» . Архивировано из оригинала 9 мая 2008 года.
  143. ^ «Графический конвейер». Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  144. ^ "Этап ввода-ассемблера" . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  145. ^ «Этап вершинного шейдера». Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  146. ^ «Этапы тесселяции». Графика Direct3D 11. Документы Майкрософт . Этап шейдера корпуса . Проверено 19 октября 2021 г.
  147. ^ «Этапы тесселяции». Графика Direct3D 11. Документы Майкрософт . Этап Тесселятора . Проверено 19 октября 2021 г.
  148. ^ «Этапы тесселяции». Графика Direct3D 11. Документы Майкрософт . Этап доменного шейдера . Проверено 19 октября 2021 г.
  149. ^ "Этап шейдера геометрии" . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  150. ^ «Этап потокового вывода». Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  151. ^ "Состояния рендеринга". DirectX 9.0 для управляемого кода. Документы Майкрософт . Проверено 19 октября 2021 г.
  152. ^ "Этап растеризации" . Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  153. ^ «Этап пиксельных шейдеров». Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  154. ^ «Этап слияния продукции». Графика Direct3D 11. Документы Майкрософт . Проверено 19 октября 2021 г.
  155. ^ ab «Функции Direct3D 11.1 — приложения Win32».
  156. ^ "Перечисление D3D11_FORMAT_SUPPORT" . MSDN . Проверено 16 июня 2015 г.
  157. ^ "Перечисление D3D11_FORMAT_SUPPORT2" . 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» . Майкрософт .
  165. ^ Direct3D Mobile, Microsoft, 6 января 2010 г.
  166. ^ «Команда Wine с гордостью сообщает о выпуске стабильной версии Wine 4.0». Винный штаб-квартира . Проверено 3 апреля 2019 г.
  167. ^ "WineD3DOnWindows - Официальная винная вики" . Wiki.winehq.org. 2 июня 2013. Архивировано из оригинала 17 января 2009 года . Проверено 15 июня 2013 г.
  168. ^ WineHQ - vkd3d, Direct3D 12, 3 апреля 2019 г. , получено 30 июня 2020 г.
  169. ^ «Выпущен Vkd3d 1.0» . Винный штаб-квартира . Проверено 3 апреля 2019 г.
  170. Майкл Ларабель (23 августа 2019 г.). «Valve's Proton предлагает ответвление с VKD3D для Direct3D 12 поверх Vulkan» . Фороникс . Проверено 7 октября 2019 г.
  171. Джейсон Евангельо (1 марта 2019 г.). «Windows 10 против Linux: 6 игр Steam, проверенных на Intel Hades Canyon NUC». Форбс . Проверено 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" . Гитхаб . Проверено 6 октября 2019 г.
  175. Майкл Ларабель (30 июля 2019 г.). «Proton переработан на Wine 4.11, добавляет D9VK Direct3D 9, лучшее использование ЦП и DXVK 1.3». Фороникс . Проверено 7 октября 2019 г.
  176. ^ «Реализация внешнего интерфейса Direct3D9 от Джошуа-Эштона · Запрос на извлечение № 1275 · doitsujin/dxvk» . Гитхаб . Проверено 17 декабря 2019 г.
  177. ^ "Репозиторий D8VK 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». МОЙ БОГ! Убунту! . Проверено 7 октября 2019 г.
  180. ^ "Справочник по D3DX 11" . MSDN . Проверено 30 сентября 2014 г.
  181. ^ «Жизнь без D3DX». MSDN.
  182. ^ «Инструмент компилятора эффектов» . Майкрософт.
  183. ^ "Математика сферических гармоник". msdn.com . Проверено 23 ноября 2014 г.
  184. ^ «Эффекты 11». КодПлекс . Архивировано из оригинала 24 сентября 2014 года . Проверено 30 сентября 2014 г.
  185. ^ «Библиотека обработки геометрии DirectXMesh» . КодПлекс . Архивировано из оригинала 29 сентября 2014 года . Проверено 30 сентября 2014 г.
  186. ^ «Библиотека обработки текстур DirectXTex» . КодПлекс . Архивировано из оригинала 25 сентября 2014 года . Проверено 30 сентября 2014 г.
  187. ^ «Набор инструментов DirectX» . КодПлекс . Архивировано из оригинала 29 сентября 2014 года . Проверено 30 сентября 2014 г.
  188. ^ "УВАтрлас". КодПлекс . Архивировано из оригинала 27 июня 2015 года . Проверено 23 ноября 2014 г.
  189. ^ «DXUT для обновления рабочего стола Win32» . MSDN.

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