1. Масштабируемая архитектура S2MP
2. Многоконвейерный рендеринг
3. Средства обработки цифровых медиа данных
4. Подсистема визуализации семейства Onyx2
5. Аппаратная поддержка графических функций
Литература

В октябре 1996 года компания Silicon Graphics объявила о выпуске серии новых продуктов, покрывающих практически весь спектр высокопроизводительных вычислений. Номенклатура новых систем предусматривает сразу несколько семейств, включая и суперкомпьютеры для решения задач визуализации - Onyx2. Базовой основой, объединяющей все компьютерные системы SGI, служит использованная в линиях Origin и Onyx2 архитектура S2MP - Scalable Shared- memory MultiProcessor. Эта новая архитектура, разработанная совместно с компанией Cray Research, обеспечивает модульное построение вычислительных комплексов, позволяя наращивать как вычислительную мощность и мощность ввода/вывода, так и масштабировать возможности графической системы. Подсистемы визуализации Onyx2 Reality и Onyx2 InfiniteReality расширили традиционное представление о 3D графических ускорителях, обеспечивая на единой основе аппаратную поддержку всего набора функций из спектра возможностей по графической обработке данных разной природы: 3D геометрии, плоских изображений и видео.

Семейство Onyx2 было разработано для поддержки наиболее сложных приложений вычислительной визуализации в производстве, проектировании, медицине, в области работы с мультимедиа данными, а также в визуальном моделировании. На Рисунках 1-3 приведены иллюстрации некоторых приложений. Стратегия SGI, которой она придерживается на протяжении ряда лет в этом сегменте рынка, состоит в объединении технологии многопроцессорных суперкомпьютеров и самых мощных графических ускорителей класса high-end. Предшественниками семейства Onyx2 были графические серверы Power Challenge и Onyx с графическими подсистемами RealityEngine2 и InfiniteReality. Сохраняя преемственность, Onyx2 открывает дополнительные возможности, позволяя одновременно вести обработку графики, изображений и видео в реальном масштабе времени.

Picture 1

Рисунок 1.
Планирование инфраструктуры города в виртуальной среде на Onyx2.

Picture 2

Рисунок 2.
Полет по базе реальных геопространственных данных.

Picture 3

Рисунок 3.
Система виртуальных прогулок на базе Onyx2 позволяет в реальном времени путешествовать по архитектурным сооружениям (собор Святого Петра в Риме).

В семейство Onyx2 входят несколько моделей (таблица 1), построенных на базе процессоров MIPS R10000. Компьютер Onyx2 Reality поставляется в варианте Deskside, может включать до 4 процессоров и один графический конвейер. Модели Onyx2 InfiniteReality имеются в варианте Deskside - 2 или 4 процессора и один графический конвейер. Вариант с одной стойкой позволяет конфигурировать систему из восьми процессоров и двух графических конвейеров, а в варианте двух стоек - до 24 процессоров и до 6 конвейеров. Самой мощной на сегодняшний день графической конфигурацией можно назвать вариант из 3 стоек (RealityMonster), имеющий до 16 процессоров и до 8 графических конвейеров.

Таблица 1.
Вычислительная платформа Onyx2.

Характеристика
Onix2 Reality
Onix2 InfiniteReality Deskside
Onix2 InfiniteReality Rack
Onix2 InfiniteReality Dual Rack
Onix2 RealityMonster
ЦПУ
MIPS R10000
MIPS R10000
MIPS R10000
MIPS R10000
MIPS R10000
Количество
1-4
2-4
2-8
2-24
8-16
Первичный кэш (данные/команды)
32 Кбайт/32 Кбайт
32 Кбайт/32 Кбайт
32 Кбайт/32 Кбайт
32 Кбайт/32 Кбайт
32 Кбайт/32 Кбайт
Вторичный кэш
1 Мбайт
4 Мбайт
4 Мбайт
4 Мбайт
4 Мбайт
Оперативная память
64 Мбайт-2 Гбайт
64 Мбайт-2 Гбайт
64 Мбайт-4 Гбайт
64 Мбайт-12 Гбайт
256 Мбайт-8 Гбайт
Дисковая память
1-4 4,4 Гбайт или 9,1 Гбайт 3,5` Ultra SCSI
1-5 4,5 Гбайт или 9,1 Гбайт 3,5` Ultra SCSI
1-11 4,5 Гбайт или 9,1 Гбайт 3,5` Ultra SCSI или 10 3,5` Fibre Channel
1-22 4.5 Гбайт или 9,1 Гбайт 3,5` Ultra SCSI или 20 3,5` Fibre Channel
1-22 4.5 Гбайт или 9,1 Гбайт 3,5` Ultra SCSI или 20 3,5` Fibre Channel

Таблица 2.
Графическая подсистема Onyx2.

Характеристика
Onix2 Reality
Onix2 InfiniteReality Deskside
Onix2 InfiniteReality Rack
Onix2 InfiniteReality Dual Rack
Onix2 RealityMonster
Полигонов/сек.
5,5 М
11 М
11 М
11 М
80 М
Пикселей/сек.
224-448 М
224-448 М
224-896 М
224-896 М
5,3 Г
Пикселей/сек., тектурирование, АА
67-135 М
194-388 М
194-776 М
194-776 М
4, 7 Г
АА векторов/сек.
3,7 М
7,4 М
7,4 М
7,4 М
60 М
Трилинейных интерполяций/сек.
100-200 М
200-400 М
200-800 М
200-800 М
6,4 Г
Сверток/сек.
30 М
60 М
60 М
60 М
TBD
Вокселей/сек.
100-200 М
200-400 М
200-800 М
200-800 М
4,8 Г
Цвет
RGBA 48 бит
RGBA 48 бит
RGBA 48 бит
RGBA 48 бит
RGBA 48 бит
Плоскостей перекрытий
16
16
16
16
16
Кол-во субпикселей для антисалтинга
4х4
8х8
8х8
8х8
8х8
Макс. бит/пиксель
128-512
256-2048
256-2048
256-2048
256-2048
Графических Конвейеров
1
1
1-2 (1 4RM, 1 2RM)
1-6* (3 4RM, 3 2RM)
4-8 (4 4RM, 4 2RM)
Процессоров GE/конвейер
1-2
1-2
1-4 и 1-2
1-4 и 1-2
1-4 и 1-2
Памяти текстуры/конвейер
16 или 64 Мбайт
16 или 64 Мбайт
16 или 64 Мбайт
16 или 64 Мбайт
16 или 64 Мбайт
Размер буфера кадра
40 или 80 Мбайт
80 или 160 Мбайт
80 или 320 Мбайт
80 или 320 Мбайт
80 или 320 Мбайт
Каналов вывода
2 или 8
2 или 8
2 или 8
2 или 8
2

Характеризуя линию Onyx2 в целом, можно выделить следующие пункты:

  • как следует из таблицы 2, Onyx2 является сейчас одной из самых быстродействующих графических систем;
  • использованная в Onyx2 новая технология позволила снизить стоимость конфигурации, которая уже никак не может быть приравнена по цене к суперкомпьютерным монстрам - менее 100 тыс. долл.;
  • принципиально новая архитектура Onyx2 обеспечивает масштабирование вычислительной производительности, скорости ввода/вывода и графической подсистемы;
  • в Onyx2 реализована возможность параллельного рендеринга одной сцены одновременно на нескольких графических конвейерах;
  • аппаратно поддержаны новые функции обработки медиа данных;
  • для Onyx2 разработан новый 24- дюймовый монитор с разрешением 1920х1200.
  • 1. Масштабируемая архитектура S2MP

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

    В архитектуре предшествующей машины семейства Onyx, процессор размещался на одной плате, а память и графическая подсистема - на другой. Передача данных происходила по общей шине с пропускной полосой 1.2 Гбайт/с. И независимо от того, сколько процессоров, памяти и устройств ввода/вывода имелось в системе, общая пропускная способность была ограничена порогом в 1.2 Гбайта в сек.

    В Onyx2 все по другому (рисунок 4). Во-первых, процессор и память размещаются на одной плате, и поэтому резко увеличивается скорость и уменьшается время доступа. На каждой плате имеется по 2 процессора R10000 и до 1 Гбайта памяти. В настольном варианте имеется место для размещения двух плат - 4 процессора и 2 Гбайта памяти. Плата с процессорами и памятью - процессорный узел, соединяется с другими частями системы быстрыми связями, имеющими скорость передачи данных до 800 Мбайт/с в каждом из двух направлений.

    Picture 4

    Рисунок 4.
    Система Onyx2 с 4 процессорами.

    Ключевой компонент архитектуры - матричный коммутатор (кроссбар) Xbow, который выполняет функции соединения процессорных узлов между собой и со всеми другими частями системы: вводом/выводом, графикой. Каждый узел Xbow имеет 8 работающих в двух направлениях линий связи. Таким образом Onyx2 в настольном варианте с двумя процессорными узлами имеет интегральную пропускную способность 6.4 Гбайт/с, что более чем в 5 раз превышает производительность самой мощной конфигурации Onyx. В комплектации типа стойка процессорные узлы дополнительно соединяются между собой через интерфейсы CrayLink, которые имеют еще более высокую пропускную способность - 1.6 Гбайт/с.

    Таким образом архитектура Onyx2 позволяет создавать полностью модульные системы, составленные из блоков - процессорных, коммутирующих узлов и специализированных подсистем: графических, ввода/вывода, сетевых. Архитектура S2MP позволяет теоретически наращивать конфигурацию до 1024 процессоров с пропорциональным увеличением узлов связи. При этом линейно возрастают все характеристики системы, включая вычислительную мощность, объем памяти и ее пропускная способность, производительность ввода/вывода и сетевого оборудования.

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

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

    2. Многоконвейерный рендеринг

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

    Свойством многоконвейерности обладают все модели Onyx2 в стоечном исполнении, но разработана и специальная модель RealityMonster, которая спроектирована с прицелом на масштабируемость графической подсистемы. Onyx2 RealityMonster представляет собой конфигурацию из трех стоек, где могут быть размещены до 16 процессоров MIPS R10000 и до 8 графических конвейеров InfiniteReality. Восьми - конвейерный RealityMonster показывает графическую производительность 80 млн. полигонов, 5.3 млрд. пикселей в секунду, имеет 0.5 Гбайт памяти текстуры, и всю эту мощь можно использовать в рамках одной графической задачи. На рисунке 5 приведены сравнительные диаграммы производительности различных графических систем для Onyx2.

    Picture 5

    Рисунок 5.
    Сравнение графических характеристик Onyx2.

    3. Средства обработки цифровых медиа данных

    Во всех моделях семейства Onyx2 в качестве стандартной реализована возможность настройки одного из выходных каналов подсистемы генерации изображений в формат видеосигнала NTSC, PAL или S-Video. Если соединить этот канал Onyx2 со стандартным видео рекордером (VCR), то можно в реальном времени записывать изображения с экрана на ленту без каких-либо дополнительных аппаратных плат.

    Для работы со звуком во все конфигурации стандартно включаются несколько каналов ввода/вывода: аналогового стерео аудио, профессионального цифрового аудио и 8-канальный оптический ADAT. Всего каждый компьютер Onyx2 имеет 12 аудио каналов.

    Для профессиональной работы с видео информацией в Onyx2 предлагается дополнительная плата Digital Video Option (DIVO), работающая с данными в цифровом формате, управляя передачей параллельных видео и аудио потоков из системной памяти на диски и обратно. Для производства видео изображения вещательного качества, например CCIR 601, может использоваться плата GVO - Graphics-to-Video Option. Эта дочерняя плата устанавливается прямо на плату Генератора Изображений графического конвейера и выводит цифровое видео непосредственно из буфера кадров, обеспечивая высокую скорость.

    4. Подсистема визуализации семейства Onyx2

    Подсистемы визуализации Onyx2 Reality и Onyx2 InfiniteReality расширяют традиционное представление о 3D графических ускорителях, обеспечивая на единой основе аппаратную поддержку большого набора функций всего спектра графической обработки данных разной природы: 3D геометрии, плоских изображений и видео. В зависимости от модели, подсистема визуализации реализуется одним (в моделях Deskside) или несколькими (в моделях Rack) конвейерами визуализации. Каждый из конвейеров подключается к процессорному узлу через матричный коммутатор Xbow, подобно устройствам ввода/вывода.

    Прикладной программный интерфейс для доступа к графическим функциям Onyx2 поддерживается версией операционной системы Cellular IRIX и рядом программных продуктов, входящих в ее состав: OpenGL, IRIS Perforver, ImageVision Library Tools, Cosmo 3D. OpenGL стал стандартом де-факто, как API 3D графических приложений, и поскольку он широко поддержан на различных платформах и в различных операционных средах, обеспечивается совместимость системы визуализации Onyx2 с другими системами.

    Видео системы Onyx2 компонуются из трех плат: Геометрической Машины (GE), Растеризатора (RM) и Генератора Изображений (DG).

    4.1. Геометрическая подсистема

    На первом месте в конвейере визуализации стоит геометрическая подсистема, которая реализована на плате Геометрической Машины. Основные функции геометрической подсистемы: управление передачей данных в/из вычислительной части системы (хоста), разбор команд OpenGL, исполнение команд геометрической и пиксельной обработки. В геометрической подсистеме заложены средства аппаратного ускорения обработки дисплейных списков. Скорость обмена данными с хостом в Onyx2 в 2-3 раза выше, чем в Onyx InfiniteReality. Геометрическая подсистема спроектирована c ориентацией на поддержку API OpenGL.

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

    4.2. Подсистема растеризации

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

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

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

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

    На следующей стадии - обработки пикселей, вычисленный цвет текстуры модифицирует собственный цвет пикселя. Возможен один из трех способов модификации: decal, modulate или blend, что соответствует спецификации OpenGL. Исходя из значения глубины пикселя, которое вычисляется при растровой развертке, определяется количество налагаемого на пиксель тумана, для получения окончательной закраски цвет тумана смешивается с цветом пикселя после текстурирования.

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

    4.3. Подсистема вывода изображений

    В архитектуре Onyx2 подсистема вывода изображений (DS) получает результат рендеринга из цифрового буфера кадров подсистемы растеризации. Аналого-цифровые преобразователи (DAC) превращают массив пикселей в аналоговый поток, генерирующий изображение на RGB мониторе высокого разрешения. DS обеспечивает программное управление временными характеристиками преобразования, что позволяет обслуживать дисплеи с различными параметрами разрешения, скоростью регенерации и с черезстрочной или непрерывной разверткой.

    Стандартные конфигурации видео систем Onyx2 включают два независимых видео канала, в дополнение к которым можно установить еще 6, которые используются только как стандартные RGB - каналы. Канал номер 1 может, кроме того, работать в качестве преобразователя в композитный или S-video сигнал. В любом канале в видео сигнал может быть преобразована любая прямоугольная область экрана, включая и весь экран целиком. Преобразователь успешно справляется и с видео форматами, у которых соотношение размеров кадра отлично от отношения 3:4, использующегося в PAL и NTSC.

    Аппаратура DS выполняет в реальном времени ресамплинг - переход между форматами кадров в буфере кадров и устройстве вывода (дисплее), сопровождаемый сжатием или растяжением изображения. Поэтому, с одной стороны, повышается скорость смены кадров, а, с другой, более экономно используется память буфера кадров. Видео система Onyx2 хорошо совмещается с широким спектром видео оборудования, проекторами и рекодерами, поскольку синхронизирующие сигналы генерируются и для формата композит, и для горизонтальной и вертикальной развертки.

    Непосредственный вывод в формате композит или S-video имеет качество, достаточное для производственных целей или мониторинга. Чтобы получить композитное видео с вещательным качеством, видео канал конфигурируется специальным образом, как RS-170 или Euro 625, и сигнал с него посылается на внешний преобразователь с вещательным качеством CCIR601. Для этого можно использовать платы Digital Video Option (DIVO) и Graphics-to-Video Option (GVO).

    5. Аппаратная поддержка графических функций

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

    Аппаратная поддержка графической обработки ориентирована на API OpenGL и доступна из него. Знание возможностей аппаратуры необходимо для создания эффективных приложений, реализующих все достоинства Onyx2. Конвейер рендеринга можно разделить на три этапа:

  • закачки данных из хоста в конвейер;
  • геометрической обработки;
  • растеризации.
  • 5.1. Передача данных в конвейер рендеринга

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

    Спецификация OpenGL определяет два механизма передачи данных в конвейер рендеринга: непосредственный и отложенный режим (или режим дисплейного списка). В непосредственном режиме матрицы преобразований, геометрические и другие данные подаются в конвейер визуализации непосредственно из приложения в результате обращений к процедурам OpenGL. Альтернативно, приложение может скомпилировать вызовы процедур в дисплейный список, который запоминается, как часть состояния конвейера рендеринга OpenGL. Впоследствии приложение может выполнить дисплейный список таким же образом, как оно выполняет процедуры в непосредственном режиме. Однако данные из дисплейного списка запоминаются в эффективном представлении и могут быть посланы в конвейер рендеринга с максимальной производительностью.

    В Onyx2 введены две новые возможности, существенно увеличивающие производительность при использовании дисплейного списка по сравнению с производительностью в непосредственном режиме.

    Во-первых, в конвейер рендеринга встроена большая, примерно 14Мбайт, кэш- память, которая обменивается данными с геометрической подсистемой со скоростью более 300 Мбайт/с при очень малой задержке. Кэш автоматически управляется средствами системы Perfomer и библиотекой OpenGL. Дисплейные списки выборочно помещаются в кэш, исходя из их размера и содержимого. Например, очень короткие списки не попадают в кэш, так как накладные расходы при их выполнении превосходят выигрыш от кэширования. Списки, имеющие сложную иерархию также не помещаются в кэш, так как обход иерархии слишком сложен, чтобы делать его непосредственно в графическом конвейере.

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

    5.2. Обработка примитивов

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

    В визуальных тренажерах часто требуется выполнять вычислительно трудоемкие видовые преобразования при рисовании объектов - спрайтов, например деревьев, правильно изображая смену вида при их вращении. В Onyx2 предлагается расширение OpenGL для поддержки этих сложных вычислений в процессорах Геометрической Машины, разгружая хост.

    5.3. Цвет

    Архитектура Onyx2 поддерживает все цветовые модели и модели освещенности OpenGL. Операции освещения реализованы в процессорах Геометрической Машины с использованием арифметики с плавающей точкой. Операции цветовой растеризации выполняются подсистемой растеризации над 48 битами - по 12 бит на каждый компонент RGBA. В операциях с цветовым индексом может использоваться до 12 бит на индекс. В памяти буфера кадра цвета могут хранится с разрешением от 16 до 48 бит на цвет.

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

    В случае, когда несколько перекрывающихся поверхностей частично прозрачны, подсистема растеризации производит смешивание цветов от разных поверхностей, в зависимости от альфа-значений пикселей. Альфа-значения определяют степень прозрачности от 0 до 1, и с их помощью моделируются окна, дым, облака и прочее. Onyx2 поддерживает все способы смешивания OpenGL.

    Для создания реалистичных изображений 3D сцен при расчете освещенности должны учитываться различные аспекты источников света и оптических свойств поверхностей объектов. Используя OpenGL, приложение для Onyx2 определяет световую модель, в которой свойства поверхностей описываются комбинацией четырех компонентов:

    • зеркальной - для световых бликов и полированных поверхностей;
    • диффузной - для моделирования грубых поверхностей;
    • рассеянной - для ненаправленного освещения;
    • излучательной - для самосветящихся поверхностей.

    К этим компонентам может быть добавлен пятый - степень блеска поверхности, изменяемая от объекта к объекту и задающая разные свойства их поверхностей.

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

    5.4. Удаление невидимых поверхностей

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

    Отличительная особенность реализации Z-буфера в Onyx2 - более однородное разрешение по глубине, в сравнении с традиционным способом представления на основе плавающей точки. В Onyx2 имеются три режима точности Z-буфера: 23 бита, 16 и 15 бит с компрессией.

    5.5. Антиалиасинг

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

    Субпиксельная информация сохраняется в конвейере для всех вершин при преобразованиях и растеризации. Каждый примитив вычисляется с точностью 8х8 субпикселей - для каждого исходного пикселя, производимого при рендеринге, заводится 64 субпиксельные единицы. При вычислении цвета, растровая система представляет примитивы с точностью в 1, 4 или 8 субпикселей для каждого его пикселя. Затем вычисляется цвет и глубина субпикселей. Эта информация посылается в буфер кадра, где каждый субпиксель проходит тест глубины, а окончательный цвет пикселя формируется по данным о всех его субпикселях. В режиме субпиксельного антиалиасинга Z информация хранится для каждого субпикселя, увеличивая точность удаления невидимых поверхностей до субпиксельного уровня.

    5.6. Наложение текстуры

    Системы Onyx2 спроектированы для получения изображений сложных сцен с текстурированными объектами в реальном времени со скоростью кадров 60 Гц. Они сохраняют совместимость с более ранними системами RealityEngine и Power, однако производительность новых систем значительно выше.

    Системы Onyx2 одновременно загружают и отрисовывают текстуру, давая возможность обновлять текстурное изображение на лету. Аппаратная синхронизация предохраняет замещение текстуры, если она используется, и блокирует ее до тех пор, пока она не загружена полностью. Максимальная скорость загрузки текстуры из памяти хоста составляет 176 Мбайт/с и 240 Мбайт/с при загрузке из памяти буфера кадров.

    Каждая подсистема растеризации может содержать от 16 до 64 Мбайт текстурной памяти. Если текстура применяется без Mip-карт, этого достаточно для размещения 8 или 32 млн. 16-битных текселей.

    В системах Onyx2 поддерживается 3 основных размера текселей: 16 бит, 32 бит и 48 бит. Каждому размеру соответствуют несколько форматов. Многообразие форматов позволяет найти компромисс между качеством изображения, размером памяти и скоростью рендеринга. 16-битная текстура требует, естественно, меньше всего памяти и наносится быстрее.

    Одна из наиболее мощных особенностей системы Onyx2 - многообразие двумерных и трехмерных способов фильтрации текстуры. Фильтрация используется в OpenGL для приведения в соответствие размеров пикселей и текселей. Если размер текселей больше, они подвергаются преобразованию фильтром сжатия, в обратной ситуации применяется фильтр расширения. Фильтры сжатия раэбиваются на два класса: простые и использующие Mip-карты, которые представляют изображение текстуры с последовательно уменьшающимся разрешением. В простой фильтрации используется интерполяция между соседними текселями. В порядке увеличения точности интерполяции возможны следующие варианты:

    • по ближайшей точке (интерполяция нулевого порядка) для 2D и 3D текстур;
    • билинейная интерполяция для 2D текстур;
    • трилинейная интерполяция для 3D текстур;
    • бикубическая интерполяция для 2D текстур.

    В фильтрации на основе Mip-карт производится интерполяция по нескольким Mip-картам с близкими разрешениями. Это линейная, билинейная, трилинейная и интерполяция 4-го порядка. В Onyx2 все режимы выполняются на максимальном уровне производительности, кроме интерполяции 4-го порядка по Mip-картам и бикубической фильтрации, которые имеют наполовину меньшую производительность. Выполнение простой трилинейной интерполяции для 3D текстур на максимальном уровне производительности является существенным шагом вперед по сравнению с возможностями RealityEngine.

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

    Глобальное текстурирование в Onyx2 значительно упрощает создание таких приложений. Здесь можно иметь одну интегральную Mip-карту, причем, она может быть больше размеров памяти текстуры - остаток размещается в оперативной памяти или на диске. Если точка наблюдения отображаемой сцены меняется, происходит аппаратная подкачка требующейся части Mip-карты.

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

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

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

    5.7. Многоканальный вывод

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

    Подсистема генерации изображений поддерживает большое количество типов видео сигнала и их комбинаций от формата NTSC (646x486, 30Гц, interlaced) до формата сверхвысокого разрешения HDTV 1920x1200 c последовательной разверткой. Такая гибкость позволяет подключить к Onyx2 и простой монитор типа VGA, и новый 24- дюймовый монитор со сверхвысоким разрешением 1920х1200. Этот монитор был разработан совместно с корпорацией Sony, имеет значительно большую площадь экрана, соотношение сторон 16:10 и картинку кинематографического качества. Он вполне способен заменить проектор для просмотра фильмов. Новый монитор меньше по размерам, чем другие мониторы класса HDTV, и не занимает много места на рабочем столе. У него примерно такая же высота и толщина, как у обычных мониторов, но он шире.

    Многоканальный вывод поддерживается во всех моделях Onyx2. Стандартная конфигурация подсистемы вывода изображений включает два независимых видео канала, она может быть расширена до высокопроизводительной версии с 8 каналами. В обеих конфигурациях канал 1 может использоваться либо как RGB-канал, либо как канал преобразователя в видео формат. Таким образом, к стандартной конфигурации можно, например, подключить следующие альтернативные комбинации устройств вывода: а) два RGB дисплея или б) один стереоскопический дисплей для приложений виртуальной реальности, или в) один RGB дисплей и один видео кодировщик. Дополнительные каналы практически ничем не отличаются от основных, как в управлении, так и в программировании.

    В данный канал из буфера кадров должны поступать цифровые данные одного типа и точности, например, 10-битный RGB. Однако, в разные каналы могут поступать и разные потоки: один канал может получать 10-битный RGB, а другой - 12-битный. В зависимости от количества и точности представления цветовых компонентов общая скорость передачи составляет примерно от 210 до 290 млн. пикселей в секунду.

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

    Picture 6

    Рисунок 6.
    Ресамплинг из буфера кадров на экран.

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

    Одно из ограничений связано с тем, что графическая система должна иметь время на выполнение операций "обслуживания": обновление позиций курсора и пиктограмм, установка параметров для динамического ресамплинга пикселей и др. Это делается на границах кадров, и поэтому частота их обновления должна быть кратной для всех видео форматов, использующихся в комбинации: подсистема вывода производит обслуживание одновременно для всех работающих каналов. К примеру, правильная комбинация может включать форматы с частотами 30, 60, 120 и 180 Гц. Комбинация же NTSC - 60Гц и PAL - 50Гц недопустима.

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


    Литература

    [1]. Onyx2 Technical Report. Silicon Graphics, Inc. October 1996.