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


Этап Tessellator (TS)

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

Назначение и использование

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

схема конвейера direct3d 11, который выделяет этапы шейдера корпуса, тесселлатора и шейдера домена

На следующей схеме показана прогрессия на этапах тесселяции.

схема прогрессии тесселяции

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

Среда выполнения Direct3D поддерживает три этапа, реализующие тесселяции, которые преобразуют поверхности деления с низкой детализацией в более подробные примитивы на GPU. Плитки tessellation (или разбиваются) поверхностей высокого порядка в подходящие структуры для отрисовки.

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

Tessellation использует GPU для вычисления более подробной поверхности из поверхности, созданной из четырех исправлений, треугольных исправлений или isolines. Чтобы приблизить высокоупорядоченную поверхность, каждое исправление разделено на треугольники, точки или линии с помощью факторов тесселяции. Конвейер графики Direct3D реализует тесселяции с помощью трех этапов конвейера:

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

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

Преимущества тесселяции:

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

Графический конвейер Direct3D реализует тесселяции в оборудовании, который отключает работу с ЦП на GPU. Это может привести к очень большим улучшениям производительности, если приложение реализует большое количество целевых объектов морфов и /или более сложные модели скининга или деформации.

Tessellator — это этап фиксированной функции, инициализированный путем привязки шейдера корпуса к конвейеру. (см. раздел Практическое руководство. Инициализация этапа Tessellator). Цель этапа tessellator состоит в том, чтобы разделить домен (четыре, три или линия) на множество небольших объектов (треугольников, точек или линий). Тесселлатор плитки канонического домена в нормализованной (нулевой к одному) системе координат. Например, четырехдоменный домен тесселлирован на единицу квадрата.

Этапы на этапе Tessellator (TS)

Этап Tessellator (TS) работает на двух этапах:

  • Первый этап обрабатывает факторы тесселяции, устраняя округляющие проблемы, обрабатывая очень небольшие факторы, уменьшая и сочетая факторы, используя арифметическую 32-разрядную арифметику с плавающей запятой.

  • Второй этап создает списки точек или топологий на основе выбранного типа секционирования. Это основная задача этапа tessellator и использует 16-разрядные дроби с арифметикой фиксированной точки. Арифметика фиксированной точки обеспечивает аппаратное ускорение при сохранении допустимой точности. Например, учитывая 64-метровую ширину исправления, эта точность может размещать точки в разрешении 2 мм.

    Тип секционирования Диапазон
    Fractional_odd [1...63]
    Fractional_even Диапазон TessFactor: [2..64]
    Целое Диапазон TessFactor: [1..64]
    Pow2 Диапазон TessFactor: [1..64]

     

Tessellation реализуется с двумя программируемыми этапами шейдера: шейдером корпуса и шейдером домена. Эти этапы шейдера программируются с кодом HLSL, определенным в модели шейдера 5. Целевые объекты шейдера: hs_5_0 и ds_5_0. Заголовок создает шейдер, а затем код оборудования извлекается из скомпилированных шейдеров, передаваемых в среду выполнения, когда шейдеры привязаны к конвейеру.

Включение и отключение тесселяции

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

Чтобы отключить тесселяции, установите для шейдера корпуса и шейдер домена значение NULL. Ни этап геометрического шейдера (GS), ни этап вывода потока (SO) не может считывать выходные точки управления шейдером корпуса или данные исправления.

Ввод

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

Выходные данные

Выходные данные tessellator (и при необходимости w) и топология поверхности на стадии шейдера домена.

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