实验室
船坞
流体模拟
自写 Navier-Stokes 求解器:ping-pong FBO、涡量约束、Jacobi 压力迭代——拖拽注入速度与染料。
手写整条流体管线,没有现成的流体库。
WebGL2 · GLSL · 零依赖


物理沙盒
Verlet 积分 + 空间哈希碰撞:点击生成小球、拖拽投掷、重力开关、弹性碰撞。
手写积分器与宽相碰撞,没有物理引擎。
Canvas 2D · Verlet · 零依赖


流场粒子
Curl noise 无散度流场:2500 粒子长拖尾、鼠标吸引/排斥切换。
手写 curl noise 场与粒子拖尾,没有粒子库。
Canvas 2D · Curl Noise · 零依赖


粒子系统
实时粒子模拟:数千粒子的鼠标斥力场与三维漂移,全部在 GPU 上完成。
手写了 GLSL 粒子更新与鼠标斥力,没有用 Three.js。
WebGL · GLSL · 零依赖


3D 形变
参数曲面 per-point morph:球→环面结→立方→波面,拖拽旋转、自动轮播。
手写参数曲面与 per-vertex morph,没有建模文件。
WebGL · ogl · 零依赖


Shader 调色台
实时 GLSL 噪声艺术:拖动滑杆调节色相、流速与湍流层数,每一帧都是实时计算。
手写 FBM 噪声 fragment shader 与参数绑定。
WebGL · FBM 噪声 · 零依赖


SDF 光线步进
通过距离场组合与切除球、盒和环面,实时调整形体、光源与材质,观察软阴影和反射。
距离函数、光线步进、法线估计、软阴影与单次反射均在 GLSL 中直接实现,不依赖三维引擎。
WebGL2 · GLSL · SDF


云间列车
日落云海中的悬索桥与蒸汽列车。分层高度场云、矢量栅格化的桥和车,可实时调整取景、速度与云层起伏。
片元着色器按 mdb《Up in the Cloud Sea》与 Tianxiu Zhou 的 WebGL 移植结构重写:蓝噪声采样、分层 FBM 高度场、列车与桥的矢量栅格化。参数绑定与页面接入在本地完成。
WebGL2 · GLSL · 蓝噪声


可撕裂布料
拖拽、剪断或固定布料节点,调整风力并开关圆形障碍,观察网格约束如何维持形状。
Verlet 积分、XPBD 距离约束、剪断判定与障碍碰撞在本地算法中直接实现,模拟通过 Web Worker 运行。
Canvas 2D · XPBD · Web Worker


Voronoi / Delaunay
添加、移动或删除采样点,实时查看 Voronoi 区域与 Delaunay 三角剖分如何随点集变化。
Bowyer–Watson 三角剖分与等距半平面裁剪均直接实现,分别生成三角网和有界 Voronoi 区域。
SVG · Bowyer–Watson · 半平面裁剪

