The idea to put input energy via the mouse is nifty. Nice work!<p>I dont think vertex buffers are the ideal storage mechanism for lattice methods. I used Cuda to rasterize a plain buffer but I have two GPUs, the one doing the sim wasn't the one rendering. Its better this way if you are looking to run the sim 1000s of cycles per sec, but only render 60 fps. Theres a lot of extra data that could be eliminated by simply using a linear block of memory versus a vertex buffer. Depending on the goals for the sim, efficient rendering should be a lesser priority than efficient simulation speed.<p>Here are two very similar frameworks I made for exploring parallelizable lattice sims:<p><a href="https://github.com/churchofthought/HexagonalComplexAutomata" rel="nofollow">https://github.com/churchofthought/HexagonalComplexAutomata</a><p><a href="https://github.com/churchofthought/ScatterLife" rel="nofollow">https://github.com/churchofthought/ScatterLife</a>
(Note: the video is of a skewed version due to hexagonal lattice coords - this is fixed in the latest commits)<p>To OP, you may enjoy the study of transformation between Cellular Automata and Partial Differential Eqs.<p>The PDF below is a gem, a good introduction to the techniques that will allow you to take any reasonable PDEs and produce CAs that produce equivalent dynamics:<p>Cellular Automata,
PDEs, and
Pattern Formation
<a href="https://drive.google.com/file/d/13cT_BU8LAaUK4KTYFfhVSpCVCmrWCkDA/view?usp=drivesdk" rel="nofollow">https://drive.google.com/file/d/13cT_BU8LAaUK4KTYFfhVSpCVCmr...</a>