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


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

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

схема потока данных в конвейера direct3d 10

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

  • Input-Assembler этап . Этап ввода-сборщика отвечает за предоставление данных (треугольников, линий и точек) конвейеру.
  • Vertex-Shader этап — этап вершинного шейдера обрабатывает вершины, обычно выполняя такие операции, как преобразования, скининг и освещение. Шейдер вершин всегда принимает одну входную вершину и создает одну выходную вершину.
  • Geometry-Shader этап — этап геометрического шейдера обрабатывает все примитивы. Его входные данные — это полный примитив (то есть три вершины для треугольника, две вершины для линии или одна вершина для точки). Кроме того, каждый примитив может также включать данные вершин для любых примитивов, расположенных по краю. Это может включать в себя не более трех дополнительных трех вершин для треугольника или дополнительных двух вершин для линии. Геометрия шейдера также поддерживает ограниченное геометрическое расширение и де amplification. Учитывая входной примитив, шейдер геометрии может отменить примитив или создать один или несколько новых примитивов.
  • Stream-Output этап . Этап потокового вывода предназначен для потоковой передачи примитивных данных из конвейера в память на пути к растризатору. Данные можно передавать в растризатор и (или) передавать в растризатор. Данные, исходящие в память, могут быть повторно возвращены в конвейер в виде входных данных или обратного чтения из ЦП.
  • этап растризатора — растризатор отвечает за вырезку примитивов, подготовку примитивов для шейдера пикселей и определение способа вызова шейдеров пикселей.
  • Pixel-Shader этап — этап пиксельного шейдера получает интерполированные данные для примитива и создает данные на пиксель, такие как цвет.
  • Output-Merger этап . Этап слияния выходных данных отвечает за объединение различных типов выходных данных (значения шейдера пикселей, глубину и набор данных) с содержимым целевого объекта визуализации и буферов глубины и набора элементов для создания окончательного результата конвейера.

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