#glsl-shader #wgpu #shaders #graphics #creative #glsl

pilka_wgpu

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

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渲染

Download history 9/week @ 2024-03-10 10/week @ 2024-03-31 1/week @ 2024-04-07

每月59次下载
pilka 中使用

MIT 许可证

52KB
1K 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)

名称 类型 范围
位置 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是在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

依赖项

~16–30MB
~445K SLoC