#lisp #shader #glsl #reload #garden

bin+lib shadergarden

使用 Lisp 和 GLSL 创建不断演变的着色器花园

1 个不稳定版本

0.2.0 2021 年 9 月 8 日

#1049图形 API

MIT 许可证

7MB
2K SLoC

Rust 1.5K SLoC // 0.1% comments • Rust 包仓库 GLSL 576 SLoC // 0.1% comments • Rust 包仓库

shadergarden

Shadergraph 是一个用于构建热代码重新加载的着色器管道的工具。有关如何开始的教程,请参阅 入门博客文章shadergarden Lisp 语言文档

用法

通过 cargo install shadergarden 安装 shadergarden 后,通过运行以下命令来测试是否正确安装:

shadergarden --help

这将打印出一些用法信息。要创建一个新项目,请运行:

shadergarden new path/to/project

这将在新指定的目录中创建一个新示例项目。要运行 shadergarden,请切换到项目的目录并运行:

shadergarden run

这将打开一个新窗口并开始运行您的图。如果您想进行更改,请不要关闭窗口;相反,在您选择的编辑器中打开项目 - 图将在保存时更新。

如果在重新加载时遇到构建错误,shadergarden 将记录错误并继续执行旧图。

更高级的用法

您可以使用 - 标志将输入图像和视频传递给 shadergarden。此标志接受照片/视频的路径列表 - 您必须传递与在 shader.graph 中指定的 (input ...) 数量相同的输入照片/视频。

一旦您有了漂亮的 shadergarden,要渲染 png 序列,请使用 render 子命令。此子命令与 run 完全相同,但需要输出目录。要将生命游戏演示渲染为 gif,请运行:

mkdir out
shadergarden render demos/life -o out -s 30 -e 430
ffmpeg -i "out/frame-%4d.png" -framerate 30 life.gif

您应该看到类似这样的东西(它可能有点更复杂)

祝您编程愉快!

依赖关系

~23–35MB
~393K SLoC