Разбираемся с шейдерами…

Анализируя сложившуюся ситуацию на рынке видеокарт, нельзя не отметить некую «гонку технологий», выражающуюся в непрерывном выпуске новых плат, подводящих всю линейку под определенные стандарты. На данный момент «чекпоинтом» де-факто служит последний мультимедийно-ориентированный 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.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Дата публикации:
Автор публикации: