インペラーレンダリングエンジン
インペラーとは何ですか?
Impeller は、Flutter 用の新しいレンダリング ランタイムを提供します。 Flutter チームは、これにより Flutter の問題が解決されると信じています。早期発症型ジャンク問題。 インペラは、より小さく、よりシンプルなシェーダーのセットエンジンのビルド時に実行されるため、実行時にコンパイルされません。
Impeller の紹介ビデオについては、以下をご覧ください。 Google I/O 2023 での講演。
Impeller の紹介 - Flutter の新しいレンダリング エンジン
インペラには次の目的があります。
- 予測可能なパフォーマンス: Impeller は、ビルド時にすべてのシェーダーとリフレクションをオフラインでコンパイルします。 すべてのパイプライン状態オブジェクトを事前に構築します。 エンジンはキャッシュを制御し、明示的にキャッシュします。
- 計測可能: Impeller は、テクスチャなどのすべてのグラフィックス リソースにタグとラベルを付けます。 そしてバッファー。 アニメーションに影響を与えることなく、アニメーションをキャプチャしてディスクに保存できます。 フレームごとのレンダリング パフォーマンス。
- ポータブル: Flutter は、Impeller を特定のクライアント レンダリング API に結び付けません。 シェーダーを一度作成して、バックエンド固有のシェーダーに変換できます。 必要に応じてフォーマットします。
- 最新のグラフィック API を活用: インペラは、で利用可能な機能を使用しますが、依存しません。 Metal や Vulkan などの最新の API。
- 同時実行性を活用する: インペラは単一フレームのワークロードを複数のフレームに分散できます。 必要に応じてスレッドを作成します。
可用性
インペラーはどこで使用できますか?
iOS
Flutter は、iOS でデフォルトで Impeller を有効にします。
-
に無効にするiOS 上の Impeller のデバッグ時、 合格
--no-enable-impeller
にflutter run
指図。$ flutter run --no-enable-impeller
-
に無効にするアプリをデプロイする際の iOS 上の Impeller、 最上位の下に次のタグを追加します
<dict>
あなたのタグ アプリのInfo.plist
ファイル。<key>FLTEnableImpeller</key> <false />
チームは iOS サポートの改善を続けています。
パフォーマンスまたは忠実度の問題が発生した場合
iOS 上の Impeller を使用している場合は、GitHubトラッカー。
問題のタイトルの前に次の文字を付けます[Impeller]
と
再現可能な小さなテストケースが含まれています。
アンドロイド
Android の開発は続けられていますが、プレビューの準備はまだ整っていません。
Android 上の Imeller は動作しない可能性があります。master
チャネル。
Android サポートがどのような方向に進むかを確認するには、
3.7 以降の安定版リリースで Impeller を試してください。
Android で Impeller を有効にするには、次のいずれかのアクションを実行します。
-
合格
--enable-impeller
にflutter run
指図。$ flutter run --enable-impeller
-
次のタグを
AndroidManifest.xml
ファイル 下<application>
鬼ごっこ。<meta-data android:name="io.flutter.embedding.android.EnableImpeller" android:value="true" />
建築
Impeller の設計とアーキテクチャの詳細については、 をチェックしてくださいREADME.mdソースツリー内のファイル。
追加情報
- よくある質問
- インペラの座標系
- Metal を使用して GPU フレーム キャプチャ用に Xcode をセットアップする方法
- GPU フレーム キャプチャの読み取り方法を学習する
- コマンドラインアプリのメタル検証を有効にする方法
- Open GL ES 2.0 における均一バッファの欠如を Impeller がどのように回避するか
- 効率的なシェーダーを作成するためのガイダンス
- Imeller での色のブレンドの仕組み