This release has an MSRV of 1.89.
Renderer::probe, with the probe feature. (by @LaurenzV)WebGlRenderer::begin_with_precompiled adopts the canvas, WebGL context, and shader programs set up by the JavaScript module in vello_gpu_shaders::webgl_bootstrap::JS_MODULE, so compilation can start before the WebAssembly module is downloaded and instantiated. Programs that can't be adopted are reported with WebGlError::IncompatiblePrecompiledShaders.WebGlRendererInit::is_ready for non-blocking readiness checks. WebGL initialization now flushes compile commands immediately, so compilation starts even if the caller keeps the main thread busy.clip_color for gray colors in the Color and Luminosity blend modes. (#2000 by @zlstringham)This release has an MSRV of 1.89.
As part of this release, “Vello Hybrid” has been renamed into “Vello GPU”.
unminified feature in vello_gpu_shaders for readable shader output. (#1851 by @grebmeg)WebGlRenderer::begin and begin_with. (#1823 by @grebmeg)Scene::push_clip_rect for non-isolated rectangular clipping. (#1916 by @LaurenzV)ImageSampler::alpha. (#1880 by @LaurenzV)vello_hybrid crate to vello_gpu. HybridGlyphRunBackend is now GpuGlyphRunBackend. (#1883 by @grebmeg, #1918 by @LaurenzV)wgpu to v30 and fearless_simd to v0.7.0. (#1909, #1853 by @LaurenzV)Scene::set_paint, replacing draw_texture_rects and adding support for arbitrary shapes, extend modes, and transparency hints. (#1812, #1813, #1824 by @LaurenzV)use_depth_buffer argument in WebGL. (#1808, #1810 by @grebmeg)TargetInit in wgpu and a clear color in WebGL. (#1869 by @LaurenzV)WebGlError results. (#1892 by @LaurenzV, #1921 by @grebmeg)RenderSize, RenderTargetConfig, atlas configuration, and related dimensions now use u16. (#1826, #1891 by @LaurenzV)atlas_texture takes an AtlasId. (#1859 by @LaurenzV)Scene::pop_clip_path to pop_clip. (#1942 by @LaurenzV)GlyphRunBuilder::fill_glyphs and stroke_glyphs now return Result<(), glifo::GlyphRenderError>. (#1944 by @LaurenzV)failIfMajorPerformanceCaveat. (#1806 by @LaurenzV)ImageQuality::Medium) instead of switching to bicubic sampling when downscaled. (#1970 by @LaurenzV)std feature no longer implicitly enables wgpu. (#1822 by @taj-p)sbix glyphs caused by the Apple Color Emoji workaround. (#1936 by @LaurenzV)sbix glyph placement caused by sign errors in bearing offsets. (#1939 by @LaurenzV)WEBGL_provoking_vertex support. (#1805, #1827 by @LaurenzV)This release has an MSRV of 1.88.
Scene::draw_texture_rects in the webgl backend, bringing it to parity with the wgpu backend. Textures are bound at render time through the new WebGlTextureBindings. (#1792 by @grebmeg)ProbeResult::statistics, ProbeStatistics, and ProbeFeature for diagnosing which renderer-probe features and pixels differ from the reference output. (#1779 by @LaurenzV)PROBE_ELEMENTS for inspecting the active features used by the WebGL compatibility probe. (#1801 by @LaurenzV)Renderer::new, Renderer::new_with, WebGlRenderer::new, and WebGlRenderer::new_with now return the renderer and its associated Resources as a tuple. Resources can no longer be constructed directly and must only be used with the renderer instance that generated it. (#1794 by @LaurenzV)Scene::new_with now takes a Level instead of RenderSettings. (#1794 by @LaurenzV)WebGlRenderer::render and WebGlRenderer::render_to_atlas now take WebGlTextureBindings, providing the external textures referenced by the scene. Pass &WebGlTextureBindings::new() if the scene does not use any. (#1792 by @grebmeg)IntermediateTextureError variants for oversized allocations and texture-count limits. (#1778 by @grebmeg)This release has an MSRV of 1.88.
invert parameter on Scene::fill_blurred_rounded_rect, enabling inset box shadows. (#1715 by @nicoburns)Resources::new_with_config for configuring the image and glyph atlas used by resources. (#1750 by @grebmeg)FilterPrimitive::DropShadowOnly for rendering a drop shadow without compositing the original input over it. (#1763 by @LaurenzV)Scene::reset_and_resize, allowing a scene to be reused after its target size changes. (#1769 by @LaurenzV)WebGlRenderer::probe is now asynchronous. It returns a WebGlPendingProbe, which can be polled with try_finish, avoiding a synchronous GPU-to-CPU readback stall and providing specific WebGL error codes on failure. (#1671, #1735 by @LaurenzV)RenderSettings now contains MemorySettings, with separate image-atlas and intermediate-layer configuration. SceneConstraints and RenderError::SlotsExhausted have been removed, and LayersConfig allows applications to limit and tune intermediate textures. (#1759 by @LaurenzV)webgl feature is enabled, including on non-Wasm targets. (#1682 by @jesses-canva)wasm-bindgen-related dependencies. (#1683 by @LaurenzV)u16 coordinates. (#1666 by @dipeshbabu)peniko::ImageData by computing and retaining its transparency hint during conversion. (#1760 by @tronical)This release has an MSRV of 1.88.
This release has an MSRV of 1.88.
Support for sampling from external textures through Scene::draw_texture_rects. (#1552 by @tomcur)
This method can sample many regions from a texture at once, allowing the texture to be used as an atlas. You bind the textures at render-time (as opposed to scene-construction time), allowing drawing of quickly-changing textures without interning them into the renderer.
External textures are not yet supported by the webgl backend.
Bicubic image sampling in the sparse shader path, improving high-quality image rendering. (#1557 by @waywardmonkeys)
WebGlRenderer::probe behind the probe feature to sanity-check WebGL device compatibility by rendering a small reference scene and comparing the output. (#1596 by @LaurenzV)
render_decoration on glyph run builders for rendering text decorations with skip-ink behavior. (#1592 by @taj-p)
Support for rendering VARC glyphs in text paths. (#1594 by @nicoburns, @oscargus)
Support for synthetic font emboldening in text glyph runs via GlyphRunBuilder::font_embolden and glifo::FontEmbolden. (#1628 by @jrmoulton)
wgpu to v29. (#1534 by @nicoburns)glifo; renderer resources are now managed through Resources, which must be passed to text, image upload, and render operations such as Scene::glyph_run, Renderer::render, and Renderer::upload_image. (#1562 by @LaurenzV)may_have_opacities and *_opacity_hint to may_have_transparency and *_transparency_hint. (#1613 by @upsuper)Renderer::destroy_image and WebGlRenderer::destroy_image now take &mut Resources instead of &mut ImageCache, allowing clients to destroy images through the public resource container. (#1580 by @LaurenzV)TextureBindings now owns wgpu::TextureViews, allowing bindings to be held across frames more easily. insert now takes a TextureView by value and remove returns the removed view if present. (#1639 by @tomcur)vello_api integration and api module. (#1602 by @waywardmonkeys)SceneConstraints::default_blending_only() now allows non-default blend modes inside nested layers, while still rejecting them on the root layer. (#1554 by @LaurenzV)RenderSettings::default() and oversized atlas settings to work on more devices. (#1568 by @LaurenzV)wgpu render targets are cleared before drawing, fixing stale pixels in transparent or untouched regions when rendering into reused offscreen targets. (#1572 by @waywardmonkeys)WebGlRenderer construction no longer leaks framebuffer state, fixing a panic when creating a second WebGL renderer. (#1603 by @LaurenzV)probe no longer enables std, and std no longer implies wgpu, preserving WebGL-only configurations. (#1614 by @LaurenzV)fill_rect calls, and blurred rounded rectangles. (#1565, #1586 by @LaurenzV, #1610 by @waywardmonkeys)This release has an MSRV of 1.92.
render_to_atlas and write_to_atlas APIs for glyph caching. (#1458 by @grebmeg)push_blend_layer, push_opacity_layer and push_mask_layer methods to Scene. (#1420 by @grebmeg)wgpu to v28. (#1492 by @xStrom)This release has an MSRV of 1.88.
See also the vello_cpu 0.0.6 and vello_common 0.0.6 releases.
This release has an MSRV of 1.88.
Scene now contains a push_clip_path and pop_clip_path method for performing non-isolated clipping. (#1203 by @LaurenzV)See also the vello_cpu 0.0.5 and vello_common 0.0.5 releases.
This release has an MSRV of 1.86.
This is the initial release. No changelog was kept for this release.
See also the vello_cpu 0.0.4 and vello_common 0.0.4 releases.