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


примитивы Higher-Order (Direct3D 9)

Direct3D 9 поддерживает точки, линии, треугольники и примитивы сетки. Они были расширены для поддержки интерполяции более высокого порядка за пределами линейной. Хотя треугольники и линии имеют пространственное экстент, до сих пор они отображались с помощью линейной интерполяции. В Direct3D 9 Direct3D поддерживает отрисовку этих примитивных типов с использованием интерполяции более высокого порядка, вплоть до квинтического. Кроме того, теперь поддерживается новый тип четырех примитива. Этот новый тип также можно отрисовывать с интерполяцией более высокого порядка. Эта функция в основном определяется требованиями к анимации и отрисовке символов. Его также можно использовать для других поверхностей, таких как рельеф или вода.

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

В этом разделе рассматриваются примитивы более высокого порядка и рассматриваются способы их использования в приложениях. Сведения подразделяются на следующие разделы.

Улучшение качества за счет улучшения разрешения

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

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

Прямое сопоставление из средств Spline-Based

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

Конвейер вершин