Skip to content

Releases: thorvg/thorvg

ThorVG 1.0.0-pre22

12 Jun 15:22
Compare
Choose a tag to compare
ThorVG 1.0.0-pre22 Pre-release
Pre-release

As we move closer to the ThorVG 1.0.0 milestone, this pre-release represents another significant step toward stabilization and refinement. Please review the release notes carefully, as this version includes behavior corrections, robustness improvements, and various internal fixes across multiple modules.

🔧 Renderer & Engines

  • [software] Improved stability by addressing a potential RLE clipping memory overflow issue.
  • [software] Fixed an issue where lines were missing when a picture was rotated 90 degrees. #3452
  • [software] Improved general texture mapping performance by up to ~15%.
  • [software] Revised texture clipping logic to correctly support shapes with inner corners. #3520
  • [gl/es] Fixed a memory leak triggered by target resizing. #3210
  • [gl/es] Corrected the Canvas buffer clear behavior to properly reflect user intent.
  • [wgpu] Achieved significant performance optimization by reducing internal context-switching overhead, and improving memory efficiency with the uniform stage buffers.

🌀 Lottie

  • [lottie] Fixed a bug in pre-composition masking behavior.
  • [lottie] Corrected an issue causing inaccurate opacity when using the Repeater property.
  • [lottie] Fixed a specification mismatch when a null layer was applied to layer masking.

🧩 API/ABI Changes

  • C++ API
+ Shape* Paint::clip()
* Result Paint::clip(Paint* clipper) 
  -> Result Paint::clip(Shape* clipper)
  • C API
+ Tvg_Paint* tvg_paint_get_clip(const Tvg_Paint* paint)
* Tvg_Result tvg_paint_clip(Tvg_Paint* paint, Tvg_Paint* clipper) 
  -> Tvg_Result tvg_paint_set_clip(Tvg_Paint* paint, Tvg_Paint* clipper);

✅ Additional Notes

  • Removed all Lena resources previously used in ThorVG. #3499

Full Changelog: v1.0-pre21...v1.0-pre22

ThorVG v0.15.13

24 May 05:36
Compare
Choose a tag to compare

This release includes several improvements and minor bug fixes:

🔧 Renderer & Engines

  • [renderer] Fixed an issue with clipping updates. #3403
  • [software] Fixed a memory allocation issue for spans that could potentially cause a buffer underrun. #3461

🌀 Lottie

  • Removed an undesired Text embedded option that was unintentionally included, simplifying configuration. thorvg/thorvg.swift#6
  • Correctly handle time remapping when the value is zero.
  • Resolved incorrect point generation for polygons with rounded corners. #2629
  • Fixed a parsing issue with separately defined transform coordinates.
  • Corrected improper overrides for Text RangeSelector fill color, stroke color, and stroke width.

🖼️ SVG

  • Fixed an issue where tags were incorrectly registered under closed gradient definitions. #3469
  • Fixed clipping issues involving and nodes. #3392

🌍 Portability

  • Clarified variable scopes to improve platform compatibility. godot#105093

✅ Additional Notes

  • Improved internal safety of the loaders

Full Changelog: v0.15.12...v0.15.13

ThorVG 1.0.0-pre21

22 May 14:47
Compare
Choose a tag to compare
ThorVG 1.0.0-pre21 Pre-release
Pre-release

As we move closer to the ThorVG 1.0.0 milestone, this pre-release marks another important step toward stabilization and refinement. Please review the release notes carefully, as this version includes behavior corrections, robustness improvements, and internal fixes across modules.

🔧 Renderer & Engines

  • [renderer] Improved internal safety across rendering engines.
  • [software] Fixed memory allocation issue for spans that could cause buffer underruns. #3461

🌀 Lottie

  • Added support for firstMargin < 0 in text-follow-path scenarios, improving compatibility with advanced text layouts.
  • Removed an undesired Text embedded option that was unintentionally included, simplifying configuration. thorvg/thorvg.swift#6
  • Correctly handle time remapping when the value is zero.
  • Resolved incorrect point generation for polygons with rounded corners. #2629

🖼️ SVG

  • Fixed an issue where tags were incorrectly registered under closed gradient definitions. #3469

Full Changelog: v1.0-pre20...v1.0-pre21

ThorVG 1.0.0-pre20

08 May 14:59
Compare
Choose a tag to compare
ThorVG 1.0.0-pre20 Pre-release
Pre-release

As we move closer to the ThorVG 1.0.0 milestone, this pre-release marks a critical step toward final stabilization. Please review these release notes carefully, as API/ABI changes are included. This version also brings numerous enhancements and bug fixes since v1.0.0-pre19.

🔧 Renderer & Engines

  • [renderer] Optimized internal memory layout for improved performance. #3214
  • [renderer] Fixed an issue with clipping updates. #3403
  • [software] Improved full-opaque color accuracy when handling PNG pre-multiplication.
  • [gl/es] Added support for DropShadow effects. #3054
  • [gl/es] Enabled dynamic linking support for OpenGL/OpenGL ES. #2453
  • [wgpu] Corrected DropShadow alpha premultiplication.
  • [wgpu] Updated compatibility with wgpu_native v22. #2909
  • [wgpu] Fixed an issue with target texture updates not applying correctly.

🌀 Lottie

  • Corrected incorrect Stroke Join values for Offset Path.
  • Properly handles delimiter (\3) in Lottie Text strings.
  • Fixed a parsing issue with separately defined transform coordinates.

🖼️ SVG

  • Fixed clipping issues involving <use> and <symbol> nodes. #3392

🌍 Portability

  • Clarified variable scopes to improve platform compatibility. godot#105093
  • Fixed compilation/linking issues related to LottieAnimation destructors in thorvg_lottie.h.

🧩 API/ABI Changes

C++ API

- Result Initializer::init(uint32_t threads, CanvasEngine engine)
+ Result Initializer::init(uint32_t threads)
- Result Initializer::term(CanvasEngine engine)
+ Result Initializer::term()

C API

- Tvg_Result tvg_engine_init(Tvg_Engine engine_method, unsigned threads)
+ Tvg_Result tvg_engine_init(unsigned threads);
- Tvg_Result tvg_engine_term(Tvg_Engine engine_method)
+ Tvg_Result tvg_engine_term()

+ Tvg_Mask_Method::TVG_MASK_METHOD_ADD
+ Tvg_Mask_Method::TVG_MASK_METHOD_SUBTRACT
+ Tvg_Mask_Method::TVG_MASK_METHOD_INTERSECT
+ Tvg_Mask_Method::TVG_MASK_METHOD_DIFFERENCE
+ Tvg_Mask_Method::TVG_MASK_METHOD_LIGHTEN
+ Tvg_Mask_Method::TVG_MASK_METHOD_DARKEN

🛠️ Infrastructure

ThorVG now supports dynamic OpenGL/OpenGL ES linking and changed our build configuration to specify the opengl variants explicitly by users. To use a specific GL variant during build:

# For OpenGL
meson setup build -Dengines="gl"

# For OpenGL ES
meson setup build -Dengines="gl" -Dextra="opengl_es"

✅ Additional Notes

Several minor bugs and regressions were also resolved as part of this release.

Full Changelog: v1.0-pre19...v1.0-pre20

ThorVG 1.0.0-pre19

10 Apr 13:28
Compare
Choose a tag to compare
ThorVG 1.0.0-pre19 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre18.

  • [Lottie] Added support for wiggle and temporalWiggle expressions. #1640
  • [Lottie] Fixed incorrect Stroke Join and Cap value assignments.
  • [Lottie] Corrected improper overrides for Text RangeSelector fill color, stroke color, and stroke width.
  • [Lottie] Introduced support for Custom Layer Effects. #3115
  • [Lottie] Resolved a regression issue affecting Inverse Matte handling during main development. #3375 #3380 #3381 #3382
  • [Lottie] Improved stability for Follow TextPath functionality.
  • [Renderer] Enhanced thread safety for better stability.
  • [Renderer] Fixed incorrect AABB (Axis-Aligned Bounding Box) calculations for transformed scenes.
  • [GlEngine] Added support for Gaussian Blur as a post-processing effect. #3054
  • [GlEngine] Added support for Fill, Tint, and Tritone post-processing effects. #3054

Please note that ThorVG renamed tool executables with the tvg prefix for preventing name collision. #3367

Full Changelog: v1.0-pre18...v1.0-pre19

ThorVG v0.15.12

03 Apr 23:29
Compare
Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Improved thread safety during font loading. (#3306)
  • [Renderer] Fixed a crash caused by extremely small stroke dash sizes. (#3332)
  • [SwEngine] Resolved a crash due to out-of-bounds image access.(#3327)
  • [GlEngine] Corrected the Luma Masking equation. (#3045)
  • [Lottie] Added support for wiggle effect. (#1640)
  • [Lottie] Improved the safety and compatibility.
  • [Ttf] Improved thread safety. (#3165)
  • [Svg] Added support for embedded fonts. (#1897)

Full Changelog: v0.15.11...v0.15.12

ThorVG 1.0.0-pre18

27 Mar 16:52
Compare
Choose a tag to compare
ThorVG 1.0.0-pre18 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre17.

  • [Renderer] Improved thread safety during font loading. #3306
  • [Renderer] Fixed a crash caused by extremely small stroke dash sizes. #3332
  • [SwEngine] Resolved a crash due to out-of-bounds image access. #3327
  • [GlEngine] Corrected the Luma Masking equation. #3045
  • [Lottie] Added experimental support for Interactive Lottie Expressions.
  • [Lottie] Added support for Text Document Expressions. #3303
  • [Lottie] Enhanced feature coverage and fixed several regression bugs from recent updates.
  • [Web] Fixed broken build environments for both SW and GL backends. #3356
  • [API Additions]
//C++ APIs (Experimental Ver.)
Result LottieAnimation::assign(const char* layer, uint32_t ix, const char* var, float val);

//C APIs (Experimental Ver.)
Tvg_Result tvg_lottie_animation_assign(Tvg_Animation* animation, const char* layer, uint32_t ix, const char* var, float val);
Tvg_Accessor* tvg_accessor_new();
Tvg_Result tvg_accessor_del(Tvg_Accessor* accessor);
Tvg_Result tvg_accessor_set(Tvg_Accessor* accessor, Tvg_Paint* paint, bool (*func)(Tvg_Paint* paint, void* data), void* data);

Full Changelog: v1.0-pre17...v1.0-pre18

ThorVG 1.0.0-pre17

20 Mar 14:29
Compare
Choose a tag to compare
ThorVG 1.0.0-pre17 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre16.

  • [Renderer] Added APIs to query a paint's parent.
  • [Renderer] Revised the AABB bounding box calculation to apply only to transformed shapes.
  • [SwEngine] Fixed incorrect RLE cell positioning that caused rendering artifacts. #2657
  • [WgEngine] Fixed a crash occurring in a clipping corner case. #3289
  • [Lottie] Added support for Text Follow Path. #2888
  • [Lottie] Improved handling of carriage returns with local fonts. #3310
  • [Lottie] Enhanced Slots for better expression overriding. #3168
  • [Lottie] Fixed minor memory leaks in the Slot feature.
  • [SVG] Fixed incorrect assignment of <stop> elements. #3321
  • [SVG] Added support for embedded fonts. #1897
  • [Portability] Ensured compatibility with C++20 builds.
  • [Portability] Improved WASM build portability by addressing thread dependency issues.
  • [Portability] Used the default constructor for Array to ensure compatibility with wasm-bindgen compilation.
  • [C++ API Addition]
const Paint* Paint::parent() const
  • [C API Addition]
const Tvg_Paint* tvg_paint_get_parent(const Tvg_Paint* paint)
  • [C API Modification]
Tvg_Result tvg_paint_set_clip(Tvg_Paint* paint, Tvg_Paint* clipper)
 -> Tvg_Result tvg_paint_clip(Tvg_Paint* paint, Tvg_Paint* clipper)

Full Changelog: v1.0-pre16...v1.0-pre17

ThorVG v0.15.11

12 Mar 20:44
Compare
Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Fix potential memory leaks in font handling.
  • [SwEngine] Fix potential crash when using empty clips.
  • [SwEngine] Fix incorrect rle cell position causing rendering artifacts. #2657
  • [SwEngine] Fix an issue with drop shadow rendering. #3146
  • [SwEngine] Improve shape updates - fix disappearing stroke for updated fills. #3237
  • [GlEngine/SwEngine] Fix color burn/dodge edge cases.
  • [GlEngine] Enhance dashed stroke quality. #2729, #3222, #3231
  • [GlEngine] Add offset support in dashed strokes. #3217, #3223, #3191
  • [Lottie] Enhance dashed stroke support – any number of gaps/dashes is now supported. #3191
  • [Lottie] Add basic support for embedded font data. #3184
  • [Lottie] Add support for expression overriding. #3168
  • [Lottie] Fix potential memory leak in slots.
  • [Svg] Fix incorrect gradient element assignment. godotengine/godot#102005 (comment)
  • [Ttf] Enhance fonts rendering quality – properly handle contours starting from a point outside the shape. #3268

Full Changelog: v0.15.10...v0.15.11

ThorVG 1.0.0-pre16

06 Mar 16:27
Compare
Choose a tag to compare
ThorVG 1.0.0-pre16 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre15.

  • [Renderer] Enhanced bounding box accuracy for Bézier curves.
  • [Renderer] Added support for object-oriented bounding boxes. #3290
  • [Renderer] Corrected an issue with fast-track stroke clipping behavior.
  • [Renderer] Fixed a font caching lookup failure.
  • [WgEngine] Added support for stroke clipping. #3063
  • [WgEngine] Resolved memory leaks at scene effects. #3292
  • [GlEngine] Added support for stroke clipping. #3063
  • [Lottie] Properly addressed the justification (horizontal alignment) in the origin font text. #3266
  • [Lottie] Resolved a minor memory leak in slot overriding.
  • [C++ API] Revision:
Result Paint::bounds(float* x, float* y, float* w, float* h, bool transform = false) const
 -> Result Paint::bounds(float* x, float* y, float* w, float* h) const
 -> Result Paint::bounds(Point* pt4) const
  • [C API] Revision:
Tvg_Result tvg_paint_get_bounds(const Tvg_Paint* paint, float* x, float* y, float* w, float* h, bool transformed);
 -> Tvg_Result tvg_paint_get_aabb(const Tvg_Paint* paint, float* x, float* y, float* w, float* h);
 -> Tvg_Result tvg_paint_get_obb(const Tvg_Paint* paint, Tvg_Point* pt4);

Full Changelog: v1.0-pre15...v1.0-pre16