ATI vs nVidia
test_lab (test_lab@gameland.ru)
Xakep, номер #061, стр. 061-016-5
Увы, как обычно, за все приходится платить - избавляясь от дефектов визуализации, мы расплачиваемся производительностью. И чем совершенней метод, тем больше он требует возможностей железа. Таким образом, можно расположить методы фильтрации текстур и их различные комбинации в соответствии с проявляемыми аппетитами в отношении ресурсов: билинейная, билинейная с мипмеппингом, трилинейная, анизотропная, анизотропная с мипмеппингом, анизотропная с трилинейной.
Шейдеры
Говоря о современных технологиях в области трехмерной графики, невозможно обойти стороной шейдеры. Что же такое шейдер? Необходимо иметь некоторое представление о трехмерном графическом конвейере (3D pipeline), чтобы понять это. Конвейер в данном случае - это определенный набор этапов, на которых последовательно обрабатываются исходные данные для получения изображения трехмерной сцены на экране. Основными этапами конвейера являются: трансформация, обработка вершин, обработка пикселей.
Трансформация необходима постольку, поскольку, кроме видимых объектов, заданных в системе координат, существует такой "виртуальный" объект, как видимый объем - некая область в форме параллелепипеда, заданная в тех же координатах, что и все остальное в сцене. Все выходящее за пределы видимого объема отсекается. Кроме того, есть еще и порт просмотра (viewport) - окно (оно может занимать и весь экран), в котором все, в конце концов, отобразится. Таким образом, исходная сцена сначала проходит ряд преобразований (трансформаций).
Затем, как уже упоминалось, на основе имеющихся атрибутов вершин происходит затенение полигонов, то есть расчет освещенности. Если бы этого не происходило, то каждый треугольник имел бы строго определенный цвет, и трехмерная модель получалась как бы граненой. Естественно, для придания ей более совершенного вида пришлось бы наращивать количество полигонов, уменьшая их размер, что привело бы к неоправданно высокой сложности модели с точки зрения геометрии. Потому полигон получает неравномерную закраску, определяемую по некоторому алгоритму, исходя из атрибутов его вершин, и модель выглядит более гладкой.
До появления аппаратной поддержки вершинных шейдеров разработчик, использующий конкретный интерфейс программирования приложения (API - Application Programming Interface), например Direct3D или OpenGL, не имел возможности контролировать, изменять или выбирать алгоритм затенения, применяемый в API. Вершинный шейдер - это программа, преобразующая атрибуты вершин, код которой исполняется графическим процессором. С ее помощью может быть рассчитано затенение полигона не по фиксированному алгоритму, а по написанному разработчиком.