9个版本
0.7.11 | 2022年10月22日 |
---|---|
0.7.9 | 2022年9月12日 |
0.7.8 | 2022年6月11日 |
0.7.4 | 2022年1月26日 |
0.6.7 | 2021年11月18日 |
#198 在 渲染
每月59次下载
在 pilka 中使用
52KB
1K 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)
名称 | 类型 | 范围 |
---|---|---|
位置 | 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是在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 |
![]() |
![]() |
![]() |
依赖项
~16–30MB
~445K SLoC