|
|
Материал опубликован - 05/11/2001 Совсем недавно появилась новая версия DirectX, уже восьмая по счёту. Самым главным нововведением явились вершинные и пиксельные шейдеры. Шейдер - программа на специальном коде, которая выполняется аппаратно на любом DirectX 8 совместимом ускорителе. Не для кого уже не секрет, что на очереди DirectX 8.1. И главным отличием новой версии от восьмой станет улучшенная поддержка того, что мы называем вершинными и пиксельными шейдерами. Технология SMARTSHADER представляет собой улучшенные пиксельные и вершинные шейдеры. Вот и всё. Вся шумиха опять из-за шейдеров. Немного из теории Как известно, языки прикладного программирования (OpenGL, Direct3D…) состоят
из набора определённых функций. Вызывая функцию и прописывая ряд параметров,
разработчики указывают, в какой последовательности и каким образом прорисовывать
тот или оной объект, как на него влияют источники цвета, как от него отражается
свет и т.д. Графический процессор как раз и создан для ускорения выполнения
этих инструкций, благодаря чему удаётся разгрузить центральный процессор. Разработка
новых инструкций не прекращалась не на минуту, поэтому всё время выходят новые
ускорители, которые аппаратно поддерживают все те нововведения и наработки,
которые были добавлены в языки прикладного программирования за определённый
период времени. Действительно, пока разработчики выпустят приложение, использующее новые алгоритмы для улучшения качества и скорости обработки трёхмерной сцены, пройдёт несколько лет. А вот что происходит при использовании шейдеров: Шейдеры действительно могут позволить сократить время разработки игр и приложений. Ведь шейдер - программа, написанная на специальном языке. А раз так, то разработчик может ввести поддержку каких-либо новых эффектов в приложение, просто написав программу. Отпадает необходимость ждать железо с поддержкой этих технологий и новых версий API. Кроме того, если видеокарта не поддерживает, скажем, наложение текстур по методу EMBB, то при использовании шейдеров можно ввести как поддержку EMBB, так и других технологий. Правда, от таких эмуляций будет происходить потеря производительности. Но зато можно расширить возможности некоторых технологий и улучшить их качество, ввести некоторые дополнительные эффекты. Изменения на стадии 3D-конвейера Процесс расчёта трёхмерного изображения объекта (точнее, его двухмерное проекции) называется 3D-конвейером, поскольку он выполняется в несколько следующих друг за другом этапов. Причём нет жёсткой последовательности и содержания этапов 3D-конвейера. Однако рассмотрим наиболее частый пример: Как известно, вначале формируется так называемая каркасная модель трёхмерного
объекта, затем происходит тесселяция - разбитие поверхности полученного объекта
на элементарные плоские элементы. На этом этапе модель представляет собой совокупность
трёхмерных координат всех вершин (vertex) элементарных треугольников, записанных
в определённом порядке. Далее работу на себя берёт блок T&L если он есть
или центральный процессор если такой блок на видеокарте отсутствует. На этапе
Transformation моделируется движение объекта, его перемещение и т.д. На этой
стадии и происходит первое изменение: кроме блока T&L для моделирования
движения объекта используются вершинные шейдеры, каждый из которых позволяет
осуществлять контроль над перемещением отдельной выбранной вершины или группы
вершин объекта. Далее следуют операции по отбрасыванию задних граней, производится
сортировка вершин и т.п.Расчёт изменения координат объекта с течение времени
завершён. Далее происходит вычисление цвета пикселя - тоже довольно трудоёмкий
процесс, для ускорения которого существует блок T&L. Всё это происходит
благодаря различным типам фильтрации текстур, расчёта освещения, прозрачности
и полупрозрачности. Однако с таким же успехом всё это может происходить благодаря
пиксельным шейдерам, которые предоставляют гораздо больше возможностей и как
следствие этого трёхмерная сцена становится более красочной и реалистичной. Пиксельные шейдеры Пиксельные шейдеры - небольшие программы, очень похожие на вершинный шейдеры
за исключением того, что они предназначены для обработки пикселей, а не вершин.
Примеры эффектов с использованием пиксельных шейдеров
Вершинные шейдеры Вершинный шейдеры - небольшие программы, которые позволяют производить вычисления
с вершинами объектов трёхмерной сцены. Каждая вершина благодаря технологии Shmartshader
представлена как 16 ячеек с информацией. В качестве информации могут выступать
координаты вершин, значения освещённости, либо что-либо другое на усмотрение
разработчика. Вершинный шейдер может иметь максимальную длину в 128 инструкций
и использовать до 96 констант. Примеры эффектов с использованием вершинных шейдеров
Теперь о поддержке современными видеокартами пиксельных шейдеров версии 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. Автор: Alex В обзоре использованы материалы сайта компании ATI. SavageHQ |
Статьи |
Новости |
Файлы |
Словарь |
Форум |
Производители |
Товары и цены |
Каталог ссылок |
Доска объявлений |