Skip to content

2.45.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:50
· 192 commits to master since this release

This release adds experimental inkbleed antialiasing to @rive-app/webgl2, along with angular (sweep) gradients, artboard paints, and a handful of fixes.

New

Inkbleed antialiasing (WebGL2 only)

Inkbleed is a new antialiasing mode in the Rive Renderer, offered as an alternative to MSAA. Opt in when creating the Rive instance:

import { Rive } from "@rive-app/webgl2";

const r = new Rive({
  canvas,
  src: "my-file.riv",
  enableInkbleed: true,
});

// Toggle at runtime (only works if enabled at construction)
r.inkbleed = false;

Notes:

  • It disables the canvas's native MSAA.
  • Fills that don't use the clockwise fill rule are converted to clockwise on a best-effort basis; worth checking for visual differences
  • Edges bleed out by about half a pixel, which is most noticeable on thin strokes.
  • It doesn't apply when using the shared offscreen renderer (useOffscreenRenderer: true).

Other additions

  • Angular (sweep) gradients
  • Painting with an artboard (artboard as a paint source)
  • String template data binding converter
  • Text input now blurs when pressing outside the focused field

Fixes

  • Deferred / GPU Canvas: only replay a canvas's last frame per session frame, and back a canvas before a paint samples its image
  • Mesh buffers now sync when a mesh samples a canvas image
  • Scripts without pointer handlers no longer block pointer hits
  • Variable font cache is cleared when the base font is null
  • Backwards states entered at their forward twin's end now play correctly
  • GL storage-texture polyfill fixes on Mali GPUs

Performance

  • Several renderer improvements: pixel bounds, cubic chopping, stroke cusps, per-verb path counts, draw sort ties
  • Text layout is solved once per change; runtime advance and keyframe apply are cheaper

Commits

  • fix(artemis): kit lanes build harfbuzz again (#14919) f6f6162502 28e6804
  • fix(rasc): deep review fixes across the compiler, frame gc, hosts and aot (#14805) 0964d166c2 c2239ea
  • fix(ore): run animascript in the web test player and take anisotropic samplers on webgpu (#14924) fb3c617552 c3de725
  • fix(housekeeping): Reformat with clang-format 19.1.7 (#14927) 49c42f3a86 fabeea4
  • perf(renderer): Make a ShaderFeature for angular gradients (#14826) 2fc1a52418 b2a926a
  • chore(c++): clang-format changes (#14883) c87e67374e ce87cb1
  • feat(d3d/12): inkbleed (#14855) e8230e6d6c aa2ea34
  • fix(deferred): replay only a canvas's last frame per session frame (#14913) d3495be515 839cbff
  • fix(ore): derive automatic layouts from a pipeline's own entry points (#14918) 0c99e9ed71 d2d0165
  • feat(text input): blur on a press outside the focused field (#14687) 315f0f8aa9 bf309ed
  • perf(layout): make a stack's cell the stack (minmax(0, 1fr)) (#14914) 5237e87d45 012d48a
  • perf(runtime): solve a text's layout once per change (#14905) ed4257407e 1b52c0b
  • feat: base support for Angular (sweep) gradients (#14841) 82759fe334 d0ea1ca
  • fix(vulkan): stop aborting when the loader fails extension enumeration (#14832) b04bcf8b50 7f4735b
  • fix(web): sync mesh buffers when a mesh samples a canvas image (#14894) f89f0962e1 7510399
  • perf(ore): stop stalling android frames on gpu canvas waits (#14879) ac444ea724 78100c3
  • perf(renderer): Track per-verb counts in RawPath (#14858) 8f26372882 f47103c
  • perf(renderer): Skip the full chop search for cubics that definitely don't need chops (#14859) 3054bea6d1 42a37c8
  • perf(renderer): Draw stroke cusps as full round joins (#14857) fddb30d8c4 0eebd28
  • perf(math): SIMD helpers, and faster float min/max on 32-bit ARM (#14860) eacb8fd4c6 5ae131e
  • fix(runtime): stop scripts without pointer handlers blocking pointer hits (#14650) 86830a1eaa f801525
  • perf(renderer): Pixel bounds calculation perf improvements (#14856) 68469c17f4 d3db11b
  • fix (runtime) Ensure that when a variable font is updated, if the base font is null the variable font cache is cleared. (#14861) 39d02d9083 7493154
  • CLI: add optional native REV authoring (#14708) 2690b5c2e6 1aba97f
  • fix(renderer): rotate and fence the GL storage-texture polyfill on Mali (#14846) cde30f8817 95b13f0
  • fix(scripting): stop the editor piling up script property wrappers, make untracking O(1) (#14854) b338e46bf8 6fe233b
  • feat(unreal) Rhi inkbleed support (#14796) 34aabd1345 b3a87d8
  • chore(renderer): Add ubershader pre-creation to GL render context (#14849) f652c01305 8692640
  • feat(runtime): add support for painting with an artboard (#14661) 7e93df692d 715388c
  • feat(renderer): Expose RenderContext::selectInterlockMode() (#14844) 7f0f87751a 0aaaf83
  • fix(core, runtime): stop script undo at its starting text and build editor runtimes again (#14836) ef0f2d25b2 742d4ac
  • feat(data-binding): string template converter (#14752) f00868b041 ff04f05
  • fix(deferred): back a canvas before a paint samples its image (#14819) 767340d959 59060e4
  • feat(renderer): Angular Gradients (#14792) 5700c26022 2a08e64
  • fix(CLI): library view models broke in the CLI (#14821) ee15f4de7a ccf8e74
  • perf(renderer): Break draw sort ties by draw index (#14755) 4efcefbc3c 239ee3a
  • fix(ore): refuse empty bind group entries and skip comments when placing entry points (#14804) 9e3eda5d8f 3cc71b2
  • CLI: add a font viewer with interactive character previews (#14788) 4827c3f7bf 594c0a2
  • feat(ore): catch what WebGPU rejects before it reaches the web (#14802) 280ddfd23e 1a56eb1
  • fix(runtime): play a backwards state entered at its forward twin's en… (#14795) 33cd3ae5c8 3ab3976
  • fix(scripting): release reaped handles after the frame collection (#14760) 8ba2c2772f 589b787
  • perf(runtime): sync selectable text over drawables, not every object (#14772) 22c7218f9b ebe5f02
  • fix(runtime): drop draw targets whose drawable doesn't resolve (#14771) 0c128612bf 0bcb5ac
  • fix(runtime): reclaim large script buffers at the next frame and pace chained async work (#14769) 4a48578cdd 1e36ddc
  • perf(runtime): collapsed components and keyframe applies (#14764) 815caccd33 2e48a85
  • feat(interpolators): Instance scripted interpolators per owner, shared down layout inherit… (#14732) 60a83e153a 85c09cc
  • perf(runtime): runtime performance improvements (#14761) fde0fe1f7b 0ae84d6