logo search
Материалы по интерфейсам периферий / Для Скрипко / Для пособия ПУ (Восстановлен) (2)

Тема 3.8. Технологии создания графических эффектов

Пиксельные и вершинные шейдеры. Одна из новых технологий создания графических эффектов.

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

Вершинные шейдеры позволяют гибко управлять ядром T&L (Transformation and Lighting – Трансформация и Освещение), то есть предоставляют возможность по аппаратному ускорению обработки вершин полигонов (позволяют производить различные геометрические преобразования и вычисления). В наборе команд вершинных шейдеров присутствуют 127 инструкций. С помощью вершинных шейдеров можно получить объемный реалистичный туман, всевозможные деформации объектов, плавный морфинг (это когда одно изображение «перетекает» в другое), эффект motion blur (размытие при движении, т.е. при очень быстром движении объекта, он начинает казаться нечетким, немного смазанным), практически неограниченное количество источников света и многое другое.

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

Количество конвейеров – еще один важный параметр видеоадаптера. Чем больше конвейеров поддерживает видеоадаптер, тем, естественно, лучше. Кроме количества поддерживаемых конвейеров очень важно число текстурных блоков. Если сравнить два видеоадаптера с одним и тем же количеством конвейеров, но разным количеством текстурных блоков, то при наложении одной текстуры на объект разница во времени будет незначительной, однако, при мультитекстурировании (наложении нескольких текстур) видеоадаптеру с меньшим числом текстурных блоков потребуется больше времени. Количество текстур, накладываемых видеоадаптером на объект за один проход, определяется произведением количества конвейеров на число текстурных блоков. Минимальное требование для DirectX-9 совместимых ускорителей – это 16 текстур за один проход.

Поддержка DirectX-9 предоставляет новые функции, возможности и технологии в области 3-х мерной графики. Существенным преимуществом 9-й версии DirectX является использование вершинных и пиксельных шейдеров версии 2.0. Поддержка карт смещения (displacement map – это технология, позволяющая создавать карты высот для текстур, в результате чего получается изображение, максимально приближенное к реальности), более гибкая установка частоты обновления экрана, новая мульти-мониторная поддержка, новый формат отображения цвета (для кодирования каждого цвета используется 10 бит) и др.

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

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

T&L (Transform & Lighting, Трансформация и Освещение) – это технология, реализующая процесс переноса информации о 3D изображении (позиция объектов, дистанция между ними, источники света) в 2D изображение, которое в действительности и отображается на экране. С появлением аппаратной поддержки T&L увеличилась скорость игр, а также их качество. Создание объектов со сложной геометрией (а тем более, освещением) требует очень больших скоростей обработки данных. Первоначально эта задача решалась центральным процессором посредством использования программы, реализующей T&L. С появлением аппаратной поддержки видеоадаптером этой технологии центральный процессор был значительно разгружен для выполнения других задач.

Еще одним важным параметром видеоадаптера является величина Fillrate – это величина, которая указывает на скорость закраски треугольников, что является ключевым фактором, сдерживающим быстродействие 3D ускорителей. Fillrate указывается в двух видах – мегапикселей/секунду (MPix/s) и мегатекселей/секунду (MTexels/s, где тексель – это элемент текстуры, т.е. определенный пиксель в текстуре).