DirectX. Единая модель программ-шейдеров. Доступ к кадровому буферу в пиксельных программах, страница 7

Краткий экскурс в историю шейдерных программ.

В свое время выход NVIDIA GeForce 3 произвел настоящий фурор. Поддерживая аппаратное ускорение вершинных (Vertex) и пиксельных (Pixel) шейдеров, он полностью развязывал руки разработчикам трехмерный приложений, в доминирующей степени игр: массово стал доступен просчет наикрасивейших видеоэффектов, ранее применявшихся лишь в голливудских фильмах, в реальном времени. Интересный факт – совокупности этих технологий (Pixel Shaders версии 1.1, Vertex Shaders версии 1.1) было дано неоднозначное маркетинговое название nfiniteFX , последние две буквы оного позже положат начало новой серии видеокарт.

Vertex Shader.

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

Вертексные шейдеры являются стандартным элементом блока T&L.

Вершинные шейдеры, наглядный пример: сцена 3DMark 2003

Pixel Shader.

Пиксельные шейдеры (Pixel shader) –самая «лакомая» и обсуждаемая в последнее время технология. К примеру, отсутствие её аппаратной поддержки у GPU автоматически причисляет карты на его основе в нишу Low-End, вне зависимости от результирующего быстродействия…. Пиксельные шейдеры – программируемые функции, используемые для попиксельного расчет эффектов. Данный инструмент позволяет создавать среды, свойства объектов в которых поразительно точно передают реальность, позволяют ощутить материальность поверхностей. Предметы в сценах наполняются присущими ими уникальными шероховатостями, элементами отделки, для гуманоидоподобных созданий – волосы, усы, родинки…. Все это опять же выходит за рамки возможностей, достижимых обыкновенными, полигональными средствами отрисовки – чего только стоит, например, попиксельная проработка освещения, игра света и тени. Их программируемость же дозволяет не ограничиваться стандартным набором предложенных эффектов, заместо того, творя нечто свое, отличное и разнообразное. Пиксельные шейдеры не являются стандартным элементом блока T&L. Впервые доступны в API DirectX 8.

Черед пиксельных шейдеров… Правдоподобность статуэтки не вызывает сомнений. Комплексная сцена. Современные технологии во всей красе :-)

Используемые материалы:

http://3dmark.ru

“DirectX Next”

“Разбираемся с шейдерами...”

http://www.delphikingdom.ru

“DirectX для начинающих”

http://kindelk.chat.ru

http://www.sigma.kz