Главная страницаОбратная связьКарта сайта

Функционирование ускорителя трехмерной графики

С технической точки зрения трехмерная (3D) графика—это система визуального представления сцены или объекта в 3-х мерной системе координат (высота, ширина и глубина), которая используется с целью более реалистичного отображения информации. Эта технология позволяет пользователям компьютера на двухмерном экране видеть трехмерное изображение. Спрос на трехмерную графику непрерывно увеличивается. Трехмерная визуализация используется во многих высококачественных играх, в деловых презентациях и мультимедийных приложениях. Однако использование трехмерной графики предполагает не только передачу огромного объема данных через шину расширения компьютера. Трехмерная визуализация требует сложных математических вычислений, определяющих цвет, наложение различных эффектов и преобразование трехмерной модели в 2-х мерную плоскость экрана. Практически во всех случаях эти задачи необходимо выполнять в реальном масштабе времени (с частотой обновления 25 кадров в секунду и быстрее). В настоящее время большинство видеосистем модернизируются для поддержки 3-х мерной анимации (необходимой, например, в компьютерных играх, таких как Quake ///или Morrowind). В этой части-тлавы рассматриваются некоторые ключевые моменты процесса 3-х мерной визуализации и ускорения этого процесса.

Процесс трехмерной визуализации

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

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



Рис. 18.13 Экран игры Morrowind дает представление о сложности трехмерной сцены

■     Разбивка 3-х мерного объекта на треугольники. В этом процессе 3-х мерный объект делится на треугольники (наборы трех вершин)

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

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

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

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

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

Трехмерная визуализация

Большая частота смены кадров создает на экране монитора атмосферу реализма. Главным фактором, определяющим частоту смены кадров, является скорость передачи данных в видеосистеме компьютера. Если смена кадров в игровой программе низкая, то игра становится неинтересной, поскольку время реакции на действие становится очень большим. Представьте себе работу программы имитации полета на самолете с частотой смены кадра один или два раза в секунду. Поскольку основная часть обработки графической информации удалена из центрального процессора, то частота кадров теперь в большей степени зависит от скорости работы графического ускорителя. Скорость работы 3-х мерной «графической машины» измеряется в количестве текселей, обрабатываемых в секунду. Она также часто измеряется в количестве треугольников, обрабатываемых в секунду. Современные ускорители 3-х мерной графики могут обеспечить скорость в сотни миллионов текселей в секунду и более. Например, относительно новый комплект графических микросхем NVIDIA GeForce 4 Ti 4400 может визуализировать 4,6 млрд. текселей (Гигатексе-лей) (или 125 млн. треугольников) в секунду.

Скорость выполнения 3-х мерных приложений зависит от выполнения многих задач, самыми критичными из которых являются 3-х мерная геометрия и визуализация. Геометрия — это набор вычислений, используемых для определения положения и цвета объекта на экране. Визуализация — это (как было сказано выше) построение изображение объекта на экране монитора. Обычный графический ускоритель освобождает центральный процессор от этой работы, и процессор может уделять больше времени для выполнения других задач. Большинство современных процессоров (Intel Pentium III с технологией SSE, Pentium 4 с технологией SSE2 или AMD с технологией 3DNow!) имеют дополнительные команды обработки 3-х мерной графики. На скорость выполнения задач 3-х мерной графики влияют три фактора: монопольное управление шиной (bus mastering), разрешение (resolution), и глубина цвета (color depth).

Монопольное управление шиной

При использовании графического ускорителя, управляющего шиной PCI в монопольном режиме, трехмерный графический движок никогда не прерывается циклами ожидания во время процесса визуализации. После того как центральный процессор подготовит все треугольники для визуализации, вдело вступает графический ускоритель, который захватывает управление шиной PCI и выдает список треугольников в асинхронном режиме, не заставляя центральный процессор приостанавливать свою работу. Монопольное управление шиной осуществляется в двух режимах: в режиме основного хозяина шины и в режиме распределения и сбора данных (scatter-gather bus master). Основной хозяин шины может работать независимо от центрального процессора в течение определенного времени, прежде чем будет прерван для получения задания. Напротив, хозяин шины, работающий в режиме распределения и сбора данных, может работать почти независимо от центрального процессора компьютера, что позволяет существенно повысить производительность системы. Монопольное управление шиной не требуется в том случае, когда графическая система использует шину AGP, поскольку шина AGP является двухточечным соединением между адаптером и системной платой, а графический адаптер всегда рассматривается как «ведущее» устройство.

Разрешение

Из-за ограничений, накладываемых операционной системой и графическими ускорителями, большинство игровых и мультимедийных приложений разрабатывались для низкой разрешающей способности (640x480) экрана с целью достижения наибольшей производительности. Увеличение разрешающей способности приводит к необходимости вывода на экран большего количество пикселов в каждом кадре, а это накладывает дополнительные требования на монитор и графическую плату. Некоторые старые приложения, разработанные в расчете на разрешение в 320x200, могут работать в режиме 640x400, но дополнительные пикселы являются простым дублированием существующих пикселов, что повышает зернистость изображения. Основываясь на современных стандартах программного обеспечения и быстрых аппаратных ускорителях, разработчики могут использовать повышенную детализацию изображения, применяя разрешения 800x600, 1024x768 или даже выше. Это повышает качество изображения в игровых программах.

Глубина цвета

Использование дополнительных цветов в 3-х мерных играх делает изображение более богатыми и реалистичными. Чем больше цветов используется в изображении, тем оно более детализировано и реалистично, но, вместе с тем, требуется больше времени на вычисление цвета каждого пиксела. Используя ускорители 3-х мерной графики нового поколения, удается достигать большей глубины цвета без значительного снижения быстродействия, и разработчики могут теперь использовать большее количество цветов в каждой сцене. Например, разработчики сегодня могут использовать 16-битную (65 К) или 24-битную (16 М) цветовые палитры вместо устаревшей 8-битовой (256 цветов) палитры. Наиболее реалистично выглядят сцены с использованием 32-битного цвета, где дополнительный байт используется для управления яркостью.

Аппаратное ускорение 3-х мерной графики

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

Коррекция перспективы текстурных карт

Реальные объекты имеют множество признаков, по которым мы их узнаем. Например, деревянный предмет имеет волокнистую структуру, в то время как у стального предмета поверхность гладкая и блестящая. В 3-х мерных приложениях для отображения поверхности трехмерного объекта используется плоский повторяющийся рисунок, называемый текстурой. Наложение изображений 2-х мерной текстуры на трехмерные объекты делает их более реалистичными. Например, если вы видите черный ящик, то не можете сказать что это такое. Если же нанести текстуру на боковые поверхности и верх этого ящика, то можно из него сделать деревянную тару, металлический сейф, панель управления, пьедестал — все что можно себе представить.

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

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

Методы отображения текстур

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

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

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

■     Множественное отображение (MIP mapping). Множественное отображение — это еще один метод улучшения качества отображения текстуры трехмерного объекта. Чем больше вносится изменений в текстуру для ее наложения на объект, тем меньше она напоминает исходную текстуру. Одним из методов исправления этой ситуации является создание нескольких (обычно трех) копий одной и той же исходной текстуры (при этом каждая текстура предназначена для определенного масштаба изображения). Множественное отображение имеет четыре формы: мозаичное множественное отображение, попикселное множественное отображение, трехлинейное множественное отображение и самый современный метод — анизотропная фильтрация для уменьшения искажений вызванных преобразованием 3-х мерного изображение в 2-х мерное.

■     Вуалирование (Fogging). Для поддержания высокой производительности процесса вывода изображения на экран разработчики создали целый арсенал методов уменьшения количества визуализаций необходимых для построения сцены. Одним из них является вуалирование. Этот метод чаще всего используется в ландшафтных сценах, например, при имитации полета. Вуалирование дает возможность разработчикам «скрыть» фон сцены за слоем «вуали» — смешения цветовых величин текстуры с монохромным цветом, например, белым. Большинство современных микросхем трехмерной графики реализуют вуалирование на аппаратном уровне.

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

Освещение

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

Прозрачность текстуры

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

Аппаратная z-буферизация

Необходимость использования z-буфера (буфера глубины изображения) возникает в том случае, если два объекта сцены перекрывают друг друга. Z-буфер определяет, какие части перекрывающихся объектов видны наблюдателю, а какие скрыты от него. Однако многие разработчики программного обеспечения не используют z-буфер для всех объектов сцены, поскольку он располагается в буферной памяти дисплея, используемой для хранения исходных текстур детализации сцены. По этой причине во многих видеокартах имеется некоторый объем памяти, которую можно использовать под z-буфер или для хранения текстур, что дает разработчику гибкость при написании программ. Если игра (например, Quake III), использующая z-буфер, воспроизводится через графический ускоритель, у которого нет аппаратного z-буфера, то она не будет работать — или частота смены кадров будет очень мала (поскольку для работы программы необходима z-буферизация). Именно в этой ситуации использование основной системной памяти (через шину AGP) для хранения текстур и z-буферизации помогает улучшить производительность процесса визуализации.

Компании ST Microelectronics (разработчик графических микросхем Куго) и Power VR разработали метод визуализации пикселов только для видимой части объектов кадра. Эта технология называется мозаичной визуализацией — TBR (Tile-Based Rendering). Стандартные ускорители трехмерной графики рисуют сначала все многоугольники, составляющие сцену, накладывают освещение и текстуры. Только после этого происходит проверка z-буфера на предмет выявления видимых в сцене многоугольников. Невидимые многоугольники удаляются, но только после того, как они будут пропущены через конвейер обработки трехмерный фафики, что вызывает снижение скорости заполнения сцены и пропускной способность памяти. Метод TBR предполагает отсечение невидимых многоугольников еще до наложения текстур и освещения, что повышает производительность графической системы.

Палитровые текстуры

Хранение исходных текстур трехмерных иф в локальной памяти видеокарты очень накладно. Каждый раз при создании новой сцены все ее исходные текстуры должны быть за-фужены в локальную память, чтобы фафический ускоритель мог их использовать. Доступная для хранения текстур память офаничена, современные видеокарты имеют собственную память порядка 32-64 Мбайт памяти. Это приводит к уменьшению количества используемых текстур, а значит и к уменьшению детализации и ухудшению других фафических качеств изображения. Для компенсации такой потери разработчики могут использовать метод палитровых текстур (palletized textures), в котором каждой текстуре сцены присваивается кодовая таблица цветов (CLUT — color look-up table). Этот метод дает возможность разработчику вместо нормальных 16-битных значений цвета (65К цветов, 2 байта на пиксел) использовать меньшее количество цветов для каждой текстуры (например, 1 байт на пиксел при возможности иметь до 256 цветов в текстуре). Меньшая глубина цвета требует меньше памяти, что позволяет хранить в памяти большее количество цветов для детализации сцены. Спецификация шины AG P также учитывает этот аспект путем разрешения использования основной памяти компьютера (нелокальной для видеоадаптера) для хранения текстур.

Однако большинство старых ускорителей трехмерной графики не поддерживает палитровые текстуры, что означает необходимость хранения информации в локальной памяти видеокарты только в полном 16-битном формате цвета, используя весь имеющийся объем памяти. В этих случаях необходимо хранить дополнительные текстуры и выбирать их из системной памяти, что сильно влияет на производительность видеосистемы. В такой ситуации фафический ускоритель может убирать некоторые текстуры из сцены для поддержания нужного уровня производительности. Новые ускорители трехмерной фафики поддерживают палитровые текстуры на аппаратном уровне, что дает возможность разработчикам профаммного обеспечения создавать сцены с повышенной детализацией, увеличивая количество текстур в 2—4 раза. Использование палитровых текстур также повышает производительность прикладных программ трехмерной фафики.

Альфа-сопряжение (alpha-blending)

Сопряжение — визуальный эффект наложения двух текстур на один объект. Для создания визуальных эффектов могут быть применены несколько вариантов сопряжения. Самый простой метод называется «экранная дверь» или «фавирование»: для создания эффекта «прозрачности» прорисовываются только некоторые пикселы, образующие изображение. Например, разработчик может решить, что объект должен быть на 50% прозрачным. Графический ускоритель будет рисовать фоновый объект, а затем только каждый второй пиксел прозрачного объекта. Такой подход прост в реализации на аппаратном уровне и дает достаточное качество фафики при низкой стоимости. Наоборот, истинное альфа-сопряжение связано с обработкой большого объема информации, и включает в себя чтение значения двух исходных текстур и выполнение вычислений перспективы на двух текстурах одновременно. На это требуется много времени, что сказывается на производительности видеосистемы, а сам метод дорог во внедрении. Поэтому только высококачественные карты трехмерной фафики используют на аппаратном уровне истинное альфа-сопряжение.

Закраска Гуро

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

Двойная буферизация

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

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

Псевдосмешение цветов (color dithering)

Количество цветов, которое может быть выведено на экран, зависит от числа бит, используемых для кодирования цвета пиксела. Например, если использовать 8 бит для кодирования цвета каждого пиксела, то общее количество возможных цветов составляет 256. Псевдосмешение цветов — это процесс смешения имеющихся цветов в маленькие картинки для получения широкой цветовой гаммы без использования дополнительной памяти. Это особенно важно для трехмерных изображений, поскольку такая технология, как закраска Гуро, требует много оттенков каждого цвета, используемых в каждой сцене. Если псевдосмешение не реализовано на аппаратном уровне, то трехмерная сцена может содержать только 8 различных основных цветов в 236-цветовом режиме (поскольку каждый цвет должен иметь в палитре цветов 32 оттенка для грубой аппроксимации Гуро). При аппаратной реализации функции псевдосмешения цветов сцена может быть визуализирована с гораздо большим количеством цветовых оттенков без использования дополнительной видеопамяти.

Сглаживание контурных неровностей (anti-aliasing)

Сглаживание контурных неровностей — это техника маскировки неровных краев кривых линий с очень низким или очень высоким наклоном. Такие неровные края особенно заметны при низком разрешении, когда каждый пиксел выглядит как «ступенька лестницы», а не как гладкая линия. Сглаживание контурных неровностей — это способ использования цветовой информации для обмана глаз наблюдателя стем чтобы они видели плавные линии или края насколько это позволяет экран монитора. Путем добавления пикселов с небольшим изменением цвета, следующих за линией или кривой в точках перехода, происходит смазывание «края». Глаз наблюдателя воспринимает такое смазывание как плавный край, а не как другой цвет. Полноэкранное сглаживание сцены — FSAA (Full Scene Anti-Aliasing) — это современная высокоскоростная реализация данной функции.


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

Наложение неровностей (bump mapping)

Наложение неровностей является относительно новым методом добавления деталей на изображение или объект без увеличения числа многоугольников, необходимых для конструирования изображения или объекта. Этот метод основан на вычислении световых эффектов с целью создания видимости небольших неровностей на поверхности объекта, которые добавляют реальность текстуре без усложнения поверхности объекта. Видимость неровностей поверхности создается за счет распределения света и тени. Существуют несколько методов наложения неровностей, в частности normal bump mapping, blend bump mapping и environment bump mapping.



Обсудить статью на форуме


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

Так же Вы можете задать вопрос по статье через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2019 Дискета.info