Найти тему
кITейка

История технологии: тесселляция

Оглавление

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

Что такое тесселляция?

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

Наглядное изображение процесса тесселляции
Наглядное изображение процесса тесселляции

Технология была на пике популярности в районе 2010 года, когда стали появляться графические ускорители с поддержкой Shader Model 5.0, а OpenGL 4.0 и DirectX11 вышли с поддержкой технологии и требовали наличия аппаратной реализации тесселляции.

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

TruForm

Первой картой с поддержкой тесселляции была ATI Radeon 8500, вышедшая в 2001 году. Технология, применявшаяся на карте, получила название TruForm. Она получила поддержку в виде расширения для OpenGL, однако не была внедрена в основной функционал, так как помимо ATI технологию никто особо и не поддержал.

Слева без TruForm, справа с TruForm
Слева без TruForm, справа с TruForm

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

Помимо разработчиков, которые не особо хотели вкладывать ресурсы и силы в молодую и неизвестную технологию, конкуренты ATI также не сильно спешили выводить на рынок свои альтернативы.

Слева без TruForm, справа с TruForm
Слева без TruForm, справа с TruForm

Поэтому взлет технологии TruForm закончился достаточно стремительным падением. Даже сама ATI отказалась от аппаратной реализации технологии, которая вернется в карточки только вместе с серией HD 2000.

Программная тесселляция

Вместе с выходом Shader Model 4.0 многие разработчики стали думать, что тесселляцию удастся реализовать на основе геометрических шейдеров.

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

Энтузиазм на этот счет не продлился долго, так как пришло осознание того, что геометрические шейдеры - не замена аппаратной реализации и не лучший вариант для реализации тесселляции.

Наследие TruForm

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

-4

Аппаратная тесселляция вернулась, как ни странно, в процессоре для Xbox 360 и, в дальнейшем, в Radeon HD 2000 для ПК. Технология была схожа с TruForm, но позволяла куда более гибко настраивать параметры тесселляции. Была реализована как расширение для OpenGL, но, как и раньше, не оказалась в составе основных пакетов как OpenGL, так и DirectX10, потому что Nvidia не оказалась заинтересована во внедрении данной технологии.

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

Shader Model 5.0

Наконец, вместе с выходом шейдерной модели пятой версии, свет увидела та тесселляция, которая останется с нами надолго. Функция на тот момент так и не получила реализации в основном пакете OpenGL и все еще была доступна в рамках расширения. А вот в DirectX11 шейдеры тесселяции были встроены.

-5

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

Наличие данной функции в пакете DirectX11 обязало и Nvidia встроить ее поддержку на аппаратном уровне.

С тех пор тесселляцию в той или иной форме можно встретить во многих игровых проектах.

Рубрика "История технологии"

PhysX