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