Multiple-Neighbourhood Cellular Automaton
近傍を複数種定義し、それぞれの近傍に含まれるセルの状態に応じて次の状態を定めるようなセルオートマトン。大きく、円状の近傍を複数使うことで、ライフゲームよりも複雑でオーガニックな挙動を実現できる。 https://gyazo.com/10e07cfc565eb948d285c3b160dba6f1
JS で適当にエディタ/エミュレータ作って遊びたいな。。。
以下、WebGPU への挑戦
チュートリアルからの差分
MNCA にした
SmoothLife とかへの拡張を見越してセル状態 f32 で持つようにした
マウスによるインタラクションを足した
ダブルクリックでフルスクリーンにするようにした
triangle-strip 使って正方形の頂点数を 6 から 4 にした
それぞれ解説
MNCA 、やるだけ
セル状態 f32 へ、やるだけ
マウスによるインタラクション
X, Y, クリック状態(MouseEvent.buttons)を vec3f に詰めて uniform 変数として入れた
フルスクリーン
screen.width / height にするだけ
ワークグループ個数まわりの計算よくわかってない、、、
Math.ceil(Math.max(GRID_WIDTH, GRID_HEIGHT) / WORKGROUP_SIZE) としたが、過剰になる気がする
ウーム…
triangle-strip
createRenderPipeline のとき primitive を指定する