div.main {margin-left: 20pt; margin-right: 20pt} Обзор технологии ATI
SMARTSHADER
Совсем недавно появилась новая версия DirectX, уже восьмая по счёту.
Самым главным нововведением явились вершинные и пиксельные шейдеры. Шейдер
- программа на специальном коде, которая выполняется аппаратно на любом
DirectX 8 совместимом ускорителе. Не для кого уже не секрет, что на
очереди DirectX 8.1. И главным отличием новой версии от восьмой станет
улучшенная поддержка того, что мы называем вершинными и пиксельными
шейдерами. Технология SMARTSHADER представляет собой улучшенные пиксельные
и вершинные шейдеры. Вот и всё. Вся шумиха опять из-за шейдеров.
Немного из теории
Как известно, языки прикладного программирования (OpenGL, Direct3D…)
состоят из набора определённых функций. Вызывая функцию и прописывая ряд
параметров, разработчики указывают, в какой последовательности и каким
образом прорисовывать тот или оной объект, как на него влияют источники
цвета, как от него отражается свет и т.д. Графический процессор как раз и
создан для ускорения выполнения этих инструкций, благодаря чему удаётся
разгрузить центральный процессор. Разработка новых инструкций не
прекращалась не на минуту, поэтому всё время выходят новые ускорители,
которые аппаратно поддерживают все те нововведения и наработки, которые
были добавлены в языки прикладного программирования за определённый период
времени. Вот так по мнению сотрудников компании ATI выглядит схема
создания таких наработок:
Действительно, пока разработчики выпустят приложение, использующее
новые алгоритмы для улучшения качества и скорости обработки трёхмерной
сцены, пройдёт несколько лет.
А вот что происходит при использовании шейдеров:
Шейдеры действительно могут позволить сократить время разработки игр и
приложений. Ведь шейдер - программа, написанная на специальном языке. А
раз так, то разработчик может ввести поддержку каких-либо новых эффектов в
приложение, просто написав программу. Отпадает необходимость ждать железо
с поддержкой этих технологий и новых версий API. Кроме того, если
видеокарта не поддерживает, скажем, наложение текстур по методу EMBB, то
при использовании шейдеров можно ввести как поддержку EMBB, так и других
технологий. Правда, от таких эмуляций будет происходить потеря
производительности. Но зато можно расширить возможности некоторых
технологий и улучшить их качество, ввести некоторые дополнительные
эффекты.
Изменения на стадии 3D-конвейера
Процесс расчёта трёхмерного изображения объекта (точнее, его двухмерное
проекции) называется 3D-конвейером, поскольку он выполняется в несколько
следующих друг за другом этапов. Причём нет жёсткой последовательности и
содержания этапов 3D-конвейера. Однако рассмотрим наиболее частый пример:
Как известно, вначале формируется так называемая каркасная модель
трёхмерного объекта, затем происходит тесселяция - разбитие поверхности
полученного объекта на элементарные плоские элементы. На этом этапе модель
представляет собой совокупность трёхмерных координат всех вершин (vertex)
элементарных треугольников, записанных в определённом порядке. Далее
работу на себя берёт блок T&L если он есть или центральный процессор
если такой блок на видеокарте отсутствует. На этапе Transformation
моделируется движение объекта, его перемещение и т.д. На этой стадии и
происходит первое изменение: кроме блока T&L для моделирования
движения объекта используются вершинные шейдеры, каждый из которых
позволяет осуществлять контроль над перемещением отдельной выбранной
вершины или группы вершин объекта. Далее следуют операции по отбрасыванию
задних граней, производится сортировка вершин и т.п.Расчёт изменения
координат объекта с течение времени завершён. Далее происходит вычисление
цвета пикселя - тоже довольно трудоёмкий процесс, для ускорения которого
существует блок T&L. Всё это происходит благодаря различным типам
фильтрации текстур, расчёта освещения, прозрачности и полупрозрачности.
Однако с таким же успехом всё это может происходить благодаря пиксельным
шейдерам, которые предоставляют гораздо больше возможностей и как
следствие этого трёхмерная сцена становится более красочной и
реалистичной. После завершения геометрического этапа и этапа рендеринга
происходит формирование кадра в кадровом буфере - области локальной памяти
3D-акселератора, куда помещается спроецированное двумерное изображение.
Затем оно отправляется либо снова на 3D-конвейер для дальнейших
вычислений, либо прямиком на монитор.
Пиксельные шейдеры
Пиксельные шейдеры - небольшие программы, очень похожие на вершинный
шейдеры за исключением того, что они предназначены для обработки пикселей,
а не вершин. Если в DirectX 8.0 применены пиксельные шейдеры версии
1.1, то в DirectX 8.1 будет использована версия 1.4. В 1.4 будет больше
инструкций для пиксельных шейдеров и появится возможность применять
огромное число комбинаций этих инструкций. Всего будет задействовано 22
инструкции по сравнению с 12 для версии 1.1. Это позволит создавать новые
потрясающие световые эффекты, о которых мы поговорим чуть позже. Другим
нововведением DirectX 8.1 станет улучшенный язык, на котором написаны
пиксельные шейдеры. Теперь для адресного шейдера (address shader),
предназначенного для математических операций и условий, и цветового
шейдера (colour shader), предназначенного для расчёта цвета, применяется
единый язык. В предыдущей версии для этих составных пиксельного шейдера
применялись два различных языка.
Примеры эффектов с использованием пиксельных шейдеров
Создание меча с использованием различным
материалов
Создание реалистичных объектов из стекла, металла,
камня
Эффект распространения солнечных лучей под водой
Эффект освещения предмета несколькими световыми
источниками разного цвета
Вершинные шейдеры
Вершинный шейдеры - небольшие программы, которые позволяют производить
вычисления с вершинами объектов трёхмерной сцены. Каждая вершина благодаря
технологии Shmartshader представлена как 16 ячеек с информацией. В
качестве информации могут выступать координаты вершин, значения
освещённости, либо что-либо другое на усмотрение разработчика. Вершинный
шейдер может иметь максимальную длину в 128 инструкций и использовать до
96 констант. Вершинные шейдеры, реализованные в новой технологии от
ATI, ничем не отличаются от тех, что используются в GeForce 3.
Примеры эффектов с использованием вершинных шейдеров
Эффект накрывания объекта тканью
Эффект создания тени от нескольких источников
света
пример использования вершинных шейдеров для создания
волн
мыльный пузырь
создание реалистичных теней с помощью вершинных
шейдеров
Теперь о поддержке современными видеокартами пиксельных шейдеров версии
1.4. Их точно будет поддерживать Radeon 2. Поддерживает ли их GeForce 3
-большой вопрос. Nvidia утверждает, что поддерживает. Сейчас можно с
уверенностью утверждать, что GeForce 3 поддерживает пиксельные шейдеры
версии 1,2 и 1.3, которые тоже появятся только с DirectX 8.1. Очень
интересен спор между двумя компаниями. Эффект true phong shading
выполняется картой на базе чипа GeForce 3 аппаратно. ATI утверждает, что у
чипа GeForce 3 неправильный алгоритм расчета true phong shading, а nVidia
утверждает, что единой формулы для расчёта нет.
Заключение
Помните ситуацию с T&L. Нам обещали и клялись, что уровень
детализации в играх существенно возрастёт, что скоро почти все игры будут
поддерживать T&L, что у видеокарт без T&L нет будущего. Интересно,
а почему nVidia так боится Kyro II? Ведь блока T&L на борту она не
несёт. И почему-то производительность у неё весьма приличная, для
большинства современных игр хватает. Вот уже год прошёл, а большая часть
игр так не поддерживает T&L. Да и те, что поддерживают, не могут
похвастаться особыми спецэффектами и высоким уровнем реалистичности
игрового мира, высокой детализацией. Возможно, когда-то в будущем и
появятся такие игры, которые будут полностью задействовать блок расчёта
треугольников и освещения, но сейчас их нет. Так что же после этого
следует ожидать от вершинных и пиксельных шейдеров? И когда появятся игры
с поддержкой DirectX 8.1? Вы пока и с поддержкой DirectX 8.0 не найдёте.
Так что же получается: покупать дорогую карточку, чтобы демки красивые
посмотреть? Да ещё похвастаться: вот у меня видеокарта пиксельные и
вершинные шейдеры поддерживает, зато я целый месяц ничего не ел и меня в
солнечную погоду насквозь просвечивает. Да, возможность создания эффектов
нового уровня есть. Но разработчики игр преследуют свои цели, и зачастую
разрабатывают свои собственные новые технологии. Тем более, что не у
каждого дома пылится GeForce 3.
|