11个版本 (4个重大更新)
0.5.3 | 2021年9月3日 |
---|---|
0.5.0 | 2021年8月31日 |
0.4.5 | 2021年4月13日 |
0.3.3 | 2021年3月14日 |
0.1.0 | 2021年2月20日 |
#227 in 渲染
每月下载量 35次
在 2 crates 中使用
235KB
5.5K SLoC
pilka 🔩
Pilka是一个跨平台的实时编码工具,用于创建着色器*演示,类似于Bonzomatic、KodeLife或sh4der-jockey。
可用功能
- 热重载
- 保存着色器
- 截图
- 录制视频
- 后处理计算管道
如何使用
在当前状态下,pilka
尝试查找包含shader.vert
和shader.frag
文件的shaders
文件夹,如果失败,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)
name | type | range |
---|---|---|
position | vec3 | (-∞, ∞) |
time | float | [0, ∞) |
resolution | vec2 | [0, a] |
mouse | vec2 | [-1, 1] |
mouse_pressed | bool | |
frame | uint | |
time_delta | float | |
record_period | float | |
prev_frame | texture |
标志
--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 是一个在 Vulkan、Metal、OpenGL 等不同图形 API 之上的安全 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
~854K SLoC