Этапы конвейера (Direct3D 10)

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

Схема потока данных в программируемом конвейере direct3d 10

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

  • Этап сборщика входных данных. Этап сборщика входных данных отвечает за предоставление данных (треугольников, линий и точек) в конвейер.
  • Стадия вершинного шейдера. На стадии вершинного шейдера обрабатываются вершины, обычно с выполнением таких операций, как преобразования, скиннинг и освещение. Вершинный шейдер всегда принимает одну входную вершину и создает одну выходную вершину.
  • Этап геометрического шейдера . Этап геометрического шейдера обрабатывает целые примитивы. Его входные данные являются полным примитивом (это три вершины для треугольника, две вершины для линии или одна вершина для точки). Кроме того, каждый примитив может также включать данные вершин для любых примитивов, смежных с ребрами. Это может включать не более трех дополнительных вершин для треугольника или две дополнительные вершины для линии. Шейдер геометрии также поддерживает ограниченное усложнение и упрощение геометрии. При наличии входного примитива шейдер геометрии может удалить его или сгенерировать один или несколько новых примитивов.
  • Этап потокового вывода . Этап потокового вывода предназначен для потоковой передачи примитивных данных из конвейера в память на пути к растеризатору. Поток данных может быть выходным или передаваться в средство программной прорисовки. Поток данных, выведенный в память, можно снова вернуть в конвейер как входные данные или обратно считать из ЦП.
  • Этап растеризатора . Растеризатор отвечает за обрезку примитивов, подготовку примитивов для шейдера пикселей и определение способа вызова шейдеров пикселей.
  • Стадия построителя текстуры. На стадии построителя текстуры принимаются интерполированные данные для примитива и генерируются данные для пикселей, такие как цвет.
  • Этап слияния выходных данных— этап слияния выходных данных отвечает за объединение различных типов выходных данных (значений шейдера пикселей, глубины и трафарета) с содержимым целевого объекта отрисовки и буферов глубины и трафарета для получения конечного результата конвейера.

Руководство по программированию для Direct3D 10