Language:
Page Info
Engine Version:

Invalidiation Box

この機能はまだ開発途中であり、実験的なものです。そのため、一部の機能は期待通りの動作をしない場合があります。

このページ中:

説明

Invalidation Box (無効化ボックス) でラップされているウィジェットでは、子ウィジェットのジオメトリをキャッシュして、スレートのレンダリングをスピードアップすることができます。Invalidation Box によってキャッシュされるウィジェットでは、Prepassed、 Ticked、または Painted が行われません。

一般的にプロジェクトを最適化する方法を考える場合、特定のウィジェットを Invalidation Box でラップすると、パフォーマンスが向上する場合があります (特に、モバイル プロジェクトや複雑な UI 表示)。あまり変化しないウィジェットは、ペイント、ティック、プリパス中に考慮する代わりに Invalidation Box 内に入れてキャッシュすることができます。

しかし、ウィジェットが変化すると、ボックスは無効になり、キャッシュを手動で無効化する必要があります。これは、実質的にボックスを破棄し、次のペイント パスで再描画を強制します。ウィジェットの外観を変えるものは何でも無効化する必要があります。この唯一の例外は、こうしたウィジェットの頂点バッファーに保存されない外観に対する変更です (例、マテリアル。マテリアル パラメーターの変更は、ウィジェットの無効化を必要としないからです)。

詳細

配置した Invalidation Box[Details (詳細)] パネルには、ウィジェットに関連して設定可能な以下のようなオプションがあります。

InvalidationBox.png

オプション

説明

Cache Relative Transforms

Invalidation box に相対的に子の描画エレメントの位置をキャッシュし、フレーム毎にそれらを描画する余分なオーバーヘッドを加えます。ただし、Invalidation box の位置がフレーム毎に変化する場合は、このオプションを使用すると大きな節約につながります。

Is Volatile

true の場合は、ウィジェットやその子のジオメトリまたはレイアウトの情報がキャッシュされないようにします。このウィジェットがフレーム毎に変化するが、それでも Invalidation panel に入れたい場合は、フレーム毎に無効化する代わりに volatile にします。これにより、Invalidation panel が実際に何かをキャッシュするのを防ぎます。

IsVolatile のチェック ボックスに関しては、どのウィジェットでも Volatile に設定することができます。Volatile ウィジェットは、通常のスレート ウィジェットの pre-invalidation のように機能します。これらはすべての子を含めてフレーム毎に再描画されます。Invalidation panel と組み合わせると、UI の非常に動的な部分だけを再描画することだけを配慮すればよくなります。パネル全体を無効化するほうがはるかに負荷が高くなるからです。

関数

Invalidation Box を使用する場合、C++ で Invalidate を呼び出すか、子ウィジェットで Invalidate Layout And Volatility ノード (以下の図) を呼び出して無効化を強制するかはユーザー次第です。

BPInvalidateNode.png

現在、特定のプロパティが変更された場合に、一部の中心的ウィジェットはこれを自動的に行います。将来的には、もっと多くのものがこれを行うようになるでしょう。

デバッグ作業

ウィジェット リフレクタ (CTRL+Shift+W) を使用して、Invalidation Debugging トグルをクリックして Invalidation Box をデバッグすることができます。

画像をクリックしてフルサイズで表示

ウィジェット リフレクタをアップし、Invalidation Debugging をオンにすると、以下が表示されます。

  • 白/赤点滅 - 無効化に対するウィジェットの反応です。

  • 緑色の枠 (ボーダー) - これは Invalidation Panel 用です(このフレームをキャッシュ)。

  • 赤色の枠 (ボーダー) - Invalidation Panel 用です (このフレームはキャッシュを無効化)。

  • 黄色の破線 - volatile ウィジェットを特定します。

ExampleDebugging.png

上の図は、Invalidation Box でラップされた枠内に Volatile とマークされた画像です。画像は Volatile とマークされているため、ゲームプレイ中に動的に更新することができます。これに対して Border (またはこの画像周囲に表示させたい変化しない他のアート アセット) はキャッシュされます。