Тестирование производительности видеокарт серии GeForce в 3d studio max


Введение

Рассмотрев технологические особенности видеокарт GeForce 2 - GeForce 3 - GeForce 4 от nVIDIA (см. "КВ" №№39, 41, 49'2002) и имея в виду те преимущества, которые заложены в их архитектуре для аппаратного ускорения отображения трехмерной геометрии, естественно исследовать их практическую производительность на примере конкретных приложений и задач. Тестированию такой производительности и посвящена данная статья.

Для тестирования был выбран 3d studio max 5.0, как один из наиболее распространенных пакетов трехмерного моделирования.


Методика тестирования

Общая идея методики тестирования вытекает из наиболее типичных задач, которые возлагаются на видеокарту - в видовых окнах трехмерных объектов разрабатываемой сцены. Эта общая задача может быть разбита на три более частных - ускорение отображения в режиме "каркас" (wireframe), интенсивно используемом на этапе разработки модели; в режиме тонированной освещенной поверхности со сглаживанием (smooth&highlite), полезной при постановке света, "шлифовке" взаимодействия трехмерной поверхности с освещением и редактировании текстурных координат; и в режиме отображения с текстурами, часто используемом при разработке сцены на финальных стадиях и при анимации. Что касается аппаратуры, то в режиме отображения "каркас" нагружается блок аппаратных трансформаций без освещения, в режиме тонированной сглаженной поверхности - блок трансформаций и освещения и блок растеризации видеокарты, в режиме отображения с текстурами дополнительно задействуется блок текстурирования (весь графический конвейер видеокарты). Наиболее типичные операции, используемые при редактировании в видовом окне, аппаратное ускорение отображения которых может быть возложено на видеокарту - это операции трансформаций, т. е. вращения, трансляции и масштабирования в видовом окне (соответствующие операции в max - rotate, pan и zoom). Данная методика, и в этом ее оригинальность, предполагает, прежде всего, количественную оценку производительности, а не только качественную. Для этой цели была написана скрипт-программа, имитирующая трансформации в перспективном видовом окне и измеряющая время выполнения одной такой трансформации, количество обрабатываемых треугольников в секунду и FPS - количество кадров (или что то же самое - количество трансформаций) в секунду. Для нас наиболее важным параметром является количество обрабатываемых треугольников в секунду, поскольку он непосредственно показывает, насколько сложную модель можно обрабатывать в программе, и поскольку его можно сравнить с заявленной разработчиками производительностью видеокарты.

В случае 3d studio max ключевая последовательность скриптовых команд выглядит следующим образом:

  • time1= timeStamp() // время начала трансформации;
  • preRotateZ matrix2 10 // вычисляем матрицу трансформации (в данном случае поворота по оси Z на 10 градусов, для масштабирования - preScale matrix, для трансляции - preTranslate matrix) системы координат видового окна;
  • viewport.setTM (matrix2) // применяем матрицу вращения к системе координат видового окна;
  • forceCompleteRedraw // принудительно перерисовываем видовое окно;
  • time2= timeStamp() // время окончания трансформации;
  • time = time2 - tim21 // время выполнения трансформации.

Следует оговориться, что в max операции трансформаций в видовом окне не анимируются, и, более того, для них во встроенном скриптовом языке нет соответствующих команд. Поэтому приведенная на врезке последовательность команд именно имитирует то, что происходит при интерактивном манипулировании видовым окном с помощью инструментов pan, zoom и rotate. Однако, на мой взгляд, измеренная таким образом производительность работы хорошо согласуется с интуитивным ощущением производительности при использовании вышеупомянутых инструментов.

Скриптовый сценарий выполняет в цикле вращения (до 40 вращений), масштабирования (с увеличением и уменьшением) и трансляции (до 40 трансляций в разных направлениях, в том числе и за пределы видового окна) и измеряет время каждой операции. В качестве трехмерного объекта в сцене с одним источником света типа omni использовалась mesh-модель танка средней сложности из свободно распространяемой в Сети библиотеки EsponaModel. Вот ее вид в режимах отображения wireframe, smooth&highlite и с текстурами:

Количественные данные: треугольников - 334291, вершин - 180345, текстурных карт - 4, одна из которых многосоставная (еще 6 текстурных карт). Тестирование в max проводилось для случая одного видового окна, развернутого на весь экран, разрешение экрана - 1152х864 85 Гц.

Тестовый компьютер - система на базе Intel Pentium-IV с тактовой частотой 2,1 МГц, 512 Мб ОЗУ типа PC2100, операционная система - Windows 2000 SP3, DirectX 8.1. Тестировались видеокарты на базе RivaTNT 32 Мб, GeForce 2 Pro 64 Мб DDR, GeForce 3 Ti200 54 Мб DDR, GeForce 4 Ti4600 128 Мб DDR. Пользуясь случаем, хочу выразить сердечную благодарность компании SV-Trading и лично Ольхову Александру Евгеньевичу за предоставленные для тестирования видеокарты.

Включение RivaTNT в ряд тестируемых видеокарт обусловлено желанием сравнить производительность двух качественно разных классов видеокарт - с аппаратным T&L (все GeForce) и без него (RivaTNT).

В качестве драйверов видеокарт во всех случаях использовался Detonator версии 40.72. Все настройки, доступные из операционной системы - по умолчанию, кроме отключения вертикальной синхронизации. В 3d studio max для API OpenGL обязательно включалась опция Implementation-Specific Settings>Use Wareframe Faces (Custom Driver Extension), в API Direct3D - Geometry>Use Triangle Strips>For Wireframe Objects. Обе опции существенно ускоряют отображение в видовых окнах.


Тесты

Прежде всего, для сравнения была измерена производительность в режиме Software, т.е. без аппаратного ускорения (пункты 1, 2 и 3 на общей диаграмме).

Максимальная производительность в данном случае составила около 1,8 миллиона треугольников в секунду в режиме отображения "каркас". В режиме тонированной поверхности производительность упала более чем вдвое и составила около 800 тысяч полигонов в секунду, а в режиме отображения с текстурами - 600 тысяч треугольников, т.е. втрое меньше. Software-производительность измерялась со всеми четырьмя видеокартами и, за небольшими колебаниями, оставалась постоянной.

На следующих диаграммах (пункты 2, 3 и 4) представлена производительность тестируемых видеокарт в OpenGL в трех режимах (сравните ее с производительностью в Software). При анализе этих результатов следует иметь в виду, что трансформации в Software рассчитываются только процессором, а в OpenGL - только GPU. В тестах в режиме Software процессор обсчитывал только трансформации, в реальных же задачах на процессор будут возложены десятки других задач, так что Software-производительность в реальных задачах всегда будет существенно ниже, по сравнению с рассчитанной в тестах. Рекорд производительности принадлежит GeForce 4 и составляет 2,1 миллиона треугольников в секунду. Так что сами по себе результаты впечатляющие - GPU GeForce 4 по производительности "делает" процессор во всех режимах и все GPU (даже сравнительно "древний" GF2, RivaTNT не в счет) считают быстрее процессора в режимах, требующих расчета освещения и текстурирования.

Теперь посмотрим, как выполняются те же операции в Direct3D (пункты 5, 6 и 7). И этот результат несколько неожиданный. Из него следует, что производительность видеокарт с использованием API Direct3D гораздо выше, чем при использовании OpenGL и в максимальном случае составляет 6,7 миллионов треугольников в секунду (рекордсмен вновь GF 4). Впрочем, возможно, это обусловлено выбором для тестирования игровых видеокарт, а для профессиональных видеокарт результаты могут быть иными. Протестировать RivaTNT в Direct3D не удалось из-за артефактов отображения в видовых окнах, что и объясняет отсутствие соответствующих результатов.

И, наконец, хочу привести сводную таблицу результатов тестирования всех видеокарт во всех режимах:

  Riva TNT GeForce 2 GTS GeForce 3 Ti200 GeForce Ti4600
Software Wareframe 1759430 1759430 1759430 1759430
OpenGL Wareframe 835728 1238110 1193900 2089320
Software Smooth&Highlite 795931 795931 795931 795931
OpenGL Smooth&Highlite 654190 1152730 1114300 1152730
Software With Texture 596948 596948 596948 596948
OpenGL With Texture 595884 857156 835728 835728
Software Wareframe 1759430 1759430 1759430 1759430
Direct3D Wareframe 0 3039010 5571520 6685820
Software Smooth&Highlite 795931 795931 795931 795931
Direct3D Smooth&Highlite 0 1759430 2571470 3342910
Software With Texture 596948 596948 596948 596948
Direct3D With Texture 0 1671460 2571470 2785760


Основные выводы

  1. Все видеокарты серии GeForce не уступают по производительности центральному процессору в задачах отображения трехмерной графики, особенно в случае использования API Direct3D. Замечателен результат GeForce 4 - производительность этой видеокарты во всех случаях выше, чем у предшественников, что в сочетании с падением цен на эти видеокарты делает их весьма разумным выбором для покупки. Несмотря на это, следует заметить, что измеренная практическая производительность видеокарт разительно отличается от заявленной nVidia теоретической производительности. Что значат семь миллионов треугольников в секунду против заявленных для GeForce 4 ста миллионов?
  2. Отчетливо видно, что, по крайней мере, для игровых видеокарт OpenGL является "гадким утенком" на фоне производительности Direct3D. По-видимому, тесная дружба nVidia и Microsoft дает свои плоды.
  3. По всем признакам эволюция развития технологий отображения направилась в сторону использования вершинных и пиксельных шейдеров. Доказательством тому служат встраивание возможностей для интерактивного отображения в видовых окнах аппаратных шейдеров как для 3d studio max, так и для Softimage и для Maya.

Игорь СИВАКОВ,
Igsiv@mail.ru

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

Номер: 

01 за 2003 год

Рубрика: 

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