Hermet Park
52f23f6acd
gl_engine: revised the effect logic
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
- consolidated the effect implementation from renderer
- applied the deferred initialization
2025-07-17 17:42:06 +09:00
Hermet Park
a80b0aa188
renderer: propagate picture blending to internal scene
...
Users can regard a picture and its nested scene as
a single entity, so blending options can be properly
applied to the actual visual paint object.
2025-07-17 14:50:33 +09:00
Hermet Park
bc4afd8ef7
sw_engine: trimmed out unnecessary blending parameters
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-07-17 12:13:47 +09:00
Hermet Park
15aafbfe62
sw_engine: support the fast drop shadow version
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
The direct raster version has been restored with a proper fix
for the out-of-range bug.
see history: 78753eed31
2025-07-16 13:39:06 +09:00
Hermet Park
d88c2c1184
sw_engine: improved the dropshadow effect support
...
- shadow rendering was skipped when the blur value was 0.
it now correctly renders shadows without blur.
- this also fixes the distance offset scalability.
issue: https://github.com/thorvg/thorvg/issues/3602
2025-07-16 13:39:06 +09:00
Hermet Park
43a082798d
sw_engine: improved blending quality
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
enhanced anti-aliasing in image blending by properly
applying unpremultiply/premultiply computations during
blending operations.
2025-07-15 12:24:25 +09:00
Hermet Park
4a0d17ba83
sw_engine: tint effect optimization++
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
skip interpolation when intensity is 1.0.
since intensity adjustment is optional and
computationally expensive, avoiding it in this case
is worthwhile.
2025-07-15 00:00:03 +09:00
Hermet Park
d2b2fb02f0
sw_engine: rectifiy logic wrt overall blendings
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
- minor optimization of the unpremultiply logic
- exception handling for the unpremultipy logic for anti-aliasing quality
- appropriate alpha pre/unpre multiplication is applied
- clean code++
- updated doc blending equation
issue: https://github.com/thorvg/thorvg/issues/1944
2025-07-14 16:48:10 +09:00
Hermet Park
f6a9efcc3f
sw_engine: rectified softlight blending equation
...
Android / build_x86_64 (push) Has been cancelled
Android / build_aarch64 (push) Has been cancelled
iOS / build_x86_64 (push) Has been cancelled
iOS / build_arm64 (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS / compact_test (push) Has been cancelled
macOS / unit_test (push) Has been cancelled
Ubuntu / build (push) Has been cancelled
Ubuntu / compact_test (push) Has been cancelled
Ubuntu / unit_test (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows / compact_test (push) Has been cancelled
Windows / unit_test (push) Has been cancelled
slightly adjusted the equation for adobe/figma alignment
2025-07-10 20:25:31 +09:00
Hermet Park
ac12c8c9a3
renderer: fixed a wrong fillrule option
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
- fixed to use the default option NonZero fillrule.
- updated the doc about text font as well
2025-07-10 10:50:27 +09:00
Hermet Park
4b11fea32f
api: rename shape fill rule API for clarity
...
Clarify the FillRule usage by associating it
explicitly with color/gradient fills.
C++ API
* Result Shape::fill(FillRule r)
-> Result Shape::fillRule(FillRule r)
issue: https://github.com/thorvg/thorvg/issues/3116
2025-07-09 18:37:48 +09:00
Hermet Park
c9aba593e0
renderer: hotfix a regression of the partial rendering
...
artifacts can be remained by wrong conditional logic.
now it's fixed.
2025-07-09 18:09:32 +09:00
Hermet Park
8390cb1def
renderer: ++exception handling
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-07-09 15:41:07 +09:00
Hermet Park
295d20f915
renderer: TODO++
2025-07-09 14:02:59 +09:00
Mira Grudzinska
7bb701b22e
renderer: fix render region for multiple masks
...
Previously, when more than two masks were applied,
the render region only took the first added mask into
account.
@Issue: https://github.com/thorvg/thorvg/issues/3600
2025-07-09 14:01:42 +09:00
Hermet Park
761259ca59
sw_engine: fix omitted update for zero opacity
...
ensure the dirty region is updated when opacity becomes zero.
a regression bug of the recent partial rendering.
issue: https://github.com/orgs/thorvg/discussions/3570
2025-07-09 11:44:16 +09:00
Hermet Park
7e0f394c2c
wg_engine: corrected tint/tritone wrong alpha multiplication
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-07-08 21:55:10 +09:00
Hermet Park
668c818240
gl_engine: corrected tint/tritone wrong alpha multiplication
2025-07-08 21:55:10 +09:00
Hermet Park
78753eed31
sw_engine: dropshadow stability++
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
removed the direct rendering optimization of the dropshadow,
because it's a buggy.
2025-07-08 00:40:43 +09:00
Hermet Park
3fe7432ac5
common: added blending factor to tritone post-effect
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
- introduced a blending factor to control the mix between the original color and the tritone effect.
- improved Lottie compliance with this enhancement.
- implemented the spec by all engines
CAPI:
* Tvg_Result tvg_scene_push_effect_tritone(Tvg_Paint* scene, int shadow_r, int shadow_g, int shadow_b, int midtone_r, int midtone_g, int midtone_b, int highlight_r, int highlight_g, int highlight_b);
-> TVG_API Tvg_Result tvg_scene_push_effect_tritone(Tvg_Paint* scene, int shadow_r, int shadow_g, int shadow_b, int midtone_r, int midtone_g, int midtone_b, int highlight_r, int highlight_g, int highlight_b, int blend);
2025-07-07 15:31:45 +09:00
Hermet Park
53680eae2f
Revert "gl_engine: --unused code"
...
This reverts commit d8c06add22
.
drop shadow has been broken...
2025-07-07 12:59:57 +09:00
Hermet Park
c216805a87
engines: fine-tune scene effect performance
...
Skip scene effects whenever possible, based on predefined conditions.
2025-07-07 12:59:57 +09:00
Hermet Park
3f7cb2bbb5
engines: fixed tint effect issues
...
Android / build_x86_64 (push) Has been cancelled
Android / build_aarch64 (push) Has been cancelled
iOS / build_x86_64 (push) Has been cancelled
iOS / build_arm64 (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS / compact_test (push) Has been cancelled
macOS / unit_test (push) Has been cancelled
Ubuntu / build (push) Has been cancelled
Ubuntu / compact_test (push) Has been cancelled
Ubuntu / unit_test (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows / compact_test (push) Has been cancelled
Windows / unit_test (push) Has been cancelled
- corrected the reversed black/white intensity multiplication.
- made a minor adjustment to the luma equation.
- updated and aligned the API documentation accordingly.
2025-07-05 12:43:20 +09:00
Hermet Park
d8c06add22
gl_engine: --unused code
2025-07-05 10:15:53 +09:00
Hermet Park
1d92a16739
common: chores wrt scene effect
...
- corrected data type (float -> double)
- guarantee to call va_end()
- docs / samples revision
- include cstdarg as an essential header
2025-07-04 17:17:34 +09:00
Hermet Park
f3fb04c63c
common: improve thread safety for partial rendering
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
- clear resources on the main thread to safely remove resources associated with dirty regions.
- skip redundant condition checks for unsafe disabled add calls.
2025-07-03 23:16:20 +09:00
Hermet Park
380d2c3f3f
sw_engine: tweak operations to better align with the designed bevaviors
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
- presere source values in empty buffer
- properly unpremultiply dst values before blending
issue: https://github.com/thorvg/thorvg/issues/3072
2025-07-03 21:16:59 +09:00
Hermet Park
f59da6a79f
sw_engine: keep the code in a more primitive style
2025-07-03 15:13:58 +09:00
Hermet Park
5e17fe0034
sw_engine: ++clean code
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-07-02 16:30:14 +09:00
Hermet Park
40d75c6276
api: fixed mis-aligned the ref count size, u8 -> u16
...
C++ API Modifications:
* uint8_t Paint::unref() -> uint16_t Paint::ref()
* uint8_t Paint::ref() -> uint16_t Paint::unref()
* uint8_t Paint::refCnt() -> uint16_t Paint::refCnt()
C API Modifications:
* uint8_t tvg_paint_ref(...) -> uint16_t tvg_paint_ref(...)
* uint8_t tvg_paint_unref(...) -> uint16_t tvg_paint_unref(...)
* uint8_t tvg_paint_get_ref(...) -> uint16_t tvg_paint_get_ref(...)
2025-07-02 15:39:33 +09:00
Mira Grudzinska
581a304305
renderer: fix stub functions
...
When partial rendering support is disabled the stub implementation
of the RenderDirtyRegion struct had incomplete logic. Fixed
2025-07-02 10:09:40 +09:00
Sergii Liebodkin
8543099fcd
common: generalize bezier math
...
added new functionality for bezier curves:
1. generate bezier curve as an arc
2. estimate the number of points for optimal tessellation
3. check that bezier curve is close to a straight line
This functionality is useful for gl/wg renderers
2025-06-28 11:25:36 +09:00
Hermet Park
43f94f8b32
sw_engine: Fix potential memory violation in direct image drawing
...
Android / build_x86_64 (push) Has been cancelled
Android / build_aarch64 (push) Has been cancelled
iOS / build_x86_64 (push) Has been cancelled
iOS / build_arm64 (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS / compact_test (push) Has been cancelled
macOS / unit_test (push) Has been cancelled
Ubuntu / build (push) Has been cancelled
Ubuntu / compact_test (push) Has been cancelled
Ubuntu / unit_test (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows / compact_test (push) Has been cancelled
Windows / unit_test (push) Has been cancelled
A potential memory violation issue was present when accessing image
buffers, especially when the image was offset outside the visible
screen region.
This issue was accidentally discovered while testing particle
effects. It is now properly handled with cleaner and safer code.
2025-06-26 23:09:21 +09:00
Hermet Park
f3d7e232ce
common: partial rendering stabilization++
...
There are more corner case issues after the partial rendering
introduction, this covers all-in-one.
2025-06-26 20:21:04 +09:00
Mira Grudzinska
30662afba7
renderer: improve radial gradient handling
...
This change ensures at the api level that if the focal
point lies outside the end circle, it is projected onto
the edge of the end circle.
Additionally, if the start circle does not fully fit
inside the end circle (after possible repositioning), its
radius is reduced accordingly.
The modification aligns with the SVG 1.1 standard (for fr = 0).
Cases with fr > 0 are not covered by the SVG 1.1, and edge
cases have been handled here to avoid numerical issues.
Note:
This update replaces previous behavior where gl handled
the SVG 2.0 standard.
2025-06-24 21:23:26 +09:00
Mira Grudzinska
22742863f4
api: handling values <= 0 in strokeDash() api
...
The API allows now values <= 0 for dashes and gaps. Negative values
are treated as zero. The exception is when all provided values
are <= 0, in which case the dash is ignored.
This fixes the issue when dash = 0 was provided for strokes with round
or butt caps - the dot was not drawn, even though it should have been.
docs: the strokeDash API behavior's clarification for odd numbers
of values in dashPattern and refinement of the accepted values.
2025-06-24 21:02:29 +09:00
Hermet Park
9b2bbc496e
renderer: --compiler warning
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-06-23 17:11:47 +09:00
Hermet Park
caec92ddd3
infra: add the partial rendering build option
...
allow users to set partial rendering as option to use,
enabled by deault.
-Dextra="partial_render, ..."
2025-06-23 16:04:48 +09:00
Hermet Park
2aabddd5a5
common: support static scene mode (internal)
...
This adds support for a static scene mode,
allowing a scene to be treated as a static image.
In this mode, partial rendering for the inner
drawable components is skipped. This is especially
useful for scenes designed to be fully updated as a whole,
such as those used in fully dynamic Lottie contents.
issue: https://github.com/thorvg/thorvg/issues/1747
2025-06-23 16:04:48 +09:00
Hermet Park
1d59099a48
sw_engine: add support for partial rendering
...
This implements partial rendering with RenderDirtyRegion interfaces
issue: https://github.com/thorvg/thorvg/issues/1747
2025-06-23 16:04:48 +09:00
Hermet Park
07331eb76c
renderer: add partial rendering support
...
Partial Rendering refers to a rendering technique where
only a portion of the scene or screen is updated, rather
than redrawing the entire output. It is commonly used as
a performance optimization strategy, focusing on redrawing
only the regions that have changed, often called dirty regions.
This introduces RenderDirtyRegion, which assists
in collecting a compact dirty region from render tasks.
To efficient data-processing, this divide the screen region
with a designated size of partition and handles the partitl rendering
computation with a divide-conquer metholodgy.
Each backend can utilize this class to support efficient partial rendering.
This is implemented using a Line Sweep and Subdivision Merging O(NlogN).
The basic per-frame workflow is as follows:
0. RenderDirtyRegion::init() //set the screen size to properly partition the regions
1. RenderDirtyRegion::prepare() //Call this in Renderer::preRender().
2. RenderDirtyRegion::add() //Add all dirty paints for the frame before rendering.
3. RenderDirtyRegion::commit() //Generate the partial rendering region list before rendering.
4. RenderDirtyRegion::partition() //Get a certian partition
5. RenderDirtyRegion::get() //Retrieve the current dirty region list of a partition and use it when drawing paints.
6. RenderDirtyRegion::clear() //Reset the state.
RenderMethod introduced for 2 utilities for paritial renderings
1. RenderMethod::damage() //add a force dirty region, especially useful for scene effects
2. RenderMethod::partial() //toggle the partial rendering feature
issue: https://github.com/thorvg/thorvg/issues/1747
2025-06-23 16:04:48 +09:00
Hermet Park
8e8bfff6ab
sw_engine: small optimization with a fast-clipping region access
...
Now the engine can access intermidate rle sections
with a specific y ranges, It doesn't need full iterations.
2025-06-23 16:04:48 +09:00
Hermet Park
0cb9c44074
sw_engine: enable render region clipping during rendering
...
Implemented support for clipping shapes and images using a render region
bounding box at render time. This allows partial drawing of content,
laying the groundwork for upcoming partial rendering functionality.
for fast access of the drawing region from the linear rle data,
we introduced the binary search for begin/end of rle instead of
additional y index buffer.
There is a reason for not using a y-index buffer:
the shapes in the RLE are not single, continuous shapes
but multiple shapes scattered across the space.
which means that we need a double-associated data structure
per shapes for y indexing, and this data preparation wouldn't be
cheaper enough than realtime binary search especially animated data.
issue: https://github.com/thorvg/thorvg/issues/1747
2025-06-23 16:04:48 +09:00
Sergii Liebodkin
2c048f72e8
gl_engine: remove the outdated tesseletion mechanics
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
After introducing Triangle Fan-like Triangulation there is no necessary to have heavy and complex tessellator
All unused entities are removed
2025-06-19 02:10:50 +09:00
Mira Grudzinska
3426531dd2
sw_engine: fix focal point clamping
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
This approach should be introduced in d8ebd8b4f5
.
Using FLOAT_EPSILON is not sufficient due to numerical precision,
since it's later inverted, and its very small value leads to
significant errors during inversion.
2025-06-18 22:07:07 +09:00
Hermet Park
a698504714
renderer: rectify the update flag once more
...
- image tag is a bit ambuguous for vector type picture
- engine doesn't need to take care of the none flag update
because renderer filters that case.
2025-06-18 15:49:47 +09:00
Mira Grudzinska
d8ebd8b4f5
sw_engine: clamp focal point to the edge
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
If the radial gradient's focal point lies outside
the end circle, it's projected onto the edge.
A slight inward offset is applied to avoid numerical
issues.
Note:
Focal point support in the sw and wg engines is
consistent with the SVG 1.1 standard, whereas the gl
engine aligns with the SVG 2.0 standard.
2025-06-18 14:39:02 +09:00
Mira Grudzinska
b8ef2d44d9
avx/neon: remove double increment of the value
...
The span was incremented both in the for loop instruction
(ARRAY_FOREACH) and inside the loop body. Fixed.
@Issue: https://github.com/thorvg/thorvg/issues/3547
2025-06-18 14:39:02 +09:00
Hermet Park
39644a676d
renderer: hotfix
...
hotfix of regression by 39b0f87cb3
2025-06-18 11:05:05 +09:00
Hermet Park
bd3d92f599
gl_engine: ++safety
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-06-17 18:52:07 +09:00