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


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

Программируемый конвейер 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 — это последний шаг для определения видимых пикселей (с проверкой трафарета глубины) и смешивания окончательных цветов пикселей.