Crates.io | wgsl-playground |
lib.rs | wgsl-playground |
version | 0.1.8 |
source | src |
created_at | 2021-05-25 17:33:17.510511 |
updated_at | 2023-10-04 17:38:03.11057 |
description | Playground for experimenting with WGSL fragment shaders with live-reloading. |
homepage | |
repository | https://github.com/paulgb/wgsl-playground |
max_upload_size | |
id | 401922 |
size | 285,194 |
This is a simple playground for playing with WGSL fragment shaders.
It is invoked by passing it a wgsl
file. The program then looks for a framgent shader called
fs_main
in the wgsl file provided and renders it across the window. This is similar to what
shadertoy does, except using WGSL instead of GLSL and on the desktop
rather than in your browser.
wgsl-playground
also watches the file for edits. Whenever you save the file, it rebuilds the pipeline
with the updated shader and swaps it into the redraw process.
Under the hood, it uses wgpu for rendering and naga for validation.
Note that WGSL is still an evolving spec. This tool is for people who want to learn some WSGL in its current form.
A number of examples shaders are in the examples
directory. The screenshot above shows the uniforms.wgsl
shader.
Install with cargo:
cargo install wgsl-playground
To run an existing .wgsl
file, pass it on the command line:
wgsl-playground myfragshader.wgsl
To create a new shader file, pass the -c
flag and the file name to create. This is useful because
it provides the boilerplate to access uniforms and vertex data.
The shader receives the following vertex input:
vec2<f32>
at location=0
.vec4<f32>
at builtin(position)
(i.e. equivalent to gl_Position
)The following uniforms are also available:
vec2<f32>
. Only updates if the mouse cursor is within the bounds of the window. Starts at (0.5, 0.5)
.f32
. It does not reset when the shader is reloaded.