Разбираемся с шейдерами...
Анализируя сложившуюся ситуацию на рынке
видеокарт, нельзя не отметить некую "гонку технологий", выражающуюся в
непрерывном выпуске новых плат, подводящих всю линейку под определенные
стандарты. На данный момент "чекпоинтом" де-факто служит последний
мультимедийно-ориентированный API от Microsoft - DirectX 9, для полной
аппаратной поддержки которого по спецификациям требуется имплементация
Пиксельных шейдеров версии 2.0 и выше, а также Вершинных 2.0. Аппетиты
последнего в полной мере удовлетворяют лишь последние линейки графических чипов
ATI и NVIDIA, R3xx и NVxx (кодовые названия GPU/VPU).
Но что же такое шейдеры? Оправданны ли
громогласные надписи вроде "100% DirectX 9.0 support!", кричащие со
стильных упаковок карточек? : Вносят ли они реальный вклад в качество сцены?
Данной тематике и будет посвящена сегодняшняя статья.
Краткий экскурс в историю
В свое время выход NVIDIA GeForce 3
произвел настоящий фурор. Поддерживая аппаратное ускорение вершинных (Vertex) и
пиксельных (Pixel) шейдеров, он полностью развязывал руки разработчикам
трехмерный приложений, в доминирующей степени игр: массово стал доступен просчет
наикрасивейших видеоэффектов, ранее применявшихся лишь в голливудских фильмах, в
реальном времени! Интересный факт - совокупности этих технологий (Pixel Shaders
версии 1.1, Vertex Shaders версии 1.1) было дано неоднозначное маркетинговое
название nfiniteFX , последние две буквы оного позже положат начало
новой, уже совсем не такой удачной серии видеокарт.
Vertex Shader
Итак, Вертексный (Вершинный, Vertex)
шейдер - это подпрограмма, иначе функция, математически оперирующая
вершинами объекта. Ведь полигон - есть не что иное, как треугольник, а
треугольник имеет вершины - точки, в которых сходятся две его стороны. Каждая
вершина описывается целым рядом параметров, переменных, таких как координаты в
трехмерном пространстве, цвет, текстура, а также характеристики накладываемого
освещения. Вершинные шейдеры позволяют изменять эти переменные, не меняя самого
типа данных. Примером использования подобных эффектов могут служить: клубящихся
облака, туман, реалистичная анимация, мимика лица (выделение специфичных черт -
морщин, ямочек), зеркальное отображение сцены.
А ведь ранее комплексные
расчеты вертексных шейдеров выполнялись только на специализированных графических
станциях, и в приложения включались исключительно в пре-рендеренном виде. Стоит
отдать дань уважения инженерам NVIDIA, которые, следует заметить, в последнее
время сильно расслабились.
Применение эффектов освещения вершин
позволяет достаточно легко создавать реалистичную скелетную анимацию персонажей
посредством матричного наложения палитр и трансформации полигональных каркасов.
Поверхностные волны, рябь на воде - работа деформации
текстур:
Впечатляет? При помощи вершинных шейдеров разработчики имеют
возможность создавать и гораздо более уникальные, ярковыраженные и наполненные
сцены.
Вертексные шейдеры являются стандартным элементом блока T&L
Вершинные шейдеры, наглядный
пример: сцена 3DMark 2003
Pixel Shader
Пиксельные шейдеры (Pixel shader) -
пожалуй, самая <лакомая> и обсуждаемая в последнее время технология. К примеру,
отсутствие её аппаратной поддержки у GPU автоматически причисляет карты на его
основе в нишу Low-End, вне зависимости от результирующего быстродействия: Это,
впрочем, и правильно - не все же <урезать> качество в угоду скорости, в играх
(Как представителях прогрессивнейших и непрерывно эволюционирующих трехмерных
приложений) же следующего поколения такие жертвы неуместны
вовсе.
Пиксельные шейдеры - программируемые функции, используемые для
попиксельного расчет эффектов. Данный инструмент позволяет создавать среды,
свойства объектов в которых поразительно точно передают реальность, позволяют
ощутить материальность поверхностей. Предметы в сценах наполняются присущими ими
уникальными шероховатостями, элементами отделки, для гуманоидоподобных созданий
- волосы, усы, родинки: Все это опять же выходит за рамки возможностей,
достижимых обыкновенными, полигональными средствами отрисовки - чего только
стоит, например, попиксельная проработка освещения, игра света и тени. Их
программируемость же дозволяет не ограничиваться стандартным набором
предложенных эффектов, заместо того, творя нечто свое, отличное и
разнообразное.
Пиксельные шейдеры не являются стандартным элементом
блока T&L. Впервые доступны в API DirectX 8
Черед пиксельных шейдеров: Правдоподобность статуэтки не вызывает
сомнений.
Комплексная сцена. Современные технологии во всей красе :-)
Подведение итогов
Можно объединить сделанные выше выводы в
один короткий, лаконичный тезис - <Шейдерам - быть!>. Являясь удобным и гибким
инструментом для программистов, позволяющим независимо управлять всеми
элементами сценами, тем самым воплощая мечты в реальность, они просто обречены
на успех.
Надеюсь, что я сумел дать ответ на вопрос о необходимости
покупки, по крайней мере DirectX-8 совместимой видеокарты. Перспективность
подобных технологий очевидно - отчего же не насладиться ими в полной мере?
Грядут DooM III, Half-Life 2: приготовимся же заранее.
Дополнения и комментарии:
- При написании статьи были использованы
различные материалы и технологические описания, в том числе первоисточниками
которых являются ресурсы NVIDIA.RU, ATITECH.COM.
Автор: CryoMonsteR
Источник: www.guide3d.ru
|