mafulechka
mafulechka10 липня 2019 р. 03: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, а також чотирьох A5 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 до 133 FPS. Загальне навантаження з Runtime 2.3 становить 167% (із загальної кількості 400%), і з Runtime 2.4 навантаження падає до 81%. Зауважте, що збільшена швидкість рендерингу також впливає на завантаження процесора. Якщо vsync увімкнено та FPS обмежено до 60 FPS, завантаження процесора становить 74%.

Приклад низького рівня: ми бачимо лише незначне збільшення навантаження на процесор на 5%, в основному через те, що програма використовує Qt Quick, але це з FPS, що йде від 41 до 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 хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

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

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

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

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

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

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 06:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 03:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах