🛻

Impellerとは何か?

2023/06/27に公開

東京.dartに参加したときに知った

Impellerという言葉をイベントで知って、調べてみました。

公式で解説があった!
https://docs.flutter.dev/perf/impeller

翻訳機能を使って日本語字幕出して見てました
動画の方が分かりやすいと思います。

https://www.youtube.com/watch?v=vd5NqS01rlA&t=3s

💁できるだけ短く解説すると

Impellerは、Flutterの新しいレンダリングランタイムを提供します。Flutterチームは、これによりFlutterの「早期発生のジャンク」問題が解決すると考えています。Impellerは、エンジンビルド時により小さく、単純なセットのシェーダーを事前にコンパイルするため、ランタイム時にはコンパイルされません。

Impellerの目標は以下の通りです:

予測可能なパフォーマンス: Impellerは、ビルド時にすべてのシェーダーと反射をオフラインでコンパイルします。すべてのパイプラインステートオブジェクトを最初からビルドします。エンジンはキャッシングを制御し、明示的にキャッシュします。
計測可能: Impellerは、テクスチャーやバッファなどのすべてのグラフィックスリソースにタグを付け、ラベルを付けます。フレームごとのレンダリングパフォーマンスに影響を与えることなく、アニメーションをキャプチャしてディスクに永続化することができます。
ポータブル: FlutterはImpellerを特定のクライアントレンダリングAPIに結びつけません。一度シェーダーを作成し、必要に応じてそれらをバックエンド固有の形式に変換することができます。
現代のグラフィックスAPIを活用: Impellerは、MetalやVulkanなどの現代のAPIの機能を使用しますが、それらに依存しません。
並行性を活用: 必要に応じて、Impellerは単一フレームのワークロードを複数のスレッドに分散することができます​1​。
Impellerの利用可能性については、iOSではデフォルトで有効になっています。一方、Androidについてはまだプレビュー段階ではなく、masterチャネルでは動作しない可能性があります。Androidでのサポートの進行方向を確認するために、3.7またはそれ以降の安定版でImpellerを試すことが推奨されています。

✅まとめ

短く解説すると、Impellerは、パフォーマンス向上とジャンク軽減を目指すFlutterの新エンジンです。
Flutterエンジンと呼ばれているものだったようですね😅

Discussion