blob: bec08dc195725432d98f58bd6df267d6850f6a62 [file] [log] [blame] [view] [edit]
<!-- Instructions
This changelog follows the patterns described here: <https://keepachangelog.com/en/>.
Subheadings to categorize changes are `added, changed, deprecated, removed, fixed, security`.
-->
# Changelog
The latest published Vello release is [0.5.0](#050---2025-05-08) which was released on 2025-05-08.
You can find its changes [documented below](#050---2025-05-08).
## [Unreleased]
This release has an [MSRV][] of 1.85.
## [0.5.0][] - 2025-05-08
This release has an [MSRV][] of 1.85.
## Added
- Breaking: Support for pipeline caches. ([#524][] by [@DJMcNab][])
- Implement `Default` for `RendererOptions`. ([#524][] by [@DJMcNab][])
```diff
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`](https://docs.rs/wgpu/latest/wgpu/util/struct.TextureBlitter.html) 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.
```diff
+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::Texture`s are now internally reference counted. ([#802][] by [@DJMcNab][])
## [0.4.1][] - 2025-03-10
This release has an [MSRV][] of 1.82.
### Fixed
- Incorrect COLR Emoji Rendering ([#841][] by [@dfrg][])
## [0.4.0][] - 2025-01-20
This release has an [MSRV][] of 1.82.
### Highlights
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.
### Changed
- Breaking: Updated `wgpu` to 23.0.1 ([#735][], [#743][] by [@waywardmonkeys])
- Breaking: Updated to new `peniko` and `color` is now used for all colors ([#742][] by [@waywardmonkeys])
- Breaking: As part of the update to `color`, the byte order of `vello_encoding::DrawColor` is changed ([#758][] by [@waywardmonkeys][], [#796][] by [@tomcur][]).
- Breaking: The `full` feature is no longer present as the full pipeline is now always built ([#754][] by [@waywardmonkeys])
- The `r8` permutation of the shaders is no longer available ([#756][] by [@waywardmonkeys])
- Breaking: The `buffer_labels` feature is no longer present as the labels are always configured ([#757][] by [@waywardmonkeys])
- Breaking: Use a type alias for `i16` rather than `skrifa::NormalizedCoord` in the public API ([#747][] by [@nicoburns][])
### Fixed
- Offset in image rendering, and sampling outside correct atlas area ([#722][] by [@dfrg])
- Inference conflict when using Kurbo's `schemars` feature ([#733][] by [@ratmice][])
- Detection of PNG format bitmap fonts, primarily for Apple systems ([#740][] by [@LaurenzV])
- Support image extend modes, nearest-neighbor sampling and alpha ([#766][] by [@dfrg])
- Correct vertical offset for Apple Color Emoji ([#792][] by [@dfrg])
## [0.3.0][] - 2024-10-04
This release has an [MSRV][] of 1.75.
### Highlights
- Support for most Emoji ([#615][], [#641][] by [@DJMcNab])
- [GPU Friendly Stroke Expansion][stroke-expansion], which documents key parts of how Vello works, was released (by [@raphlinus], [@armansito])
- Blurred rounded rectangles are now supported, which can be used for box shadows ([#665][] by [@msiglreith][])
- Vello is no longer considered experimental 🎉 ([#691][] by [@waywardmonkeys])
Note that Vello is still an alpha, but we believe that the direction has been proven.
### Added
- Access to the `Adapter` from the utils `DeviceHandle` ([#634][] by [@cfagot][])
- Support for compositing existing `wgpu::Texture`s into a Vello scene ([#636][], [#655][] by [@DJMcNab], [@TrueDoctor][])
- Utilities for constructing an `AaSupport` from a set of `AaConfig`s ([#654][] by [@simbleau][])
- An example which uses sdl2 ([#671][] by [@TheNachoBIT][])
- The underlying `Encoding` for a scene can now be modified, circumventing guardrails for advanced use-cases ([#701][] by [@timtom-dev][])
### Changed
- Breaking: Updated `wgpu` to 22.1.0 ([#635][] by [@waywardmonkeys])
- Clipping more than four layers deep is now supported ([#657][] by [@DJMcNab])
- Significantly improved automated testing ([#610][], [#643][] by [@DJMcNab])
- Preliminary debug layers for Vello's internal development ([#416][] by [@armansito])
- Examples now use the [`run_app`][] API from Winit ([#626][], [#628][] by [@yutannihilation][])
- Labels on GPU objects are now prefixed with `vello.` ([#677][] by [@waywardmonkeys])
- The async render implementations are deprecated and unstable; you should use the non-async versions as they enable greater throughput ([#706][] by [@DJMcNab])
### Fixed
- Example code in the repository README ([#627][] by [@kmoon2437][])
- A possible crash on iOS working around an invariant undocumented by Apple ([#639][] by [@DJMcNab][])
- Large number of clips now work ([#659][] by [@raphlinus])
- Empty clips now no longer cause artifacts ([#651][] by [@raphlinus])
- A potential panic in the presence of a weaker than default allocator ([#675][] by [@timtom-dev][])
- Watertightness breaks causing artifacts with some rounded rectangles ([#695][] by [@raphlinus])
### Removed
- Breaking: `Pipelines` API from `vello_shaders` ([#612][] by [@DJMcNab])
- The `wgpu_profiler` profiler feature is no longer stable ([#694][] by [@DJMcNab])
- Breaking: Moved the `Recording` abstraction into a `low_level` module, as almost all users should prefer the higher-level `Renderer` ([#711][] by [@DJMcNab])
## [0.2.1][] - 2024-07-16
This release has an [MSRV][] of 1.75.
### Fixed
- Crash when there is no scene contents ([#630][]by [@DJMcNab])
### Changed
- Updated `wgpu` to 0.20.1. ([#631][]by [@waywardmonkeys])
- Document the MSRV of releases in the changelog ([#619][] by [@DJMcNab])
## [0.2.0] - 2024-06-08
This release has an [MSRV][] of 1.75.
### Added
- Euler spiral based stroke expansion. ([#496][] by [@raphlinus])
- Sweep gradients. ([#435][] by [@dfrg])
- Bump allocation estimation. ([#436][], [#454][], [#522][] by [@armansito])
- Impl `From<Encoding>` for `Scene`. ([#538][] by [@waywardmonkeys])
- Glyph hinting support. ([#544][] by [@dfrg])
- Better glyph caching. ([#555][] by [@dfrg])
- `vello_shaders` crate to load and preprocess WGSL. ([#563][] by [@armansito])
- Coverage-mask specialization. ([#540][] by [@armansito])
- Support for the `#enable` post-process directive. ([#550][] by [@armansito])
### Changed
- Better error types. ([#516][] by [@DasLixou])
- `RenderContext::new()` no longer returns a `Result`. ([#547][] by [@waywardmonkeys])
- Updated `wgpu` to 0.20. ([#560][] by [@waywardmonkeys])
### Removed
- `force_rw_storage` feature. ([#540][] by [@armansito])
### Fixed
- 64k draw object limit. ([#526][] by [@raphlinus])
- Increased robustness of cubic params. ([#521][] by [@raphlinus])
- Increased robustness of GPU shaders. ([#537][] by [@raphlinus])
- `draw_leaf` uniformity. ([#535][] by [@raphlinus])
- Bug in join estimates in `vello_encoding`. ([#573][] by [@armansito])
- Incorrect use of numerical operators on atomics in binning. ([#539][] by [@armansito])
- `path_reduced_scan` buffer size. ([#551][] by [@armansito])
- Handling of upstream pipeline failure. ([#553][] by [@armansito])
- Very slow shader compilation. ([#575][] by [@DJMcNab], [@waywardmonkeys])
- Full system hang on Apple systems. ([#589][] by [@raphlinus])
## [0.1.0] - 2024-03-04
- Initial release
[@raphlinus]: https://github.com/raphlinus
[@armansito]: https://github.com/armansito
[@cfagot]: https://github.com/cfagot
[@DasLixou]: https://github.com/DasLixou
[@dfrg]: https://github.com/drfg
[@DJMcNab]: https://github.com/DJMcNab
[@kmoon2437]: https://github.com/kmoon2437
[@LaurenzV]: https://github.com/LaurenzV
[@msiglreith]: https://github.com/msiglreith
[@nicoburns]: https://github.com/nicoburns
[@ratmice]: https://github.com/ratmice
[@simbleau]: https://github.com/simbleau
[@songhuaixu]: https://github.com/songhuaixu
[@TheNachoBIT]: https://github.com/TheNachoBIT
[@timtom-dev]: https://github.com/timtom-dev
[@tomcur]: https://github.com/tomcur
[@TrueDoctor]: https://github.com/TrueDoctor
[@waywardmonkeys]: https://github.com/waywardmonkeys
[@yutannihilation]: https://github.com/yutannihilation
[#416]: https://github.com/linebender/vello/pull/416
[#435]: https://github.com/linebender/vello/pull/435
[#436]: https://github.com/linebender/vello/pull/436
[#454]: https://github.com/linebender/vello/pull/454
[#496]: https://github.com/linebender/vello/pull/496
[#516]: https://github.com/linebender/vello/pull/516
[#521]: https://github.com/linebender/vello/pull/521
[#522]: https://github.com/linebender/vello/pull/522
[#524]: https://github.com/linebender/vello/pull/524
[#526]: https://github.com/linebender/vello/pull/526
[#535]: https://github.com/linebender/vello/pull/535
[#537]: https://github.com/linebender/vello/pull/537
[#538]: https://github.com/linebender/vello/pull/538
[#539]: https://github.com/linebender/vello/pull/539
[#540]: https://github.com/linebender/vello/pull/540
[#544]: https://github.com/linebender/vello/pull/544
[#547]: https://github.com/linebender/vello/pull/547
[#550]: https://github.com/linebender/vello/pull/550
[#551]: https://github.com/linebender/vello/pull/551
[#553]: https://github.com/linebender/vello/pull/553
[#555]: https://github.com/linebender/vello/pull/555
[#560]: https://github.com/linebender/vello/pull/560
[#563]: https://github.com/linebender/vello/pull/563
[#573]: https://github.com/linebender/vello/pull/573
[#575]: https://github.com/linebender/vello/pull/575
[#589]: https://github.com/linebender/vello/pull/589
[#610]: https://github.com/linebender/vello/pull/610
[#612]: https://github.com/linebender/vello/pull/612
[#615]: https://github.com/linebender/vello/pull/615
[#619]: https://github.com/linebender/vello/pull/619
[#626]: https://github.com/linebender/vello/pull/626
[#627]: https://github.com/linebender/vello/pull/627
[#628]: https://github.com/linebender/vello/pull/628
[#630]: https://github.com/linebender/vello/pull/630
[#631]: https://github.com/linebender/vello/pull/631
[#634]: https://github.com/linebender/vello/pull/634
[#635]: https://github.com/linebender/vello/pull/635
[#636]: https://github.com/linebender/vello/pull/636
[#639]: https://github.com/linebender/vello/pull/639
[#641]: https://github.com/linebender/vello/pull/641
[#643]: https://github.com/linebender/vello/pull/643
[#651]: https://github.com/linebender/vello/pull/651
[#654]: https://github.com/linebender/vello/pull/654
[#655]: https://github.com/linebender/vello/pull/655
[#657]: https://github.com/linebender/vello/pull/657
[#659]: https://github.com/linebender/vello/pull/659
[#665]: https://github.com/linebender/vello/pull/665
[#671]: https://github.com/linebender/vello/pull/671
[#675]: https://github.com/linebender/vello/pull/675
[#677]: https://github.com/linebender/vello/pull/677
[#691]: https://github.com/linebender/vello/pull/691
[#694]: https://github.com/linebender/vello/pull/694
[#695]: https://github.com/linebender/vello/pull/695
[#701]: https://github.com/linebender/vello/pull/701
[#706]: https://github.com/linebender/vello/pull/706
[#711]: https://github.com/linebender/vello/pull/711
[#722]: https://github.com/linebender/vello/pull/722
[#733]: https://github.com/linebender/vello/pull/733
[#735]: https://github.com/linebender/vello/pull/735
[#740]: https://github.com/linebender/vello/pull/740
[#742]: https://github.com/linebender/vello/pull/742
[#743]: https://github.com/linebender/vello/pull/743
[#747]: https://github.com/linebender/vello/pull/747
[#754]: https://github.com/linebender/vello/pull/754
[#756]: https://github.com/linebender/vello/pull/756
[#757]: https://github.com/linebender/vello/pull/757
[#758]: https://github.com/linebender/vello/pull/758
[#766]: https://github.com/linebender/vello/pull/766
[#791]: https://github.com/linebender/vello/pull/791
[#792]: https://github.com/linebender/vello/pull/792
[#796]: https://github.com/linebender/vello/pull/796
[#802]: https://github.com/linebender/vello/pull/802
[#803]: https://github.com/linebender/vello/pull/803
[#841]: https://github.com/linebender/vello/pull/841
[Unreleased]: https://github.com/linebender/vello/compare/v0.5.0...HEAD
<!-- Note that this still comparing against 0.4.0, because 0.4.1 is a cherry-picked patch -->
[0.5.0]: https://github.com/linebender/vello/compare/v0.4.0...HEAD
[0.4.1]: https://github.com/linebender/vello/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/linebender/vello/compare/v0.3.0...v0.4.0
<!-- Note that this still comparing against 0.2.0, because 0.2.1 is a cherry-picked patch -->
[0.3.0]: https://github.com/linebender/vello/compare/v0.2.0...v0.3.0
[0.2.1]: https://github.com/linebender/vello/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/linebender/vello/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/linebender/vello/releases/tag/v0.1.0
[MSRV]: README.md#minimum-supported-rust-version-msrv
[`run_app`]: https://docs.rs/winit/latest/winit/event_loop/struct.EventLoop.html#method.run_app
[stroke-expansion]: https://linebender.org/gpu-stroke-expansion-paper/
[`color`]: https://docs.rs/color/