METAL Freamwork
OpenGLに変わるレンダリングエンジン
A6チップ以降のデバイスから使用可能
El CaptainよりOSXにも対応
METAL とはOpenGLに変わるiOS、OSX専用のレンダリングエンジン。
OpenGLは多数の実行環境(OS)に対応しているため、命令系統が多岐にわたり処理が重くなっている。
MetalはiOS、OSX専用で作られているため処理速度を確保できている。
METAL OSXOpenGLと比較すると10倍の描画速度
レンダリングも50%高速化
ドローコールの高速化
El CaptainよりOSXに対応
Adobe Creative Cloudは8倍高速化
METAL iOSOpenGLと比較すると10倍の描画速度
ドローコールの高速化
モバイルバッテリー消費の軽減
A7以降のチップセット限定
CPU、GPUとのメモリー共有が可能
SetPassとは
レンラリングクラスからCPUで演算した結果をレンダリングエンジンに受け渡して描画する動作
描画対象は2D、3D全てが対象
UIであっても、パーティクルであっても、描画するためにCPUでの処理を飛び越えて描画される事はない
DrowCallとは
CPUの描画準備処理
CPU側からGPU側に描画内容を渡すための呼び出しの事で、OpenGLのglDrawElements()などが該当
イメージ
Render
GPU
OpenGLドライバ
CPU
Materialクラス
DrowCall
SetPass
描画速度を上げる
METAL対応にすれば確かに速度は確保出来る
しかし、描画速度をあげるだけでなく、描画のための準備も高速化する必要がある
SpriteKit、SceneKitを使用する事で改善できるか?
Metalセッション
What's New Metal, Part1
What's New Metal, Part2
Metal Perfomance Optimaization Techniques
Working with Metal:Advanced
What's New Metal, Part1
What's New Metal, Part1
Metal in Review New Features Metal App Thinning
Metalでは今まで必要としてたCPUパワーを大幅に削減し、ボトルネックを回避!
Metalを使う事により、より効率的なマルチスレッドを実現します。
今まではそれぞれの処理の脇でHigh-Efficiency GPU Accessを行っていましたが、最新のバージョンではShader(マテリアル)処理の統合を実現しているようです。
今回の発表で、iOSだけでなく、OSXでも使用可能になりました
そして、それらをサポートするためのツールも充実しています。
Metal OSXにおいては、私が使っているUnityのDebug画面にも最適化を及ぼすようです。 Unity側からMetalを使用した事例の提示があったようです。
Metal入門MTLDeviceの生成
CAMetalLayerの生成
Vertex Bufferの生成
Vertex Shaderの生成
Fragment Shaderの生成
Render Pipelineの生成
Command Queueの生成
Command Bufferの生成
Render Pass Descriptorの生成
Render Command Encoderの生成
OS XのMetal仕様 2012年以降のモデルであれば使用可能
iOSで仕様できるMetal仕様 iPhone5以降のデバイスで使用可能
Metal App Thinning
メモリサイズによる最適な テクスチャーフォーマット一覧
Xcodeでそれぞれのデバイスに合わせて指定が可能 →Jsonファイルで管理される
ビルド時は全てまとめてコンパイルされる なのでファイルサイズは肥大する
Demoを見せたかったのですが、 Xcord7がiOS8.4に対応していないでござる…