Releases: thorvg/thorvg
ThorVG 1.0.0-pre22
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
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
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
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 forOffset 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
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
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
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
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
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
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