Этап тесселятора (TS)

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

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

Ниже на схеме рассматриваются этапы графического конвейера Direct3D.

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

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

схема выполнения тесселяции

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

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

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

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

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

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

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

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

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

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

Фазы этапа тесселятора (TS)

Этап тесселятора (TS) выполняется в две фазы:

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

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

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

     

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

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

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

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

Вход

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

Выход

Тесселяция выводит координаты uv (дополнительно — w) и топологию поверхности для этапа шейдера доменов.

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