mafulechka
mafulechka10. Juli 2019 03:17

Verbesserung der Leistung mit Qt 3D Studio 2.4

Die 3D-Rendering-Geschwindigkeit ist neben der effizienten Nutzung der Systemressourcen für eine 3D-Engine wichtig. Die kommende neue Version von Qt 3D Studio 2.4 verbessert die Renderleistung erheblich und spart weitere CPU- und RAM-Ressourcen ein. In unserem Beispiel einer hochwertigen eingebetteten 3D-Anwendung stieg die Rendergeschwindigkeit um satte 565 %, während die RAM- und CPU-Auslastung um 20 % bzw. 51 % zurückging.


Leistung ist ein Schlüsselfaktor für Qt und besonders wichtig für die Fähigkeit, komplexe 3D-Anwendungen auf eingebetteten Geräten auszuführen. Wir haben die Ressourceneffizienz mit früheren Versionen von Qt 3D Studio kontinuierlich verbessert, und mit der Veröffentlichung von Qt 3D Studio 2.4 haben wir einen großen Schritt nach vorne in der Rendering-Leistung gemacht. Die genaue Leistungssteigerung hängt stark von der Anwendung und der verwendeten Hardware ab, daher haben wir uns zwei Beispielanwendungen und Embedded-Hardware genauer angesehen. Die in diesem Beitrag verwendeten Beispielanwendungen sind Automotive-Tool-Cluster, aber eine ähnliche Verbesserung ist in jeder Anwendung zu sehen, die die Laufzeitumgebung von Qt 3D Studio verwendet.

Einsteigerbeispiel mit Renesas R-Car D3

Das eingebettete Messgerät der Einstiegsklasse ist das Renesas R-Car D3, das über eine Imagination PowerVR GE8300-Grafikverarbeitungseinheit (GPU) der Einstiegsklasse und einen ARM Cortex A53-CPU-Kern verfügt. Linux-Betriebssystem.

Die Beispielanwendung verwendet den unter https://git.qt.io/public-demos/qt3dstudio/tree/master/LowEndCluster . Das Low-Level-Cluster-Beispiel ist gut optimiert.

Um die Anwendung so einfach wie möglich zu gestalten, wird in Echtzeit eine 3D-Benutzeroberfläche für ADAS-Ansichten (Advanced Driver Assistance Systems) erstellt. Andere Teile des Dashboards werden mit Qt Quick erstellt. Dadurch erhalten Sie selbst auf Einstiegshardware wie dem Renesas R-Car D3 eine Echtzeit-3D-Benutzeroberfläche.

High-Level-Beispiel mit NVIDIA Tegra X2

Das bei den Messungen verwendete High-End-Embedded-Gerät ist das NVIDIA Jetson TX2 Development Board, das mit dem Tegra X2 SoC ausgestattet ist, das über eine 256-Core-NVIDIA-Pascal™-Grafikprozessoreinheit (GPU) und einen Dual-Core-64-Bit-NVIDIA-Denver-2 verfügt , sowie eine Quad-Core-ARM Cortex-A57-Prozessor MPCore-CPU. Linux-Betriebssystem.

Die Beispielanwendung verwendet den Kria-Cluster, der unter https://git.qt.io/public-demos/qt3dstudio/tree/master/kria-cluster-3d-demo . Das Kria-Cluster-Beispiel ist absichtlich schwer mit großen und nicht vollständig optimierten Texturen, hoher Auflösung usw.

Im High-End-Beispiel werden alle Sensoren und anderen Elemente in Echtzeit 3D gerendert, das zur Laufzeit von Qt 3D Studio gerendert wird. Qt Quick-Details sind sehr spärlich und werden auf die 3D-Benutzeroberfläche übertragen, indem Texturen über QML-Streams geteilt werden.

Renderleistung verbessern

Die größte Verbesserung in der neuen Version von Qt 3D Studio 2.4 ist die Rendering-Leistung – mit derselben Anwendung können Sie mehr Frames pro Sekunde (Frames Per Second (FPS)) auf derselben Hardware rendern. Wie immer bei Qt bemühen wir uns, stabile 60 FPS beizubehalten aber auf eingebetteten Geräten ist einfach nicht genug Leistung vorhanden. Wenn es Elemente wie Wärmemanagement und verschiedene andere Anwendungsfälle gibt, zahlt es sich normalerweise aus, an der äußersten Grenze der Grafikfähigkeiten des SoC zu arbeiten. Im Fall einer Anwendung wie einem "Dashboard ", sollte die Leistung unter allen Betriebsbedingungen reibungslos sein, auch wenn das System unter maximaler Last steht. Um die Messziele beim High-End-Beispiel zu erreichen, haben wir vsync deaktiviert, wodurch das System so viele Frames wie möglich zeichnen kann. In In einer typischen realen Anwendung gibt es immer einen Satz von VSync, also alles, was 60 FPS überschreiten kann, bedeutet Einsparung von Verarbeitungsressourcen.

Die folgenden Grafiken zeigen die gemessenen Frames pro Sekunde mit einem hohen Beispiel auf einem NVIDIA TX2 (vsync aus) und einem niedrigen Beispiel auf einem Renesas R-Car D3 (vsync an):

High-Level-Beispiel: Mit dem neuen Qt 3D Studio 2.4 sehen wir eine satte Verbesserung der Rendering-Leistung um 565 %. Mit Qt 3D Studio 2.3 lief die App nur mit 20 FPS, aber mit dem neuen Qt 3D Studio 2.4 läuft die App mit 133 FPS. Dies wird durch Deaktivieren von vsync gemessen, nur um die Fähigkeiten der neuen Laufzeit zu messen. In der Praxis reichen 60 FPS aus, und Sie können die zusätzliche CPU-Kapazität für einen größeren Bildschirm (oder einen anderen Bildschirm) oder eine komplexere Anwendung verwenden oder einfach nicht die maximale Kapazität des SoC nutzen, um Strom zu sparen.

Beispiel auf niedrigem Niveau: Die Verbesserung beträgt 46 %, da die maximale FPS mit Qt Quick auf 60 FPS begrenzt ist. Mit Qt 3D Studio 2.3 erreichte die Anwendung 41 FPS, und mit der neuen 2.4-Laufzeitumgebung erreicht sie problemlos 60 FPS. Wie bei leistungsstärkerer High-End-Hardware kann die überschüssige Kapazität des SoC verwendet werden, um eine komplexere 3D-Benutzeroberfläche auszuführen, oder einfach ungenutzt bleiben.

Verbesserte CPU-Auslastung

Die gesamte CPU-Auslastung einer Anwendung ist die Summe mehrerer Dinge, von denen eine die durch die 3D-Engine verursachte Last ist. Bei eingebetteten Anwendungen ist es wichtig, dass die Verwendung von 3D durch die Anwendung keine übermäßige CPU-Auslastung verursacht. Wenn eine Anwendung die zulässige CPU-Kapazität überschreitet, kann sie nicht mit den Ziel-FPS gerendert werden und es kann zu Stottern auf dem Bildschirm kommen.

Die folgenden Grafiken zeigen die gemessene CPU-Last mit einem hohen Beispiel auf NVIDIA TX2 und einem niedrigen Beispiel auf Renesas R-Car D3:

High-Level-Beispiel: Mit dem neuen Qt 3D Studio 2.4 sehen wir eine signifikante Steigerung der CPU-Auslastung um 51 % im Vergleich zu Qt 3D Studio 2.3, während gleichzeitig die FPS von 20 FPS auf 133 FPS steigt. Die Gesamtlast mit Runtime 2.3 beträgt 167 % (von insgesamt 400 %) und mit Runtime 2.4 sinkt die Last auf 81 %. Bitte beachten Sie, dass sich eine erhöhte Rendergeschwindigkeit auch auf die CPU-Auslastung auswirkt. Wenn vsync aktiviert und FPS auf 60 FPS begrenzt ist, beträgt die CPU-Auslastung 74 %.

Beispiel auf niedrigem Niveau: Wir sehen nur einen leichten Anstieg der CPU-Auslastung um 5 %, hauptsächlich aufgrund der Anwendung, die Qt Quick verwendet, aber dies bei gleichzeitigem Anstieg der FPS von 41 FPS auf 60 FPS. Es sollte auch beachtet werden, dass der R-Car D3-Prozessor nicht sehr leistungsfähig ist, sodass sich die Erhöhung der FPS der gesamten Anwendung auf die gesamte CPU-Last auswirkt.

Speichernutzung verbessern

Ressourcen für beliebige Grafiken und insbesondere 3D belegen normalerweise den größten Teil des Arbeitsspeichers (Random Access Memory, RAM). Es müssen Optimierungen vorgenommen werden, sowie unnötige Detailstufen vermieden und die Texturkomprimierung verwendet werden. Wir verwenden in diesem Beitrag keine spezifischen Optimierungstechniken. Die Messungen werden mit derselben Anwendung durchgeführt, keine weiteren Änderungen außer der Verwendung unterschiedlicher Versionen von Qt 3D Studio und deren Laufzeiten.

Die folgenden Grafiken zeigen die gemessene RAM-Nutzung mit einem hohen Beispiel auf dem NVIDIA TX2 und einem niedrigen Beispiel auf dem Renesas R-Car D3:

High-Level-Beispiel: Im neuen Qt 3D Studio 2.4 sehen wir eine Reduzierung um 48 MB im Vergleich zu Qt 3D Studio 2.3. Dadurch wird die Gesamtspeichernutzung der Anwendung um 20 % reduziert.

Low-Level-Beispiel: In einem einfacheren Beispiel beträgt die Verringerung der RAM-Nutzung 9 MB unter Verwendung der neuen Laufzeitversion 2.4. Prozentual reduziert dies die gesamte Speichernutzung der Anwendung um 15 %.

Wie wurde das erreicht?

Die Verbesserungen sind wirklich groß, insbesondere für eingebettete Systeme. Sie fragen sich also vielleicht, was sich in der neuen Version geändert hat? Wir haben dieselbe Laufzeitarchitektur wie in Qt 3D Studio 1.x-Versionen verwendet, anstatt auf Qt 3D zu laufen. Die Kernlogik der 3D-Engine bleibt die gleiche wie zuvor, aber sie läuft direkt auf OpenGL, anstatt Qt 3D zu verwenden. Dies bietet eine deutlich verbesserte Leistung, insbesondere auf Embedded-Geräten sowie leistungsfähigeren Desktop-Systemen. Indem wir die Studio 3D-Engine direkt auf OpenGL ausführen, vermeiden wir Rendering-Overhead und vereinfachen die Architektur. Die einfachere Architektur bietet weniger interne Signalisierung, weniger Objekte im Speicher und weniger Bedarf an Synchronisation zwischen mehreren Rendering-Threads. All dies ermöglichte es uns, weitere Optimierungen im Vergleich zu Qt 3D Studio 1.x vorzunehmen und natürlich neue Funktionen einzuführen, die in Qt 3D Studio 2.x-Versionen zusätzlich zur OpenGL-basierten Laufzeit entwickelt wurden.

Eine Änderung der 3D-Laufzeit erfordert für die meisten Projekte keine Änderungen. Ändern Sie einfach die Import-Anweisung (import QtStudio3D.OpenGL 2.4 statt import QtStudio3D 2.3) und dann reicht es aus, mit dem neuen Qt 3D Studio 2.4 neu zu kompilieren. Denn die API und Teile der 3D-Engine, die sich auf die Anwendung beziehen, sind genau die gleichen wie zuvor (gleiche Materialien, Shader usw.) und funktionieren dementsprechend genauso. In den seltenen Fällen, in denen einige Änderungen erforderlich sind, z. B. für einige nicht standardmäßige Materialien, sind sie ziemlich klein.

Holen Sie sich Qt 3D Studio 2.4

Wenn Sie die Vorabversionen von Qt 3D Studio 2.4 noch nicht ausprobiert haben, sollten Sie es unbedingt versuchen. Derzeit gibt es eine dritte Beta-Version, und eine endgültige Version ist in Kürze fällig, die vor Ende Juni veröffentlicht werden soll. Qt 3D Studio ist sowohl unter kommerziellen als auch unter Open-Source-Lizenzen erhältlich.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken