Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСИ.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
13.41 Mб
Скачать

4. 5. 1. Технологии повышения реалистичности трёхмерного изображения

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

Основные понятия трёхмерной графики:

- вершина;

- полигон;

- текстура.

Любой трёхмерный объект, каким бы сложным он ни был, можно представить в виде набора простейших полигонов, которыми являются треугольники.

Поскольку речь идет о трёхмерной графике, то любой объект представляется в виде набора точек, называемых вершинами, в трехмерном пространстве. Каждая вершина в трехмерном пространстве характеризуется тремя координатами, а система координат определяется тремя осями: горизонтальной (ось X), вертикальной (ось Y) и глубины (ось Z). Соединяя вершины между собой, можно любую трёхмерную поверхность аппроксимировать набором полигонов (многоугольников), простейшими из которых являются треугольники. Положение этих полигонов и задается вершинами. Понятно, что для формирования изображения полигоны необходимо закрасить. Для этого часто прибегают к текстурам. Текстура - это двухмерное изображение, которое может «натягиваться» на трёхмерные объекты с учетом их формы и положения.

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

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

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

Процесс обработки текстур и информации кадрового буфера называется рендерингом (или процессом закраски).

Аппаратная реализация Z-буферизации значительно увеличивает производительность графической подсистемы. Главная характеристика Z-буфера — это его разрешающая способность. Она критична для высококачественного отображения сцен с большой глубиной. Чем выше разрешающая способность, тем выше дискретность Z-координат и точнее выполняется рендеринг удаленных объектов. Если при рендеринге разрешающей способности не хватает, может случиться, что дна перекрывающихся объекта получат одну и ту же координату Z, что вызовет искажение изображения. Как правило, видеокарты имеют 32-разрядный Z-буфер.

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

Очевидно, что для создания реалистичной картины происходящего на экране необходимо частое обновление его содержимого. При формировании каждого следующего кадра ЗD-акселератор проходит весь путь подсчета заново, поэтому он должен обладать немалым быстродействием. Но в ЗD-графике применяются и другие методы придания плавности движению. Наиболее распространённый - это метод двойной буферизации (Double Buffering).

Для двойной буферизации требуется наличие двух областей, зарезервированных в буфере кадров. Метод Double Buffering использует два буфера кадров для получения изображения: один для отображения картинки, другой для рендеринга. В то время как отображается содержимое одного буфера, в другом происходит рендеринг. Когда очередной кадр обработан, буферы переключаются (меняются местами). Без применения двойной буферизации изображение не будет иметь требуемой плавности, то есть будет прерывистым.

Для повышения реалистичности отображения наложенных на полигоны текстур используются самые различные технологии:

- технология сглаживания (Anti-Aliasing);

- технология текстурной фильтрации;

- технология MIP mapping и т. д.

Технология сглаживания Anti-Aliasing

Технология Anti-Aliasing - это технология устранения эффекта ступенчатых краев (Aliasing).

Изображение на экране состоит из множества мелких точек — пикселей, которые, как маленькие кирпичики, формируют почти любое изображение. Однако из-за того, что пиксели имеют конечный размер, на краях трехмерных объектов можно различить так называемую «лесенку» или ступенчатые края. Для того чтобы минимизировать эффект «лесенки», проще всего увеличить разрешение экрана (уменьшив тем самым минимальный размер формируемых пикселей). Правда, такой способ минимизации паразитного эффекта подходит не всегда, поскольку это зависит от конкретного монитора, а если речь идет об игре — то и от возможности игры переключаться на более высокое разрешение. В том случае, когда избавиться от ступенчатого эффекта нельзя за счет повышения разрешения монитора, можно использовать технологию Anti-Aliasing. Данная технология позволяет визуально сгладить эффект лестницы. Наиболее часто используемая для этого техника — это создание плавного перехода от цвета линии или края к цвету фона. Цвет точки, лежащей на границе объектов, определяется как среднее цветов двух граничных точек.

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

Суть данной технологии заключается в том, что графический процессор рассчитывает изображение в гораздо большем разрешении, чем разрешение экрана, а затем сжимает его до установленного значения. Например, при разрешении экрана 800x600 и установке режима FSAA 2x2 изображение будет рассчитываться в разрешении 1600x1200, а затем сжиматься до 800x600 и выводиться на экран.

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

Технология MIP mapping

Одна из самых распространенных технологий, используемых для улучшения качества текстурирования трёхмерных объектов, называется MIP mapping.

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

Для решения подобных проблем используется технология MIP mapping.

Технология MIP mapping подразумевает возможность использования набора текстур с различной степенью детализации. То есть на базе каждой текстуры создается целый набор текстур с меньшем уровнем детализации. Текстуры такого набора называются MIP-картами (МIP-Map).

В простейшем случае наложения текстуры для каждого пиксель изображения определяется соответствующая ему МIP-карта в соответствии с таблицей детализации (LOD, Level of Detail). Далее из MIP-карты выбирается только один тексель (пиксель карты), который присваивается пикселю.

Технологии фильтрации

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

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

-билинейная;

-трилинейная;

-анизотропная.

Билинейная фильтрация

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

Трилинейная фильтрация

Трилинейная фильтрация также призвана удалять артефакты, возникающие при

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

Анизотропная фильтрация

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

Технологии объединения видеокарт

Технология NVIDIA SLI (Scalable Link Interface) - это технология объединения двух видеокарт с целью увеличения графической производительности.

Назвать саму идею объединения видеокарт новой нельзя. Как известно, все новое - это хорошо забытое старое. Попытки объединения видеокарт (то есть создание многопроцессорной графической системы) предпринимались и до этого. И если говорить о решениях, которые имели коммерческий успех и завоевали популярность и среде заядлых геймеров, то уместно вспомнить технологию Scan Line Interleave (SLI), которая позволяла объединять в единое решение две графические карты на базе процессоров 3Dfx Voodoo2.

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

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

С выпуском графического интерфейса PCI Express совместное использование двух графических карт вновь стало возможным. Компания NVIDIA уже давно поняла потенциал новой шины и внедрила некоторое подобие функции 3Dfx SLI в новейший графический процессор NV40, также известный как GeForce 6800.

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

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

Для объединения видеокарт в технологии NVIDIA SLI используют простое U-об-разное мостовое соединение двух карт, которое обеспечивает синхронизацию и передачу изображения. В результате этого соединения отпадает потребность в использовании внешнего кабеля.

Технология NVIDIA SLI (Scalable Link Interface) имеет ряд принципиальных отличий от 3Dfx SLI. Главное отличие заключается в самом принципе обработки кадров.

Технология NVIDIA SLI предлагает два режима работы для увеличения производительности:

- Split Frame Rendering (SFR);

- Alternate Frame Rendering (AFR).

Режим AFR - это поочередный рендеринг кадров, то есть одна видеокарта отвечает за рендеринг одного кадра, а вторая - за рендеринг другого.

Рендеринг

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

Для реализации технологии NVIDIA SLI на практике потребуются две видеокарты с интерфейсом PCI Express, поддерживающие данную технологию (например, на базе графического процессора GeForce 6800), мостовой соединитель и материнская плата, имеющая два слота PCI Express xl6.

Обе графические карты должны принадлежать к одному классу производительности, то есть можно объединять только две карты GeForce 6800 Ultra, две GeForce 6800 GT или две GeForce 6800 (стандарт). Смесь различных видеокарт работать не будет, хотя в теории должна бы - ведь здесь используется балансировка нагрузки.

Кроме того, до недавнего времени требовалось (сейчас такого жесткого условия нет), чтобы объединяемые по технологии SLI видеокарты имели бы одну и ту же версию BIOS.

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

Альтернативная технология, позволяющая объединять две видеокарты для увеличения производительности, получила название ATI CrossFire. В сравнении с технологией NVIDIA SLI у технологии ATI CrossFire имеется ряд принципиальных отличий и преимуществ. Напомним, что технология NVIDIA SLI имеет несколько ограничений: обе карты должны быть абсолютно идентичны или, другими словами, обладать одним и тем же BIOS (правда, требование идентичных BIOS было только в первых реализациях технологии NVIDIA SLI). Кроме того, режим SLI работает далеко не со всеми играми, а если и работает, то в ряде случаев не дает желанного прироста производительности. Кроме того, эффективность технологии NVIDIA SLI и список поддерживаемых этой технологией игр в значительной мере зависит от используемого видеодрайвера.

Технология ATI CrossFire работает со всеми играми под DirectX и OpenGL Кроме того, объединяемые видеокарты не обязательно должны быть одинаковыми и могут быть произведены разными компаниями. Технология ATI CrossFire подразумевает больше режимов рендеринга, чем NVIDIA SLI, и поддерживает режим улучшения качества изображения.

На первый взгляд, CrossFire имеет немало общего с nVidia SLI: для работы CrossFire требуется материнская плата PCI Express с двумя слотами х16 PCIe под графику. Хотя CrossFire теоретически не зависит от чипсета, ATI утверждает, что система будет работать только на материнских платах с чипсетом Radeon Xpress 200 CrossFire.

CrossFire-версия несколько отличается от обычных карт ATI. Для сборки системы CrossFire, кроме стандартной графической карты Radeon X800 или Х850 (ведомый/slave), потребуется специальная версия видеокарты Radeon X800 или Х850 CrossFire (ведущий/master). При этом видеокарты не соединяются между собой мостиком только специальным внешним кабелем.

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

Разделение на простую и CrossFire-версию карт, на первый взгляд, можно расценить как недостаток по сравнению со SLI, так как в случае с решением NVIDIA вам не нужно думать, какую карту брать, обе одинаковые. Но если вдуматься, концепция ATI дает определенные преимущества.

Владельцы Radeon X800 или Х850 могут без проблем докупить к своей системе любую модель CrossFire. Здесь не играют роли ни различия в тактовых частотах, ни в версиях BIOS, ни в конфигурации конвейера, ни разные производители. Единственное ограничение — модель CrossFire должна соответствовать другой графической карте. Другими словами, быть картой Х800 или Х850.

CrossFire-версия карты координирует тактовые частоты и адаптируется к обычной карте на основе пиксельных конвейеров. Скажем, если обычная карта использует 12 активных пиксельных конвейеров, то CrossFire-карта тоже перейдет на 12 конвейеров. Но за гибкость приходится платить. Владельцы «младшей» Х800 или Х850 заплатят достаточно приличную сумму за CrossFire-версию карты, по сравнению со своей, и не факт, что они получат большой выигрыш, ведь темп гонки будет задавать обычная карта.

Технология ATI CrossFire обеспечивает четыре режима работы:

1. SuperTiling.

2. Scissor.

3. Alternate Frame Rendering (AFR).

4. Super AA Mode.

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

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

К преимуществам данного режима относится возможность работы со всеми играми и приложениями, а также оптимальное распределение нагрузки (с точки зрения пикселей). В то же время в некоторых приложениях в режиме Super-Tiling производительность возрастает незначительно. Обе карты должны про считывать всю геометрию сцены, даже если затем они будут вычислять половину пикселей. В играх, которые усиленно используют пиксельные программы, можно ожидать более высокого прироста производительности. Кроме того, режим SuperTiling не работает с играми OpenGL.

Режим рендеринга Scissor разделяет экран на две части по горизонтали. Одна карта вычисляет верхнюю часть экрана, а вторая - нижнюю. Динамическая балансировка нагрузки позволяет разделить экран на части таким образом, чтобы на карты ложилась равная вычислительная нагрузка. Такой режим является стандартным для приложений OpenGL. Кроме того, данный режим позволяет получить прирост производительности в большинстве игр. В то же время, как и в случае режима SuperTiling, в режиме Scissor обе видеокарты должны полностью просчитывать геометрию сцены.

Режим Alternate Frame Rendering (AFR) подразумевает поочередный рендеринг кадров каждым графическим процессором. Одна карта просчитывает все нечетные кадры, а вторая — все четные. Принцип легко понять, если учесть, что меняющаяся сцена всегда состоит из последовательности отдельных кадров, которые быстро сменяют друг друга, создавая впечатление непрерывного движения.

Преимущество такого решения состоит в том, что обе карты оптимально распределяют вычислительную нагрузку.

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

Четвертый режим CrossFire назван Super AA (Anti-Aliasing). Точнее, речь идет даже не об одном, а о четырех режимах Super АА (8х АА, 10х А А, 12х АА и 14х АА). В данных режимах карта не обеспечивает более высокой частоты кадров (производительности), но существенно улучшает качество картинки. Эти режимы позволят повысить качество изображения в играх, которые не получают выигрыша в производительности от использования двух видеокарт. Наличие данных альтер­нативных режимов рендеринга является ключевым отличием технологии ATI CrossFire от NVIDIA SLI.

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

В режиме 8х АА обе карты генерируют одно и то же изображение, причем каждая из них работает в режиме сглаживания изображения 4х, но использует разные точки-семплы (шаблоны сглаживания). Затем чип смешивает обе картинки одну. В результате пользователь получает сглаживание 8х по цене 4х FSAA.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]