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


Конвейер отрисовки

Графическое оборудование, поддерживающее Direct3D версии 10, может быть разработано с помощью общих программируемых ядер шейдеров. Графический процессор (GPU) может программировать ядра шейдеров, которые можно запланировать в функциональных блоках, составляющих конвейер отрисовки. Такая балансировка нагрузки означает, что разработчики оборудования должны использовать не все типы шейдеров, а только те, которые необходимы для отрисовки. Эта балансировка нагрузки может освободить ресурсы для активных типов шейдеров. На следующем рисунке показаны функциональные блоки конвейера отрисовки. В разделах, приведенных на рисунке, блоки описываются более подробно.

Схема, иллюстрирующая функциональные блоки конвейера отрисовки Direct3D.

  • Сборщик входных данных

    Этап сборщика входных данных использует операции с фиксированными функциями для считывания вершин из памяти. Затем входной ассемблер формирует геометрические примитивы и создает рабочие элементы конвейера. Автоматически создаваемые идентификаторы вершин, идентификаторы экземпляров (доступные для шейдера вершин) и примитивные идентификаторы (доступные для геометрического шейдера или шейдера пикселей) обеспечивают обработку, зависят от идентификатора. Пунктирная линия на рисунке показывает поток обработки, зависят от идентификатора.

  • Вершинный построитель текстуры

    Этап вершинного шейдера принимает одну вершину в качестве входных данных и выводит одну вершину.

  • Шейдер геометрии

    Этап геометрического шейдера принимает один примитив в качестве входных данных и выводит ноль, один или несколько примитивов. Выходные примитивы могут содержать больше данных, чем возможно без геометрического шейдера. Общий объем выходных данных для каждой операции равен (размер вершины x число вершин).

  • Выходной поток

    Этап вывода потока объединяет (передает потоки) примитивы, которые достигают выходных данных геометрического шейдера в выходные буферы. Выходные данные потока связаны с геометрическим шейдером и программируются вместе.

  • Растеризатор

    Растеризатор сцены клипов (включая пользовательские границы клипа) примитивы, выполняет разделение перспективы на примитивах, реализует выбор окна просмотра и ножницы, выполняет выбор цели отрисовки и выполняет настройку примитивов.

  • Построитель текстуры

    Этап пиксельного шейдера принимает один пиксель в качестве входных данных и выводит один пиксель в той же позиции или без пикселя. Пиксельный шейдер не может считывать текущие целевые объекты отрисовки.

  • Средство слияния выхода

    Этап объединения выходных данных выполняет операции смешения, глубины и набора элементов с фиксированной функцией.