mafulechka
mafulechkaШілде 10, 2019, 3:17 Т.Ж.

Qt 3D Studio 2.4 көмегімен өнімділікті жақсарту

Скорость 3D-рендеринга важна для 3D-движка в дополнение к эффективному использованию системных ресурсов. Предстоящий новый выпуск Qt 3D Studio 2.4 значительно повышает производительность рендеринга , а также обеспечивает дополнительную экономию ресурсов ЦП (CPU) и ОЗУ (RAM). В нашем примере высококачественного встроенного 3D-приложения скорость рендеринга увеличена на колоссальные 565%, а использование ОЗУ и загрузка ЦП снизились на 20% и 51% соответственно.


Производительность является ключевым фактором для Qt и особенно важна для возможности запуска сложных 3D-приложений на встроенных устройствах. Мы постоянно повышали эффективность использования ресурсов с более ранними выпусками Qt 3D Studio, а с выходом Qt 3D Studio 2.4 сделали большой шаг вперед в производительности рендеринга. Точное увеличение производительности во многом зависит от приложения и используемого оборудования, поэтому мы взяли два примера приложений и встроенное оборудование для более детального изучения. Примеры приложений, используемых в этом посте, представляют собой автомобильные инструментальные кластеры, но подобное улучшение можно увидеть в любом приложении, использующем среду выполнения Qt 3D Studio.

Пример начального уровня с Renesas R-Car D3

В качестве встроенного устройства измерения начального уровня используется Renesas R-Car D3, который имеет графический процессор (GPU) начального класса Imagination PowerVR GE8300 и один ARM Cortex A53 CPU core. Операционная система Linux.

В качестве примера приложения используется младший кластер, доступный по адресу https://git.qt.io/public-demos/qt3dstudio/tree/master/LowEndCluster . Пример низкоуровневого кластера хорошо оптимизирован.

Чтобы сделать приложение максимально легким, в режиме реального времени создается трехмерный пользовательский интерфейс ADAS view (advanced driver-assistance systems). Другие части приборного щитка создаются с помощью Qt Quick. Это позволяет иметь трехмерный пользовательский интерфейс в реальном времени даже на оборудовании начального класса, таком как Renesas R-Car D3.

Пример высокого уровня с NVIDIA Tegra X2

Высококачественным встроенным устройством, используемым в измерениях, является плата разработки NVIDIA Jetson TX2, оснащенная Tegra X2 SoC, которая имеет 256-ядерный графический процессор (GPU) NVIDIA Pascal ™ и двухъядерный 64-битный NVIDIA Denver 2, а также четырехъядерный процессор ARM Cortex-A57 MPCore CPU. Операционная система Linux.

В качестве примера приложения используется кластер Kria, доступный по адресу https://git.qt.io/public-demos/qt3dstudio/tree/master/kria-cluster-3d-demo . Пример кластера Kria сделан намеренно тяжелым с большими и не полностью оптимизированными текстурами, высоким разрешением и т. д.

В примере высокого класса все датчики и другие элементы выполнены в 3D-режиме реального времени, отображаемом во время выполнения Qt 3D Studio. Деталей Qt Quick очень мало, и они переносятся в трехмерный пользовательский интерфейс с помощью совместного использования текстур через потоки QML.

Улучшение производительности рендеринга

Самым большим улучшением в новой версии Qt 3D Studio 2.4 является производительность рендеринга - использование одного и того же приложения для рендеринга большего числа кадров в секунду (Frames Per Second (FPS) на одном и том же оборудовании. Как всегда с Qt, мы стремимся поддерживать стабильные 60 FPS, но на встроенных устройствах просто недостаточно производительности. Когда есть такие элементы, как управление нагревом и различные иные сценарии использования, то это обычно оплачивается запуском на самом краю графических возможностей SoC. В случае приложения, такого как «приборный щиток», производительность должна быть плавной при любых условиях эксплуатации, в том числе при максимальной нагрузке на систему. Для достижения целей измерения на примере высокого класса мы отключили vsync, что позволяет системе рисовать столько кадров, сколько может. В типичном реальном приложении всегда есть набор vsync, поэтому все, что мы можем превысить 60 FPS, означает экономию ресурсов обработки.

На графиках ниже показаны измеренные кадры в секунду с примером высокого уровня на NVIDIA TX2 (vsync выключен) и с примером низкого уровня на Renesas R-Car D3 (vsync включен):

Пример высокого уровня: с новой Qt 3D Studio 2.4 мы видим колоссальное улучшение производительности рендеринга на 565%. С Qt 3D Studio 2.3 приложение работало только со скоростью 20 FPS, но новая Qt 3D Studio 2.4 позволяет приложению запускать 133 FPS. Это измеряется отключением vsync, просто чтобы измерить возможности нового времени выполнения. На практике достаточно использовать 60 FPS, и можно использовать дополнительную емкость процессора, чтобы иметь больший экран (или другой экран) или более сложное приложение, или просто не использовать максимальную емкость SoC для экономии энергии.

Пример низкого уровня: улучшение составляет 46%, поскольку максимальный FPS ограничен до 60 FPS с помощью Qt Quick. С Qt 3D Studio 2.3 приложение достигало 41 FPS, а с новым временем выполнения 2.4 оно легко достигает 60 FPS. Как и в случае с более мощным высокопроизводительным оборудованием, избыточная емкость SoC может использоваться для запуска более сложного трехмерного пользовательского интерфейса или просто не использоваться.

Улучшение загрузки процессора

Общая загрузка ЦПУ (CPU) приложения представляет собой сумму нескольких вещей, одна из которых - нагрузка, вызванная 3D-движком. Во встроенных приложениях важно, чтобы использование 3D в приложении не вызывало чрезмерной нагрузки на процессор. Если приложение превысит допустимые возможности процессора, оно не сможет выполнить рендеринг с целевым FPS, и на экране могут появиться заикания.

На приведенных ниже графиках показана измеренная нагрузка на процессор с примером высокого уровня на NVIDIA TX2 и примером низкого уровня на Renesas R-Car D3:

Пример высокого уровня: с новой Qt 3D Studio 2.4 мы видим значительное увеличение нагрузки на процессор на 51% по сравнению с Qt 3D Studio 2.3, в то же время FPS увеличивается с 20 FPS до 133 FPS. Общая нагрузка с Runtime 2.3 составляет 167% (из общего числа 400%), а с Runtime 2.4 нагрузка падает до 81%. Обратите внимание, что увеличенная скорость рендеринга также влияет на загрузку процессора. Если vsync включен и FPS ограничен до 60 FPS, загрузка процессора составляет 74%.

Пример низкого уровня: мы видим лишь незначительное увеличение нагрузки на процессор на 5%, в основном из-за того, что приложение использует Qt Quick, но это с FPS, идущим от 41 FPS до 60 FPS одновременно. Следует также отметить, что процессор R-Car D3 не очень мощный, поэтому увеличение FPS всего приложения влияет на общую загрузку процессора.

Улучшение использования памяти

Ресурсы для любой графики и особенно 3D обычно занимают большую часть оперативной памяти (Random Access Memory, RAM). Существуют способы оптимизации, а также стоит избегать ненужного уровня детализации и использовать сжатие текстур. В этом посте мы не используем какие-либо конкретные методы оптимизации. Измерения выполняются с помощью одного и того же приложения, никаких других изменений, кроме использования разных версий Qt 3D Studio и их времени выполнения.

На графиках ниже показано измеренное использование ОЗУ (RAM) с примером высокого уровня на NVIDIA TX2 и с примером низкого уровня на Renesas R-Car D3:

Пример высокого уровня: в новой Qt 3D Studio 2.4 мы видим сокращение на 48 МБ по сравнению с Qt 3D Studio 2.3. Это на 20% снижает общее использование памяти приложением.

Пример низкого уровня: в более простом примере сокращение использования ОЗУ составляет 9 МБ при использовании нового времени выполнения версии 2.4. В процентном отношении это на 15% снижает общее использование памяти приложением.

Как это было достигнуто?

Улучшения действительно большие, особенно для встраиваемых систем, поэтому можно задаться вопросом, что изменилось в новой версии? Мы использовали ту же архитектуру времени выполнения, что и в выпусках Qt 3D Studio 1.x, вместо того, чтобы работать поверх Qt 3D. Основная логика 3D-движка остается такой же, как и раньше, но он работает прямо поверх OpenGL вместо использования Qt 3D. Это обеспечивает значительно улучшенную производительность, особенно на встроенных устройствах, а также на более мощных настольных системах. Запустив 3D-движок Studio прямо поверх OpenGL, мы избегаем накладных расходов при рендеринге и упрощаем архитектуру. Более простая архитектура обеспечивает меньшую внутреннюю сигнализацию, меньшее количество объектов в памяти и меньшую потребность в синхронизации между несколькими потоками рендеринга. Все это позволило нам провести дальнейшую оптимизацию по сравнению с Qt 3D Studio 1.x и, конечно же, представить новые функции, разработанные в выпусках Qt 3D Studio 2.x, поверх среды выполнения на основе OpenGL.

Изменение в среде выполнения 3D не требует каких-либо изменений для большинства проектов. Просто измените оператор импорта (import QtStudio3D.OpenGL 2.4 вместо import QtStudio3D 2.3) , а затем достаточно будет перекомпилировать с новым Qt 3D Studio 2.4. Поскольку API и части 3D-движка, относящиеся к приложению, точно такие же, как и раньше (все те же материалы, шейдеры и так далее) и, соответственно, работают так же. В редких случаях, когда необходимы некоторые изменения, например, для некоторых нестандартных материалов, они довольно малы.

Получить Qt 3D Studio 2.4

Если вы еще не опробовали предварительные выпуски Qt 3D Studio 2.4, вы должны обязательно попробовать. В настоящее время имеется третий бета-релиз, и вскоре будет представлен окончательный релиз, который планируется выпустить до конца июня. Qt 3D Studio доступна как по коммерческой лицензии, так и по лицензии с открытым исходным кодом.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз