tag: " metal "

画像をグレースケールへ変換する(Metal編)

概要

RGBのMTLTextureをグレースケールのMTLTextureに変換する方法

UIImageを変換する方法はこちらを参照

Read On →

Model I/Oでモデルをロード

MetalでModel I/O経由でモデルをファイルからロードする方法

公式サンプルよりもシンプルな方法

Read On →

Model I/Oで立体図形のメッシュを生成

概要

Metalで描画のテストなどでさくっとモデルを表示したい時に、Model I/Oを使って3Dのモデルを生成する方法

法線やUV座標も作ってくれるので地味に便利である

Read On →

Metalの座標周りのメモ

わりと間違いやすいので、Metalの座標周りのまとめ

Read On →

SceneKitでMetalのシェーダを利用する(SCNProgram)

Metalを使いたい場合にネックとなるのが、シーンの構築とかモデル・テクスチャの管理。 なので、その面倒な部分をSceneKitに任せたいという時の話。

今回は描画周りにMetalのシェーダを使うパターン。

Read On →

Metalによる砂のシミュレーションもどき

MetalのGPGPUによる大量のパーティクル処理能力を活かしたデモ。 パーティクルをそれぞれ砂の一粒に見立てており、上から落下してきた砂粒が山のように積みあがっていく様子をシュミレートしている。

なお、これも約26万パーティクルで60FPSを維持している。

動作イメージ

Read On →

MetalのGPGPUによるパーティクルデモ

読み込んだテクスチャをパーティクルに分解して動かすデモ。動きは滝のように画像がパーティクルに分解して落下していくのをイメージ。

画像サイズが512*512、1ピクセル=1パーティクルに分解するので、約26万個のパーティクルを動かしているが、60FPSを維持している。約100万まで増やすとiPhone6+で30FPSぐらいとなる。

そんなに複雑な計算をさせていないとはいえ、さすがGPGPUといったところ。なお、処理時間のほとんどはGPGPUの部分でCPUは余力がある様子。

動作イメージ

Read On →

Metal組み込み関数

Metalのシェーダで利用できる関数のまとめ

HLSL/GLSLは各言語との対比

  • (空白) : 同じ
  • ー : 該当なし
  • △ : 同等の関数があるが詳細が異なる
  • (関数名) : 挙動は同じだが、名前が別の関数がある

Read On →

MetalのGPGPUによるPerlinノイズ

GPGPUでリアルタイムにパーリンノイズを生成しテクスチャに書き込んで表示するデモ。

パーリンノイズはGPU Gems2の改良パーリンノイズで、それを元にした数種類を選択可能。 デモでは3次元ノイズを生成し、z値だけを時間で加算していきノイズを変化させている。

動作イメージ

Read On →

MetalKitのSwift版サンプル

元ネタのApple公式のMetalKitEssentialsをSwiftで書き直し+αしたもの。 内容は主にMetalKitを使って、obj形式のモデルをテクスチャありで表示させるだけ。 シェーダもいたってシンプルでライトもなし。
ちなみに、MetalKitはiOS9以降でしか使えないので注意。

Read On →