Direct3D 11


Direct3D 11 (D3D11) — компонент интерфейса программирования приложений (англ. API) DirectX 11, 11-я версия Direct3D, преемник Direct3D 10/10.1. Direct3D 11 обеспечивает функции для взаимодействия операционной системы и приложений с драйверами видеокарты. Эти функции не привязаны к следующей операционной системе в линейке Windows (Windows 7) и доступны в Windows Vista. Частично D3D11 работает на видеокартах уровня Direct3D 9-10.

Первые предварительные версии появились в ноябре 2008 года. Официальная финальная версия вышла 22 октября 2009 года в составе Windows 7. 28 октября 2009 года DirectX 11 стал официально доступен для Windows Vista и Windows Server 2008 посредством скачивания через Windows Update.[1]

В D3D11 добавляется 3 дополнительных стадии конвейера визуализации, целью введения которых является эффективная тесселяция поверхностей.

Конвейер D3D11 включает три новых стадии между стадиями вершинного и геометрического шейдера. Две из них являются программируемыми (стадии оболочечного (hull shader) и domain шейдеров) и одна — конфигурируемая (стадия тесселяции).

Представленный конвейер оперирует сетками, заданными поверхностными патчами. Основными примитивами D3D11 являются треугольные и квадратные патчи. Форма каждого патча определяется числом контрольных точек. В вершинном шейдере эти точки трансформируются, скинятся и (или) морфятся последовательно.

Оболочечный шейдер вызывается для каждого патча. В качестве входных данных используются контрольные точки патча из вершинного шейдера. Оболочечный шейдер имеет два основных применения. Первое (опционально) — это конвертирование контрольных точек из одного представления в другое. Например, он позволяет реализовать метод, представленный в статье Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches. После этого шейдера контрольные точки пересылаются напрямую дальше, минуя тесселятор. Другое применение — вычисление подходящего параметра тесселяции, который затем передаётся на стадию тесселяции. Такой подход позволяет делать адаптивную тесселяцию, которая может быть использована в случае видозависимых уровней детализации (LOD). Параметр тесселяции определяется для каждой грани патча и варьируются в диапазоне от 2 до 64. Это означает, что каждая грань треугольного (или квадратного) патча может быть разбита на 2 (или максимум 64) грани.