Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Direct3D - это программный интерфейс (API) графических приложений для Microsoft Windows . Являясь частью DirectX , Direct3D используется для рендеринга трехмерной графики в приложениях, где важна производительность, например в играх. Direct3D использует аппаратное ускорение, если оно доступно на видеокарте , позволяя аппаратное ускорение всего конвейера 3D-рендеринга или даже только частичное ускорение. Direct3D предоставляет расширенные графические возможности оборудования для 3D-графики, включая Z-буферизацию , [1] W-буферизацию, [2] буферизацию трафарета , пространственное сглаживание., Альфа - смешивание , смешивание цветов, множественное отображение , текстуры смешивания, [3] [4] обрезочные , выбраковки , атмосферные эффекты, перспективы-правильное отображение текстуры , программируемый HLSL шейдеров [5] и эффекты. [6] Интеграция с другими технологиями DirectX позволяет Direct3D предоставлять такие функции, как отображение видео, аппаратный 3D-рендеринг в 2D- плоскостях наложения и даже спрайты , обеспечивая использование 2D- и 3D-графики в интерактивных медиа-связях.

Direct3D содержит множество команд для рендеринга компьютерной 3D-графики ; однако, начиная с версии 8, Direct3D заменил структуру DirectDraw и также взял на себя ответственность за рендеринг 2D-графики . [7] Microsoft стремится постоянно обновлять Direct3D для поддержки новейших технологий, доступных на 3D-видеокартах. Direct3D предлагает полную программную эмуляцию вершин, но не поддерживает программную эмуляцию пикселей для функций, недоступных на оборудовании. Например, если программное обеспечение, запрограммированное с использованием Direct3D, требует пиксельных шейдеров и видеокарты.на компьютере пользователя не поддерживает эту функцию, Direct3D не будет ее эмулировать, хотя он будет вычислять и отображать полигоны и текстуры трехмерных моделей, хотя обычно с ухудшенными качеством и производительностью по сравнению с аппаратным эквивалентом. API включает в себя эталонный растеризатор (или устройство REF), который эмулирует обычную графическую карту в программном обеспечении, хотя он слишком медленный для большинства 3D-приложений в реальном времени и обычно используется только для отладки. Новый программный растеризатор в реальном времени WARP , предназначенный для эмуляции полного набора функций Direct3D 10.1, включен в Windows 7 и Windows Vista с пакетом обновления 2 (SP2) с обновлением платформы; его производительность, как говорят, находится на одном уровне с 3D-картами более низкого уровня на многоядерных процессорах.[8]

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

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

Обзор [ править ]

  • Direct3D 6.0 - Мультитекстурирование
  • Direct3D 7.0 - Аппаратное преобразование, отсечение и освещение (TCL / T & L)
  • Direct3D 8.0 - пиксельный шейдер 1.0 и вершинный шейдер 1.0
  • Direct3D 8.0a - пиксельный шейдер 1.1, пиксельный шейдер 1.2, пиксельный шейдер 1.3
  • Direct3D 8.1 - пиксельный шейдер 1.4 и вершинный шейдер 1.1
  • Direct3D 9.0 - Shader Model 2.0 (Pixel Shader 2.0 и Vertex Shader 2.0)
  • Direct3D 9.0b - пиксельный шейдер 2.0b
  • Direct3D 9.0c - Shader Model 3.0 (Pixel Shader 3.0 и Vertex Shader 3.0), GPGPU
  • Direct3D 9.0L - только Windows Vista , Direct3D 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, DXVA 1.0, GPGPU
  • Direct3D 10.0 - Windows Vista / Windows 7, Shader Model 4.0 , Windows Graphics Foundation 2.0, DXVA 2.0, GPGPU
  • Direct3D 10.1 - Windows Vista SP1 / Windows 7, Shader Model 4.1, Windows Graphics Foundation 2.1, DXVA 2.1, GPGPU
  • Direct3D 11.0 - Windows Vista SP2 / Windows 7 , Shader Model 5.0, тесселяция, многопоточный рендеринг, вычислительные шейдеры, реализованные аппаратным и программным обеспечением под управлением Direct3D 9/10 / 10.1, GPGPU
  • Direct3D 11.1 - Windows 7 SP1 / Windows 8 , стереоскопический 3D-рендеринг, GPGPU
  • Direct3D 11.2 - Windows 8.1 , плиточные ресурсы, GPGPU
  • Direct3D 11.3 - Windows 10 , Shader Model 5.1, GPGPU
  • Direct3D 12.0 - Windows 10 , API низкоуровневого рендеринга , Shader Model 6.0, GPGPU

Direct3D 2.0 и 3.0 [ править ]

В 1992 году Серван Кеонджиан и Дуг Рабсон основали компанию RenderMorphics, которая разработала API трехмерной графики под названием Reality Lab , который использовался в программном обеспечении для обработки медицинских изображений и САПР. [9] Были выпущены две версии этого API. Microsoft купила RenderMorphics в феврале 1995 года, пригласив Кёнджиана на борт для реализации движка 3D-графики для Windows 95 . Первая версия Direct3D, поставляемая в составе DirectX 2.0 (2 июня 1996 г.) и DirectX 3.0 (26 сентября 1996 г.).

Первоначально в Direct3D были реализованы API-интерфейсы 3D как для « сохраненного режима », так и для « немедленного режима ». Как и другие API DirectX, такие как DirectDraw , оба были основаны на COM . Сохраненный режим представлял собой API графа сцены, который не получил широкого распространения. Разработчики игр требовали более прямого контроля над работой оборудования, чем мог обеспечить режим Direct3D. Только две игры, которые были проданы значительным объемом, Lego Island и Lego Rock Raiders , были основаны на сохраненном режиме Direct3D, поэтому Microsoft не обновляла сохраненный режим после DirectX 3.0.

Для DirectX 2.0 и 3.0 в непосредственном режиме Direct3D использовалась модель программирования «буфер выполнения», которую, как надеялась компания Microsoft, поставщики оборудования будут поддерживать напрямую. Буферы выполнения предназначались для выделения в аппаратной памяти и анализа аппаратными средствами для выполнения 3D-рендеринга. Однако в то время считалось, что их очень неудобно программировать, что мешало внедрению нового API и побуждало Microsoft принять OpenGL в качестве официального API-интерфейса 3D-рендеринга для игр и приложений для рабочих станций. (см. OpenGL против Direct3D )

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

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

Direct3D 4.0 [ править ]

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

Direct3D 5.0 [ править ]

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

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

Direct3D 6.0 [ править ]

DirectX 6.0 (выпущенный в августе 1998 г.) представил множество функций для современного оборудования (например, мультитекстур [14] и буферы трафаретов ), а также оптимизированные конвейеры геометрии для x87 , SSE и 3DNow! и дополнительное управление текстурами для упрощения программирования. [15] Direct3D 6.0 также включал поддержку функций, которые были лицензированы Microsoft у конкретных поставщиков оборудования для включения в API, в обмен на преимущество времени выхода на рынок для поставщика лицензий. Сжатие текстур S3поддержка была одной из таких функций, переименованной в DXTC для включения в API. Другой - запатентованная технология составления рельефных карт TriTech . Microsoft включила эти функции в DirectX, а затем добавила их к требованиям, необходимым для драйверов, чтобы получить логотип Windows, чтобы стимулировать широкое внедрение функций в оборудовании других поставщиков.

Незначительное обновление DirectX 6.0 появилось в обновлении DirectX 6.1 за февраль 1999 года. Помимо добавления поддержки DirectMusic в первый раз, в этом выпуске улучшена поддержка расширений Intel Pentium III 3D. [16]

Конфиденциальная записка, отправленная в 1997 году [17], показывает, что Microsoft планирует объявить о полной поддержке Talisman в DirectX 6.0, но API в конечном итоге был отменен (подробности см. На странице Microsoft Talisman ).

Direct3D 7.0 [ править ]

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

Direct3D 8.0 [ править ]

DirectX 8.0 , выпущенный в ноябре 2000 года, представил возможность программирования в виде вершинных и пиксельных шейдеров , что позволило разработчикам писать код, не беспокоясь о состоянии лишнего оборудования. [20] Сложность программ шейдеров зависела от сложности задачи, и драйвер дисплея компилировал эти шейдеры в инструкции, которые могли быть поняты аппаратным обеспечением. Direct3D 8.0 и его возможности программируемого затенения были первым серьезным отходом от архитектуры фиксированных функций в стиле OpenGL, где рисование управляется сложным конечным автоматом. Direct3D 8.0 также исключил DirectDraw как отдельный API. [21] [22] Direct3D включил в себя все оставшиеся вызовы API DirectDraw, все еще необходимые для разработки приложений, такие как Present (), функция, используемая для отображения результатов рендеринга.

Direct3D не считался удобным для пользователя, но в версии DirectX 8.1 многие проблемы с удобством использования были решены. Direct3D 8 содержит множество мощных функций трехмерной графики, таких как вершинные шейдеры , пиксельные шейдеры , туман , отображение рельефа и наложение текстур .

Direct3D 9 [ править ]

Direct3D 9.0 , [23] выпущен в декабре 2002 года, добавил новую версию высокого уровня Shader Language [24] [25] Поддержка форматов текстур с плавающей запятой, Multiple Render Targets (MRT), [26] многоэлементные текстуры, [27] поиск текстуры в методах вершинного шейдера и буфера трафарета. [28]

Direct3D 9Ex [1]

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

Direct3D 10 [ править ]

Windows Vista включает крупное обновление Direct3D API. Первоначально назывался WGF 2.0 (Windows Graphics Foundation 2.0), затем DirectX 10 и DirectX Next. Direct3D 10 [32] включает обновленную шейдерную модель 4.0 и дополнительную возможность прерывания для шейдерных программ. [31] В этой модели шейдеры по-прежнему состоят из фиксированных этапов, как и в предыдущих версиях, но все этапы поддерживают почти унифицированный интерфейс, а также единую парадигму доступа к таким ресурсам, как текстуры и константы шейдеров. Сам язык был расширен, чтобы стать более выразительным, включая целочисленные операции, значительно увеличенное количество инструкций и больше языковых конструкций, подобных C. В дополнение к ранее доступным вершинам иЭтапы пиксельного шейдера , API включает этап геометрического шейдера, который разбивает старую модель одной вершины на вход / одну вершину, чтобы позволить геометрию фактически генерироваться из шейдера, что позволяет создавать сложную геометрию полностью на графическом оборудовании.

Windows XP не поддерживается DirectX 10.0 и выше.

В отличие от предыдущих версий 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 или Crysis. . DirectX 10 SDK стал доступен в феврале 2007 года. [33]

Direct3D 10.0 [ править ]

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

  • Фиксированные конвейеры [36] заменяются полностью программируемыми конвейерами (часто называемыми унифицированной конвейерной архитектурой), которые можно запрограммировать для их эмуляции.
  • Новый объект состояния, позволяющий (в основном) процессору эффективно изменять состояния.
  • Модель шейдеров 4.0 расширяет возможности программирования графического конвейера . Он добавляет инструкции для целочисленных и побитовых вычислений.
  • Общее ядро ​​шейдера [37] обеспечивает полный набор совместимых с IEEE 32-битных целочисленных и побитовых операций. Эти операции позволяют использовать новый класс алгоритмов в графическом оборудовании - примеры включают методы сжатия и упаковки, БПФ и управление потоком программы битового поля.
  • Шейдеры геометрии , [38] [39], которые работают с соседними треугольниками, которые образуют сетку .
  • Массивы текстур позволяют заменять текстуры в графическом процессоре без вмешательства процессора.
  • Предусмотренный рендеринг позволяет игнорировать вызовы рисования на основе некоторых других условий. Это позволяет быстро отбраковывать окклюзию , что предотвращает рендеринг объектов, если они не видны или слишком далеко, чтобы быть видимыми.
  • Поддержка Instancing 2.0 , позволяющая визуализировать несколько экземпляров похожих мешей, таких как армии, трава или деревья, за один вызов отрисовки, сокращая время обработки, необходимое для нескольких похожих объектов, по сравнению с одним. [40]

Direct3D 10.1 [ править ]

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

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

  • Обязательная 32-битная фильтрация с плавающей запятой .
  • Правила с плавающей запятой - используются те же правила IEEE-754 для операций с плавающей запятой, ЗА ИСКЛЮЧЕНИЕМ 32-битных операций с плавающей запятой, которые были усилены для получения результата в пределах 0,5 единицы последней позиции (0,5 ULP) от бесконечно точного результата. Это относится к сложению, вычитанию и умножению. (точность до 0,5 ULP для умножения, 1,0 ULP для обратного).
  • Форматы - точность смешивания float16 увеличена до 0,5 ULP. Смешивание также требуется для форматов UNORM16 / SNORM16 / SNORM8.
  • Преобразование формата при копировании между определенными 32/64/128-битными предварительно структурированными, типизированными ресурсами и сжатыми представлениями той же разрядности.
  • Обязательная поддержка 4x MSAA для всех целей рендеринга, кроме R32G32B32A32 и R32G32B32. [44]
  • Шейдерная модель 4.1

В отличие от Direct3D 10, для которого строго требовались аппаратные интерфейсы и драйверы класса Direct3D 10, среда выполнения Direct3D 10.1 может работать на оборудовании Direct3D 10.0 с использованием концепции « уровней функций », [45] [46] [47], но новые функции поддерживаются исключительно новыми оборудование, которое предоставляет уровень возможностей 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 [48] был выпущен как часть Windows 7. Он был представлен на Gamefest 2008 22 июля 2008 года и продемонстрирован на технической конференции Nvision 08 26 августа 2008 года. [49] [50] Техническая предварительная версия Direct3D 11 уже доступна. был включен в выпуск DirectX SDK за ноябрь 2008 г. [51] AMD анонсировала работающее оборудование DirectX11 на выставке Computex 3 июня 2009 г., на которой были запущены некоторые образцы DirectX 11 SDK. [52]

Среда выполнения Direct3D 11 может работать на оборудовании и драйверах класса Direct3D 9 и 10.x, используя концепцию «уровней функций» , расширяя функциональные возможности, впервые представленные в среде выполнения Direct3D 10.1. [45] [53] [54] Уровни функций позволяют разработчикам унифицировать конвейер рендеринга под Direct3D 11 API и использовать улучшения API, такие как улучшенное управление ресурсами и многопоточность даже на картах начального уровня, хотя и с расширенными функциями, такими как новые модели шейдеров. и этапы рендеринга будут доступны только на оборудовании верхнего уровня. [53] [55]Существует три профиля «10 уровня 9», которые инкапсулируют различные возможности популярных карт DirectX 9.0a, а Direct3D 10, 10.1 и 11 имеют отдельный уровень функций; каждый верхний уровень является строгим надмножеством нижнего уровня. [56]

Раньше тесселяция рассматривалась для Direct3D 10, но позже от нее отказались. Графические процессоры, такие как Radeon R600, имеют механизм тесселяции, который можно использовать с Direct3D 9/10 / 10.1 [57] [58] [59] и OpenGL, [60], но он несовместим с Direct3D 11 (согласно Microsoft). Старое графическое оборудование, такое как Radeon 8xxx, GeForce 3/4, имело поддержку другой формы тесселяции (RT-патчи, N-патчи), но эти технологии так и не нашли существенного применения. Таким образом, их поддержка была прекращена из-за нового оборудования.

Microsoft также намекнула на другие функции, такие как прозрачность , независимая от порядка , которая никогда не предоставлялась Direct3D API, но почти прозрачно поддерживалась ранним оборудованием Direct3D, таким как линейка микросхем PowerVR от Videologic.

Direct3D 11.0 [ править ]

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

  • Шейдерная модель 5 [64]
  • Поддержка тесселяции [65] и тесселяционных шейдеров [66] для увеличения во время выполнения количества видимых полигонов из полигональной модели с низкой детализацией.
  • Многопоточный рендеринг - для рендеринга одного и того же объекта устройства Direct3D из разных потоков для многоядерных процессоров.
  • Вычислительные шейдеры - которые предоставляют конвейер шейдеров для неграфических задач, таких как обработка потока и ускорение физики, по духу аналогичные тем, что,среди прочего, достигаются OpenCL , Nvidia CUDA , ATI Stream и HLSL Shader Model 5. [49] [50]
  • Обязательная поддержка 4x MSAA для всех целей рендеринга и 8x MSAA для всех форматов целей рендеринга, кроме форматов R32G32B32A32. [44]

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

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

Direct3D 11.1 [ править ]

Direct3D 11.1 [69] [70] - это обновление API, поставляемого с Windows 8 . [71] [72] Среда выполнения Direct3D в Windows 8 поддерживает DXGI 1.2 [73] и требует новых драйверов устройств WDDM 1.2 [74] . [75] Предварительная версия Windows SDK для Windows 8 Developer Preview была выпущена 13 сентября 2011 г.

Новый API включает в себя трассировку шейдеров и усовершенствования компилятора HLSL, поддержку скалярных типов данных HLSL с минимальной точностью, [76]БПЛА (неупорядоченные представления доступа) на каждом этапе конвейера, независимая от цели растеризация (TIR), возможность отображать SRV динамических буферов с NO_OVERWRITE, шейдерная обработка видеоресурсов, возможность использовать логические операции в цели рендеринга, возможность привязки поддиапазона из буфера констант в шейдер и извлекать его, возможность создания буферов констант большего размера, чем шейдер может получить доступ, возможность отбрасывать ресурсы и представления ресурсов, возможность изменять подресурсы с новыми параметрами копирования, возможность принудительного подсчета образцов для создания растеризатора состояние, возможность очистки всего или части представления ресурсов, возможность использования Direct3D в процессах сеанса 0, возможность указания пользовательских плоскостей отсечения в HLSL на уровне функций 9 и выше, поддержка теневого буферана уровне функций 9, поддержка воспроизведения видео, расширенная поддержка общих ресурсов Texture2D и переключение на лету между контекстами Direct3D 10 и 11 и уровнями функций. Direct3D 11.1 включает новый уровень функций 11_1, который вносит незначительные обновления в язык шейдеров, такие как увеличенные буферы констант и дополнительные инструкции с двойной точностью, а также улучшенные режимы наложения и обязательную поддержку 16-битных цветовых форматов для повышения производительности ввода. графические процессоры уровня, такие как Intel HD Graphics . [75] [77] WARP обновлен для поддержки уровня функций 11_1.

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

Direct3D 11.2 [ править ]

Direct3D 11.2 [80] [81] [82] поставлялся с Windows 8.1 . [83] [84] Новые аппаратные функции требуют DXGI 1.3 [85] с драйверами WDDM 1.3 [86] и включают модификацию и связывание шейдеров во время выполнения, граф связывания функций (FLG), компилятор HLSL для входящих сообщений , возможность аннотировать графические команды. [87] Уровни функций 11_0 и 11_1 вводят дополнительную поддержку мозаичных ресурсов с ограничением уровня детализации шейдера (Tier2). [88] Последняя функция эффективно обеспечивает контроль над таблицами страниц оборудования, присутствующими во многих современных графических процессорах. [89] WARPбыл обновлен для полной поддержки новых функций. [83] [90] Однако функциональный уровень 11_2 отсутствует; новые функции рассредоточены по существующим уровням функций. Те, которые зависят от оборудования, могут быть проверены индивидуально через CheckFeatureSupport. [84] [91] Некоторые из «новых» функций Direct3D 11.2 фактически раскрывают некоторые старые аппаратные функции более детально; например, D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORTпредоставляет частичную поддержку для создания экземпляров на оборудовании уровней функций 9_1 и 9_2, в остальном полностью поддерживается, начиная с уровня функций 9_3. [92]

Direct3D 11.X

Direct3D 11.X - это расширенный набор DirectX 11.2, работающий на Xbox One . [93] [94] Он включает в себя некоторые функции, такие как комплекты отрисовки, которые позже были объявлены как часть DirectX 12. [95]

Direct3D 11.3 [ править ]

Direct3D 11.3 [96] выпущен в июле 2015 года с Windows 10; он включает незначительные функции рендеринга из Direct3D 12, сохраняя при этом общую структуру API Direct3D 11.x. [97] [98] [99] Direct3D 11.3 представляет Shader Model 5.1, [100] необязательное значение эталонного шаблона, определяемое шейдером, типизированные неупорядоченные нагрузки представлений доступа, упорядоченные представления растеризатора (ROV), необязательный стандартный Swizzle, необязательное отображение текстур по умолчанию, консервативная растеризация (из трех уровней), [101] дополнительная поддержка унифицированного доступа к памяти (UMA) и дополнительные мозаичные ресурсы (уровень 2) (мозаичные ресурсы тома). [102]

Direct3D 11.4 [ править ]

  • Direct3D 11.4 версии 1511 - Первоначальный Direct3D 11.4 был представлен с обновлением Windows 10 Threshold 2 (версия 1511), улучшающим поддержку внешних графических адаптеров и DXGI 1.5. [103]
  • Direct3D 11.4 версии 1607 - обновленный Direct3D 11.4 с юбилейным обновлением Windows 10 (версия 1607) включает поддержку WDDM 2.1 и формата UHDTV HDR10 ( ST 2084 ), а также поддержку переменной частоты обновления для приложений UWP.

Direct3D 12 [ править ]

Direct3D 12 [97] [99] [96] [104] [105] [106] допускает более низкий уровень аппаратной абстракции, чем более ранние версии, позволяя будущим играм значительно улучшить многопоточное масштабирование и снизить загрузку ЦП. Это достигается за счет лучшего согласования уровня абстракции Direct3D с базовым оборудованием с помощью новых функций, таких как косвенное рисование, таблицы дескрипторов, сжатые объекты состояния конвейера и пакеты вызовов рисования. Фактически, сокращение нагрузки на драйверы - это главная привлекательность Direct3D 12, как и AMD Mantle ; [105] По словам его ведущего разработчика Макса МакМаллена, основная цель Direct3D 12 - достичь «эффективности консольного уровня» и улучшить параллелизм ЦП. [107][108] [109]

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

Некоторые новые аппаратные функции также присутствуют в Direct3D 12, [99] [111] [112], включая Shader Model 5.1, [100] Volume Tiled Resources (Tier 2), [100] Shader Specified Stencil Reference Value, Typed UAV Load, Conservative Rasterization. (Уровень 1), улучшенные коллизии и отбраковка с консервативной растеризацией, упорядоченные виды растеризатора (ROV), стандартные Swizzles, отображение текстур по умолчанию, цепочки обмена , измененные ресурсы и сжатые ресурсы , [113] дополнительные режимы наложения , [114] программируемое смешивание и эффективность порядок-независимая прозрачность (OIT) с пиксельным упорядоченным БПЛА. [115]

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

Direct3D 12 также учился у AMD Mantle [ необходима цитата ] в списках команд и пакетах, стремясь обеспечить более сбалансированную совместную работу ЦП и ГП.

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

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

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

Динамические кучи также являются функцией Direct3D 12. [117]

Direct3D 12 имеет явную поддержку нескольких адаптеров, что позволяет явно управлять системами конфигурации нескольких графических процессоров. Такие конфигурации могут быть созданы с использованием графического адаптера одного и того же производителя оборудования, а также различных поставщиков оборудования. [118]

  • Direct3D 12 версии 1607 - с юбилейным обновлением Windows 10 (версия 1607), выпущенным 2 августа 2016 г., среда выполнения Direct3D 12 была обновлена ​​для поддержки конструкций для явной многопоточности и межпроцессного взаимодействия, что позволяет разработчикам массово использовать современные возможности. параллельные графические процессоры. [119] Другие функции включают обновленные корневые подписи версии 1.1, а также поддержку формата HDR10 и переменную частоту обновления .
  • Direct3D 12 версии 1703 - с обновлением Windows 10 Creators Update (версия 1703), выпущенным 11 апреля 2017 г., среда выполнения Direct3D 12 была обновлена ​​для поддержки Shader Model 6.0 и DXIL . а для Shader Model 6.0 требуется юбилейное обновление Windows 10 (версия 1607), WDDM 2.1. Новые графические функции - это проверка границ глубины и программируемый MSAA. [120]
  • Direct3D 12 версии 1709 - Direct3D в Windows 10 Fall Creators Update (версия 1709), выпущенном 17 октября 2017 г., включает улучшенную отладку. [120]
  • Direct3D 12 версии 1809 - обновление Windows 10 за октябрь 2018 г. (версия 1809) обеспечивает поддержку DirectX Raytracing, поэтому графические процессоры могут использовать его API.
  • Direct3D 12 версии 1903 - Windows 10 May 2019 Update (версия 1903) обеспечивает поддержку DirectML. [121]
  • Direct3D 12 версии 2004 - Windows 10 May 2020 Update (версия 2004) обеспечивает поддержку Mesh & Amplification Shaders, [122] Sampler Feedback, [123], а также DirectX Raytracing Tier 1.1 [124] и улучшения распределения памяти. [125]

Архитектура [ править ]

Абстрактный слой

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

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

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

  • Устройство HAL (уровень аппаратной абстракции ): для устройств, поддерживающих аппаратное ускорение.
Устройство
  • Эталонное устройство: имитирует новые функции, которые еще не доступны в оборудовании. Для использования этого типа устройства необходимо установить Direct3D SDK .
  • Нулевое эталонное устройство: ничего не делает. Это устройство используется, когда SDK не установлен и запрашивается эталонное устройство.
  • Подключаемое программное обеспечение : выполняет программный рендеринг. Это устройство было представлено с DirectX 9.0 . [126]

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

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

  • Тип : определяет тип ресурса: поверхность, объем, текстура, текстура куба, текстура объема, текстура поверхности, буфер индекса или буфер вершин.
  • Пул : [127] Описывает, как ресурс управляется средой выполнения и где он хранится. Впулепо умолчанию ресурс будет существовать только в памяти устройства. Ресурсы в управляемом пуле будут храниться в системной памяти и при необходимости будут отправлены на устройство. Ресурсы впуле системной памяти будут существовать только в системной памяти. Наконец, рабочий пул в основном такой же, как и пул системной памяти, но ресурсы не связаны аппаратными ограничениями.
  • Формат : описывает расположение данных ресурса в памяти. Например, значение формата D3DFMT_R8G8B8 означает глубину цвета 24 бита (8 бит для красного, 8 бит для зеленого и 8 бит для синего).
  • Использование : описывает с помощью набора битов флагов , как ресурс будет использоваться приложением. Эти флаги определяют, какие ресурсы используются в динамических или статических шаблонах доступа. Значения статических ресурсов не меняются после загрузки, тогда как значения динамических ресурсов могут быть изменены.

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

  • Полноэкранный режим: приложение Direct3D генерирует весь графический вывод для устройства отображения. В этом режиме Direct3D автоматически захватывает Alt-Tab и устанавливает / восстанавливает разрешение экрана и формат пикселей без вмешательства программиста. Это также создает множество проблем для отладки из-за «Эксклюзивного кооперативного режима». [ необходима цитата ]
  • Оконный режим: результат отображается внутри области окна. Direct3D взаимодействует с GDI для создания графического вывода на дисплее. Оконный режим может иметь тот же уровень производительности, что и полноэкранный, в зависимости от поддержки драйвера.

Трубопровод [ править ]

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

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

  1. Сборщик входных данных : считывает данные вершин из буфера вершин, предоставленного приложением, и передает их по конвейеру.
  2. Вершинный шейдер : выполняет операции с одной вершиной за раз, такие как преобразования, скиннинг или освещение.
  3. Hull Shader : выполняет операции с наборами контрольных точек исправлений и генерирует дополнительные данные, известные как константы исправлений.
  4. Этап тесселяции : разделяет геометрию на части для создания представлений корпуса более высокого порядка.
  5. Шейдер домена : выполняет операции с вершинами, выводимыми на этапе тесселяции, почти так же, как вершинный шейдер.
  6. Геометрический шейдер : обрабатывает целые примитивы, такие как треугольники, точки или линии. Учитывая примитив, этот этап отбрасывает его или генерирует один или несколько новых примитивов.
  7. Потоковый вывод : [129] Может записывать в память результаты предыдущего этапа. Это полезно для рециркуляции данных обратно в конвейер.
  8. Растеризатор : [130] [131] Преобразует примитивы в пиксели, передавая эти пиксели в пиксельный шейдер. Растеризатор также может выполнять другие задачи, такие как отсечение того, что не видно, или интерполяция данных вершин в данные для каждого пикселя.
  9. Пиксельный шейдер : определяет окончательный цвет пикселя, который будет записан в цель рендеринга, а также может вычислить значение глубины, которое будет записано в буфер глубины.
  10. Объединение выходных данных : [132] Объединяет различные типы выходных данных ( значения пиксельного шейдера , альфа-смешение, глубину / трафарет ...) для создания окончательного результата.

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

Уровни функций [ править ]

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

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

В Direct3D 10.1 добавлено несколько новых обязательных требований к оборудованию, и для обеспечения совместимости с оборудованием и драйверами 10.0 эти функции были объединены в два набора, называемых «уровнями функций», при этом уровень 10.1 образует надмножество уровня 10.0. Поскольку Direct3D 11.0, 11.1 и 12 добавили поддержку нового оборудования, новые обязательные возможности были дополнительно сгруппированы по верхним уровням функций. [45]

Direct3D 11 также представил «10level9», подмножество Direct3D 10 API с тремя уровнями функций, инкапсулирующих различные карты Direct3D 9 с драйверами WDDM , а Direct3D 11.1 повторно представил несколько дополнительных функций для всех уровней [133], которые были расширены в Direct3D. 11.2 и более поздние версии.

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

Новые уровни функций представлены в обновленных версиях API и обычно включают:

  • основные обязательные функции - (Direct3D 11.0, 12),
  • несколько второстепенных функций (Direct3D 10.1, 11.1) или
  • общий набор ранее необязательных функций (Direct3D 11.0 "10 уровень 9").

Каждый верхний уровень является строгим надмножеством нижнего уровня, с несколькими новыми или ранее необязательными функциями, которые переходят к основным функциям на верхнем уровне. [56] Более продвинутые функции в основной версии Direct3D API, такие как новые модели шейдеров и этапы рендеринга, доступны только на оборудовании более высокого уровня. [54] [55]

Существуют отдельные возможности, указывающие на поддержку определенных операций с текстурами и форматов ресурсов; они указываются для каждого формата текстуры с использованием комбинации флагов возможностей. [134] [135]

Уровни функций используют подчеркивание в качестве разделителя (например, «12_1»), в то время как версии API / времени выполнения используют точку (например, «Direct3D 11.4»).

Уровни Direct3D 11 [ править ]

В Direct3D 11.4 для Windows 10 существует девять уровней функций, обеспечиваемых D3D_FEATURE_LEVELструктурой; уровни 9_1, 9_2 и 9_3 (вместе известные как Direct3D 10 Уровень 9 ) повторно инкапсулируют различные функции популярных карт Direct3D 9, уровни 10_0, 10_1 относятся к соответствующим устаревшим версиям Direct3D 10, [54] 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. [136] Некоторые ранее необязательные функции переназначены в качестве базовых на уровнях 11_0 и 11_1. Модель шейдеров 6.0 была выпущена вместе с обновлением Windows 10 Creators Update и требует юбилейного обновления Windows 10 и драйверов WDDM 2.1.

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

Многопоточность [ править ]

Модель драйвера WDDM в Windows Vista и более поздних версиях поддерживает произвольно большое количество контекстов выполнения (или потоков) в аппаратном или программном обеспечении. Windows XP поддерживала только многозадачный доступ к Direct3D, когда отдельные приложения могли выполняться в разных окнах и иметь аппаратное ускорение, а ОС имела ограниченный контроль над тем, что мог делать графический процессор, а драйвер мог произвольно переключать потоки выполнения.

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

ОС сама управляет потоками, позволяя аппаратному обеспечению переключаться с одного потока на другой, когда это необходимо, а также обрабатывает управление памятью и подкачку страниц (в системную память и на диск) через интегрированное управление памятью ядра ОС.

Более тонкое переключение контекста, то есть возможность переключать два потока выполнения на уровне инструкций шейдера вместо уровня отдельной команды или даже пакета команд, было введено в WDDM / DXGI 1.2, поставляемом с Windows 8. [75] Это преодолевает потенциальную проблему планирования, когда приложение должно очень долго выполнять одну команду / пакет команд и должно быть остановлено сторожевым таймером ОС. [142]

WDDM 2.0 и DirectX 12 были переработаны, чтобы обеспечить возможность полностью многопоточных вызовов отрисовки. Это было достигнуто за счет того, что все ресурсы были неизменяемыми (т.е. доступными только для чтения), сериализацией состояний рендеринга и использованием пакетов вызовов отрисовки. Это позволяет избежать сложного управления ресурсами в драйвере режима ядра, делая возможными множественные повторные вызовы драйвера пользовательского режима через контексты одновременного выполнения, предоставляемые отдельными потоками рендеринга в одном приложении.

Direct3D Mobile [ править ]

Direct3D Mobile является производным от Direct3D, но требует меньшего объема памяти . Windows CE обеспечивает поддержку Direct3D Mobile. [143]

Альтернативные реализации[ редактировать ]

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

  • WineD3D - проект с открытым исходным кодом Wine имеет рабочие реализации API Direct3D через перевод в OpenGL . [144] Реализация Wine также может быть запущена в Windows при определенных условиях. [145]
  • vkd3d - vkd3d - это библиотека трехмерной графики с открытым исходным кодом, построенная на основе Vulkan, которая позволяет запускать приложения Direct3D 12 поверх Vulkan . [146] Он в основном используется проектом Wine , [147] [148] и теперь включен в проект Valve Proton в комплекте с Steam для Linux.
  • DXVK - слой перевода на основе Vulkan с открытым исходным кодом для Direct3D 9/10/11, который позволяет запускать 3D-приложения в Linux с помощью Wine. [149] [150] Используется Proton / Steam [151] для Linux. DXVK может запускать большое количество современных игр для Windows под Linux.
    • D9VK - ответвление DXVK для добавления поддержки Direct3D 9, [152] включенное в Steam / Proton в Linux. [153] 16 декабря 2019 года D9VK был объединен с DXVK. [154]
  • Gallium Nine - Gallium Nine позволяет запускать приложения Direct3D 9 в Linux изначально, то есть без трансляции вызовов, что обеспечивает скорость, близкую к исходной. Это требует сотрудничества Wine и Mesa . [155] [156]
  • VK9 - позволяет запускать приложения Windows Direct3D 9 с помощью Vulkan . [157] [158]

Связанные инструменты [ править ]

D3DX [ править ]

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

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

  • Windows SDK и Visual Studio [161]
  • Большая часть математической библиотеки удалена. Microsoft рекомендует вместо этого использовать библиотеку DirectX Math.
  • Математика сферических гармоник была удалена и теперь распространяется как источник. [162]
  • Платформа Effect была удалена и теперь распространяется как исходный код через CodePlex. [163]
  • Интерфейс Mesh и функции геометрии были удалены и теперь распространяются как исходный код через CodePlex в библиотеке обработки геометрии DirectXMesh. [164]
  • Функции текстур были удалены и теперь распространяются как исходный код через CodePlex в библиотеке обработки текстур DirectXTex. [165]
  • Общие помощники были удалены и теперь распространяются как исходный код через CodePlex в рамках проекта DirectX Tool Kit (DirectXTK). [166]
  • Атлас текстуры isochart был удален и теперь распространяется как исходный код через CodePlex в рамках проекта UVAtlas. [167]

DXUT [ править ]

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

См. Также [ править ]

  • Vulkan (API) - главный конкурент Direct3D 12
  • OpenGL - основной конкурент Direct3D до версии 11
  • 3D компьютерная графика
  • УГОЛ (программное обеспечение)
  • DirectDraw
  • DirectX - Коллекция API, в которых реализован Direct3D
  • HLSL - язык шейдеров высокого уровня
  • Металл (API)
  • Мантия (API)
  • Шейдер
  • Silverlight
  • WebGPU

Ссылки [ править ]

  1. ^ «Настройка функциональности трафарета глубины» . Microsoft.
  2. ^ "RenderStateManager.UseWBuffer" . Microsoft.
  3. ^ «Наложение текстур (Direct3D 9)» . Microsoft.
  4. ^ «Смешение геометрии (Direct3D 9)» . Microsoft.
  5. ^ "HLSL" . Microsoft.
  6. ^ «Эффекты (Direct3D 11)» . Microsoft.
  7. ^ «Пакет разработки программного обеспечения DirectX, октябрь 2006 г.» . Microsoft. Архивировано из оригинала 2 ноября 2011 года.
  8. ^ «Руководство по расширенной платформе растеризации Windows (WARP) - Архитектура и производительность WARP» . MSDN.
  9. ^ "Команда управления Qube Soft" . qubesoft.com. 4 апреля, 2017. Архивировано из оригинала 6 апреля 2017 года . Проверено 5 апреля 2017 года .
  10. ^ "Что случилось с DirectX 4?" . msdn.com. 22 января 2004 г.
  11. ^ "Пресс-релиз-Microsoft Meltdown (февраль 1997 г.)" . Корпорация Майкрософт. 18 февраля 1997 г.
  12. ^ "Пресс-релиз-Microsoft Meltdown (июль 1997 г.)" . Корпорация Майкрософт. 22 июля 1997 г.
  13. ^ Рон Фоснер. «Получите быстрый и простой 3D-рендеринг с DrawPrimitive и DirectX 5.0» . Журнал Microsoft Systems.
  14. ^ «Direct3D 7 Immediate Mode Framework Programming 3: Multitexturing» . gamedev.net. 29 мая 2000 года Архивировано из оригинального 5 -го августа 2011 года . Проверено 17 сентября 2011 года .
  15. ^ «Microsoft поставляет окончательный выпуск DirectX 6.0» . Microsoft. 7 августа 1998 г.
  16. ^ «Microsoft поставляет DirectX 6.1» . Microsoft. 3 февраля 1999 г.
  17. ^ «Билл Гейтс, апрельское обновление талисмана 1997 года» (PDF) . Microsoft. 5 мая 1997 года. Архивировано из оригинального (PDF) 8 декабря 2015 года . Проверено 31 октября 2015 года .
  18. ^ "DDS (формат поверхности DirectDraw)" . MSDN.
  19. ^ «DirectX 7: [ожидается] июль 99» . Gamespot . СОЕДИНЕННОЕ КОРОЛЕВСТВО. Марта 1999 года в архив от оригинала 8 мая 1999 года . Проверено 20 июля 2019 года .
  20. ^ «Microsoft объявляет о выпуске DirectX 8.0» . Microsoft. 9 ноября 2000 . Проверено 7 января 2015 года .
  21. ^ «Функция прямого действия: DirectX 8.0» . GameSpot . СОЕДИНЕННОЕ КОРОЛЕВСТВО. Архивировано из оригинального 23 февраля 2001 года . Проверено 20 июля 2019 года .
  22. ^ «Графика и видео DirectX 8: новый старт» . gamedev.net. 30 ноября 2000 года в архив с оригинала на 4 июня 2007 года . Проверено 18 февраля 2007 года .
  23. ^ «Графика Direct3D 9» . MSDN . Проверено 30 сентября 2014 года .
  24. ^ «Написание HLSL шейдеров в Direct3D 9» . MSDN . Проверено 30 сентября 2014 года .
  25. ^ «HLSL в Direct3D 9.0» . Архивировано из оригинального 27 августа 2010 года.
  26. ^ «Несколько целей рендеринга (Direct3D 9)» . MSDN . Проверено 30 сентября 2014 года .
  27. ^ «Многоэлементные текстуры (Direct3D 9)» . MSDN . Проверено 30 сентября 2014 года .
  28. ^ «Методы буфера трафарета (Direct3D 9)» . MSDN . Проверено 30 сентября 2014 года .
  29. ^ «Улучшения Direct3D 9Ex» . MSDN . Проверено 30 сентября 2014 года .
  30. ^ «Графические API в Windows» . MSDN. Август 2009 г.
  31. ^ a b «Роль модели драйвера дисплея Windows в DWM» . 2 апреля 2006 г.
  32. ^ «Возможности API (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 года .
  33. ^ «Пакет разработки программного обеспечения DirectX, февраль 2007 г.» . Microsoft. Архивировано из оригинального 3 сентября 2012 года.
  34. ^ «Типы ресурсов (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 года .
  35. ^ «Уровни API (Direct3D 10)» . MSDN . Проверено 30 сентября 2014 года .
  36. ^ "CNet News" . Проверено 30 сентября 2014 года .
  37. ^ "Common-Shader Core" . Microsoft.
  38. ^ «Особенности геометрического шейдера» . Microsoft.
  39. ^ «Этапы шейдера» . Microsoft.
  40. ^ «Что такое Direct3D 10 - Дополнительные улучшения» . Оборудование Тома. 8 ноября 2006 г.
  41. ^ «Возможности Direct3D 10.1» . MSDN . Проверено 30 сентября 2014 года .
  42. ^ «Microsoft представляет подробности DirectX 10.1 на SIGGRAPH» . ExtremeTech. 7 августа 2007 г.
  43. ^ «Возможности Direct3D 10.1» . MSDN.
  44. ^ a b "Метод ID3D11Device :: CheckMultisampleQualityLevels" . MSDN . Проверено 30 сентября 2014 года .
  45. ^ a b c Чак Уолборн (20 июня 2012 г.). «Уровни функций Direct3D» . Игры для Windows и блог о DirectX SDK .
  46. ^ "Перечисление D3D10_FEATURE_LEVEL1" . MSDN . Проверено 22 ноября 2009 года .
  47. ^ «Уровни функций Direct3D» . MSDN . Проверено 30 сентября 2014 года .
  48. ^ «Возможности Direct3D 11» . MSDN . Проверено 30 сентября 2014 года .
  49. ^ a b c «Презентации Gamefest 2008» . Microsoft. Архивировано из оригинального 13 ноября 2013 года .
  50. ^ a b "Технические презентации Nvision 08" . Nvidia . Проверено 16 сентября 2011 года .
  51. ^ «Пакет разработки программного обеспечения DirectX, ноябрь 2008 г.» . Microsoft. 7 ноября 2008 г.
  52. ^ «AMD демонстрирует первый в мире графический процессор DirectX 11» . Engadget. 3 июня 2009 г.
  53. ^ a b «GameFest 2008: Введение в конвейер графики Direct3D 11» . Microsoft. Слайд 56. В архиве с оригинала на 28 января 2013 года .
  54. ^ a b c «Direct3D 11 на оборудовании нижнего уровня» . MSDN . Проверено 18 ноября 2012 года .
  55. ^ a b «Комплект драйверов для Windows - поддержка Direct3D 11» . MSDN . Проверено 13 июня 2009 года .
  56. ^ a b «Уровни функций Direct3D» . MSDN . Проверено 2 июля 2012 года .
  57. ^ "Использование аппаратной тесселяции ATI в DX9" . 14 июля 2008 г.
  58. ^ "AMD DX9 Tessellation SDK" . Архивировано из оригинала 8 ноября 2010 года.
  59. ^ «Программирование тесселяции в реальном времени на графическом процессоре» (PDF) . Архивировано из оригинального (PDF) 27 июля 2011 года.
  60. ^ "Образцы тесселяции OpenGL" . Архивировано из оригинала 9 апреля 2010 года.
  61. ^ «Новые типы ресурсов» . MSDN . Проверено 30 сентября 2014 года .
  62. ^ "Глубина смещения" . MSDN . Проверено 30 сентября 2014 года .
  63. ^ "Структура D3D11_RASTERIZER_DESC1" . MSDN . Проверено 30 сентября 2014 года .
  64. ^ "Shader Model 5" . MSDN . Проверено 30 сентября 2014 года .
  65. ^ «Обзор тесселяции» . Microsoft.
  66. ^ «Обзор тесселяции» . MSDN . Проверено 30 сентября 2014 года .
  67. ^ «Описание обновления платформы для Windows Server 2008 и обновления платформы для Windows Vista» . Support.microsoft.com. 2 октября 2012 . Проверено 15 июня 2013 года .
  68. ^ «Обновление платформы для Windows Vista - Блог разработчиков DirectX - Домашняя страница сайта - Блоги MSDN» . Blogs.msdn.com. 10 сентября 2009 года архивации с оригинала на 8 апреля 2014 года . Проверено 15 июня 2013 года .
  69. ^ «Возможности Direct3D 11.1» . MSDN . Проверено 30 сентября 2014 года .
  70. ^ "Структура D3D11_FEATURE_DATA_D3D11_OPTIONS" . MSDN . Проверено 30 сентября 2014 года .
  71. ^ «Улучшения функций DirectX в Windows 8» . MSDN . Проверено 30 сентября 2014 года .
  72. ^ «Возможности Direct3D 11.1» . MSDN . Проверено 13 сентября 2009 года .
  73. ^ «Улучшения DXGI 1.2» . MSDN . Проверено 30 сентября 2014 года .
  74. ^ «Возможности WDDM 1.2» . MSDN . Проверено 30 сентября 2014 года .
  75. ^ a b c «Улучшения модели драйвера дисплея Windows в предварительной версии Windows Developer Preview» . MSDN. 13 сентября 2011 г.
  76. ^ «Скалярные типы» . Проверено 2 октября 2014 года .
  77. ^ «Intel Haswell IGP с поддержкой DirectX 11.1, расширенная поддержка профессиональных приложений» . AnandTech. 5 августа 2011 г.
  78. ^ «Графика DirectX - Обновление платформы для Windows 7» . MSDN. 14 ноября 2012 г.
  79. ^ «DirectX 11.1 и Windows 7» . Игры для Windows и блог о DirectX SDK . 13 ноября 2012 г.
  80. ^ «Программирование DirectX» . MSDN. Архивировано из оригинального 31 октября 2013 года . Проверено 30 сентября 2014 года .
  81. ^ «Возможности Direct3D 11.2» . MSDN . Проверено 30 сентября 2014 года .
  82. ^ "Структура D3D11_FEATURE_DATA_D3D11_OPTIONS1" . MSDN . Проверено 30 сентября 2014 года .
  83. ^ a b «Руководство по функциям Windows 8.1 - Программирование DirectX» . Библиотека MSDN . 26 июня 2013 г. Архивировано из оригинального 27 августа 2015 года . Проверено 27 июня 2013 года .
  84. ^ a b Беннетт Сорбо (26 июня 2013 г.). «Что нового в Direct3D 11.2» . Channel9 - СТРОИТЬ 2013 .
  85. ^ «Улучшения DXGI 1.3» . Библиотека MSDN . 26 июня 2013 г.
  86. ^ «Что нового в драйверах дисплея Windows 8.1 Preview (WDDM 1.3)» . MSDN . Проверено 30 сентября 2014 года .
  87. ^ "Архивная копия" . Архивировано из оригинала на 4 марта 2016 года . Проверено 6 марта 2015 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
  88. ^ "Перечисление D3D11_TILED_RESOURCES_TIER" . MSDN . Проверено 30 сентября 2014 года .
  89. ^ Чарльз Холлемерш, Мэтт Сэнди (26 июня 2013 г.). «Массивные виртуальные текстуры для игр: мозаичные ресурсы Direct3D» . Channel9 - СТРОИТЬ 2013 .
  90. ^ «Возможности Direct3D 11.2» . Библиотека MSDN . 26 июня 2013 г.
  91. ^ «Блоги MSDN» . MSDN . Проверено 30 сентября 2014 года .
  92. ^ "Структура D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT" . MSDN . Проверено 30 сентября 2014 года .
  93. ^ «Поднимая планку с Direct3D» . Создание приложений для Windows . Проверено 30 сентября 2014 года .
  94. ^ «Microsoft официально отказывается от использования Mantle» . Проверено 30 сентября 2014 года .
  95. ^ Сегмент Криса Тектора http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (примерно с 18 минут)
  96. ^ a b https://msdn.microsoft.com/en-us/library/windows/desktop/dn903943(v=vs.85).aspx
  97. ^ а б Райан Смит. «AnandTech - Microsoft подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . Проверено 30 сентября 2014 года .
  98. ^ Райан Смит. «AnandTech - Обзор NVIDIA GeForce GTX 980: Maxwell Mark 2» . Проверено 30 сентября 2014 года . Прежде всего среди новых функций Maxwell 2 - полная совместимость с Direct3D 11.2 / 11.3.
  99. ^ a b c «Краткое описание новых возможностей DirectX 11.3 - мозаичные ресурсы - типизированные нагрузки БПЛА» . Проверено 30 сентября 2014 года .
  100. ^ а б в https://msdn.microsoft.com/en-us/library/windows/desktop/dn933277(v=vs.85).aspx
  101. ^ "Перечисление D3D11_CONSERVATIVE_RASTERIZATION_TIER" . Библиотека MSDN . 22 февраля 2015 года . Проверено 22 февраля 2015 года .
  102. ^ «Возможности Direct3D 11.3» . Библиотека MSDN . 28 марта 2015 года . Проверено 28 марта 2015 года .
  103. ^ https://blogs.msdn.microsoft.com/chuckw/2015/11/30/windows-10-sdk-november-2015/
  104. ^ «DirectX 12 Low Level API - Анализ того, что мы знаем в настоящее время - Страница 2 RedGamingTech» . Проверено 30 сентября 2014 года .
  105. ^ а б Райан Смит. «AnandTech - Microsoft объявляет о выпуске DirectX 12: низкоуровневое программирование графики переходит в DirectX» . Проверено 30 сентября 2014 года .
  106. ^ «Презентация GDC DirectX 12 (все слайды)» . Imgur . Проверено 30 сентября 2014 года .
  107. ^ «Обзор Direct3D 12, часть 8: параллелизм ЦП» .
  108. ^ «Обзор Direct3D 12, часть 1:« Ближе к металлу » » . Проверено 2 октября 2014 года .
  109. ^ первые две минуты https://channel9.msdn.com/Events/Build/2014/3-564
  110. ^ «Более пристальный взгляд на DirectX 12 - Технический отчет - Страница 3» . Проверено 30 сентября 2014 года .
  111. ^ Райан Смит. «AnandTech - Microsoft подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . Проверено 30 сентября 2014 года .
  112. ^ "Архивная копия" . Архивировано из оригинала на 30 апреля 2018 года . Проверено 19 сентября 2014 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
  113. ^ «Познакомьтесь с будущим компьютерной графики: Microsoft представляет более быстрый консольный DirectX 12» . PCWorld . 20 марта 2014 . Проверено 30 сентября 2014 года .
  114. ^ «DirectX 12 также добавит новые функции для графических процессоров следующего поколения» . Проверено 30 сентября 2014 года .
  115. ^ Kowaliski, Кирилл (21 марта 2014). «DirectX 12 также добавит новые функции для графических процессоров следующего поколения» . Технический отчет . Проверено 1 апреля 2014 года .
  116. ^ «Авторские блоги» .
  117. ^ «Обзор Direct3D 12, часть 7: Динамические кучи» . Проверено 2 октября 2014 года .
  118. ^ «Мульти-адаптер» . Архивировано из оригинального 14 сентября 2016 года . Проверено 3 августа 2016 года .
  119. ^ https://msdn.microsoft.com/en-us/library/mt733232( v= vs.85 ) .aspx >
  120. ^ a b «Объявление о новых функциях DirectX 12» . Блог разработчиков DirectX . Проверено 24 февраля 2018 года .
  121. ^ «Прямое машинное обучение (DirectML)» . Документы Microsoft . Проверено 28 июня, 2020 .
  122. ^ «Переход к DirectX 12 - сеточные шейдеры и шейдеры усиления: новое изобретение геометрического конвейера» . Блог разработчиков DirectX . Проверено 28 июня, 2020 .
  123. ^ «Переход к DirectX 12 - обратная связь сэмплера: некоторые полезные, когда-то скрытые данные, разблокированы» . Блог разработчиков DirectX . Проверено 4 ноября 2019 года .
  124. ^ «DirectX Raytracing (DXR) Tier 1.1» . Блог разработчиков DirectX . Проверено 6 ноября 2019 года .
  125. ^ «Переход к DirectX 12: больший контроль над распределением памяти» . Блог разработчиков DirectX . Проверено 11 ноября 2019 года .
  126. ^ "Программный растеризатор для DirectX 9.0 SDK" . Microsoft. 1 августа 2005 года Архивировано из оригинала на 4 сентября 2012 года.
  127. ^ «Ресурсы Direct3D - Пул памяти» . Архивировано из оригинала 9 мая 2008 года.
  128. ^ «Графический конвейер» . MSDN.
  129. ^ "Потоковый выход" . Microsoft.
  130. ^ "RenderStates" . Проверено 2 октября 2014 года .
  131. ^ "Стадия растеризатора" . Microsoft.
  132. ^ «Этап слияния на выходе» . Microsoft.
  133. ^ a b https://msdn.microsoft.com/en-us/library/windows/desktop/hh404562#check_support_of_new_direct3d_11.1_features_and_formats
  134. ^ "Перечисление D3D11_FORMAT_SUPPORT" . MSDN . Проверено 16 июня 2015 года .
  135. ^ "Перечисление D3D11_FORMAT_SUPPORT2" . MSDN . Проверено 16 июня 2015 года .
  136. ^ https://msdn.microsoft.com/en-us/library/dn899127.aspx
  137. ^ https://docs.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_feature
  138. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/ff476900(v=vs.85).aspx
  139. ^ Вольфганг Энгель . «Введение в привязку ресурсов в Microsoft DirectX 12» .
  140. ^ GVCS005 - Microsoft Direct3D 12: новые сведения об API и оптимизации Intel, заархивированные 4 апреля 2015 г., на Wayback Machine
  141. ^ Сборка 2015: расширенная графика и производительность DirectX12
  142. ^ http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx
  143. ^ Direct3D Mobile , Microsoft, 6 января 2010 г.
  144. ^ «Команда Wine с гордостью объявляет о выпуске стабильной версии Wine 4.0» . WineHQ . Проверено 3 апреля 2019 года .
  145. ^ "WineD3DOnWindows - Официальная винная вики" . Wiki.winehq.org. 2 июня 2013 г. Архивировано из оригинала на 17 января 2009 года . Проверено 15 июня 2013 года .
  146. ^ WineHQ - vkd3d , Direct3D 12, 3 апреля 2019 г. , получено 30 июня 2020 г.
  147. ^ "Vkd3d 1.0 выпущен" . WineHQ . Проверено 3 апреля 2019 года .
  148. ^ Майкл Ларабел (23 августа 2019). «Компания Valve Proton предлагает ветку с VKD3D для Direct3D 12 поверх Vulkan» . Фороникс . Проверено 7 октября 2019 года .
  149. ^ Джейсон Evangelho (1 марта 2019). «Windows 10 против Linux: 6 игр Steam, протестированных на Intel Hades Canyon NUC» . Forbes . Проверено 7 октября 2019 года .
  150. ^ Rebohle, Филипп (3 апреля 2019), Vulkan на основе реализации D3D11 и D3D10 для Linux / Wine: doitsujin / dxvk , извлекаться апрелю 3, 2019
  151. ^ Инструмент совместимости для Steam Play на основе Wine и дополнительных компонентов: ValveSoftware / Proton , Valve , 3 апреля 2019 г. , получено 3 апреля 2019 г.
  152. ^ "Репозиторий D9VK GitHub" . GitHub . Проверено 6 октября 2019 года .
  153. ^ Майкл Ларабел (30 июля 2019). «Proton Re-Based To Wine 4.11, добавляет D9VK Direct3D 9, улучшенное использование процессора и DXVK 1.3» . Фороникс . Проверено 7 октября 2019 года .
  154. ^ "Внедрение Direct3D9 Frontend Джошуа-Эштон · Запрос на извлечение # 1275 · doitsujin / dxvk" . GitHub . Проверено 17 декабря 2019 года .
  155. ^ Построить поддержку Gallium Nine поверх существующей установки WINE: iXit / wine-nine-standalone , iXit Group, 3 апреля 2019 г. , получено 3 апреля 2019 г.
  156. Джои Снеддон (10 октября 2018 г.). «В Ubuntu 18.10 добавлена ​​поддержка Gallium Nine, последняя версия Mesa 18.2.2» . МОЙ БОГ! Ubuntu! . Проверено 7 октября 2019 года .
  157. ^ Шефер, Кристофер (3 апреля 2019 г.), GitHub - disks86 / VK9: уровень совместимости с Direct3D 9 с использованием Vulkan. , получено 3 апреля 2019 г.
  158. Лиам Доу (16 декабря 2018 г.). «VK9, проект, направленный на поддержку Direct3D 9 поверх Vulkan, достиг еще одной вехи» . GamingOnLinux . Проверено 7 октября 2019 года .
  159. ^ «Справочник по D3DX 11» . MSDN . Проверено 30 сентября 2014 года .
  160. ^ «Жизнь без D3DX» . MSDN.
  161. ^ "Инструмент компилятора эффектов" . Microsoft.
  162. ^ "Математика сферических гармоник" . msdn.com . Проверено 23 ноября 2014 года .
  163. ^ «Эффекты 11» . CodePlex . Проверено 30 сентября 2014 года .
  164. ^ "Библиотека обработки геометрии DirectXMesh" . CodePlex . Проверено 30 сентября 2014 года .
  165. ^ "Библиотека обработки текстур DirectXTex" . CodePlex . Проверено 30 сентября 2014 года .
  166. ^ «Набор инструментов DirectX» . CodePlex . Проверено 30 сентября 2014 года .
  167. ^ "UVAtrlas" . CodePlex . Проверено 23 ноября 2014 года .
  168. ^ «DXUT для обновления рабочего стола Win32» . MSDN.

Внешние ссылки [ править ]

  • Веб-сайт DirectX
  • MSDN: графика и игры DirectX
  • DirectX 10: будущее компьютерных игр , техническая статья, в которой обсуждаются новые функции DirectX 10 и их влияние на компьютерные игры.