Skip to content

Releases: linebender/vello

Sparse Strips v0.0.6

15 Jan 11:40
ead95f0

Choose a tag to compare

Sparse Strips v0.0.6 Pre-release
Pre-release

The 6th alpha version of the Vello Sparse Strips renderers (version 0.0.6) has been released.

This release has an MSRV of 1.88.
You can also follow the roadmap for Vello Sparse Strips.

Vello CPU

Vello CPU is our 2d renderer which doesn't use a GPU.
The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs

This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so might shows results from a slightly newer or older version than this tag).

Added

Changed

Vello Hybrid

This release is a minor release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.
Crates.io | Docs

This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesnโ€™t have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.

Changed

Vello Common

This release also contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.
Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.

Vello Sparse Shaders

This release also contains Vello Sparse Shaders, a support crate used by Vello Hybrid.
Crates.io | Docs

This crate also does not currently have any public API surface.

New Contributors

Full Changelog: sparse-strips-v0.0.5...sparse-strips-v0.0.6

v0.7.0

13 Jan 17:49
5779e81

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.88.

Changed

  • Breaking change: wgpu has been updated to wgpu 27. (#1280 by @theoparis)
    This has been chosen to match the version used by the upcoming Bevy 0.18.
    (Note that we do not guarantee that our latest release will always match Bevy's wgpu version.)
  • Breaking change: Allow setting Scene layer clip shape drawing style, adding even-odd filled path clipping and stroked path clipping to the various scene layer methods (Scene::{push_layer, push_luminance_mask_layer, push_clip_layer}). (#1332 by @waywardmonkeys, #1342 by @tomcur)
    When pushing a layer, you should use Fill::NonZero as the clip draw style to achieve the same behavior as previous versions.
  • Breaking change: Updated Peniko to v0.6.0. (#1349 by @DJMcNab)
    • This also updates Kurbo to v0.13.0.

Fixed

  • Bitmap emoji displayed at an incorrect position when scaled. (#1273 by @ArthurCose)
  • Miter joins for path segments with near-parallel endpoint tangents no longer cause rendering artifacts. (#1323 by @Cupnfish and @tomcur)

This release also coincides with the release of v0.7.0 of Vello Shaders:

Crates.io | Docs

and Vello Encoding:

Crates.io | Docs

New Contributors

Full Changelog: v0.6.0...v0.7.0

sparse-strips-v0.0.5

08 Jan 15:16
afe3ce3

Choose a tag to compare

sparse-strips-v0.0.5 Pre-release
Pre-release

The 5th alpha version of the Vello Sparse Strips renderers (version 0.0.5) has been released.
We expect to follow-up with v0.1.0 in the near future.
You can track this in #vello > Vello CPU v0.1 release.

This release has an MSRV of 1.88.

Hereโ€™s the roadmap for Vello Sparse Strips.

Weโ€™ve added CHANGELOG.md files to all the crates listed below.

Vello Common

This release contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.
Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.

Vello CPU

This release contains a number of additions such as support for non-isolated blending, clipping and masking as well as an initial experimental version of image filters. The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs

This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so might shows results from a slightly newer or older version than this tag).

Vello Hybrid

This release is the initial release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.
Crates.io | Docs

This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesnโ€™t have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.

Full Changelog: sparse-strips-v0.0.4...sparse-strips-v0.0.5

sparse-strips-v0.0.4

17 Oct 08:28
459e0a7

Choose a tag to compare

sparse-strips-v0.0.4 Pre-release
Pre-release

The 4th alpha version of the Vello Sparse Strips renderers (version 0.0.4) has been released.
We expect to follow-up with v0.1.0 in the near future.
You can track this in #vello > Vello CPU v0.1 release.

This release has an MSRV of 1.86.

Hereโ€™s the roadmap for Vello Sparse Strips.

Weโ€™ve added CHANGELOG.md files to all the crates listed below. Thereโ€™s no changelog for this release, but weโ€™ll start keeping detailed logs from the next one onward.

Vello Common

This release contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.
Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.

Vello CPU

This release contains only minor updates to Vello CPU, which runs entirely on the CPU. The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs

This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so might shows results from a slightly newer or older version than this tag).

Vello Hybrid

This release is the initial release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.
Crates.io | Docs

This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesnโ€™t have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.

Full Changelog: sparse-strips-v0.0.3...sparse-strips-v0.0.4

v0.6.0

03 Oct 15:56
03f1826

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.85.

Added

  • 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).
    This is a breaking change to Vello Encoding.
  • push_clip_layer, which replaces the previous push_layer using Mix::Clip, and has fewer footguns. (#1192 by @DJMcNab)
    This is not a breaking change, as Mix::Clip is still supported (although it is deprecated).
  • Support for BGRA format images (as input). (#1173 by @sagudev)

Changed

  • Breaking change: wgpu has been updated to wgpu 26. (#1096 by @waywardmonkeys)
    This has been chosen to match the version used by Bevy 0.17.
    (Note that we do not guarantee that our latest release will always match Bevy's wgpu version.)
  • Breaking change: Put wgpu's default features behind a wgpu_default feature flag. (#1229 by @StT191)
    If you're using Vello with default features enabled, then no change is needed.
  • Breaking change: Updated Peniko to v0.5.0. (#1224 by @DJMcNab)
    This brings several important changes which allow Vello to be used in more use cases:
    • Breaking change: Gradients must have their alpha interpolation space specified. For this, you should use InterpolationAlphaSpace::Premultiplied, unless you are implementing a specification which indicates otherwise.
      Currently, only InterpolationAlphaSpace::Premultiplied is supported.
    • Breaking change: 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.
    • Breaking change: 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).
    • Breaking change: vello::peniko::Font is now called vello::peniko::FontData.
      This type is also now provided by Linebender Resource Handle.
  • We now treat Vello's shaders as trusted for memory safety purposes. (#1093 by @sagudev)
    If you're using Vello in a security critical environment with user-controlled content, you should audit these shaders yourself, or open an issue to request that these bounds checks are re-enabled.

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.

Fixed

  • Examples crashing when window is resized to zero. (#1182 by @xStrom)
  • Correct flattening tolerance calculation from 2D affine transforms. (#1187 by @tomcur)
  • Zero-width strokes were previously treated as fills. (#785 by @DJMcNab)
  • Vello no longer writes to the console, instead outputting to log. (#1017 by @DJMcNab)

This release also coincides with the release of v0.6.0 of Vello Shaders:

Crates.io | Docs

and Vello Encoding:

Crates.io | Docs

New Contributors

Full Changelog: v0.5.0...v0.6.0

sparse-strips-v0.0.3

03 Oct 16:19
00a6e8a

Choose a tag to compare

sparse-strips-v0.0.3 Pre-release
Pre-release

The third alpha version of the Vello Sparse Strips renderers (version 0.0.3) has been released.
We expect to follow-up with v0.1.0 in the near future.
You can track this in #vello > Vello CPU v0.1 release.

This release has an MSRV of 1.86.

Vello CPU

This release contains only Vello CPU, which runs entirely on the CPU. The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs

This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so might shows results from a slightly newer or older version than this tag).

Vello Common

This release also coincides with the release of Vello Common, a support crate used by Vello CPU:
Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU.

We have not been maintaining a CHANGELOG for the sparse strips packages whilst they are in alpha, but you can follow the roadmap, or follow progress on Zulip.

Full Changelog: sparse-stips-v0.0.2...sparse-strips-v0.0.3

Sparse Strips v0.0.2

22 Sep 08:28
200ebf6

Choose a tag to compare

Sparse Strips v0.0.2 Pre-release
Pre-release

The second alpha version of the Vello Sparse Strips renderers (version 0.0.2) has been released.
We expect this to be the last release in the v0.0.x series, and expect to follow-up with v0.1.0 in the near future.
You can track this in #vello > Vello CPU v0.1 release.

This release has an MSRV of 1.86.

Vello CPU

This release contains only Vello CPU, which runs entirely on the CPU. The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs

This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so shows results from a slightly newer version than this tag).

Vello Common

This release also coincides with the release of Vello Common, a support crate used by Vello CPU:
Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU.

We have not been maintaining a CHANGELOG for the sparse strips packages whilst they are in alpha, but you can follow the roadmap, or follow progress on Zulip.

Full Changelog: sparse-strips-v0.0.1...sparse-strips-v0.0.2

v0.5.1

22 Aug 16:24
220817f

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.85.

Changed

This release also coincides with the release of v0.5.1 of Vello Shaders:

Crates.io | Docs

and Vello Encoding:

Crates.io | Docs

Full Changelog: v0.5.0...v0.5.1

Sparse Strips v0.0.1

09 May 21:31
e986f41

Choose a tag to compare

Sparse Strips v0.0.1 Pre-release
Pre-release

The first alpha version of the Vello Sparse Strips renderers (version 0.0.1) has been released. This is a new implementation strategy for Vello which has wider hardware compatibility, and resolves some performance cliffs.

This release has an MSRV of 1.85.

Vello CPU

This initial release contains only Vello CPU, which runs entirely on the CPU. The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs

This implementation is in very early stages, and does not have any API stability guarantees.

Vello Common

This release also coincides with the release of Vello Common, a support crate used by Vello CPU:
Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU.

We will not be maintaining a CHANGELOG for the sparse strips packages whilst they are in alpha, but you can follow the roadmap, or follow progress on Zulip.

v0.5.0

08 May 16:52
862bbc4

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.85.

Added

 RendererOptions { 
     // ...
+    ..Default::default()
 }

Removed

  • Breaking: Renderer::render_to_surface has been removed. (#803 by @DJMcNab)
    This API was not fit for purpose, as it assumed that you would only ever use a single window.
    The new recommended way to use Vello to render to a surface is to use 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()]);

Changed

  • Breaking: wgpu has been updated to wgpu 24. (#791 by @songhuaixu)
    This has been chosen to match the version used by Bevy 0.16.
    (Note that we do not guarantee that our latest release will always match Bevy's wgpu version)
  • Breaking: override_image has been updated to remove its use of Arc, as wgpu::Textures are now internally reference counted. (#802 by @DJMcNab)

This release also coincides with the release of v0.5.0 of Vello Shaders:

Crates.io | Docs

and Vello Encoding:

Crates.io | Docs

New Contributors

Full Changelog: v0.4.0...v0.5.0