Прочитать на английском

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


этап Input-Assembler

API Direct3D 10 и более поздних версий разделяет функциональные области конвейера на этапы; первым этапом конвейера является этап входной сборки (IA).

Цель этапа входного сборщика — считывать примитивные данные (точки, линии и или треугольники) из заполненных пользователем буферов и собирать данные в примитивы, которые будут использоваться другими этапами конвейера. Этап IA может собирать вершины в несколько различных примитивных типов (например, списки строк, полосы треугольников или примитивы с примежаемостью). Добавлены новые примитивные типы (например, список строк с прилагаемостью или списком треугольников с прилагаемостью) для поддержки геометрического шейдера.

Сведения о приложении видны приложению только в геометрическом шейдере. Если геометрическая шейдера была вызвана треугольником, включая приращение, например, входные данные будут содержать 3 вершины для каждого треугольника и 3 вершины для данных прилагания для каждого треугольника.

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

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

Как показано на схеме блоков конвейера, после того как этап IA считывает данные из памяти (собирает данные в примитивы и присоединяет системные значения), данные будут выводиться на этап шейдера вершин.

В этом разделе

Тема Описание
начало работы с этапом Input-Assembler
Для инициализации этапа сборщика входных данных (IA) необходимо выполнить несколько шагов. Например, необходимо создать буферные ресурсы с данными вершин, необходимыми конвейеру, сообщите этапу IA, где находятся буферы и какие типы данных они содержат, и указать тип примитивов для сборки из данных.
топологии примитивных
Direct3D 10 и более поздних версий поддерживает несколько примитивных типов (или топологий), представленных D3D_PRIMITIVE_TOPOLOGY перечисленным типом. Эти типы определяют, как вершины интерпретируются и отрисовываются конвейером.
Использование этапа Input-Assembler без буферов
Создание и привязка буферов не требуется, если шейдеры не требуют буферов. Этот раздел содержит пример простых вершин и шейдеров пикселей, которые рисуют один треугольник.
использование значений System-Generated
Системные значения создаются этапом IA (на основе пользовательских входных семантики) для обеспечения определенной эффективности операций шейдера.

графического конвейера

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