Тестування продуктивності відеокарт серії 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 і з текстурами:

Ось її вид в режимах відображення 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 не вдалося через артефактів відображення в видових вікнах, що і пояснює відсутність відповідних результатів.

Протестувати RivaTNT в Direct3D не вдалося через артефактів відображення в видових вікнах, що і пояснює відсутність відповідних результатів

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

Riva TNTGeForce 2 GTSGeForce 3 Ti200GeForce 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.

Ігор Сивак, [email protected]

Що означають сім мільйонів трикутників в секунду проти заявлених для GeForce 4 ста мільйонів?