I'm not sure there is much more relations to actual chemistry than what I put in the "Prerequisites" section. You can also look the Belousov-Zhabotinsky reaction, which is (at a very basic level) a real world instance of a reaction-diffusion system that acts similarly to this model.
Another commenter shared https://github.com/GollyGang/ready which may be what you have in mind. I clearly see the fun in building such a thing from scratch though, and I intend to make a simple web-based one. Let me know if you create a repo for you project, I'll make sure to take a look and try to contribute if I'm comfortable with the tech stack.
Edit : Ahah I just noticed the "other commenter" is you
Heheh indeed it was! - What I was saying above though is not just for exploring RDs but more for actually building things out of them!!
It's a rather out-there (non-serious) idea where all the usual 'stuff' of a GUI is actually made out of dynamically-simulated-CA/RD cells interacting with each other.
Let's say for example once one had developed some way to reliably simulate a dynamic but smooth and stable enclosed area with a boundary (like a bag?), well you could call that layer a 'window'-ish-type-thing and constrain the sub-simulations (ie the window-widgets) to only grow inside the window. Window-docking could perhaps have behavior a bit like bubbles-adhering-to-each-other as a natural outcome of the simulated-nature of them and wobbly-windows could be made to be a natural outcome of there being the wave-equation as one of the formulae being used, and other things like that.
It's definitely an out-there idea not really intended for regular-consumption but I think it could be super fun to explore especially for playful in-game-UI use-cases.
I just took a look at your Shadertoy profile and I liked it a lot
I want to try my hand at writing such a general case continuous cellular automata engine, but I first need to dive into the literature around Lenia, and this is only one of the many things I want to try...
Anyway, thanks for sharing your work. I took a quick look at your write-up and will definitely come back to it later.
Hey! I'm the author of this article and just noticed the huge traffic spike.
This was my first time writing a shader. I was just playing around on shadertoy when I realized I could implement this chemical model that has fascinated me for quite some time. I'm really happy with how well my results align with results from other people who have done this before me.
While writing the article, I noticed that the same kind of shader implementation has already been done before.
Feel free to ask me anything about the implementation or the chemical model
I've played with RD's especially Gray Scott a lot in Gollygang/Ready, and found some fascinating behaviours that I then brought into Houdini for visualisation, here's a couple of examples:
One thing that can help them to look nicer (in my opinion) is a reinterpretation of the reagent values as specific colours before display.. even something as simple as: pow(Uucolor,upow) + pow(Vvcolor,vpow) can be nice with well-picked ucolor&vcolor and powers. Other possibilities like hsv-to-rgb on the values can be pretty interesting too!
This reminds me of this other work[1], which is also a fascinating example of emergence from a dynamical system. Instead of a chemical reaction model, it's a model of slime mold growth, as a system of particles and some update rules. They haven't posted new work in a while, but you can still see many video renderings on their twitter[2] using variants of it that are absolutely mesmerizing.
Emergence is mesmerizing in the literal sense. For me, I think the fascination takes its roots in how all biology - from the apparition of life to how brain works - happens thanks to emerging behaviors.
Anyway, thanks for the share, it makes me want to try implementing it as well.
I considered trying to do something like this for CFD (specifically to see if I could show how lift is created by airflow over an airfoil). I got kind of stuck on it though and gave up, too far out of my area. Awesome to see others doing things like this though, feels like it’s an area ripe for exploitation!
I tried making fluid dynamics in a similar way right after making this, but I gave up as well. As far as I remember, I got stuck on managing non-miscible fluids (such as air and water) which introduces some edge cases where they meet.
The section you're referring to is meant to first give the update rule for the general-case of a reaction that is not autocatalytic.
I'm not sure what made you think it should have 4C, but if you want to explain me the reasoning that led you to this conclusion, I'd be glad to fix the article and make it clearer
The equation in that section for updating the concentration of C has a "4 * speed(t,x,y)" term, it seems like that should correspond to 4C in the reaction, especially because the equation for B has "-2 * speed(t,x,y)".
EDIT: Also, the text after the equations says "Notice that the numbers in front of speed(t) come from the quantities in the equation that summarizes the reaction."
I'd love to get your feedback (in Github discussions or issues, depending on your results), especially regarding the installation scripts. I somewhat tested them but did not take the time to start fresh and check if they actually take care of everything
Yeah, someone else mentioned this on reddit. When taking the time to think about it, I as surprised as you are that it worked. I'll update the post when I have more time to take care of all the things people suggested
I don't think that would allow me to seamlessly move workspaces and windows between monitors. From the top of my head, your suggestion would imply the Pi running it's own desktop environments and having its own input devices
I thought the point of an Xserver is that it has no input devices, it simply receives instructions about cursors and rectangles and text, no? Perhaps I do not understand X.
What i meant when mentioning input devices is that the Pi would have it's own cursor, and I would have needed to handle the forwarding of inputs from the laptop's X server to the Pi's. This would have been a lot more difficult as I would have had to forward the inputs to the Pi only when moving the cursor out to the Pi-controlled monitor.
Keep in mind that I'm writing this from the top of my head, without googling anything or experimenting with the setup we're talking about. It's totally possible that I'm wrong.
Anyway, the hard part in this project was optimizing everything. The first proof of concept stream was pretty straightforward to get. Getting a slow PoC of what you described should be kind of easy as well. I encourage you to experiment yourself with the setup you suggested, you'll learn a lot more than you could possibly learn by reading a writeup. If you ever try it out, I'd love to hear about how it went.