Книги по разным темам Использование настраиваемого графического конвейера.

Михаил Самохвалов (mike{a dog}ldesignstudio.ru) Институт Системного Анализа РАН, Москва, 2005г.

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

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

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

конвеера показанная на Рис. 1.

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

также использует результаты из нескольких стадий.

Настраиваемый конвейер Описание архитектуры настраиваемого конвейера приведено в [2]. Основными ее положениями можно считать нелинейность выполнения стадий, общую память для стадий и естественный параллелелизм конвейера.

для работы только в паре, а также из-за 3х мерная Модель увеличенной толщины контура (больше 2х пикселей). При этом эти недостатки скрадывались. Разница же в работе Получение карты Получение заливки алгоритмов растеризации не составляла глубин и ID карты (растеризация) Получение (растеризация) больше одного пикселя (см Рис. 2. и Рис.

контура 3.). В [1] использовалась схема ближние соседи для того, чтобы дребезг контура меньше влиял на качество растеризации.

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

Окончательная Недостаток данной схемы в том, что при растеризация на использовании разных алгоритмов устройство несоответствие линий может доходить до 2х пикселей, поэтому в нашей системе использовалась схема соседи ближних Рис. 1. Пример конвейера для соседей (см Рис. 4.). При этом возникает нефотореалистичной визуализации еще больше артефактов, которые Используя такой конвейер, мы получаем необходимо убрать из результирующего возможность одновременно использовать изображения.

внутри конвейера векторные и растровые Предложенное развитие алгоритма в данные. Контур в данном случае этой работе основывается на том факте, представляет собой набор отрезков (можно что контур, принадлежащий к конкретной также представить его в виде кривой, грани не должен далеко от нее луходить.

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

Трассировка контура по Z & ID буферам Модификация алгоритма заключается Рис. 2. Z буфер.

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

При этом получается, что контур может наезжать на залитые части или наоборот вылезать за их пределы. Разница в [1] была не сильно заметна из-за того, что алгоритмы в этой работе оптимизированы Рис. 3. Контур и проблемные места. дополнительных буферов решить задачу убирания артефактов невозможно.

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

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

дополнительным анализом, используя ID В шейдер помимо информации о самого контура.

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

Каждая единица трехмерной геометрии имеет свой материал. Этот материал связан с шейдером, которым может являться как скриптовый код, так и библиотека, Рис. 3. Артефакт с величиной ошибки скомпилированная из языков высокого в 2 пикселя уровня (С++ или другой язык, включая Достоинства такого алгоритма:

специализированные).

1) Независимость алгоритмов Этот материал поступает на вход растеризации треугольников от алгоритма rasterizer вместе с самой алгоритмов растеризации контура геометрией, информацией об источниках 2) Возможность использовать те же света и т.д. и определяет цвет в точке алгоритмы, что и в [1] для экранного пространства, который затем устранения артефактов самого будет на результирующей картинке.

контура в его аналитическом В фотореалистичных рендерах, как представлении правило, имеются такие материалы как Недостатки:

Lambert, Phong, Anizotropic, которые 1) Требуется больше вычислений отвечают физическим моделям освещения.

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

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

Toon затенения используется материал, который устанавливает 2 цвета. Один из Алгоритмы, работающие с них определяет результирующий цвет для данными нескольких стадий освещенной стороны, другой - для Примером работы таких стадий может затененной.

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

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

XML, в котором указаны типа данных, которыми она оперирует. Таким образом, Фильтры edge detection для каждой стадии определяется какие данные необходимо ей передать, эти В случае, если художник не хочет данные упаковываются и пересылаются использовать методы получения стадии. Формат данных может быть как векторного контура, он может встроенный в рендер (например, воспользоваться методом фильтров Edge изображения), так и внешний. В этом Detection, который работает с худшим случае всей обработкой занимается стадия, качеством, но опробован временем.

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

результаты работы фильтра над Z-буфером и буфером нормалей можно совместить Описание стадий и потока для получения результирующей картинки с контуром.

выполнения Для описания стадий был использован Динамический холст XML (см [5]) как основа для структурного Этот метод используется обычно в описания.

последней стадии создания изображений Вся информация обо всех имеющихся (compose). Один из методов для получения стадиях хранится в локальном динамического холста можно увидеть в репозитарии, который представляет собой работе [4]. В нашей системе для XML файл. Каждая стадия имеет свое добавления динамического холста уникальное имя и уникальный используется отдельная стадия, которая идентификатор. Идентификатор должен занимается наложением полученной в быть уникален в сети. Имя стадии предназначено для настройки конвейера и является коротким идентификатором для Используя визуальные редакторы можно удобства. Пример описания локальной эту задачу решать автоматически.

базы приведен ниже: При помощи такого репозитария можно конфигурировать компьютеры для выполнения только определенных стадий.

Для этого достаточно настроить определенных стадий.

XML. Это описание идет вместе со сценой

fers.IDBufferDataФ/> Типичный пример конвейера:

dataTag=Ф StandartTypes.GBuffers.ZBuff erDataФ/> StandartTypes.GBuffers.NBuff Е erDataФ/> dataTag=Ф node_in="contourTracer.inCon dataTag=Ф node_out="Rasterizator.

imagebuffer"> Е Таким образом, мы связываем стадии в Е один граф. Стадии, которые на вход принимают только геометрию, по умолчанию являются стартовыми, те вся Здесь мы видим название стадии, ее тип, обработка начинается с них. Названия входные и выходные параметры. стадий должны совпадать с теми, которые Наименования данных и типы стадий указаны в локальном репозитарии.

используются по соглашению лимя компании\продукта - общее название - Параллельное выполнение конкретный тип. Для создания стадий собственных алгоритмов есть возможность Параллельная работа организована на использовать свои типы данных. Для этого протоколе TCP-IP. На нем организована необходимо при соединении стадий в система передачи данных и команд на конвейер следить за соединениями.

Михаил Самохвалов, Институт Системного локальные сервисы рабочих станций. При Анализа РАН, 2004г.

помощи команд можно:

[3] Adam Lake, Carl Marshall, Mark 1) Узнать, занята ли рабочая станция Harris, and Marc Blackstein. "Stylized рендером в текущее время Rendering Techniques for Scalable Real-Time 2) Узнать какую сцену, кадр, стадию 3DAnimation." In Proceedings of NPAR обрабатывает станция.

2000, Symposium on Non-Photorealistic 3) Выяснить, какие стадии можно Animation and Rendering (Annecy, France, выполнять на этой станции June 2000), pages 13-20, New York, 2000.

4) Узнать код и описание последней ACM.

ошибки, в случае неуспешного [4] Matthieu Cunzi, Joelle Thollot, Sylvain выполнения Paris, Gilles Debunne, Jean-Dominique 5) Передать данные, необходимые для Gascuel, Fredo Durand, Dynamic Canvas for рендера Non-Photorealistic Walkthroughts, 6) Начать рендеринг на станции ARTIS/GRAVIR, MIT, REVES/INRIA 7) Отменить рендеринг Sophia-Antipolis, Данные команды представляют собой [5] Extensible Markup Language (XML) все необходимое для функционирования системы рендеринга в сети. Реализация сетевой подсистемы выполнено как сервис на локальной машине и является стандартным решением для клиентсерверных приложений.

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

итература [1] Isenberg, Helper, and Strothotte.

Stylizing Silhuettes at Interactive Rates: From Silhuette Edges to Silhuette Strokes.The Eurographics Association and Blackwell Publishers. 2002.

[2] Архитектура настраиваемого конвейера рендеринга с общей памятью.

   Книги по разным темам