Назад в библиотеку

Технология ATI TRUFORM: новый взгляд

Автор: Кирилл Витальевич Серёгин
Источник: Труды Дальневосточного государственного технического университета. 2005. № 139. С. 158-162.

Аннотация

Описание запатентованного ATI метода геометрической интерполяции вершинной сетки, а так же преимущества затенения при увеличении полигонизации поверхности за счет пересчета нормалей.

Технология ATI TRUFORM

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

Рисунок 1 - Примеры

Рисунок 1 - Примеры.

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

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

Рисунок 2 - Сфера

Рисунок 2 - Сфера.

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

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

Большая детализация с помощью кривых поверхностей

Один из способов был недавно реализован благодаря использованию кривых поверхностей. С помощью него уже была создана потрясающая компьютерная графика в таких фильмах, как "Игрушечная история 2" (Toy Story 2), "Жизнь жуков" (Bug's Life) и в "Последняя фантазия" (Final Fantasy). Возможность создания реалистичной графики обеспечивается тем, что построенные из двумерных линейных полигонов 3D изображения создают впечатление "блочности", которое отсутствует при прорисовке форм кривыми поверхностями третьего порядка.

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

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

Решение от ATI: TRUFORM

Технология TRUFORM основана на получении полигональной информации из графического приложения, внутреннем преобразовании треугольников в кривые поверхности и последующем создании новых треугольников, которые уже и будут отображаться на сцене. Преобразование простого линейного треугольника в поверхность третьего порядка и потом обратно в треугольник отнюдь не такая простая операция. Но именно такие вычисления реализует геометрический движок от ATi (Radeon II и новее).

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

Как только информация о треугольнике будет передана процессору (включая данные о вершинах и нормалях), TRUFORM начинает создавать N-патчи (N-Patches), которые формируют сетку N-патчей. Сетка N-патчей - это кривая поверхность, описанная полученной из линейных треугольников информацией. Для создания N-патча над каждой из сторон треугольника помещается две контрольные точки, таким образом, формируется шесть новых вершин (плюс центральная вершина). Две контрольные точки, прилегающие к одной вершине и принадлежащие разным сторонам, находятся на одной плоскости, перпендикулярной нормали. На рисунке ниже контрольная точка b210 принадлежит плоскости, перпендикулярной нормали N1 и находится над стороной Р1Р2. Контрольные точки размещаются на основе информации, полученной из нормалей.

Рисунок 3 - Представление треугольника

Рисунок 3 - Представление треугольника.

Так как нормаль к вершине описывает отражение света от поверхности около этой точки, то она описывает и характер поверхности. Способ отражения света от объекта указывает на его форму и очень эффективно подчеркивает кривизну поверхности. Например, если направить на сферу прямой свет, то он будет сильнее всего отражен в центре, и по мере удаления от центра яркость будет уменьшаться. Если мы увидим подобную картину отражения света, то по ней мы определим, что это сфера, что она кривая и круглая. Как только полигон будет преобразован в N-патч, создается кривая поверхность из плоских треугольников. В сумме используется 9 смежных треугольников, которые формируют поверхность, очень напоминающую настоящую. Треугольник преобразуется из двумерного вида с координатами х и у в трехмерное представление, с добавлением координаты z. Все это отчетливо видно на иллюстрации ниже.

Рисунок 4 - Поверхность

Рисунок 4 - Поверхность.

Так как все это вычисляется T&L движком, то уменьшения производительности при создании новых поверхностей не происходит. Как только поверхность превращена в кривую, она разделяется на мелкие треугольники с помощью процесса тесселяции (tesselation). Уровень тесселяции может задаваться как глобально в приложении, так и индивидуально для каждого объекта. В результате этого, количество треугольников (полигонов) значительно увеличивается. Поверхность может разбиваться столько раз, сколько нужно, чем большее число разбиений произойдет (чем больше уровень тесселяции), тем выше будет качество изображения. Оно затем создается с помощью тесселированных из кривой поверхности треугольников благодаря технологии TRUFORM.

Еще раз отметим: так как процесс тесселяции осуществляется T&L частью чипа ATi, то потери в производительности не происходит. Для всего процесса не нужно никакой дополнительной информации об оригинальном треугольнике, кроме той, что стандартно поступает в чип. Поэтому лишней нагрузки на шину памяти также не происходит. В итоге, получаем объект, который описывается большим количеством полигонов, чем на самом деле, что приводит к более сглаженным краям объекта, большему количеству деталей и к более реалистичному виду.

Рисунок 5 - Представление объекта

Рисунок 5 - Представление объекта.

Освещение N-патчей

N-патч определяется 10 точками, три из них являются вершинами начального треугольника, и семь получаются с помощью технологии TRUFORM. Эти точки являются вершинами отдельных треугольников, однако семь из них не имеют информации о своих нормалях. Информация нормали используется затенением по методу Гуро для освещения объекта (сейчас чаще всего используется именно затенение Гуро). Так как три вершины подлинного треугольника отстоят друг от друга на некотором расстоянии, то затенение по Гуро приведет к смешению и очень нереалистичному освещению. Один из выходов состоит в использовании попиксельного затенения, или затенения по методу Фонга, когда расчет освещения производится для каждого пикселя треугольника. Однако использование N-патчей приводит к еще одному способу освещения, более точному по сравнению с методом Гуро. Для достижения лучших эффектов освещения, TRUFORM создает новые нормали к середине сторон треугольников N-патча. Новая нормаль является полусуммой нормалей к обеим вершинам стороны и находится в плоскости, перпендикулярной стороне.

Рисунок 6 - Освещение

Рисунок 6 - Освещение.

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

Стоит заметить, что технология TRUFORM ни в коей мере не считается исключительным изобретением ATi: она лишь является реализацией технологии N-патчей, включенной в состав Microsoft DirectX 8 и OpenGL. С точки зрения программирования, реализация технологии TRUFORM в новом или существующем графическом приложении сводится к добавлению одной строчки кода, все остальное выполняется T&L частью чипа ATi. Так как информация о персонажах и сцене не зависит от факта использования TRUFORM, отпадает необходимость в создании новых персонажей или сцен.

Литература

1. "Ati Tecnologi" http://www.anandtech.com/showdoc.html
2. "Геометрическая интерполяция вершинной сетки" http://wAvw.reactorcritical.m/video/public/truform.htm