metal fluid simulation
DESCRIPTION
Metal Fluid Simulation iOS ブログでも解説しています http://wowdev.jp/?p=1380 Qiitaはこちら http://qiita.com/Ushio@github/items/3c206dd1e26195b7627fTRANSCRIPT
Metalで流体シミュレーション
自己紹介
吉村 篤 !
所属:WOW Twitter : @ushiostarfish Qiita : http://qiita.com/Ushio@github
ナビエ-ストークス方程式
※粘性率一定非圧縮
ナビエ-ストークス方程式
なので
もっと単純に考えよう
↓ 水
格子状に分割
格子状に分割
計算する場合 特定の1マスと 周囲の8マスに着目
①流体の量②速度
①流体の量②速度
①流体の量②速度
①流体の量②速度
①流体の量②速度
①流体の量②速度
①流体の量②速度
①流体の量②速度
①流体の量②速度
それぞれ流体の量と、速度を持つ
流体の量は速度によって変化する
速度 遅速度 早
水は増える!
【移流】
流体の量は速度によって変化する
速度 遅 速度 早
水は減る!
【移流】
流体の量によって圧力が発生
右向きの力!
流体 少流体 多
【圧力】
流体の量によって圧力が発生
左向きの力!
流体 少流体 多
【圧力】
近くの流体は隣に影響を受ける【粘性】
実装上はガウシアンブラー
処理フロー
移流
圧力
外力
減衰
粘性
流体同士以外の力
摩擦等
Metal
Metalだいじなポイント !
①三角形を効率よく描画できる ②並列計算を効率よくやる ③1と2がとってもシームレス
A7チップに最適化してるよ!
Metalのデモは何故こうだったか?
花びら並列計算シミュレーション
水面並列計算シミュレーション
蝶それぞれ並列計算シミュレーション
水面並列計算シミュレーション
どうやって使うの?
Metal API シェーダー
・C++11 ・Metal APIを通じて使う
・Swift or Obj-Cから呼ぶ ・OpenGLより扱い易い ・超低レイヤー ・低オーバーヘッド
描画ループ
テクスチャ計算シェーダー
更新処理
描画シェーダー CAMetalLayer
描画処理
今回の基本フロー
DEMO
細かいところはソースを参照!
https://github.com/Ushio/MetalFuildDemo
A7チップじゃないと動かないよ!