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