Страница 1 из 1

Из серии "VS": 3D под Windows и Linux - Unigine Heaven

Добавлено: 05 июл 2010, 16:40
Raven
Предисловие.
В этой статье будет протестирована производительность 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.
Во время всех тестов были отключены визуальные эффекты (compiz), а также выставлена политика процессора - performance (на всякий случай).

Не будет протестирована, к сожалению, работа в 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
Пару слов о настройках - опция Refraction (преломление) на OpenGL выдавала некоторые артефакты - в некоторых моментах получались какие-то неправильные отражения, было решено выключить эту опцию. Также поступил и с Replication - непонятные артефакты с тенями и освещением в некоторых моментах. Что касается тесселяции - тут не стал включать - хотелось получить более-менее играбельное FPS. А в остальном конфигурация очень даже достойная и картинка радует глаз.

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
Довольно неплохой результат, но пока еще его не с чем сравнивать. Просадки до 10-15 фпс наблюдались при смене сцен.
Насколько красива графика можно судить по скриншотам:
Изображение Изображение Изображение
Изображение Изображение Изображение

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>
и вместо "0" (отключено) ставим "1".

Осталось протестировать 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 скриншота с "экстремальной" тесселяцией.
Изображение Изображение Изображение

Оригинал