建造小饰品

作者介绍了自己制作的一个名为 Bauble 的工具,它是用 Janet 语言在 2022 年编写的,用于在电脑上用数学生成图片。

Bauble 基于有符号距离函数(SDF),通过简单的数学表达式来塑造空间,作者认为它解决了 GLSL 中在处理 SDF 时的一些问题,如手动组合繁琐、缺乏数学优雅等。

Bauble 不仅是一种高级语言,还能更准确地表达作者对用 SDF 编写着色器的速度的不满,以及对能够交互地编辑形状、实时查看着色器更新等功能的需求。

作者在开发 Bauble 的过程中,不断添加新的功能,如动画、复杂的表面混合操作、高阶边界操作等,最终实现了自定义动态光照和软阴影等复杂效果。

然而,Bauble 也存在一些问题,如代码基础脆弱、是一个有限制的工具、缺少测试等,导致作者在后期停止了对它的开发。

两年后,作者重新开始对 Bauble 进行改写,这次他编写了 GLSL AST 库、类型化表达式语言、Janet DSL 等,还添加了 Janet 包装器和命令行界面,并编写了真正的测试套件。

新的 Bauble 具有很多改进,如使用“web workers”实现无滞后的复杂着色器编辑、可以导出 3D 模型并进行 3D 打印、可以在其他页面嵌入等,同时还有一个包含数百个交互式示例的参考页面,帮助用户了解和使用 Bauble。但它仍需要一个合适的教程。

阅读 8
0 条评论