后后记

shadertoy 能 60fps, WGPU 还是你大爷。
因为转化成了每个点各自并行。
bonus: 我发现了原参考书写错的地方.
为啥我能发现. 因为我把原书的落后工具用 glsl 实现了一遍, 提速 60 * 60 * 20 = 72000 倍.
落后工具需要 20 min 渲染全图, 我是即时出结果.
于是我就可以把测试集全跑一遍了.

最初写了个 牛顿迭代集,耗时 40s 渲染出结果。(和屏幕大小有关)
于是开始优化。(这个是优化到 13s 的成品)

减少封装的损耗

因为大量用了封装对象(自己写要么打开算(没有抽象,代码变一坨屎),要么自己封一层(那为啥不用内置的呢。 所以换一个封装很轻的 q5.js ,就提升了几倍的速度。
13s

改成 min.js

discord 有人提示用 min.js 版(默认版是开发环境的,报错很友好,但是速度慢,体积大)
30s

JS 写并行 + 读写锁

想到有很多 js 的在线处理工具,那它们怎么做到的呢?查了下 js parallel calculate ,发现有个 Web Worker。
搜了一下找到个 demo, 优化到 2.5s
平时负载
notion image
并行时
notion image
经网友测试,win 下效果(运行了 3 次)
notion image

去掉锁

因为每个 pixel 是独立的,所以可以分 batch 后拿到结果后直接渲染,去掉了锁后,秒出。

不是 RIIR 也不是 JS 的方案

然后发现了
直接写 shader,惹不起惹不起。

后记

老子就是不 RIIR。不是很想用 wasm
虽然 web worker 只能在浏览器里用,而且已经全支持了。
但是本地谁用 node 跑密集型计算啊,node 也有,但是写法不太一样。
直接 RIIR 多好。

一些坑

遇到了
查了一下,发现可以 move 的对象是有限制的。
 
 

Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9