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