|0.7.11||Oct 22, 2022|
|0.7.9||Sep 12, 2022|
|0.7.8||Jun 11, 2022|
|0.7.4||Jan 26, 2022|
|0.3.1||Mar 13, 2021|
#60 in Rendering
165 downloads per month
Used in 4 crates (2 directly)
Pilka is a cross-platform live-coding tool for creating shader* demos, similar to Bonzomatic, KodeLife or sh4der-jockey.
- Saving shaders
- Taking screenshot
- Record video
- Compute pipeline for post processing
In current state
pilka tries to seek
shaders folder with the files
shader.frag, on fail
pilka will generate
default setup for you. Then open shader in your favourite code editor (VS,
emacs, vim, ed etc.) and
pilka would fetch changes after each save.
- F1: Print help
- F2: Toggle play/pause
- F3: Pause and step back one frame
- F4: Pause and step forward one frame
- F5: Restart playback at frame 0 (
- F6: Print parameters
- F7: Toggle profiler
- F8: Switch backend
- F10: Save shaders
- F11: Take Screenshot
- F12: Start/Stop record video
- ESC: Exit the application
- Arrows: Change
--record f32- Specify duration of recorded video
--size u32xu32- Specify window size and lock from resizing
--wgsl- Creates template for
You can select which backend to start with with the
Currently two backends are available: "wgpu" and "ash". If the value of the
variable is incorrect, the default backend "wgpu" will be rolled back.
Vulkan SDK is required.
On recent macOS, to allow sound input to be captured (for FFT textures to
be generated), you need to: Open up System Preferences, click on Security
& Privacy, click on the Privacy tab then click on the Microphone menu item.
pilka is in the list and ticked...
erm, probably. I don't have macOS.
cargo install pilka
You also can install the application by to downloading the source code and build locally.
# or through ssh firstname.lastname@example.org:pudnax/pilka.git git clone https://github.com/pudnax/pilka.git cd pilka cargo install --path .
winit is the "default" window library in Rust ecosystem. And it covers the most of cross-platform issues for you.
png is used to encode screenshots into png files.
notify is a file watcher and maintains the hot-reload.
shaderc is used to compile GLSL shaders on the runtime instead of opening a process with glslc or glslangValidator. I hope to switch to naga soon, when it's mature enough.
ash is a Vulkan bindings. I choose
ash because I see
pilka as a
learning project and want to touch the maximum untouched Vulkan. For the
same reason I didn't use
wgpu is save GPU abstraction over different graphics API like
Vulkan, Metal, OpenGL and used for primary backend aside of
puffin is scoped profiler written in Rust by EmbarkStudios and I baked it to
pilka for fast performance checking.
pollster is smol blocking executor and needed for eliminating
Ffmpeg is used to record videos. For my concerns it's temporary solution after which I switch to rav1e on it's release.
Places of inspiration (from where I steal code):
You can run any example by executing
pilka inside of the folder
cd examples/cube cargo run
|cube||cellular automata||line segment|
|dithering||circle pattern||menger sponge|
|path tracer||lasers||oblique slices|