В этой статье будет протестирована производительность 3D (будет использоваться бенчмарк "Unigine Heaven 2.0") под различными ОС и различными API. Думаю, мне удастся развенчать мифы некоторых пользователей Windows относительно убогости 3D графики в Linux, а также мифы некоторых владельцев Nvidia относительно убогости карт от ATI, и, в частности, "кривых проприетарных драйверов под Linux". Что еще пообещаю в статье, так это включение поддержки тесселяции в Linux. Насколько картинка с тесселяцией отличается от картинки без оной - увидите ниже.
Операционные системы, которые будут протестированы: Ubuntu 10.04 x86_64, Archlinux x86_64, Windows XP x86.
Тестовая конфигурация несколько скромная:
- Процессор: AMD Athlon 7750 Dual-Core Processor 3100MHz.
Оперативная память: 2Gb DDR-II 1066MHz.
Видеоплата: ATI Radeon HD 4770 512Mb.
Проприетарные драйвера от ATI - версия 10.4, как уверяет Catalyst Control Center - версия OpenGL - 3.2.9756. DirectX версии 9.
Не будет протестирована, к сожалению, работа в DirectX10, и DirectX11.
Начинаем.
Используемые настройки:
- Mode: 1440x900 2xAA fullscreen
Shaders: high
Textures: high
Filter: trilinear
Anisotropy: 4x
Ambient Occlusion: enabled
Refraction: disabled
Volumetric: enabled
Replication: disabled
Tessellation: disabled
API: OpenGL
ОС: Windows XP.
Первой в действии посмотрим Windows XP.
- FPS: 26.7
Scores: 674
Min FPS: 10.7
Max FPS: 43.8
Детали системы:
- Binary: Windows 32bit Visual C++ 1500 Release Mar 7 2010
Operating system: Windows XP (build 2600, Service Pack 3) 32bit
CPU model: AMD Athlon(tm) 7750 Dual-Core Processor
CPU flags: 3108MHz MMX+ 3DNow!+ SSE SSE2 SSE3 SSE4A HTT
GPU model: ATI Radeon HD 4770 6.14.10.7070 512Mb
Насколько красива графика можно судить по скриншотам:
![Изображение](https://img.sysadmins.ws/upload_image/thumb/dac4bcdb4e7b333a5a4b6878f5d71845.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/f349df8198224e0144aca69a82ccfea3.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/bb2e3a388c50a4523966c6e8965325bd.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/73a7659566bf020478ce1e437d6a6656.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/2309d60cd487a28e08afcdc442b3ee7f.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/bf5f69553f0d7c33b1a64df292dce7b2.jpg)
API: DirectX9
ОС: Windows XP.
FPS: 36.1
Scores: 909
Min FPS: 21.1
Max FPS: 74.9
Ну что можно сказать? Результат лучше на 26%. Насколько отличается картинка, можно посмотреть на скриншотах.
В этом тесте дополнительно была включена опция Refraction, правда, опытным путем было выяснено, что на количество фпс она не влияет - хотя с включенной опцией далекие объекты выглядят несколько более реалистично.
![Изображение](https://img.sysadmins.ws/upload_image/thumb/f6ae199827f51c19bd74167a0b841ba1.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/dd2f4f173b451e7800dd00d6d4fbe793.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/fe3b4384ff0280817f235b86f27fd625.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/0290d0278734bb9f28b9a26d8359b1c3.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/c73c707b842af5719ab159b4ff6eb863.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/e4fa22d111832ec6f727c4cdad924fa9.jpg)
Ну что ж, время линукса. Потянет ли он такую графику или только в виде слайдшоу - сейчас узнаем.
API: OpenGL
ОС: Ubuntu 10.04 x86_64.
В этом тесте использовалась 32х битная версия бенчмарка - в ней результат был на пару фпс больше.
FPS: 25.1
Scores: 633
Min FPS: 8.8
Max FPS: 41.4
Конечно, сильно проигрывает DirectX9, но практически равно тесту OpenGL под Windows. Я считаю, что результат более, чем достойный.
От Ubuntu, честно, ожидал большего результата. Исходил из всеми любимого glxgears - в арче на HD 4770 он выдавал мне порядка 28-32 тысяч fps за 5 секунд, в убунте же - 63-67 тысяч за 5 секунд! Но результат Unigine от этого не поменялся.
Детали системы:
- Binary: Linux 32bit GCC 4.3.2 Release Mar 21 2010
Operating system: Linux 2.6.32-21-generic x86_64
CPU model: AMD Athlon(tm) 7750 Dual-Core Processor
CPU flags: 3107MHz MMX+ 3DNow!+ SSE SSE2 SSE3 SSE4A HTT
GPU model: ATI Radeon HD 4770 3.2.9756 Compatibility Profile Context 512Mb
![Изображение](https://img.sysadmins.ws/upload_image/thumb/9e8b0c4e8f44ec0d8d4d22bc18d6e72a.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/2a9d1bcd5c3d6c431536713fe2efd3b7.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/5bf8c0f45020e7ba08b7e4a5b53b8b76.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/3b01ff5c1d29d5251878dac055b0a079.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/089ea468fad3ec2c4b9750567d117c60.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/df176bd3726ec4c0a8ab51c6f4be5f09.jpg)
Переходим к последнему "конкурсанту" - Archlinux.
API: OpenGL
ОС: Archlinux x86_64.
Использовалась 64x битная версия бенчмарка - 32х битная отказалась работать :(. Хотя в той же убунте 32х битная версия прекрасно работала.
FPS: 26.0
Scores: 654
Min FPS: 16.3
Max FPS: 44.9
Результат чуть лучше чем в Ubuntu, но немного хуже DirectX в Windows. Порадовало, что минимальное fps, как и максимальное, превысило результат Windows с OpenGL.
Детали системы:
- Binary: Linux 64bit GCC 4.3.2 Release Mar 21 2010
Operating system: Linux 2.6.33-bfs x86_64
CPU model: AMD Athlon(tm) 7750 Dual-Core Processor
CPU flags: 3107MHz MMX+ 3DNow!+ SSE SSE2 SSE3 SSE4A HTT
GPU model: ATI Radeon HD 4770 3.2.9756 Compatibility Profile Context 512Mb
Скриншоты:
![Изображение](https://img.sysadmins.ws/upload_image/thumb/584218e97f15100567b8a9a00cdd7c10.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/a5021ac47d8691cec136974778313b71.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/59f6fd2402bf06d688358d69f822b32f.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/a9069b772c99237ed9a636a2ae4d50ca.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/26c24d3a1dfa2843b236f5907e18bad4.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/4705179659e1ad3733be180c31703ce9.jpg)
Подведем итоги:
Среднее количество кадров в секунду (FPS).
![Изображение](https://img.sysadmins.ws/upload_image/78e6dcb66483678cb578d99f6426f920.png)
практически одинакова во всех системах. Да, DirectX вырывается вперед, но совсем некритично. Картинка практически одинакова, производительность тоже. Только одну ОС нам предлагают купить, а другую можно получить бесплатно. Постепенно в Linux 3D набирает обороты, и я думаю, это вопрос времени - когда желтый и зеленый столбец сравнятся с оранжевым, и быть может, перегонят его
![Улыбается :)](./images/smilies/KOLOBOK/smile.gif)
В статье тестировался движок Unigine. Я был поражен, насколько хорошая графика существует под Linux. Что ж, будем ждать игр и других приложений на этом замечательном движке. Также советую заглянуть на их сайт http://www.unigine.com/. Там можно найти еще несколько красивых демок, ознакомиться с разрабатываемыми проектами и ценами на него.
Небольшое обращение к читателю: хотелось бы узнать результаты аналогичной моей системе, только с графическим адаптером от Nvidia. Аналогичной - т.е. примерно одинаковой в цене. Видеокарта стоимостью 3100-3700 р. (я брал свою за ~3200). Это поможет выяснить, действительно ли, как некоторые говорят, закрытые драйвера от ATI под Linux оставляют желать лучшего. Да и потом, это просто интересно
![Улыбается :)](./images/smilies/KOLOBOK/smile.gif)
Ну и на десерт:
Тесселяция.
Способ в компьютерной графике, с помощью которого возможно увеличить количество полигонов в полигональной трёхмерной модели, используя кривые Безье. При этом каждый полигон модели разбивается на заданное число связанных полигонов, которые выстраиваются в соответствии с общим направлением поверхности модели. Таким путём можно сначала создать простую модель, а затем быстро и просто повысить её детализацию. (Из Википедии).
Включаем тесселяцию в Linux.
Сделать это проще простого, надо отредактировать конфигурационный файл heaven_2.0.cfg.
Код: Выделить всё
nano /path/to/Unigine_Heaven/data/heaven_2.0.cfg
Код: Выделить всё
<item name="gl_render_use_amd_vertex_shader_tessellator" type="int">1</item>
Осталось протестировать Unigine Heaven на Archlinux с включенной тесселяцией. Посмотрим, что из этого выйдет.
API: OpenGL
ОС: Archlinux x86_64. Tessellation - normal.
FPS: 8.7
Scores: 220
Min FPS: 2.4
Max FPS: 35.6
Выпрямляют статистику сцены без тесселяции (панорамы и т.д.) - сцены, где камера достаточно далека от объекта и тесселяция к нему не применяется. А так FPS в пределах 3-8. Ниже можно наблюдать скриншоты:
![Изображение](https://img.sysadmins.ws/upload_image/thumb/dc145ec48dd67e1959c59028276859ad.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/e89b79c83926ab0edc491b2f29ced3da.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/12a4481aa503ba5799cd4b91e593a66b.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/20f609bdcc60663afc267257b0c7549d.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/542e1807f2c251c4748621e0741aa2fb.jpg)
Детализация просто отличная. Напоследок, 3 скриншота с "экстремальной" тесселяцией.
![Изображение](https://img.sysadmins.ws/upload_image/thumb/e5997eeb5da5c52c2d2090f995c4d51f.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/14fc5fc3b73d3d626511f10e5beda29a.jpg)
![Изображение](https://img.sysadmins.ws/upload_image/thumb/66bbe4b9209dbb5f7fd44925b7244156.jpg)
Оригинал