Monthly Archives: May

エントリーレベルのハードウェア向けにリアルタイム3Dを最適化する方法

Published Wednesday May 29th, 2019 | Leave a comment
Posted in Qt, Qt 3D Studio, Qt Quick | Tags:

自動車への各種デジタル機器の搭載が拡大し続けるなか、求められるユーザーエクスペリエンスを実現するのにどのくらいのコストがかかるのか、綿密に検討することが極めて重要なタスクとなっています。量産品であれば、1つのハードウェアコンポーネントのコストが10ドルなのか、50ドルなのか、100ドルなのかによって大きな差異が出ます。だからこそ、SoCで最も効率的なソフトウェア実行方法を検討することは、非常に大切なのです。現代のユーザーは、高品質なグラフィックとなめらかなアニメーションを求めており、デジタル機器をはじめとするシステムに関しては、常に良いパフォーマンスを発揮できる安全性も重視されます。こちらの記事では、ルネサス社の車載システム用エントリーレベルSoC「R-Car D3」、Qt Quick、Qt 3D Studioにより、非常になめらかで常時60fpsのレンダリングを実現する方法についてご紹介します。 本プロジェクトの要件 本プロジェクトでは、ルネサス社の車載システム用エントリーレベルSoC「R-Car D3」をハードウェアとして選択しました。同等のパフォーマンスを備えたエントリーレベルのSoCは他のメーカーからも提供されており、The Qt Companyでも過去にNXP社のエントリーレベルSoCを使った複数のプロジェクトを実施しています。今回は、イマジネーションテクノロジーズ社のエントリーレベルGPUであるPowerVR GE8300 (https://www.imgtec.com/powervr-gpu/ge8300/)とARM Cortex A53 CPUコアを搭載した、ルネサス社のR-Car D3を利用することとしました。 さらに本プロジェクトのベースとして、The Qt Companyのビジュアルデザイナーが典型的なデジタル機器類のデザインを設計しました。左右に異なるゲージモードと、中央にはリアルタイム3D ADAS(Advanced Driver Assistance Systems、先進運転支援システム)ビューを備えたデザインを採用しました。プロジェクトの狙いは、選択したローエンドハードウェア(ルネサス社のエントリーレベルSoC「R-Car D3」)を使い、解像度1280 x 480/常時60fpsを実現することです。デザインコンセプトは、OpenGLのシェーダーとビジュアルデザインを用い、リアルタイム3Dエレメント(ADASビュー)と2Dレンダリングしたエレメントを組み合わせ、(実際にはリアルタイム3Dではない)シームレスな3D体験の実現を目指すことです。 デザインコンセプト図 初期設定と調査結果 Qt 5.12を実装したR-Car D3開発ボード上で、Qt 3D Studioを用いた初期プロトタイプを実行し、パフォーマンス分析を行いました。グラフィックはさほど複雑なものではありませんでしたが、この最適化前のデザインでは、レンダリング速度は最大10fpsにとどまりました。プロジェクトアセットの最適化後には改善が見られたものの、結果は最大20fpsと、目標の60fpsにはほど遠い数値となりました。さらなる分析を進め、アプリケーションのアーキテクチャ全体を検討する必要があるのは明らかでした。 そこでPVRTraceを導入し、D3 SoCの状態と、改善が必要な点を詳しく分析していきました。その結果すぐに、OpenGLで大きなフレームバッファオブジェクト(FBO)をした際や、ターゲットバッファのレンダリングを行った場合に、このハードウェアのパフォーマンスが低下することが判明しました。単一のフルスクリーンFBOだけでも10msのオーバーヘッドが生じていました(目標値の60fpsでは16.6msが限界で、そのうちの10msがオーバーヘッド)。 アーキテクチャの測定 本プロジェクトでは多種多様なアプリケーションアーキテクチャで測定を行い、D3ハードウェアのベースラインを明らかにすると同時に、Qt Quick + 直書きのOpenGL ADASビューという組み合わせでの測定も行いました。Qt Quickでできることはすべて試し、OpenGLコマンドでADASの描画を実行しました。結果、この設定で60fpsを実現し、この目標値が達成可能であることが確認されました。 続けて、Qt Quick + Qt 3D Studioという組み合わせに移行しました。各ゲージをQt Quickで実装し、Qt 3D Studioのコンポーネントとして中央にADASビューを配置しました。使用するFBOは1つです。3Dコンテンツが単層(単層透過)なのでFBOも1つという考え方で、テクスチャ圧縮によりRAMも節約しました。このセットアップでも、常時60fpsのレンダリング速度を実現できました。 最適なアーキテクチャの決定 試行錯誤の結果、Qt Quickで2Dエレメントを実装し、ADASビューにQt 3D […]

Read More
Get started today with Qt Download now