彩色流体实验台
原始提示词
见 完整原始输入。
运行与验证
- 入口:
index.html,纯静态单文件(HTML/CSS/JS/GLSL 内联),无后端、无 CDN,file://直接打开与 HTTP 托管均可。 - 操作:在画布上拖动注入颜色与动量(方向影响流向);颜色、注入力度、染料消散、压力迭代、涡旋强度、模拟分辨率(64-192)均可调;暂停/继续、清空、重置参数、PNG 截图。
- 实现:WebGL2 + 浮点渲染纹理(默认半精度 RGBA16F,float32 回退),Stam 稳定流体四步:平流(半拉格朗日)→ 散度 → 压力 Jacobi 迭代 → 速度投影,外加涡旋约束;染料随速度场平流并消散。
- 兼容处理:无 WebGL2/浮点纹理时页面显示明确提示(不出现空白页);上下文丢失自动等待恢复并重建 GPU 资源;显示画布上限 640×400、设备像素比按 1、模拟网格上限 192(任务要求的资源限制)。
验收记录(Playwright Chromium + SwiftShader,file:// 加载,2026-10-14)
- WebGL2 与浮点纹理初始化成功;注入后中心染料 > 0 ✓
- 拖动方向影响流动:向右注入 vel.x > 0,向左注入 vel.x < 0 ✓
- 染料与速度随时间演化:注入后 10 步平流把染料带向注入方向一侧 ✓
- 暂停后染料场完全静止(两次采样完全一致)✓
- 压力迭代次数影响计算(10/40/80 次结果互不相同)✓
- 清空移除已有流体 ✓;截图触发 PNG 下载 ✓
- 分辨率切换 128→160 后重建 GPU 资源并正常运行 ✓
- --disable-webgl 下显示明确提示而非空白页 ✓
- 移动端触摸注入可用、390px 无水平溢出、无 JS 错误 ✓
复盘
- 求解器按任务正文要求实现完整压力投影,未用粒子轨迹或渐隐画布替代;涡旋约束为额外增强。
- 验收过程中发现并修复的核心问题(见 run.json changes):平流 dt 双重缩放、涡旋反馈环、以及两个 SwiftShader 软件渲染缺陷的绕行(CSS 缩放画布与 RGBA32F LINEAR 采样导致上下文丢失/输出归零)。修复后全部验收通过。
- 已知简化:边界条件使用 CLAMP_TO_EDGE(近似自由滑移);压力用固定 Jacobi 迭代次数(无收敛判据,属该类实现的常规做法);半精度纹理的舍入在极端参数下可能引入细微噪声,不影响视觉与交互。
当前归档信息(自动生成)
- 实验 ID:
fluid-simulation--deepseek-v4-pro-0813-max-r01 - 模型:DeepSeek-V4-Pro-0813;推理档位:max
- 类型:single-html;预览:static;网络:offline
- 完整原始输入快照 · 主题与其他版本
- 输入记录:完整输入快照:用户总体指令(批量执行全部案例、模型名 DeepSeek-V4-Pro-0813、档位 max、使用当前会话)+ 任务正文 v1 逐字原文。会话未另开、未委派子代理。
- 工具:claude-code。Claude Code CLI 会话(Windows 11),用户指定模型名称为 DeepSeek-V4-Pro-0813;会话环境自报模型字符串 deepseek-v4-pro[1m]。推理档位 max(/effort 已设 max)。验收用 Playwright Chromium + SwiftShader 软件渲染(--enable-unsafe-swiftshader)加载 file:// 页面执行;注意:SwiftShader 冷启动时进程中第一个 WebGL 上下文会被 GPU 停顿看门狗丢弃,验收脚本用牺牲上下文预热后加载 demo(测试环境特性,非 demo 缺陷);另用 --disable-webgl 验证无 WebGL 提示。
- 运行方式:浏览器直接打开本目录入口;CDN/外部素材需要联网。
- 费用记录:Deepseek 批次合计 13.77 CNY(11 个案例;批次 deepseek-v4-pro-0813-max-2026-10-14;未记录单案例费用)
- 主页面
部署适配记录
- 首次生成后修复:平流通道的 uDt 错误地乘了网格尺寸(速度按 uv/秒 存储,注入时已换算),导致速度场一步飞出边界归零;改为直接使用 dt。
- 首次生成后修复:涡旋力原先直接读-写同一纹理(反馈环);改为先写入临时缓冲,再用加法通道累加回速度场。
- 首次生成后调整(软件渲染环境兼容):显示画布不使用 CSS 尺寸(SwiftShader 等环境对 CSS 缩放画布会丢失上下文),缓冲与显示尺寸合一、上限 640×400,设备像素比按 1 处理。
- 首次生成后修复:默认改用半精度浮点纹理(RGBA16F)+ LINEAR 滤波——SwiftShader 对 RGBA32F 的 LINEAR 采样返回 0;float32 仅作回退(EXT_color_buffer_float)且使用 NEAREST 滤波。
- 首次生成后调整:增加 webglcontextlost/webglcontextrestored 处理,上下文丢失时提示并在恢复后自动重建全部 GPU 资源(着色器、纹理、帧缓冲),正确释放与重建资源。
- 首次生成后调整:注入笔刷半径由 0.004×力度 调整为 0.05×力度(约 3-9 纹素),提升笔触可见度与演化效果。
- 迁移来源:F:/dev/ai-coding-demo-test/demos/fluid-simulation/runs/deepseek-v4-pro-0813-max-r01(分支 experiment/deepseek-v4-pro-0813,提交 90de279);保留源实验的已测试代码、完整输入快照与复盘记录。
- 迁移验收:通过本地 HTTP 页面补拍 1440×960 Edge 桌面截图;入口返回 HTTP 200、无页面脚本异常,390px 视口未发现页面横向溢出。
- 迁移截图通过在画布上拖动注入颜色与动量后拍摄,记录真实运行中的流体状态。
- 维护者于 2026-10-22 按 v3 对本轮桌面、手机及补充状态逐图重评并绑定 captures 证据;旧截图和 v2 评分见 catalog/score-reviews/2026-10-21-v3-source.json。未重跑模型或改写实验源码,截图不证明完整功能、算法、手势或性能。