/ not for distribution Flutterの従来のレンダリングエンジンSkia ・マルチプラットフォームに対応:OpenGL、Vulkan、Metalなど各種GPU API上で動作可能 ・豊富な描画方法:Vector、テキスト、画像など ・フィルターとエフェクト:Blur、色変換、影など
/ not for distribution Skiaの抱える問題 Since we currently pay a price (jank) each time a new shader is used, and since some animations end up using a lot of new shaders, one option would be to use less specialized shaders. If we had a static set of shaders, we could asynchronously compile them on program startup, so that by the time the application runs an animation we can use this static set and not stutter while we prepare a new one… ・Skiaにおいて、新しいシェーダー利用時のカクつきが問題 ->特にiOSでは、アプリを終了するたびにシェーダーキャッシュが削除される ->初めてアプリを起動した時と同じ待機時間が発生 ※シェーダー とは、頂点座標や色の計算をするための小さなプログラム
/ not for distribution Impellerの登場 Impeller:Skiaの弱点を補う+Flutterのためだけに最適化 ・ビルド時にシェーダーをコンパイル ->ランタイムですぐにシェーダーを使える ・画像などの素材、図形や色の情報を含むバッファにタグ付け ->内部の動きをモニタリングしやすい ・積極的な並列処理を活用 ->単一フレームのワークロードをより高速化 検証!
/ not for distribution 透明度のアニメーションには「AnimatdOpacity」よりも「FadeTransition」を使用する 透明度(opacity)をアニメーションさせる場合、 Impeller環境下でより効率的な動作を実現 AnimatedOpacity FadeTransition + AnimatedBuilder + Opacity
/ not for distribution ・Impellerはビルド時にシェーダーをコンパイルする ->描画にかかる時間を大幅に削減できる! ・Impellerを最大限活用するとき... ・FadeTransition:フェードのアニメーションを利用 ・RepaintBoundary:再描画する部分を限定 まとめ