Weitere ähnliche Inhalte
Ähnlich wie Core Image Tips & Tricks in iOS 9 (20)
Mehr von Shuichi Tsutsumi (20)
Core Image Tips & Tricks in iOS 9
- 1. Core Image Tips & Tricks
in iOS 9
Shuichi Tsutsumi @shu223
iOS 9 Bootcamp(2015.10.7)
- 2. 自己紹介
• iOS専業フリーランスエンジニア
• ブログ『Over&Out その後』
• GitHub: shu223 『iOS-9-Sampler』
• 著書
- 「iOSアプリ開発 達人のレシピ100」
- 「iOS×BLE Core Bluetooth プログラミング」
• クラスメソッド田宮さんとは13年前の就活時にグループ面接で出会った
- 4年前、iOSの勉強会で偶然再開
- 昨年クラスメソッドに入社したとのことでランチ行った
- 60. いったん整理
• iOS アプリの UI においてブラーを用いた表現は重要
• ブラーにもいろいろある
• ブラー処理の肝である畳み込み演算処理は負荷が大きい
• 遷移アニメーション等、動的な処理が必要な場合、GPU
Acceleration が必須
- 64. iOS 7 以前
Core Graphics
CPUでの処理になるので当然重い
実装が面倒/自分で要最適化
OpenGLシェーダ CIKernelがまだないのでOpenGLの知識が必要
- 65. iOS 7 以前
Core Graphics
CPUでの処理になるので当然重い
実装が面倒/自分で要最適化
OpenGLシェーダ CIKernelがまだないのでOpenGLの知識が必要
vImage 実装が面倒/情報も少ない
- 66. iOS 7 以前
Core Graphics
CPUでの処理になるので当然重い
実装が面倒/自分で要最適化
OpenGLシェーダ CIKernelがまだないのでOpenGLの知識が必要
vImage 実装が面倒/情報も少ない
Core Image CIGaussianBlurしかない
- 67. iOS 7 以前
Core Graphics
CPUでの処理になるので当然重い
実装が面倒/自分で要最適化
OpenGLシェーダ CIKernelがまだないのでOpenGLの知識が必要
vImage 実装が面倒/情報も少ない
Core Image CIGaussianBlurしかない
UIToolBarを流用 邪道
- 68. iOS 7 以前
Core Graphics
CPUでの処理になるので当然重い
実装が面倒/自分で要最適化
OpenGLシェーダ CIKernelがまだないのでOpenGLの知識が必要
vImage 実装が面倒/情報も少ない
Core Image CIGaussianBlurしかない
UIToolBarを流用 邪道
GPUImage サードパーティ製/コードでかい
- 72. iOS 8
• CIKernel
- GPUで処理される高速フィルタを自作し、
CIFilterとして扱えるようになった
- Shading Language の知識が必要
- 73. iOS 8
• CIKernel
- GPUで処理される高速フィルタを自作し、
CIFilterとして扱えるようになった
- Shading Language の知識が必要
• UIEffect
- 74. iOS 8
• CIKernel
- GPUで処理される高速フィルタを自作し、
CIFilterとして扱えるようになった
- Shading Language の知識が必要
• UIEffect
- 「磨りガラス効果」が簡単にできるように
- 75. iOS 8
• CIKernel
- GPUで処理される高速フィルタを自作し、
CIFilterとして扱えるようになった
- Shading Language の知識が必要
• UIEffect
- 「磨りガラス効果」が簡単にできるように
- ただ明るい/暗いしか開発者は選択の余地が
ない(ぼけ具合すらコントロールできない)
- 78. iOS 9
• CIFilter
- CIBoxBlur
- CIDiscBlur
- CIMotionBlur
- CIZoomBlur
(Motion / Zoom は実際には 8.3 から)
- 83. → iOS 9 では、
• 多様なブラー(Box, Gaussian, Motion…)を
• 高速(by GPU)かつ
• 手軽(ビルトイン)に
利用できるようになった
- 99. カスタム画面遷移
• iOS 7 より、UINavigationController やモーダル表示によ
る画面遷移アニメーションを簡単に自作できるようになっ
た
- 103. カスタム画面遷移 × Core Imageトランジション
スナップショット取得
スナップショットに対して
Core Image のトランジションエフェクトをかける
- 123. Core Image × Metal
CIFilter のビルトインフィルタ(のいくつか)は Metal
Performance Shader を利用
- 124. Core Image × Metal
MTLTexture から CIFilter への直接入力、CIFilter から
MTLTexture への直接出力も可能に
- 127. • GLKit の GLKView ライクに、MetalKit の MTKView に
CIFilter の処理結果を直接描画可能に
→ Metal でフィルタをかけて Metal で描画!
- 128. まとめ
• iOS 9 では CIFilter にブラー系のビルトインフィルタがいくつか追
加された
- GPU で高速処理されるブラーフィルタが手軽に使えるように
なった!
- Apple も大好きなブラーを使った UI が実現しやすくなった!
• そんな Core Image のブラー系フィルタを画面遷移のカスタムアニ
メーションに使ってみるといいかも
• iOS 9 で追加された MetalKit および Core Image の Metal 連携でさ
らにヌルッとしたアニメーションを実現できるかも