Компьютер-Информ || Архив || Рубрики || Поиск || Подписка || Работа || О "КИ" || Карта


Компоненты

Что умеют современные видеокарты


И. Бойцов, [email protected]

Часть 1. Разговор о понятиях

(Продолжение. Начало═≈ в ╧ 4)

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

Процесс отображения трехмерных примитивов на двумерную плоскость экрана называется сэмплингом. В результате этого процесса возникает артефакт═≈ алиасинг (aliasing) ≈ ╚ступенчатость╩ прямых линий, потеря мелких деталей картинки, ╚разрушенние╩ текстур на большом расстоянии. Причиной этого является то, что непрерывная грань полигона не может быть корректно отображена на мониторе в силу дискретности пикселей. Для решения этой проблемы и придумали антиалиасинг (antialiasing). Антиалиасинг делится на две категории ≈ пространственный (spatial) и временной (temporal). Пространственный же антиалиасинг бывает двух видов: суперсэмплинг (supersampling), или полный антиалиасинг (full-scene antialiasing) и полигональная фильтрация (polygon filtering), или краевой антиалиасинг (edge antialiasing).

Full-scene antialiasing
Наиболее популярный (из-за своей простоты) метод. При его использовании каждый пиксель условно делится на несколько подпикселей, для каждого вычисляется цвет, а затем значение усредняется и получается цвет конечного пикселя. Конкретное представление пикселя называется субпиксельной маской, которая обычно имеет размер 2x2 или 4x4. И чем больше количество подпикселей (разрешение маски), тем более качественная картинка получается. Маска с разрешением 4x4 считается наиболее оптимальной, только вот скорость обсчета конечной картинки снижается соответственно в 16 раз. Короче говоря, полный суперсэмплинг помогает справиться с некоторыми из вышеперечисленных артефактов, но в целом проблему не решает.
Здесь стоит заметить, что теоретически при такой реализации антиалиасинга субпиксельная маска может быть любой. В реализации данной функции на современных видеокартах применяется регулярная маска от 2x1 до 4x4. Окончательный же цвет пикселя вычисляется путем усреднения цветов субпикселей или на основе весов, то есть вклад от центрального больше, чем от краевых субпикселей. Вообще, существует несколько реализаций суперсэмплинга:
≈ картинка визуализируется при большом разрешении, а потом выполняется масштабирование. Это означает, что при использовании разрешения 800x600 и маски размером 2x2 картинка рендерится при разрешении 1600x1200. Это, очевидно, требует в 4 раза большего объема видеопамяти. Именно эта методика стала стандартом в игровых видеокартах (см. рис. 1).
≈ другой способ заключается в том, что фрейм-буфер (см. глоссарий) делится на фрагменты (tiles). Каждый фрагмент рендерится в большем разрешении, в соответствии с субпиксельной маской, и затем масштабируется до меньшего разрешения. Такая методика применяется в PowerVR 250.
≈ рендеринг выполняется несколько раз в зависимости от маски (для 2x2 ≈ 4 раза). В каждом случае все координаты немного смещаются, и результат суммируется с предыдущим. Данный метод не требует дополнительного объема памяти при любой маске. Применяется в некоторых профессиональных OpenGL-ускорителях.

Краевой антиалиасинг
Метод, обеспечивающий сглаживание краев полигонов, то есть исчезновение ╚лестничного╩ эффекта. С технической точки зрения, обычно используется усреднение по площади (area averaging). Цвет пикселя определяется на основании того, насколько каждый полигон перекрывает другой пиксель. Так, например, если полигон A перекрывает пиксель на 80═%, а полигон B ≈ на 20═%, то и конечный цвет пикселя будет определяться в соответствии с этими весовыми коэффициентами. Естественно, что краевому антиалиасингу недоступно сглаживание текстурированных полигонов.

Временной антиалиасинг
Известно, что в кино часто возникает такой эффект, что колеса у машин крутятся в другую сторону. Происходит это потому, что если колесо за кадр делает 3/4 поворота, то наблюдателю кажется, что колесо повернулось на 1/4, причем в противоположную сторону. Для борьбы с этим эффектом применяется временной антиалиасинг или размытие в движении (motion blur). Обычно несколько фаз при движении объекта комбинируются в одном кадре.

   

Рис. 1. Увеличенный край полигона с применением антиалиасинга и без него

Текстуры с детализацией

Называются также detail textures или composite textures и, по сути, нужны для того, чтобы заменить текстуры высокого разрешения (не одно и то же), основной минус которых заключается в большом количестве занимаемого в памяти места. Иначе говоря, текстуры с детализацией позволяют реализовать такое текстурирование объекта, что на большом расстоянии его текстура будет ╚размазана╩, а при приближении появятся мельчайшие детали, а при этом сама текстура будет занимать сравнительно мало памяти. Текстура с детализацией на самом деле представляет собой две разные текстуры ≈ основную и текстуру деталей. Текстура деталей═≈ это черно-белая картинка, которая накладывается на основную текстуру и меняет прозрачность в зависимости от расстояния между наблюдателем и объектом. Это и означает, что с большого расстояния она выглядит как обычная, а на маленьком становятся видны детали.

Рельефное текстурирование (bump mapping)

Способ нанесения на объект (точнее его текстуру) псевдо-неровностей, и, как результат, повышения его детализации. Эта техника может добавить детализацию сцене без создания дополнительных полигонов. Заметьте, что полигон по-прежнему остается плоским, но создается ощущение его выпуклости (рельефности). Посмотрите на шарик (см. рисунок), неровности на его поверхности ≈ это иллюзия, созданная путем наложения дополнительной текстуры. Все дело в том, что для человеческого мозга единственный способ определить, что изображение отображает неровности ≈ проанализировать изменение яркости на отдельных его кусках. Как определить, какие биты делать яркими, и наоборот? Очень просто ≈ человек привык, что свет исходит сверху. Поэтому большинство поверхностей освещены сверху. Вот и получается, что если на объекте присутствуют темные и светлые пятна, то человек воспринимает их как рельеф. Чтобы на цветной текстуре создать неровности, на нее накладывается так называемая карта высот═≈ картинка с градациями серого цвета, от белого до черного.

Рис. 2. Пример использования технологии Bump Mapping

Shaders

Сначала немного истории. Как известно, выход NVidia GeForce 3 произвел настоящую революцию═≈ он поддерживал аппаратное ускорение вершинных (vertex) и пиксельных (pixel) шейдеров. С═этого времени в играх стали появляться истинно голливудские спецэффекты. Интересный факт═≈ совокупности этих технологий (Pixel Shaders версии 1.1, Vertex Shaders версии 1.1) было дано маркетинговое название nfiniteFX, последние две буквы которого позже положат начало новой серии видеокарт.

Vertex Shader

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

Рис. 3. Пример использования пиксельных шейдеров

Рис. 4. Пример использования вершинных шейдеров

Pixel Shader

Пиксельные шейдеры (Pixel Shader) ≈ пожалуй, самая ╚лакомая╩ и обсуждаемая в последнее время технология. К примеру, отсутствие ее аппаратной поддержки у GPU автоматически причисляет карты на его основе в нишу Low-End, вне зависимости от результирующего быстродействия... Пиксельные шейдеры ≈ программируемые функции, используемые для попиксельного расчета эффектов. Данный инструмент позволяет создавать среды, свойства объектов в которых поразительно точно передают реальность, позволяют ощутить материальность поверхностей. Предметы в сценах наполняются присущими им уникальными шероховатостями, элементами отделки; для гуманоидоподобных созданий ≈ волосы, усы, родинки... Все это опять же выходит за рамки возможностей, достижимых обыкновенными, полигональными средствами отрисовки═≈ чего только стоит, например, попиксельная проработка освещения, игра света и тени. Их программируемость же позволяет не ограничиваться стандартным набором предложенных эффектов, творя вместо этого нечто свое, отличное и разнообразное. Являясь удобным и гибким инструментом для программистов, позволяющим независимо управлять всеми элементами сцены, тем самым воплощая мечты в реальность, они просто обречены на успех.

AGP

Сейчас без поддержки AGP не обходится ни один уважающий себя чипсет, ни одна видеокарта. Что же это такое? Итак, AGP, или Accelerated Graphics Port, ускоренный графический порт ≈ шина расширения, разработанная Intel для подключения видеокарты. Используется для очень быстрой перекачки текстур в том случае, когда объем видеопамяти слишком мал, и все необходимые данные в него не помещаются. В═принципе, интенсивное использование шины AGP встречается достаточно редко, так как для большинства игр хватает 64 МБ собственной памяти видеокарты. Так что производители попросту наращивают видеопамять. А реального прироста скорости при достаточном количестве памяти AGP 8x по сравнению с AGP═4x не дает.

[an error occurred while processing this directive]


Рубрики || Работа || Услуги || Поиск || Архив || Дни рождения
О "КИ" || График выхода || Карта сайта || Подписка

Главная страница

Сайт газеты "Компьютер-Информ" является зарегистрированным электронным СМИ.
Свидетельство Эл ╧ 77-4461 от 2 апреля 2021 г.
Перепечатка материалов без письменного согласия редакции запрещена.
При использовании материалов газеты в Интернет гиперссылка обязательна.

Телефон редакции (812) 118-6666, 118-6555.
Адрес: 196084, СПб, ул. Коли Томчака, д. 9
e-mail:
Для пресс-релизов и новостей