Авторитетность издания
Добавить в закладки
Следующий номер на сайте
Система визуализации реального времени на основе программируемых сигнальных процессоров
Аннотация:
Abstract:
Авторы: Долговесов Б.С. (bsd@iae.nsk.su ) - Институт автоматики и электрометрии СО РАН, лаборатория синтезирующих систем визуализации (зав. лабораторией), Новосибирск, Россия, кандидат технических наук, Каипов Н.Р. () - , Мазурок Б.С. () - , Романовский А.В. () - , Чижик С.Е. () - | |
Ключевое слово: |
|
Ключевое слово: |
|
Количество просмотров: 15352 |
Версия для печати Выпуск в формате PDF (1.07Мб) |
Современные требования к системам визуализации реального времени, ориентированным на применение в тренажерах, включают не только высокую производительность, но и наличие некоторых специильных возможностей. Во-первых, это всевозможные спецэффекты, повышающие реализм изображения. К ним относятся различного вида текстура, дым, дождь, снег, системы сигналов. Во-вторых, необходимыми условиями являются многоканальность и возможность взаимодействия по сети. В-третьих, требуются средства моделирования (и коррекции дисторсии) разного рода оптических приборов. Специализированные наборы микросхем [1], являющиеся основой большинства акселераторов трехмерной графики, пока не подходят для решения подобных задач. Несмотря на то, что некоторые из них имеют достаточно высокую производительность для работы в реальном времени, их функциональные возможности сильно ограничены. Это связано с тем, что они в первую очередь ориентированы на другой круг задач – САПР и трехмерные игры. Поэтому в качестве вычислительного ядра компьютерной системы визуализации Ариус был выбран сигнальный процессор TMS320C80 фирмы Texas Instruments. Тем самым при достаточно высокой производительности была сохранена программируемость системы на всех уровнях, что дало возможность реализовать необходимые визуальные эффекты с минимальными затратами. При разработке программ для TMS320C80 использовались языки ассемблера (около 90% кода) и С из TMS320C80 Software Toolkit. Программное обеспечение для host-компьютера написано на языке С++ (за исключением драйвера). Принципы построения системы Ариус На кристалле TMS320C80 [2] интегрирована процессорная структура MIMD над общей памятью (четыре целочисленных процессора и один процессор с блоком вещественной арифметики). Несмотря на то, что процессор TMS320C80 разрабатывался специально для мультимедиа-приложений, его архитектура имеет некоторые ограничения, препятствующие эффективному использованию его вычислительных ресурсов в задаче визуализации трехмерных сцен. К наиболее существенным из них следует отнести небольшой объем внутренней памяти процессора и невозможность быстрого доступа к внешней памяти. В результате пришлось отказаться от традиционного фрейм-буферного (frame-buffer) подхода в пользу так называемой виртуальной методики. Ее отличительными чертами являются разделение экрана на клетки и конвейеризация вычислений с использованием промежуточного описания кадра в виде списка примитивов. В системе Ариус изображение формируется из спанов – клеток экрана 8´8 пикселов. Фиксированная сетка спанов позволяет вычислять точные значения параметров отображения граней только в узловых точках. Значения в промежуточных точках восстанавливаются билинейной интерполяцией по четырем узлам. Кроме того, полностью локализуются вычисления, связанные с отображением текстуры. Размер спанов выбран исходя из баланса критериев качества изображения, объема локальной памяти процессора и вычислительной нагрузки. Структурная схема системы Ариус приведена на рисунке 1. Загрузку системы и геометрические преобразования осуществляет host-процессор (Pentium для IBM-совместимых компьютеров). Данные в систему Ариус поступают по шине PCI. Модуль SG (span generator) выполняет первый этап вычислений – преобразование поступающих на вход системы приоритетно упорядоченных геометрических примитивов в промежуточное описание кадра. Примитивами промежуточного описания являются фрагменты пересечения геометрических примитивов со спанами. Второй этап вычислений – обход списка примитивов, определение видимости и цвета пикселов возложен на модули VP (videoprocessor). Благодаря применению виртуальной методики вычисления в VP легко распараллеливаются. В зависимости от требуемой производительности система может содержать до двух модулей SG и до четырех мо- дулей VP. Алгоритмы модуля SG На модуль SG возлагаются две основные функции – растрирование геометрических примитивов в сетке спанов и формирование списка фрагментов с вычислением всех необходимых параметров. Данные (за исключением экранных координат геометрических примитивов) поступают в виде коэффициентов линейных уравнений. Растрирование. В процессе растрирования геометрические примитивы – треугольники и растровые огни – преобразуются в горизонтальные сегменты спанов, то есть растрирование производится в масштабе спанов. Геометрия фрагмента грани в спане задается дизъюнкцией субпиксельных масок пересечения каждого из ребер со спаном. Для определения расположения ребра относительно спана анализируются знаки четырех чисел: Sign(Clocal), Sign(Clocal + Alocal), Sign(Clocal + Blocal), Sign(Clocal + Alocal + Blocal), где Alocal, Blocal, Clocal – коэффициенты уравнения ребра в системе координат текущего спана. Разные знаки указывают на пересечение спана ребром. В этом случае из коэффициентов уравнения ребра формируется код, однозначно определяющий субпиксельную маску заполнения фрагмента. Вычисление параметров фрагментов. Поскольку параметры геометрических примитивов задаются коэффициентами линейных уравнений, при вычислении параметров фрагмента в спане естественно применить инкрементные формулы [3]: 1/Z(x, y) = Az*x +Bz*y+Cz, (1a) здесь и далее аналогично для U/Z(x, y), V/Z(x, y), I(x, y), 1/Z(x, y+1) = 1/Z(x, y) + Bz, (1b) 1/Z(x+1, y) = 1/Z(x, y) + Az, (1c) 1/Z(x+1, y+1) = 1/Z(x, y+1) + Az, (1d) где (x, y) – экранные координаты в масштабе спанов. Затем вычисляются значения текстурных координат и плотности тумана: U(x, y) = (U/Z(x, y)) / (1/Z(x, y)), (2a) V(x, y) = (V/Z(x, y) / Z(x, y)), (2b) F(x, y) = Fog(Z0 / Z(x, y)), (2c) где Z0 – дальность видимости тумана; Fog(x) – табличная функция плотности тумана. В системе Ариус текстурные вычисления локализованы, то есть производятся над небольшим участком карты, загруженным в локальную память. Неточность в определении уровня детальности приводит к переполнению текстурного адреса и возникновению заметных дефектов изображения. Поэтому значение уровня детальности вычисляется по формуле (4a), гарантирующей ограниченный диапазон изменений текстурных координат. LOD = C * log2(max(Umax – Umin), (Vmax – Vmin)) (3) где Umin(max) = min(max)(U(x, y), U(x+1, y), U(x, y+1), U(x+1, y+1)); C – постоянный множитель, критерий переключения LOD-уровней детальности текстуры. Значения текстурных координат в узлах сетки спанов масштабируются в соответствии с уровнем детальности, после чего преобразуются в данные для инкрементных вычислений (4a-d): U0 = U(x, y) – Umin, (4a) Udx = (U(x+1, y) – U(x, y)) / 8, (4b) Udy = (U(x, y+1) – U(x, y)) / 8, (4c) Uddx = (U(x+1, y+1) – U(x, y+1) – – U(x+1, y) + U(x, y)) / 64. (4d) Смещение участка текстуры, загружаемого в локальную память вычисляется на основе значений Umin и Vmin. Из динамической таблицы по номеру текстурной карты определяется адрес в текстурной памяти и размер карты нужного уровня детальности. Также определяется размер участка требуемой текстурной карты (5a,b), что минимизирует траффик текстуры. SizeU = Umax – Umin + 2, (5a) SizeV = Vmax – Vmin + 2. (5b) В число функций модуля SG также входит поддержание структуры списка фрагментов. В целях экономии памяти описание кадра представляется в виде множества линейных односвязных списков и двухмерного массива начальных указателей для списков. Новые фрагменты добавляются в конец списка, так что приоритетный порядок примитивов инвертируется. В зависимости от конфигурации системы список может создаваться для разного количества параллельно работающих модулей VP. Алгоритмы модуля VP В большинстве случаев на модуль VP ложится основная вычислительная нагрузка. Сочетание оригинальных DSP-ориентированных алгоритмов и эффективного распараллеливания операций в модуле VP позволило достичь требуемой производительности. В целях сокращения количества вычислений и ускорения передачи текстур в локальную память процессора каждый тексел содержит компоненты цвета двух соседних уровней детальности. Действительно, при таком подходе достаточно вычисления текстурных координат и текстурного адреса только для одного уровня детальности. Поскольку каждый последующий уровень детальности получается фильтрацией предыдущего, ошибка вычислений при таком подходе незначительна. Вычисление текстурных координат параметров производится по формулам: U(0,0) = U0, (6a) U(x, y) = U(x-1, y) + Udx – шаг по строке, (6b) U(x, y) = U(x, y-1) + Udy, (6c) Udx = Udx + Uddx – переход на новую строку. (6d) Целые части U и V дают адрес текселов в локальной текстурной памяти. Дробные части служат коэффициентами билинейной интерполяции цвета текстуры каждого из уровней детальности в данном пикселе (7). Значения (a*b), ((1–a)*b), (a*(1–b)), ((1–a)*(1–b)) извлекаются из таблицы по адресу, составленному из дробных частей текстурных координат. Color = C(U, V) * (a*b) + C(U, V+1) *(a*(1-b)) + + C(U+1, V) * ((1-a)*b) + + C(U+1, V+1)*((1-a)*(1-b)). (7) Для получения окончательного цвета текстуры интерполируются значения цвета двух из уровней детальности. Вычисление окончательного цвета пиксела с учетом освещенности и тумана производится по формуле: Col=S((I*S)*(1-Fog)*Color + + (I*S*Fog)*FogColor), (8) где I – освещенность; S – площадь заполненного фрагмента пиксела в субпикселах; Fog – плотность тумана; FogColor – цвет тумана. Суммирование ведется по всем субпикселам, заполнение которых определяется субпиксельной маской фрагмента. Как только все субпикселы данного пиксела оказываются занятыми, пиксел маркируется как занятый, и дальнейшие вычисления цвета в нем не производятся. По мере обработки фрагментов субпиксельная маска в спане накапливается; если фрагмент оказывается полностью занятым, его обработка прекращается. Таким образом, достигается нелинейная зависимость времени обработки кадра от глубинной слож- ности [4, 5]. В состав программного обеспечения системы Ариус (рис. 2) входят система подготовки баз данных, ядро системы визуализации и драйверы средств отображения. Система подготовки баз данных. В качестве интерактивного редактора трехмерных сцен используются пакеты 3D Studio R4 и/или 3D Studio MAX R2. Для построения специфических моделей при создании тренажеров на базе системы Ариус к пакету 3D Studio R4 добавлены дополнительные модули. Расширения позволяют создавать модели ландшафта (Terrain), экраны, задающие пределы видимости, сортирующие объекты для фиксации приоритетов в сцене, уровни детальности объектов, растровые огни. Широкое использование стандартных средств моделирования позволило существенно сократить сложность задачи. Ядро системы визуализации предоставляет пользователю широкие возможности по управлению объектами сцены и параметрами отображения в реальном времени как с консоли, так и по сети с удаленной машины. В число функций ядра входят: · подготовка сцены для визуализации: - отбраковка невидимых объектов, - приоритетная сортировка объектов, - генерация процедурных объектов; · управление объектами – сбор и обработка данных от устройств управления (мышь, джойстик, траектория, сеть); · контроль скорости отображения; · сбор и вывод статистических данных. Разработан открытый протокол управления ядром системы визуализации по сети. Сетевые функции включают также синхронизацию каналов для многоканальных систем визуализации. Драйверы средств отображения предоставляют высокоуровневый интерфейс – на уровне геометрических примитивов. Таким образом, драйверу отводится задача вычисления и форматирования параметров примитивов. Подобная архитектура позволяет добавлять к стандартному набору различные специализированные функции (например коррекцию дисторсии). В заключение отметим, что принципы, положенные в основу системы Ариус, позволили создать мощную компьютерную систему визуализации. Благодаря наиболее полному и эффективному использованию особенностей архитектуры DSP удалось достичь производительности, необходимой для синтеза высокореалистичных изображений в реальном времени [5]. Несомненным преимуществом применения DSP является программируемость системы на всех уровнях. Это позволяет варьировать в некоторых пределах производительность системы и качество изображения, реализовывать специфические для тренажеров визуальные эффекты. Комплект программного обеспечения системы Ариус отвечает современным требованиям масштабируемости и управляемости подобных систем. Список литературы 1. John Hill. High-End Graphics Cards, //PC Labs Reviews, PC Magazine, June 1998. 2. MVP TMS320C80 System-level synopsis, Texas Instruments literature #SPRU113 3. Мазурок Б.С., Рожков А.Ф., Сальников Ю.А., Тис- сен Ю.Э., Унру П.И. Генерация текстурированных поверхностей и специализированных эффектов в системах “Альбатрос” // Автометрия.-1994.-№6. 4. Асмус А.Э., Богомяков А.И., Вяткин С.И., По- пов Ю.М., Тиссен Ю.Э., Унру П.И. Видеопроцессор компьютерной системы визуализации “Альбатрос” // Автометрия.-1994.-№6. 5. Вяткин С.И., Гимаутдинов О.Ю., Долговесов Б.С., Каипов Н.Р., Чижик С.Е. Архитектурные особенности системы визуализации реального времени на основе сигнальных процессоров // Автометрия. – 1999.-№1. |
Постоянный адрес статьи: http://swsys.ru/index.php?page=article&id=943&lang=&lang=&like=1 |
Версия для печати Выпуск в формате PDF (1.07Мб) |
Статья опубликована в выпуске журнала № 3 за 1999 год. |
Возможно, Вас заинтересуют следующие статьи схожих тематик:
- Кросс-система автоматизации разработки программного обеспечения на базе языка высокого уровня Рада
- Спецификация объектно-ориентированной модели данных с помощью отношений
- Реализация теней с помощью библиотеки OpenGL
- Использование матричных квадродеревьев для хранения площадных картографических объектов
- Инструментальные и программные средства построения сетевых моделей
Назад, к списку статей