Повелители FPS
АрхивЭлектронные развлечения в последние годы стали сильнейшим стимулом развития видеочипов. Иллюстрацией тому служит опережение функциональных возможностей лучших ускорителей над запросами игрового софта.
Общеизвестный факт: львиную долю информации человек получает с помощью зрения. Неудивительно, что компьютерная индустрия, выйдя в массы, стала интенсивно развиваться в сторону эффективной, а затем и эффектной визуализации процессов. Графике в современном домашнем компьютере уделяется самое пристальное внимание — от разработки красивых и ресурсоемких оболочек операционных систем до потрясающих воображение эффектов в новейших компьютерных играх.
Электронные развлечения в последние годы стали сильнейшим стимулом развития видеочипов. Хотя все не столь однозначно. Иллюстрацией тому служит опережение функциональных возможностей лучших ускорителей над запросами игрового софта. Не следует, однако, думать, что главная задача современной видеокарты — обеспечить приемлемое количество кадров в секунду в очередном блокбастере. Помимо вычислительной мощи GPU (Graphic Processing Unit — блок обработки графики), являющегося сердцем платы, важными критериями при выборе покупки становятся возможности видеозахвата, а также вывода изображения на экран телевизора.
Вам уже что-то непонятно? Не расстраивайтесь, вы в этом не одиноки. Небольшой опрос знакомых, общение с посетителями на недавнем «Комтеке» (продвинутые участники наших семинаров не в счет) и приходящие на мой адрес письма показали, что зачастую владельцы компьютеров плохо знакомы с основами устройства видеокарт. А посему мы решили, что в первой части выпуска не лишним будет провести небольшую разъяснительную работу на самые актуальные для нынешних видеоускорителей темы. Мы не будем копать глубоко и описывать этапы рендеринга, тонкости алгоритмов создания теней или разницу в реализации пиксельных шейдеров версий 1.1, 1.4 и 2.0. Разговор пойдет достаточно простым языком об основополагающих вещах, без знания которых многое в обзоре останется за пределами вашего понимания.
Итак, начнем с уже известного вам GPU (или как его предпочитает называть одна из лидирующих компаний-производителей — VPU — Video Processing Unit). За этой аббревиатурой скрывается специализированный чип — основа (или ядро) современной видеокарты. Его возможности определяют, к какому поколению будет отнесена плата.
Главная задача GPU — выполнение инструкций, формирующих изображение. Это может быть как простейшая команда — например, «нарисовать точку в заданных координатах», так и сложные геометрические преобразования какого-либо объекта текущей сцены. Хотя некоторые из функций может брать на себя центральный процессор компьютера (что ему и приходится делать, если видеокарта слабенькая), справляться с этим ему очень тяжело. Сила видеочипа — в его специализированности.
Видеопамять — в том или ином объеме имеется на всех нынешних видеокартах (оптимальный объем на сегодняшний день — 128 Мбайт). Она эксклюзивно используется GPU для хранения как можно большего числа данных, необходимых ему для обработки сцены. Если ее не хватает, используется системная память, но это заметно тормозит работу компьютера.
Сейчас на рынке безоговорочно доминирует DDR SDRAM. Варианты на более прогрессивной, но и гораздо более дорогой DDR II еще редки, а платы с установленной морально устаревшей SDR уже редки. Об экзотических типах и говорить нечего. Таким образом, стоит обращать внимание только на рабочую частоту памяти. Оптимум, впрочем, нужно искать в связке GPU+память — в каждом конкретном случае он разный.
Интерфейс (шина, протокол). Этот параметр определяет (только в данном случае, так как термины используются очень широко), каким способом видеокарта общается с остальной системой. Два основных варианта — AGP 4x или AGP 8x (современные карты на шине PCI — большая редкость). Цифры означают коэффициент, на который нужно умножить пропускную способность первого варианта шины AGP. Соответственно, можете сделать вывод о том, что быстрее.
Пиковая пропускная способность нового интерфейса 8х, равная 2,1 Гбайт/с, более соответствует пропускным способностям между другими узлами системы. Но сбалансированность подразумевает не количественную гармонию, а качественную. То есть ни один элемент не должен резко снижать общей производительности. А на данный момент режим 4х еще не стал узким местом. Даже переход в 2х почти не сказывается на результатах.
Объясняется все достаточно просто. Наиболее требовательны к скорости элементами трафика между видеокартой и остальной системой текстуры. Однако локальной памяти на борту современного ускорителя с лихвой хватает на размещение не только текстур, но и кадровых, Z- и stencil-буферов. А потому, предварительно загрузив все необходимое себе «под бочок», видеокарта редко испытывает потребность в дозагрузке чего-нибудь очень уж объемного.
Новые рубежи производительности откроются лишь при возникновении необходимости часто обращаться к системной памяти. Отсюда следует вывод, что выиграют от перехода к 8х по большей части интегрированные графические решения, делящие память с остальными узлами. Да и в этом случае неэффективность механизма SMA (share memory architecture — архитектура совместного использования памяти) не позволит полностью загрузить шину с новым протоколом.
Отдельный вопрос — совместимость разных версий шины видеокарты и материнской платы. Если рассматривать пару AGP 4x/AGP 8x, то проблем теоретически возникать не должно, независимо от того, какое из устройств какую версию поддерживает (разумеется, пара будет работать в режиме 4х). Но, например, Radeon 9700 Pro не дружит с ранними наборами системной логики (когда новая шина еще была в диковинку и делались лишь первые попытки ее воплощения в кремнии) от VIA и SiS — при активации режима AGP 8х на видеокарте и материнской плате периодически возникают сбои. В принципе, в большинстве подобных случаев проблема решается обновлением драйверов или перепрошивкой BIOS. В крайнем случае, можно принудительно выставить режим AGP 4x.
А вот владельцам древних материнских плат, поддерживающих только AGP 1х или AGP 2х, чтобы установить современную видеокарту с протоколом 4x или 8x, придется подумать о замене устаревшего оборудования. Впрочем, такая системная плата вряд ли поддерживает достаточно производительный процессор, чтобы стала заметна выгода от более мощного ускорителя. Похожая ситуация — при попытке установить старую видеокарту в современные материнские платы: многие из них поддерживают режим AGP 1х, но не работают с устаревшими трехвольтными картами.
FPS (Frames Per Second). Одно из основных понятий при тестировании. Означает всего лишь число кадров, выводимых видеокартой в секунду.
Z-буфер. Поскольку Z в системе координат обозначает глубину, то его также называют буфером глубины. Служит для определения объектов сцены (или их частей), которые будут отображены в текущем кадре (или не будут, если заслоняются некоей поверхностью).
Fillrate (скорость заполнения) — показывает, с какой скоростью чип может нарисовать картинку. В наших тестах скорость измеряется в текселах (пикселах, на которые наложена текстура) в секунду.
Текстура — изображение, которое накладывается («приклеивается») на предметы трехмерной сцены. Это позволяет во многих случаях как упростить обработку сцены, так и повысить ее реалистичность. Простейший пример: зачем вырисовывать каждый кирпичик в стене, если можно создать сразу большую голую стену и «натянуть» на нее изображение кирпичной кладки.
Поколение видеокарты определяется по тому, какую версию 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. Собственно говоря, здесь ситуация та же, что и с вершинными шейдерами. Таким же будет и вывод о практической ценности этих усовершенствований.