Поделиться через


Графический конвейер

Программируемый конвейер Direct3D 11 предназначен для создания графики для игровых приложений в режиме реального времени. В этом разделе описывается программируемый конвейер Direct3D 11. На следующей схеме показан поток данных из входных данных в выходные данные на каждом из программируемых этапов.

схема потока данных программируемого конвейера Direct3D 11

Графический конвейер для Microsoft Direct3D 11 поддерживает те же этапы, что и графический конвейер Direct3D 10, а также дополнительные этапы для поддержки расширенных функций.

С помощью Direct3D 11API можно настроить все этапы. Этапы, которые имеют общие ядра шейдеров (округленные прямоугольные блоки), программируются с помощью языка программирования HLSL. Как вы видите, это делает конвейер чрезвычайно гибким и адаптируемым.

В этом разделе

Тема Описание
этап входного сборщика
API Direct3D 10 и более поздних версий разделяет функциональные области конвейера на этапы; первым этапом конвейера является этап входной сборки (IA).
этап вершинного шейдера
Этап вершинного шейдера (VS) обрабатывает вершины от входного сборщика, выполняя операции с вершинами, такие как преобразования, скиннинг, морфирование и освещение вершин. Вершинные шейдеры всегда работают на одной входной вершине и создают одну выходную вершину. Этап шейдера вершин всегда должен быть активным для выполнения конвейера. Если модификация вершин или их преобразование не требуется, необходимо создать пропускной шейдер вершин и установить его в конвейер.
этапы Тесселлации
Среда выполнения Direct3D 11 поддерживает три новых стадии, реализующих тесселяцию, которые преобразуют поверхности с низкой степенью детализации в более подробные примитивы на GPU. Тесселяция преобразует (или разбивает) поверхности высшего порядка в подходящие структуры для отрисовки.
этап шейдера геометрии
Этап геометрического шейдера (GS) выполняет заданный приложением код шейдера с вершинами в качестве входных данных и возможно создавать вершины на выходе.
этап вывода потока
Цель стадии потокового вывода — непрерывно передавать данные вершин из стадии геометрического шейдера (или стадии шейдера вершин, если стадия геометрического шейдера неактивна) в один или несколько буферов в памяти (см. начало работы с стадией потокового вывода).
этап растризатора
Этап растеризации преобразует векторные данные (состоящие из фигур или примитивов) в растровое изображение (состоящее из пикселей) для отображения трехмерной графики в режиме реального времени.
этап пиксельного шейдера
Этап пиксельного шейдера (PS) позволяет использовать богатые техники шейдинга, такие как посветка на каждый пиксель и постобработка. Шейдер пикселей — это программа, которая объединяет постоянные переменные, данные текстуры, интерполированные значения вершин и другие данные для создания выходных данных на пиксель. Этап растризатора вызывает шейдер пикселей один раз для каждого пикселя, охватываемого примитивом, однако можно указать шейдер NULL, чтобы избежать запуска шейдера.
этап слияния выходного слияния
Этап слияния выходных данных (OM) создает окончательный цвет отрисованного пикселя, используя сочетание состояния конвейера, данных, созданных пиксельными шейдерами, содержимого целевых объектов отрисовки и содержимого буферов глубины и трафарета. Этап OM — это последний шаг для определения видимых пикселей (с тестированием элементов глубины) и смешивания окончательных цветов пикселей.