В этой статье будет протестирована производительность 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
Насколько красива графика можно судить по скриншотам:
API: DirectX9
ОС: Windows XP.
FPS: 36.1
Scores: 909
Min FPS: 21.1
Max FPS: 74.9
Ну что можно сказать? Результат лучше на 26%. Насколько отличается картинка, можно посмотреть на скриншотах.
В этом тесте дополнительно была включена опция Refraction, правда, опытным путем было выяснено, что на количество фпс она не влияет - хотя с включенной опцией далекие объекты выглядят несколько более реалистично.
Ну что ж, время линукса. Потянет ли он такую графику или только в виде слайдшоу - сейчас узнаем.
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
Переходим к последнему "конкурсанту" - 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
Скриншоты:
Подведем итоги:
Среднее количество кадров в секунду (FPS).
практически одинакова во всех системах. Да, DirectX вырывается вперед, но совсем некритично. Картинка практически одинакова, производительность тоже. Только одну ОС нам предлагают купить, а другую можно получить бесплатно. Постепенно в Linux 3D набирает обороты, и я думаю, это вопрос времени - когда желтый и зеленый столбец сравнятся с оранжевым, и быть может, перегонят его . Все больше игр создается под Linux, что, несомненно, радует. Было также замечено, что под Windows процессор нагружался гораздо активнее. Под Linux предел - 60% на каждое ядро.
В статье тестировался движок Unigine. Я был поражен, насколько хорошая графика существует под Linux. Что ж, будем ждать игр и других приложений на этом замечательном движке. Также советую заглянуть на их сайт http://www.unigine.com/. Там можно найти еще несколько красивых демок, ознакомиться с разрабатываемыми проектами и ценами на него.
Небольшое обращение к читателю: хотелось бы узнать результаты аналогичной моей системе, только с графическим адаптером от Nvidia. Аналогичной - т.е. примерно одинаковой в цене. Видеокарта стоимостью 3100-3700 р. (я брал свою за ~3200). Это поможет выяснить, действительно ли, как некоторые говорят, закрытые драйвера от ATI под Linux оставляют желать лучшего. Да и потом, это просто интересно .
Ну и на десерт:
Тесселяция.
Способ в компьютерной графике, с помощью которого возможно увеличить количество полигонов в полигональной трёхмерной модели, используя кривые Безье. При этом каждый полигон модели разбивается на заданное число связанных полигонов, которые выстраиваются в соответствии с общим направлением поверхности модели. Таким путём можно сначала создать простую модель, а затем быстро и просто повысить её детализацию. (Из Википедии).
Включаем тесселяцию в 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. Ниже можно наблюдать скриншоты:
Детализация просто отличная. Напоследок, 3 скриншота с "экстремальной" тесселяцией.
Оригинал