7 个版本 (4 个重大变更)
0.5.0 | 2021 年 8 月 31 日 |
---|---|
0.4.3 | 2021 年 4 月 1 日 |
0.3.1 | 2021 年 3 月 13 日 |
0.2.4 | 2021 年 2 月 24 日 |
0.1.0 | 2021 年 2 月 20 日 |
#383 in 渲染
80KB
2K SLoC
pilka 🔩
Pilka 是一个跨平台的实时编码工具,用于创建着色器*演示,类似于 Bonzomatic、KodeLife 或 sh4der-jockey。
可用功能
- 热重载
- 保存着色器
- 截图
- 录制视频
- 后处理计算管线
如何使用
在当前状态下,pilka
尝试查找名为 shaders
的文件夹,其中包含文件 shader.vert
和 shader.frag
,如果失败,pilka
将为您生成默认设置。然后,在您喜欢的代码编辑器(VS、emacs、vim、ed 等)中打开着色器,每次保存后,pilka
会获取更改。
控制
- F1: 打印帮助信息
- F2: 切换播放/暂停
- F3: 暂停并回退一帧
- F4: 暂停并前进一帧
- F5: 从帧 0 重新播放(
Time
和Pos
= 0) - F6: 打印参数
- F7: 切换分析器
- F8: 切换后端
- F10: 保存着色器
- F11: 截图
- F12: 开始/停止录制视频
- ESC: 退出应用程序
- 箭头键: 改变
Pos
参数
(per-draw-update)
名称 | 类型 | 范围 |
---|---|---|
位置 | vec3 | (-∞, ∞) |
时间 | float | [0, ∞) |
分辨率 | vec2 | [0, a] |
鼠标 | vec2 | [-1, 1] |
鼠标按下 | bool | |
帧 | uint | |
时间差 | float | |
记录周期 | float | |
前一帧 | 纹理 |
标志
--record f32
- 指定录制视频的持续时间--size u32xu32
- 指定窗口大小并锁定调整大小--wgsl
- 为wgsl
着色器创建模板
选择后端
您可以使用变量 PILKA_BACKEND
选择要启动的后端。目前有“wgpu”和“ash”两种后端可用。如果变量的值不正确,将回滚到默认后端“wgpu”。
需求
需要Vulkan SDK。
在最新的macOS上,为了允许捕获声音输入(以便生成FFT纹理),您需要:打开系统偏好设置,点击安全与隐私,点击隐私标签,然后点击麦克风菜单项。确保 pilka
在列表中并勾选……呃,可能吧。我没有macOS。
安装
cargo install pilka
您也可以通过下载源代码并本地构建来安装应用程序。
# or through ssh [email protected]:pudnax/pilka.git
git clone https://github.com/pudnax/pilka.git
cd pilka
cargo install --path .
依赖项
winit 是Rust生态系统中的“默认”窗口库。并且它覆盖了大部分跨平台问题。
png 用于将截图编码为png文件。
notify 是一个文件监视器,并维护热重载。
naga 用于在运行时编译GLSL着色器。
ash 是Vulkan绑定。我选择 ash
是因为我将 pilka
视为一个学习项目,并希望接触尽可能多的未被触及的Vulkan。出于同样的原因,我没有使用 vulkano
、erupt
、vulkanism
、vkvk
。
wgpu 是针对不同图形API(如Vulkan、Metal、OpenGL)的GPU抽象,并作为除 ash
之外的主要后端。
puffin 是由 EmbarkStudios 使用Rust编写的范围分析器,我将它集成到 pilka
中以快速检查性能。
pollster 是一个小的阻塞执行器,用于消除异步 wgpu
API。
Ffmpeg 用于录制视频。就我所知,这是一个临时解决方案,之后我将切换到 rav1e。
灵感来源(我从哪里偷代码)
示例
您可以通过在文件夹中执行 pilka
来运行任何示例
cd examples/cube
cargo run
cube | cellular automata | line segment |
---|---|---|
dithering | circle pattern | menger sponge |
path tracer | lasers | oblique slices |
依赖项
~38MB
~858K SLoC