The latest published Vello release is 0.6.0 which was released on 2025-10-03. You can find its changes documented below.
This release has an MSRV of 1.86.
This release has an MSRV of 1.86.
register_texture, a helper for using wgpu textures in a Vello Renderer. (#1161 by @DJMcNab)push_luminance_mask_layer, content within which is used as a luminance mask. (#1183 by @DJMcNab).push_clip_layer, which replaces the previous push_layer using Mix::Clip, and has fewer footguns. (#1192 by @DJMcNab)Mix::Clip is still supported (although it is deprecated).wgpu‘s default features behind a wgpu_default feature flag. (#1229 by @StT191)InterpolationAlphaSpace::Premultiplied, unless you are implementing a specification which indicates otherwise. Currently, only InterpolationAlphaSpace::Premultiplied is supported.Gradient kinds now have a corresponding struct. For example, GradientKind::Linear {...} is now LinearGradientPosition {...}.into(). This makes it possible to pass individual gradient kinds between functions.GradientKind::Sweep's defined semantics now match those which Vello previously implemented.Image has been renamed to ImageBrush, consisting of an ImageData and an ImageSampler. The equivalent to the old Image::new($data, $format, $width, $height) is ImageBrush::new(ImageData { data: $data, format: $format, width: $width, height: $height, alpha_type: ImageAlphaType::Alpha }) (or ImageData { ... }.into() if you don't need to set sampler parameters).vello::peniko::Font is now called vello::peniko::FontData. This type is also now provided by Linebender Resource Handle.The vello::peniko::Font type used in Vello used to be provided by the Peniko crate, and this was used as vocabulary types for font resources between crates. However, this means that when Peniko made semver-incompatible releases, crates which used this type could no longer (easily) interoperate. To resolve this, vello::peniko::FontData (which is the same type but renamed) is now a re-export from a new crate called Linebender Resource Handle. These types have identical API as in previous releases, but will now be the same type across Peniko versions.
log. (#1017 by @DJMcNab)This release has an MSRV of 1.85.
skrifa to 0.35.0 (#1169 by @nicoburns)This release has an MSRV of 1.85.
Default for RendererOptions. (#524 by @DJMcNab)RendererOptions { // ... + ..Default::default() }
Renderer::render_to_surface has been removed. (#803 by @DJMcNab)Renderer::render_to_texture to render to an intermediate texture, then blit from that to the surface yourself. We suggest using the TextureBlitter utility from wgpu. For users of the util module, it has been updated to create a suitable blit pipeline and intermediate texture for each surface.+let target_view = /* cached: device.create_texture(/* size of surface*/).create_view(...) */; - device.render_to_surface(..., &surface_texture, ...); + device.render_to_texture(..., &target_view, ...); +let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: Some("Surface Blit"), +}); +blitter.copy( + &device, + &mut encoder, + &target_view, + &surface_texture.create_view(&wgpu::TextureViewDescriptor::default()), +); +queue.submit([encoder.finish()]);
override_image has been updated to remove its use of Arc, as wgpu::Textures are now internally reference counted. (#802 by @DJMcNab)This release has an MSRV of 1.82.
This release has an MSRV of 1.82.
As part of an initiative to improve color handling across the ecosystem (and especially within Linebender crates), Vello is now using the new color crate. This is the first step towards providing richer color functionality, better handling of color interpolation, and more.
This release intentionally uses wgpu 23.0.1 rather than 24.0.0 so that it can match the version used in Bevy 0.15.
wgpu to 23.0.1 (#735, #743 by @waywardmonkeys)peniko and color is now used for all colors (#742 by @waywardmonkeys)color, the byte order of vello_encoding::DrawColor is changed (#758 by @waywardmonkeys, #796 by @tomcur).full feature is no longer present as the full pipeline is now always built (#754 by @waywardmonkeys)r8 permutation of the shaders is no longer available (#756 by @waywardmonkeys)buffer_labels feature is no longer present as the labels are always configured (#757 by @waywardmonkeys)i16 rather than skrifa::NormalizedCoord in the public API (#747 by @nicoburns)schemars feature (#733 by @ratmice)This release has an MSRV of 1.75.
Adapter from the utils DeviceHandle (#634 by @cfagot)wgpu::Textures into a Vello scene (#636, #655 by @DJMcNab, @TrueDoctor)AaSupport from a set of AaConfigs (#654 by @simbleau)Encoding for a scene can now be modified, circumventing guardrails for advanced use-cases (#701 by @timtom-dev)wgpu to 22.1.0 (#635 by @waywardmonkeys)run_app API from Winit (#626, #628 by @yutannihilation)vello. (#677 by @waywardmonkeys)Pipelines API from vello_shaders (#612 by @DJMcNab)wgpu_profiler profiler feature is no longer stable (#694 by @DJMcNab)Recording abstraction into a low_level module, as almost all users should prefer the higher-level Renderer (#711 by @DJMcNab)This release has an MSRV of 1.75.
wgpu to 0.20.1. (#631by @waywardmonkeys)This release has an MSRV of 1.75.
From<Encoding> for Scene. (#538 by @waywardmonkeys)vello_shaders crate to load and preprocess WGSL. (#563 by @armansito)#enable post-process directive. (#550 by @armansito)RenderContext::new() no longer returns a Result. (#547 by @waywardmonkeys)wgpu to 0.20. (#560 by @waywardmonkeys)force_rw_storage feature. (#540 by @armansito)draw_leaf uniformity. (#535 by @raphlinus)vello_encoding. (#573 by @armansito)path_reduced_scan buffer size. (#551 by @armansito)