下面这块画布正在跑一条 1952 年提出的方程。没有贴图,没有素材, 每一帧的每个像素都是算出来的。拖动 feed / kill 两个滑块, 花纹的种类会整个变掉——珊瑚、迷宫、斑马、细胞分裂。
横轴 kill,纵轴 feed。那条蓝线是 k = √F/2 − F,九种花纹全部挤在这条线上下不到 0.01 的一条缝里。 往下偏一点就糊成均匀一片,往上偏一点就几秒内归于空白。点地图任意位置直接跳过去。
下面每一组数字都是在这个站上逐个跑出来、截图确认过的—— 网上流传的参数表里有几组在本站这套系数下直接归于空白,已经换掉。 点一下会重新播种,给它 3–10 秒长开。
一种叫 A,一种叫 B。B 会吃掉 A 把自己变多(A + 2B → 3B), 同时系统不停补充 A、不停清走 B。就这么两句话。
A 扩散得快,B 扩散得慢(本站取 2:1)。「局部自我放大 + 远处被抑制」——图灵 1952 年指出,这两条凑齐, 均匀的一锅汤就会自己失稳,长出稳定的空间花纹。
补料速度 feed 和清除速度 kill。整个花纹世界的种类全压在这两个数上, 而且真正有戏的取值挤在一条宽度不到 0.01 的缝里—— 这就是参数地图上那条蓝线两侧的窄带。
豹斑、斑马纹、河豚体表、珊瑚骨骼、贝壳花纹—— 生物学家在这些图案里反复验出同一套「激活—抑制」机制。 所以它不是像自然,是走了跟自然同一条路。
本站取 DA=1.0,DB=0.5,Δt=1.0,9 点拉普拉斯算子,画布四边环绕相接(所以存下来的图能无缝平铺当壁纸)。
日本图形程序员 Keijiro Takahashi(keijiro)用 Unity 的 CustomRenderTexture 写的反应扩散系统。GitHub 上 324 star、28 fork,2017 年建仓,2025 年 8 月仍在更新。 它以 Unlicense(公共领域)释出——法律上不要求署名, 但这站的每一行都是站在它的思路上做的,所以署名照给。
原项目要装 Unity 编辑器才能看到花纹演化;本站把同一个模型搬进浏览器, 用 WebGL2 双缓冲浮点纹理重写,点开就在动。
github.com/keijiro/RDSystem ↗模型本身是公开的成熟算法,无版权归属;本站代码 MIT。