プレビューでアプリケーションを分析する

Preview で image0 をクリックして、アプリケーションのパフォーマンスと構造を分析します。

Analyze モードでは、image1 を右クリックするか Preview のメインメニューを使用して、分析するアイテムのタイプを選択します。

../../_images/debug-mode.png

Preview Analyze モードに加えて、Kanzi はアプリケーションを分析するための他の方法を提供します。アプリケーションのパフォーマンスのトラブルシューティング と ベストプラクティス を参照してください。

ヒント

Kanzi Studio が Analyze モードで異なるタイプのアイテムを表示する方法をカスタマイズするには、Edit > User Preferences を選択し、Preview タブでアイテムの色と線の太さを設定します。

../../_images/preferences-preview.png

セレクションとレイアウト

../../_images/selection.png

Selection は選択されたノードをハイライトします。Preview でアプリケーションを編集する を参照してください。

../../_images/debug-objects.png

Debug objects を表示:

  • ライト、カメラ、レイアウトノードなどのビジュアライゼーションノード。

  • カスタム 3D ノード用に作成したデバッグビジュアライゼーション。このようなビジュアライゼーションの例については、Node3D プラグインの例 を参照してください。

../../_images/allocated-layout.png

Allocated layout は、レイアウトの下にあるアイテムに割り当てられたスペースのバウンディングボックスを表示します。レイアウトコントロール (Layout control) ノード を参照してください。

../../_images/actual-layout.png

Actual layout は、レイアウトの下でアイテムが使用するスペースのバウンディングボックスを表示します。レイアウトコントロール (Layout control) ノード を参照してください。

../../_images/grid-cells.png

Grid cells は、Grid Layout 2D ノードのセルを表示します。Grid Layout ノードを使用する を参照してください。

ルーラー、ガイド、境界線

../../_images/rullers-and-guide.png

Rulers and guides は、アプリケーション内の要素を配置するのに役立つルーラーとガイドを表示します。ルーラーとガイドの使用 を参照してください。

../../_images/border-of-2d-nodes.png

Borders of 2D nodes は、2Dノードの境界をストライプの線で示します。

3D コンテンツ

../../_images/3d-grid.png

3D Grid は Scene ノードで地面のグリッドを表示します。

../../_images/bounding-volumes.png

Bounding volumes は閉じたボリューム内のメッシュを表示します。

レンダリング

../../_images/framebuffer.png

Framebuffer objects は、テクスチャにレンダリングされ、フレームバッファオブジェクトの切り替えを引き起こすノードを半透明の黄色の動くストライプでマークします。

レンダリングのベストプラクティス を参照してください。

../../_images/undrawn.png

Undrawn area は、アプリケーション画面外の領域とレンダリングされていないコンテンツのある領域の更新を示します。

../../_images/transparency.png

Transparency は透明なノードを半透明の青い動くストライプでマークします。効率的なレンダリングのためのノードの設定 を参照してください。

../../_images/overdrawn.png

Overdraw のビジュアライゼーションは、Kanzi が同じピクセルに複数回レンダリングされる領域を示します。より明るい緑色は、オーバードローの量が多いことを示しています。

Sorting Filter でオーバードローを防ぐ を参照してください。

../../_images/wireframe.png

Wireframe はすべてのコンテンツをワイヤーフレームモードで描画し、メッシュのジオメトリを表示します。

Kanzi はコンテンツにワイヤーフレームモードをグローバルに適用することを念頭に置いてください。例えば、このモードは、ポストプロセッシングエフェクトや、レンダーパスを使用して画面にブリットするコンテンツもワイヤーフレームとしてレンダリングします。

../../_images/vertex-normals.png

Vertex normals はメッシュ頂点の法線をRGBカラーとして視覚化します。

メッシュのローカル空間における法線方向ベクトルのx、y、zの値は、赤、緑、青の各色チャンネルの値を表します。Kanzi は、次の式に従って、対応する方向ベクトル成分の値から各色チャンネルの値を計算します。

\[ColorChannel = 0.5 + 0.5 * VectorComponent\]

パフォーマンス

  • Performance HUD には、最新 500 フレームにおける Kanzi アプリケーションの全体的なパフォーマンスインジケータが表示されます。以下が含まれます。

    • Frame Duration (ms) には、最終フレームのレンダリングにかかった時間がミリ秒単位で表示され、平均時間、最長時間、最短時間も表示されます。

      Frame Duration (ms) グラフの一番上の値は、最新 500 フレーム中のフレームのレンダリングにかかった最長時間、一番下の値は平均時間を示します。

      この情報を使用して、Kanzi アプリケーションのパフォーマンスボトルネックを特定します。たとえば、レンダリングを複数のフレームに分散させることで、アプリケーションのパフォーマンスを向上させる方法を見つけることができます。レンダリングを複数のフレームに分散する を参照してください。

    • API は、Kanzi が使用するレンダリング API (OpenGL ES や Vulkan など) を示します。また、ビデオカードの識別子とドライバーのバージョンも表示します。

      ../../_images/frame-duration-graph.png
    • Frames Per Second には、1 秒間にレンダリングされるフレーム数が示されます。

    • Animation Duration (μs) は、アプリケーション内のすべてのアニメーションを最後のフレームで実行するのにかかる時間をマイクロ秒単位で示し、平均、最高、最低の時間も表示します。

    • Draw Count には、実行された個別の描画呼び出しの回数が表示されます。

      Draw Count グラフの一番上の値は最新 500 フレーム中の最大バッチ数、一番下の値は最新 1 フレームのバッチ数を示します。

      ../../_images/draw-count-graph.png
    • Triangle Count には、1 フレーム中に描画された個別の三角形の推定合計数が表示されます。

    • Pipeline Count には、最新フレームで新しいレンダーパイプラインがバインドされた回数が表示されます。シェーダースイッチの削減 を参照してください。

    • Pass Count には、最新フレームで使用されたレンダーパスの数が表示されます。レンダリングのベストプラクティス を参照してください。

    • Memory Upload には、最新フレームで使用されたローリングステージングメモリのバイト数と、バッファの合計サイズが表示されます。ステージングメモリには、ユニフォームデータと、頂点バッファやテクスチャなどの GPU リソースの更新に使用される一時ストレージが含まれます。プラットフォームによっては、データのタイプごとに個別のバッファが使用されます。

    • Dispatch Count には、最新フレームで使用されたコンピュートディスパッチの数が表示されます。

    • Kanzi Graphics Objects には、作成された Kanzi Graphics オブジェクトの概要が表示されます。括弧内は、最新フレームで作成および削除されたオブジェクトの数です。

    • View Camera は、アプリケーション内でシーンを表示するために使用される Camera ノードの名前を示します。

    • Resource Memory Use は、Kanzi アプリケーションが使用するローカルGPUメモリ(VRAM)と非ローカルGPUメモリ(RAM)の推定量を表示します。

      Performance HUD が Kanzi Studio Preview に表示する値と、ターゲットデバイスで Kanzi アプリケーションを実行したときに表示される値が異なるのは、Kanzi Studio がアプリケーション内のすべてのリソースをロードしてメモリに保持するためです。

    • Timers は MainLoopScheduler に登録されているタイマーハンドラーの数を示します。タイマーハンドラーが多すぎると、アプリケーションのパフォーマンスが低下する可能性があります。タイマーの追加 を参照してください。

      Kanzi Engine APIで MainLoopScheduler::getTimersCount を呼び出すことにより、タイマーサブスクリプションの数にアクセスできます。

    • Recurring Tasks は、メインループスケジューラーのステージに追加されたタスクの総数を示します。Kanzi Engine はデフォルトでいくつかのタスクを追加します。反復タスクの追加 を参照してください。

      Kanzi Engine APIで MainLoopScheduler::getTasksTotalCount を呼び出すことにより、反復タスクの数にアクセスできます。

    • Animations には、Kanzi アプリケーション内のアクティブなアニメーションの数とアニメーションの総数が示されます。

      Kanzi Engine APIでアニメーションの数にアクセスできます。

  • Frame time HUD は、最新 500 フレームにおける Kanzi アプリケーションの次のフレームタイムインジケータを表示します。

    • Frame Duration (ms) には、最終フレームのレンダリングにかかった時間がミリ秒単位で表示され、平均時間、最長時間、最短時間も表示されます。

    • Frames Per Second には、1 秒間にレンダリングされるフレーム数が示されます。

    • Animation Duration (μs) は、アプリケーション内のすべてのアニメーションを最後のフレームで実行するのにかかる時間をマイクロ秒単位で示し、平均、最高、最低の時間も表示します。

Preview ログファイル

Kanzi Studio は Preview のログメッセージを %USERPROFILE%\AppData\Local\Temp\KanziStudioLogs\KanziPreview.log ファイルに保存します。

ログの詳細レベルを設定するには、<KanziInstallation>\Studio\Bin\KanziPreview.exe.config ファイルで logLevel キーの値を設定します。

  • NORMAL は Kanzi Studio を設定して、エラーや例外を含む通常の Kanzi Studio Preview フローをログに記録します。

  • VERBOSE は Kanzi Studio を設定して、Kanzi Studio と Preview の間のすべての低レベル通信をミリ秒単位の精度で記録します。

    ログレベルを VERBOSE に設定すると、大量のログメッセージが Kanzi Studio のパフォーマンスを低下させる可能性があります。

  • NONE は Kanzi Studio を設定して、KanziPreview.log ファイルにメッセージを記録しないようにします。

例えば、Kanzi Studio と Preview の間のすべての通信を記録するには、テキストエディタで KanziPreview.exe.config ファイルを開き、次のように設定します。

<add key="logLevel" value="VERBOSE"/>

KanziPreview.exe.config に変更を適用するには、KanziPreview.exe.config ファイルを保存し、Ctrl F8 を押して Preview を再起動します。Preview の制御 を参照してください。

Preview を再起動するたびに、Kanzi Studio は KanziPreview.log ファイルの内容を上書きします。

関連項目

アプリケーションのパフォーマンスのトラブルシューティング

Preview でアプリケーションを編集する

プレビュー (Preview)

無効なプロジェクトアイテムを見つける

ルーラーとガイドの使用