Повелители FPS 27.05.2003 Марат Зиннатов
Текстура — изображение, которое накладывается («приклеивается») на предметы трехмерной сцены. Это позволяет во многих случаях как упростить обработку сцены, так и повысить ее реалистичность. Простейший пример: зачем вырисовывать каждый кирпичик в стене, если можно создать сразу большую голую стену и «натянуть» на нее изображение кирпичной кладки. Поколение видеокарты определяется по тому, какую версию API DirectX (Application Program Interface — программный интерфейс приложения — условно говоря, язык программирования) аппаратно поддерживает GPU. Ныне на рынке представлены DX7-, DX8- и DX9-чипы. Но один из крупнейших производителей чипов предпочитает относить свою продукцию к поколению DX9+ из-за превышения ею базовых спецификаций Microsoft. Наиболее интересными технологиями в двух последних версиях стали вершинные и пиксельные шейдеры. Если в игре используется функция из набора DX9, а ваша видеокарта принадлежит к поколению DX7, то эффект либо будет создаваться с помощью выполнения нескольких старых функций (что, как правило, значительно медленнее), либо (что более вероятно) будет отключен. Простые и понятные рекомендации по выбору дать пока невозможно. Читайте дальше, и вы сами сможете определить, что лучше отвечает вашим потребностям. Полноэкранное сглаживание (антиалиасинг). Возьмите матрицу, например 5х3 клеток. Попробуйте нарисовать в ней диагональ, закрашивая только ячейки целиком. Уверен, у вас получилась ломаная линия, лишь пародирующая прямую. Экран монитора тоже состоит из отдельных «клеток» — пикселов. Конечно, их значительно больше. Как правило, используются разрешения от 800х600 до 1600х1200. Но даже такого количества зачастую не хватает для построения идеальной линии, если она не строго вертикальна или горизонтальна (то есть не совпадает со столбцом или строкой пикселов). Чтобы избавиться от эффекта лестницы, применяются алгоритмы сглаживания. Они позволяют заметно улучшить качество картинки, но требуют от карты внушительной производительности. Чаще всего используется так называемое четырехкратное полноэкранное сглаживание. Суперсэмплинг (SSAA), мультисэмплинг (MSAA) и Quincunx — наиболее распространенные методы полноэкранного сглаживания. Самым требовательным к производительности, но и самым качественным является суперсэмплинг. При его применении происходит рендеринг кадра в более высоком разрешении (зависит от режима; например, при разрешении 800х600 и четырехкратном SSAA разрешение промежуточной картинки составит 1600х1200). При окончательном формировании цвета сглаженного пиксела учитываются цвета соседних пикселов, принадлежащих большому изображению. Мультисэмплинг для определения цвета сглаженного пиксела использует не один увеличенный кадр, а несколько идентичных, но как бы «сдвинутых» друг относительно друга, что позволяет оптимизировать расчеты. К сожалению, этот алгоритм не умеет обрабатывать полупрозрачные текстуры. Quincunx — дальнейшее развитие метода. Сэмплы (рендерится всего два одинаковых изображения) сдвигаются так, что пикселы выстраиваются в шахматном порядке. В результате для определения цвета итогового изображения используются значения самого пиксела и четырех «сдвинутых» соседей. Это дает возможность получить качество, приближенное к четырехкратному антиалиасингу, при потерях производительности, примерно соответствующих двукратному MSAA. Анизотропная фильтрация. Действие этого алгоритма трудно объяснить «на пальцах». Необходимость в нем возникает из-за простого, в сущности, геометрического процесса: при изменении угла наклона поверхности к «видимой плоскости» (формируемой матрице кадра) площадь проекции уменьшается. Соответственно, отображаются не все исходные пикселы, что приводит к ухудшению качества картинки. Анизотропная фильтрация призвана вернуть (и возвращает) изображению четкость. Эта функция тоже весьма прожорлива, и результаты, показанные видеокартой в режиме анизотропной фильтрации, являются одним из важных показателей производительности mainstream- и high-end-моделей. Экранное разрешение — количество пикселов по горизонтали и вертикали, отображаемое на экране. Разрешение можно менять программно. Поскольку его физический размер фиксирован, то увеличение числа отображаемых пикселов приводит к уменьшению видимого размера деталей изображения. Таким образом, чем меньше диагональ монитора, тем меньшее разрешение рекомендуется использовать. В свою очередь, чем больше пикселов, тем большие усилия необходимо приложить чипу, чтобы сформировать картинку. Поэтому для определения класса видеокарт используются максимальные разрешения. Вершинные шейдеры (vertex shaders, VS) — специальные программы, с помощью которых быстро и эффективно можно манипулировать геометрией трехмерной сцены (относительно неплохо эмулируются центральным процессором). Очень перспективная функция, к сожалению, пока редко используемая в играх. DX8-поколение видеокарт поддерживает вершинные шейдеры версии 1.1, DX9 — 2.0 и 2.0+. Основные отличия версий отражены в табл. 1. Как видите, в каждой следующей версии программистам предоставляется все больше свободы при работе с вершинными шейдерами. Здесь надо особо отметить появление во второй версии возможности управления потоком команд, а в ее улучшенном варианте — динамическое управление. Благодаря этому можно сказать, что блок обработки шейдеров, поддерживающих VS 2+, достоин называться процессором. Чем динамический переход отличается от заранее прописанного статического? Тем, что переход можно осуществить, исходя из неких данных, полученных в этом же шейдере ранее. Для реализации тех же действий в R300 придется разбить один большой шейдер как минимум на два и передавать данные из первого во второй. Это довольно неудобно для разработчиков программных продуктов. Причем можно представить ситуацию, когда сложность разбиения заставит отказаться от применения некоего эффекта. А это уже неприятно для нас, пользователей. Хотя возможности VS 2+, очевидно, шире, чем у VS 2, не стоит забывать, что они поддерживаются лишь одним производителем. Создавая софт, разработчики должны побеспокоиться о его совместимости с максимальным числом аппаратных средств, дабы охватить как можно больший круг пользователей. А поскольку код, использующий по максимуму способности VS 2+, не совместим с VS 2, то и вероятность появления заметного количества программ, заточенных под них, невелика. К тому же обратная ситуация вполне допустима — код VS 2 будет корректно обработан чипом, поддерживающим VS 2+. Пиксельные шейдеры (pixel shaders, PS) на первый взгляд очень похожи на вершинные. Тем не менее эти программы создают эффекты, обрабатывая не геометрию, а изображение. Различия в спецификациях пиксельных шейдеров приведены в табл. 2. Собственно говоря, здесь ситуация та же, что и с вершинными шейдерами. Таким же будет и вывод о практической ценности этих усовершенствований.
|