mafulechka
mafulechka10 июля 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 хостинг.

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
m
  • molni99
  • 26 октября 2024 г. 1:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 1:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10

C++ - Тест 003. Условия и циклы

  • Результат:42баллов,
  • Очки рейтинга-8
Последние комментарии
i
innorwall8 ноября 2024 г. 8:51
Django - Урок 036. Как добавить аутентификацию через социальные сети. ВКонтакте buy priligy online usa In addition, it might not be effective at the doses recommended, because of your previous tolerance to a similar type of drug
i
innorwall8 ноября 2024 г. 7:40
Qt/C++ - Урок 039. Как закрасить строку в QSqlTableModel по значению в столбце priligy results This slowing of eGFR decline was observed in patients with and without low eGFR and in those with and without type 2 diabetes
i
innorwall8 ноября 2024 г. 2:45
QML - Урок 002. Custom Button in QML Android 2007; 14 2 270 83 priligy dapoxetine 60mg Testicular imaging is sort of a unique niche right now, Гў
i
innorwall8 ноября 2024 г. 1:32
C++ - Ускоряет ли сборку #pragma once? It could cause harm to the unborn baby buy generic priligy
Сейчас обсуждают на форуме
i
innorwall8 ноября 2024 г. 7:08
добавить qlineseries в функции School of Nursing, Long Island University, Brooklyn Campus, Brooklyn, NY, USA priligy dapoxetine 30mg
9
9Anonim25 октября 2024 г. 9:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов3 октября 2024 г. 4:05
Реализация навигации по разделам Спасибо Евгений!
F
Fynjy22 июля 2024 г. 4:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Следите за нами в социальных сетях