#vulkan-graphics #vulkan #graphics #glsl-shader #shaders #creative #glsl

pilka_ash

Homebrew和可能不太出色的vulkan渲染器

20个版本

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.3.1 2021年3月13日

#133 in 渲染

Download history 15/week @ 2024-03-10 2/week @ 2024-03-17 35/week @ 2024-03-31 2/week @ 2024-04-07 5/week @ 2024-04-28 6/week @ 2024-05-19

86 每月下载次数
用于 4 个crate(2个直接使用)

MIT 许可证

165KB
4K SLoC

pilka 🔩

Crates.io

Pilka是一个跨平台的实时编码工具,用于创建着色器*演示,类似于 BonzomaticKodeLifesh4der-jockey.

可用功能

  • 热重载
  • 保存着色器
  • 截图
  • 录制视频
  • 计算管道用于后期处理

preview

如何使用

在当前状态下,pilka尝试寻找包含文件 shader.vertshader.fragshaders 文件夹,如果失败,pilka将为您生成默认设置。然后,在您喜欢的代码编辑器(VS、emacs、vim、ed等)中打开着色器,pilka会在每次保存后获取更改。

控制方式

  • F1: 打印帮助
  • F2: 切换播放/暂停
  • F3: 暂停并退回一帧
  • F4: 暂停并前进一帧
  • F5: 从第0帧重新开始播放(TimePos = 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。出于同样的原因,我没有使用 vulkanoeruptvulkanismvkvk

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
cube automata line
dithering circle pattern menger sponge
dithering pattern spoonge
path tracer lasers oblique slices
tracer lasers slices

依赖项

~7MB
~161K SLoC