文系プログラマの勉強ノート

スマホアプリ開発やデザインなどについて勉強したことをまとめています

『Metal入門』

iOS12でOpenGLが非推奨になりました。 Metalやってみるなら今かな、と思いこちらの本で少し勉強してみました。

booth.pm

本の内容については以下の記事をご参照ください。(著者ご本人による記事で、目次と冒頭部分の概略的なものが載っています) qiita.com


こちらの『Metal入門』、一般に流通している本ではなくいわゆる同人誌なのですが、現時点で3Dグラフィックス初心者が日本語でMetalを学ぶのに最適の本なのではないかと思います。

というのも、現時点で日本語でMetalの解説をしている本が(おそらく)他にありません。 Webでも英語がほとんどで、日本語の記事があってもSwiftのバージョンが古かったりMetalKit以前の内容だったりと、初心者がそのまま真似して動くコードではないものが多いです。 あとは、ある程度3Dグラフィックスプログラミングの知識がある前提の内容になっていたり。断片的な解説だと初心者にはつらい…。

こちらの本は現時点で最新の iOS 12, Xcode 10, Swift 4.2 対応。また、本当に入門的な基礎の部分を詳しく解説してくれているので、Metal学習の第一歩にとても良いと思います。

私は

「MTLCommandBuffer と MTLCommandQueue と MTLCommandEncoder って全部使うの?どう違うの?」

「シェーダってよく見かけるけど何?」

という状態からスタートしましたが、その辺もちゃんとわかるようになります。

内容がやさしい分、3つあるチュートリアルを終えてもできるようになるのは画像の表示と画面全体を単色で塗りつぶすところまで。具体的な図形を描くには別のWeb記事などを参照する必要があります。でも基本の考え方がわかった上で読むと大分理解しやすくなりました。

パフォーマンス改善のためのデバッグ方法、SceneKit、ARKitとの組み合わせ方など、発展的な内容も少し載っています。

この本を読んだ後には次のMetalチュートリアルをやってみました。三角形や立方体くらいは描けるようになったかな。raywenderlich.com のはpart5まであります。

www.gaprot.jp

www.raywenderlich.com


まぁでも、実際に使うなら2DならSpriteKit、3DならSceneKitを使う方が便利のようです。(これらのフレームワークは以前はOpenGLを使っていましたが、今はMetalに変わったようです)