Измеряем FPS


Что это такое

В настоящее время самым популярным способом измерения производительности видеокарты является измерение FPS (Frames Per Second, число кадров в секунду) в существующих играх или в специально разработанных тестовых программах (бенчмарках). Впрочем, в бенчмарках чаще всего обращают внимание не на значение FPS, а на некоторый индекс производительности, в том время как в реальных играх измеряется именно среднее значение частоты кадров.

Зачем нужно уметь правильно измерить FPS? Во-первых, нужно уметь реально оценить производительность своей видеокарты, чтобы правильно спланировать направление модернизации - "узкое место" может быть и не в ней, а в другом компоненте, например, может не хватать памяти. Во-вторых, новые драйверы могут не лучшим образом подходить вашей видеокарте (особенно это касается видеокарт с "унифицированной архитектурой", когда один драйвер подходит целому семейству разных по возможностям видеочипов), и тогда есть смысл сравнить новый драйвер со старым.

Если вы думаете, что измерение FPS сводится к банальному вводу нескольких консольных команд, то можете эту статью и не читать. На самом деле нужно уметь не только правильно измерить, но и правильно интерпретировать полученные результаты. С помощью FPS можно измерить не только производительность 3D-ускорителя, но и процессора (точнее, подсистемы памяти и процессора). Можно также сравнить, насколько правильно настроена Windows и драйверы, сравнив полученные вами FPS с тестами на сайтах, посвященных обзорам по "железу".

Измерение FPS производится запуском определенной демо-игры, записанной специально для этой цели. Игры, по которым весь мир сравнивает FPS, имеют такие демо-игры в своем составе либо они доступны для скачивания в Internet. После прохождения демо (обычно в максимально быстром режиме) вы получаете среднее значение кадров, которое смогла сгенерировать ваша видеокарта за положенное время.

 

Конечно, для каждой игры или бенчмарка значения FPS будут совершенно разными. Кроме того, на FPS влияют определенные параметры (настройки) игры, такие как разрешение, глубина цвета, объем текстур и т.д. Каждый параметр оказывает определенное влияние на ход процесса построения изображения (рендеринга), поэтому нужно знать причину изменения FPS при манипуляции параметрами для правильной оценки быстродействия того или иного компонента вашей системы.


Движки

Обычно "трехмерным движком" называют ту подсистему игры или бенчмарка, которая отвечает за получение именно изображения. В бенчмарках, кроме трехмерного движка, ничего нет (может быть еще звуковой движок), а в играх есть искусственный интеллект (AI) соперников, звук, обработка клавиатуры и мыши и другие подсистемы. Так вот, в мире существует довольно много трехмерных движков, удачных и не очень, каждый из них базируется на определенном наборе команд для программирования работы 3D-ускорителя - 3D API. Основных API два - OpenGL и Direct3D, каждая видеокарта имеет в составе драйвер для взаимодействия с игрой по одному из этих интерфейсов. Есть еще два API - Glide (для чипов 3Dfx) и MeTaL (для чипов S3), в настоящее время они практически не используются и во внимание не принимаются.

Quake3. Компания id Software делает самые современные и прогрессивные движки, на которые равняется весь мир. Quake3 - игра, сделанная самой id Software на базе собственного движка (после лицензирования на этом движке выйдут и другие игры). Этот движок сделан очень хорошо, так как использует возможности всех подсистем (видео, процессора, памяти) на полную катушку. Для него характерна отличная масштабируемость, т.е. свойство роста FPS при наращивании мощи процессора или видеокарты. Quake3 использует OpenGL и является общепризнанным тестом производительности видеокарты с использованием этого API.

Unreal/Unreal Tournament. Эти две игры построены на движке производства компаний Epic и Digital Extremes. Он не считается удачным в плане масштабируемости, особенно Unreal Tournament. Движок поддерживает большое количество 3D API, лучше всего смотрится на Glide и Direct3D, поэтому иногда используется как эталон Direct3D-игры.

Incoming, Expendable. Эти две игры созданы компанией Rage. Самый красивый и эффектный движок, и игры созданы исключительно для его демонстрации. Работает через Direct3D и является эталоном для этого API.

Quake2. Предыдущий движок от id Software по-прежнему актуален. Современную видеокарту нагружает не особо, зато можно оценить быстродействие остальных компонентов. Используется OpenGL.

Half-Life. Основан на движке Quake2, плюс есть возможность использовать Direct3D (в этом случае производительность будет хуже).

Max Payne. Движок используется как в устаревшем и малоэффективном бенчмарке Final Reality, так и в современном 3DMark2000. Фактически это эталон для синтетического приближенного к реальным игровым условиям бенчмарка. Работает через Direct3D.


Как использовать опции

Каждая игра или бенчмарк имеет опции. Я имею в виду опции 3D-движка. Манипулируя ими, можно найти "узкое место" в системе, то есть тот компонент, который работает с полной нагрузкой и не позволяет выводить на экран большее число кадров в секунду.

Разрешение. Чем выше разрешение, тем больше нагрузка на конвейер рендеринга видеочипа, так как число пикселов, требующих обработки (наложения текстур, расчета освещения и прозрачности и т.д.), возрастает. В низких разрешениях сдерживающий фактор - процессор и подсистема памяти, в высоких - конвейер рендеринга (характеризуется показателем fillrate - скоростью заполнения пикселами или текстурами). Чем раньше (с ростом разрешения) начинается падение производительности (число FPS), тем больше у вас дисбаланс между хорошим процессором и слабой видеокартой. И наоборот.

Глубина цвета. Принимает значение 16bit и 32bit. Относится не только к изображению на экране, но и к текстурам. При переходе с 16 на 32 бита улучшается качество, но падает производительность. В первую очередь увеличивается нагрузка на шину данных локальной видеопамяти, сказывается также оптимизация конкретного чипа и драйверов.

Вертикальная синхронизация, V-sync. Если эту опцию не отключить, видеочип будет ожидать сигнала синхронизации кадра, выдаваемого на экран, чтобы вывести сгенерированную картинку в экранный буфер. Из-за этого возникают дополнительные задержки. Отключать V-sync нужно в опциях драйверов, так как не во всех играх есть такая возможность.

Уровень детализации. Другими словами, сложность трехмерной сцены, выражающаяся в количестве треугольников, на которые разбиваются объекты, и в качестве, а значит, и в размере текстур. Изменяется нагрузка на процессор (и блок T&L, если он есть) и на шину локальной памяти.


Методика и команды

Для проведения измерений FPS нужно запастись нужной игрой и демо-файлом. Перед запуском игры/бенчмарка нужно перезагрузиться, после чего снять все задачи (CTRL+ALT+DEL, "Завершить задачу"...). Запуск демо - через консольные команды (обычно нужно нажать "~"). Первый прогон демо даст, скорее всего, заниженный результат, так как во время работы графического движка будет происходить обращение к жесткому диску. При достаточном количестве памяти второй-третий прогон будет уже без обращений, и результат станет постоянным.

Quake2. Встроенные demo1 и demo2 практически не используются, так как эти демки слишком простые и не загружают современную видеокарту. Чаще всего берут massive1 или crusher. Демо-файлы - в каталоге baseq2/demos/. Консольные команды:

  • timedemo 1
  • map имя_файла.dm2

Расширение файла указывать обязательно.

Quake3. Встроенное demo001 достаточно "навороченное", можно также использовать q3d или quaver. Для проверки эффективности компрессии текстур есть специальные уровни (разработаны фирмой S3) и демки к ним. Демо-файлы помещаются в каталог baseq3/demos/.Консольные команды:

  • timedemo 1
  • demo имя_файла

Unreal Tournament. Чаще всего используются демки utbench или wicked400. Есть и дополнительные уровни (на втором CD) с использованием сжатия текстур, доступные, правда, только владельцам карт на чипах S3. Демо-файлы - в каталоге system. Консольные команды:

  • timedemo 1
  • demomap имя_файла
  • Два раза нажать ESC, иначе на экране ничего не будет.

Half-Life. Демо нужно записать самостоятельно, общепринятых (по моим сведениям) нет. Демо-файлы - в каталоге valve. Консольные команды (нужно запустить "hl.exe -console"):

Для записи:

  • record имя_файла
  • stop

Для воспроизведения и замеров FPS:

  • timedemo имя_файла

Напомню, что достаточным для игры значением FPS является 30, оптимальным - 40 и больше. При этом мгновенное, а не среднее значение, не опускается до заметного глазу 24 fps, когда наблюдается "притормаживание".

За необходимыми файлами рекомендую обращаться на "Reactor Critical" (www.reactor.ru/download.shtml)

Макс КУРМАЗ,
max_kurmaz@mail.ru

Версия для печатиВерсия для печати

Номер: 

28 за 2000 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!