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

pilka_incremental

组合所有功能的粘合包

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 中使用

GPL-2.0-or-later

235KB
5.5K SLoC

pilka 🔩

Crates.io

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

可用功能

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

preview

如何使用

在当前状态下,pilka尝试查找包含shader.vertshader.frag文件的shaders文件夹,如果失败,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)

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。出于同样的原因,我没有使用 vulkanoeruptvulkanismvkvk

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

依赖项

~38MB
~854K SLoC