This crate contains the WESL programs and linked WGSL output, plus optionally generated GLSL shader programs, used by the Vello GPU renderer.
blurred_rounded_rect, full_image_support, and gradient_sweep features are enabled by default and include their respective shader paths.wgpu_external_texture feature (enabled by default) additionally embeds a WGSL variant of the render shader with a texture_external binding for wgpu::ExternalTextures. The generated GLSL never includes it.This crate provides linked WGSL programs and the build step for GLSL programs used by Vello GPU.
Whenever the WESL shaders are updated, the build script automatically relinks and minifies the WGSL. When the glsl feature is enabled, it also regenerates the minified GLSL programs and reflection metadata used by vello_gpu.
To inspect the generated WebGL GLSL and the embedded compiled_shaders.rs module used by vello_gpu, create local copies by running:
cargo run -p vello_gpu_shaders --features glsl
The generated files will be written into the generated_glsl folder.
To retain authored identifiers and Naga's readable formatting for debugging, enable the diagnostic unminified feature as well:
cargo run -p vello_gpu_shaders --features glsl,unminified
The WESL sources are formatted with wgslfmt using its default options (4-space indentation). wgslfmt is the formatter bundled with the wgsl-analyzer editor extension, so formatting a .wesl file from an editor with that extension produces the same result.
Install the pinned version (building it requires Rust 1.98.1 or later):
cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer --tag 2026-09-30 wgslfmt --locked
Format the shaders, or check them without modifying any files (CI runs the check on every pull request):
wgslfmt vello_gpu_shaders/shaders wgslfmt --check vello_gpu_shaders/shaders
In VS Code-based editors, the repository's workspace settings make wgsl-analyzer the default formatter for .wesl files; enable editor.formatOnSave for [wesl] to format on save.
This version of Vello GPU Shaders has been verified to compile with Rust 1.89 and later.
Future versions of Vello GPU Shaders might increase the Rust version requirement. It will not be treated as a breaking change and as such can even happen with small patch releases.
As time has passed, some of Vello GPU‘s dependencies could have released versions with a higher Rust requirement. If you encounter a compilation issue due to a dependency and don’t want to upgrade your Rust toolchain, then you could downgrade the dependency.
# Use the problematic dependency's name and version cargo update -p package_name --precise 0.1.1
Discussion of Vello GPU development happens in the Linebender Zulip, specifically the #vello channel. All public content can be read without logging in.
Contributions are welcome by pull request. The Rust code of conduct applies.
Licensed under either of
at your option.