Конвейер отрисовки
Графическое оборудование, поддерживающее Direct3D версии 10, может быть разработано с помощью общих программируемых ядер шейдеров. Графический процессор (GPU) может программировать ядра шейдеров, которые можно запланировать в функциональных блоках, составляющих конвейер отрисовки. Такая балансировка нагрузки означает, что разработчики оборудования должны использовать не все типы шейдеров, а только те, которые необходимы для отрисовки. Эта балансировка нагрузки может освободить ресурсы для активных типов шейдеров. На следующем рисунке показаны функциональные блоки конвейера отрисовки. В разделах, приведенных на рисунке, блоки описываются более подробно.
Сборщик входных данных
Этап сборщика входных данных использует операции с фиксированными функциями для считывания вершин из памяти. Затем входной ассемблер формирует геометрические примитивы и создает рабочие элементы конвейера. Автоматически создаваемые идентификаторы вершин, идентификаторы экземпляров (доступные для шейдера вершин) и примитивные идентификаторы (доступные для геометрического шейдера или шейдера пикселей) обеспечивают обработку, зависят от идентификатора. Пунктирная линия на рисунке показывает поток обработки, зависят от идентификатора.
Вершинный построитель текстуры
Этап вершинного шейдера принимает одну вершину в качестве входных данных и выводит одну вершину.
Шейдер геометрии
Этап геометрического шейдера принимает один примитив в качестве входных данных и выводит ноль, один или несколько примитивов. Выходные примитивы могут содержать больше данных, чем возможно без геометрического шейдера. Общий объем выходных данных для каждой операции равен (размер вершины x число вершин).
Выходной поток
Этап вывода потока объединяет (передает потоки) примитивы, которые достигают выходных данных геометрического шейдера в выходные буферы. Выходные данные потока связаны с геометрическим шейдером и программируются вместе.
Растеризатор
Растеризатор сцены клипов (включая пользовательские границы клипа) примитивы, выполняет разделение перспективы на примитивах, реализует выбор окна просмотра и ножницы, выполняет выбор цели отрисовки и выполняет настройку примитивов.
Построитель текстуры
Этап пиксельного шейдера принимает один пиксель в качестве входных данных и выводит один пиксель в той же позиции или без пикселя. Пиксельный шейдер не может считывать текущие целевые объекты отрисовки.
Средство слияния выхода
Этап объединения выходных данных выполняет операции смешения, глубины и набора элементов с фиксированной функцией.