Hermet Park
3dcc22309d
gl_engine/renderer: code clean up
...
separate private / public methods designated in sectors.
no logical changes.
2024-09-30 12:53:08 +09:00
Hermet Park
f22afaefc2
gl_engine: ++thread safety
...
The `dispose()` method can be called on a worker thread.
GL resources are released on `sync()`, ensuring guaranteed thread safety.
2024-09-30 12:52:38 +09:00
Sergii Liebodkin
e27ce23d4b
wg_engine: fix blend methods support
...
Full review of blending support.
Support Solid color, Gradient fill and Image blending workflows
See Blending, SceneBlending, Opacity examples
2024-09-30 12:51:02 +09:00
RuiwenTang
35d168db9e
gl_engine: support simple hairline stroke rendering
...
Reduce alpha if stroke width is too thin to mock hairline rendering
2024-09-30 12:50:43 +09:00
RuiwenTang
338c75ca3a
gl_engine: optimize off-screen rendering
...
Performing a full-screen RenderPass resolve is too expensive.
Because most composite cases only require a small area to be rendered off-screen.
To improve performance, use the bounds of the Geometry for off-screen rendering whenever possible
2024-09-30 12:50:17 +09:00
Hermet Park
ce50165103
common: Fix a compilation failure on VS 2017
...
issue: https://github.com/thorvg/thorvg/issues/2512
2024-09-30 12:49:06 +09:00
Sergii Liebodkin
21286f679d
wg_engine: fix scene opacity usage
...
Changed blend equation to make it the same as for referenced sw renderer.
2024-09-30 12:48:58 +09:00
Hermet Park
359ad22b3a
lottie: fix a regression bug of masking
...
InverseAlphaMasking should be applied as intended,
but it was mistakenly reverted to alpha.
regression in v0.14.0 by: 2c7a83406e
2024-09-30 12:48:50 +09:00
Hermet Park
dd0705eef9
lottie: allow image asset sharing among LottiePicture instances
...
Previously, the Lottie builder didn't account for image asset sharing
among multiple layers. This update rectifies the situation.
issue: https://github.com/thorvg/thorvg/issues/2428
2024-09-30 12:48:08 +09:00
Hermet Park
3390ff21fc
sw_engine: support the grayscale scaled-image drawing
2024-09-30 12:46:56 +09:00
Hermet Park
98e613e3f0
lottie/parser: optimization++
...
Skip the data constructuion if the mask mode
is none. it's not used at all.
2024-09-30 12:46:49 +09:00
Hermet Park
b94c30675c
lottie/builder: revise the masking update.
...
Append the mask shape to the previous one, instead of composition,
when it's able by the condition.
issue: https://github.com/thorvg/thorvg/issues/2426
2024-09-30 12:46:40 +09:00
Mira Grudzinska
ceae547062
sw_engine: fix aa
...
For shapes with a stroke that has opacity, anti-aliasing
should be applied to a fill.
The use of a transparent gradient stroke will also be handled
correctly.
2024-09-30 12:45:40 +09:00
Hermet Park
7b79f37dd2
api: ++description
...
issue: https://github.com/thorvg/thorvg/issues/2494
2024-09-30 12:45:29 +09:00
Hermet Park
74cd0ba0e7
common: code refactoring
...
replaced min/max with the standard library
2024-09-30 12:45:14 +09:00
Hermet Park
fad80deceb
lottie: remove exception handling
...
don't stop the parsing when the data type is incorrect.
just let it slide.
issue: https://github.com/thorvg/thorvg/issues/2389
2024-09-30 12:42:17 +09:00
Hermet Park
dfa2b78ad8
lottie/rapidjson: --assert
...
Save binary size about 0.8kb
2024-09-30 12:42:10 +09:00
Josh Soref
e3c66db301
common: fix 178+ spelling errors
2024-09-30 12:41:38 +09:00
Mira Grudzinska
f3e0dc3432
sw_engine: improve grad quality
...
For gradients with fill spread set as repeat,
the lack of anti-aliasing between the last and
the first color caused noticeable jagged edges.
Interpolation was introduced between them,
visually improving the gradient quality.
2024-09-30 12:37:15 +09:00
Vincent Torri
ab7ff34674
json loader: fix warnings in jerryscript on Windows
2024-09-30 12:37:03 +09:00
Thaddeus Crews
2f2435dd34
common: ensure const equality operators
...
A minor syntactic adjustment to two instances of operator== and one instance of operator!=, both to the end of ensuring these locally-scoped functions are properly identified as const. In the majority of cases, this shouldn't have any impact; however, this change makes these operators play nice in c++20 contexts.
2024-09-30 12:36:55 +09:00
Hermet Park
5f4468236c
sw_engine: ++thread safety
...
Synchronize the engine process precisely
before updating internal data.
2024-06-27 14:42:27 +09:00
Mira Grudzinska
66048b31b5
wg_engine: fix shapes closing
...
Shapes were incorrectly closed in certain cases -
the decision to close a shape or not should be based on
path commands rather than the number of points and
their distances from each other.
2024-06-27 14:42:27 +09:00
Hermet Park
38e2812004
renderer: ++stabilization
...
This introduces a managed condition to precisely control the
canvas updates. This prevents a crash when the target is
changed and drawn without any update calls.
issue: https://github.com/thorvg/thorvg/issues/2484
2024-06-27 14:42:27 +09:00
Mira Grudzinska
0f2fe0c4d4
common: fix rendering failure
...
In case of a problem with loading font data, there
is no paint inside a text that can be rendered,
but this should not interrupt the rendering process
of other paints. Now fixed.
@Issue: https://github.com/thorvg/thorvg/issues/2468
2024-06-27 14:42:27 +09:00
Hermet Park
f3469350b9
lottie: fix a data-race problem
...
make it sync call before accessing the composition data
from marker and segments.
issue: https://github.com/thorvg/thorvg/issues/2462
2024-06-27 14:42:27 +09:00
Hermet Park
dcf67e9c14
Revert "renderer/canvas: Check refresh before draw"
...
This reverts commit 60212747b5
.
this triggered duplicated updates,
it came up with many thread sanitizer problems.
issue: https://github.com/thorvg/thorvg/issues/2462
2024-06-27 14:42:27 +09:00
Hermet Park
b6597fc1ef
apis: promotes to official apis.
...
C++
- GlCanvas::gen()
CAPI
- TVG_COMPOSITE_METHOD_INVERSE_LUMA_MASK
2024-06-27 14:42:27 +09:00
Sergii Liebodkin
119ca34219
wg_engine: force texture data writing on GPU side
...
Texture must be fully uploaded into GPU memory before we can use or destroy it.
This change force texture data updates
2024-06-27 14:42:27 +09:00
Mira Grudzinska
e8702de059
tvg_saver: fix 'order' serialization
...
Serialization of the "order" attribute caused
the bytes counter to be overwritten, resulting
in the created TVG file being corrupted.
Correctly created tag.tvg file has been included
as a test resource..
2024-06-27 14:42:27 +09:00
Sergii Liebodkin
58705281cd
wg_engine: fix stroke mitter limit
...
Change the appliense of stroke mitter limit as in SVG spec
Before/After
2024-06-27 14:42:27 +09:00
RuiwenTang
2c84033a07
gl_engine: correct the return value of render function
...
If RenderData has nothing to draw, need to return `true`.
2024-06-27 14:42:27 +09:00
Hermet Park
8259bb9d4e
doc: removed useless information for easier maintainence.
...
That basic information is addressed in the Results section.
We can only add information that pertains to a specific scenario.
2024-06-27 14:42:27 +09:00
RuiwenTang
95dde5807e
gl_engine: Fix memory leak caused by no deleted GlRenderTask
2024-06-27 14:42:27 +09:00
RuiwenTang
667b259b89
gl_engine: Fix compose render not correct after canvas resize
...
When canvas size changed, need to clear cached GLRenderTarget and
GLCompose.
2024-06-27 14:42:27 +09:00
Hermet Park
518be23db2
gl_engine: revise the gl portability
...
- guarantee minimum gl version requirement
- removed glesv2 dependency
- corrected gl ver dependency
issue: https://github.com/thorvg/thorvg/issues/2282
2024-06-27 14:42:27 +09:00
Hermet Park
4b01c0ef52
renderer/canvas: ++exceptional handling.
...
do not allow change the target if the condition is not satisfied.
2024-06-27 14:42:27 +09:00
JunsuChoi
35b1d9a544
renderer/canvas: Check refresh before draw
...
If target() is called again after update() is called and the size of the buffer changes, a crash may occur.
Therefore, check the refresh variable and perform drawing after update().
2024-06-27 14:42:27 +09:00
RuiwenTang
5836661155
gl_engine: Fix compile error if only has OpenGL library on MacOS
...
Since GLES headers and library can not be found on MacOS,
use macros to determin if link with OpenGL library.
2024-06-27 14:42:27 +09:00
Hermet Park
2fb79eca7d
sw_engine: fix missing fill/stroke raster
...
properly update the fill/stroke when the path
has been changed
2024-06-27 14:42:27 +09:00
Hermet Park
d5c38cebb7
renderer: minor optimization
...
reduce the path flag writing
2024-06-27 14:42:27 +09:00
Hermet Park
933176e309
lottie: hotfix for preventing a crash.
...
MaskMode=None is not properly addressed,
Prevent the crash from the use-case.
issue: https://github.com/thorvg/thorvg/issues/2426
2024-06-27 14:42:27 +09:00
Mira Grudzinska
58e24f63a4
sw_engine: fix stroke miterlimit precision
...
Since the value was casted to int the results
were different than expected.
2024-06-27 14:42:27 +09:00
Hermet Park
ef409139c2
infra: promote the GL engine to an official one.
...
The ThorVG OpenGL/ES engine has been stabilized and improved
significantly. Now, as a graphics engine, its drawing features
are quite functional. It is time to officially release the
engine and maintain it in the release process.
Thanks @Ruiwen for going above and beyond!
issue: https://github.com/thorvg/thorvg/issues/2435
2024-06-27 14:42:27 +09:00
Mira Grudzinska
0a53090a87
docs: descriptions++
2024-06-27 14:42:27 +09:00
Sergii Liebodkin
f40586bd3d
wg_engine: fix incorrect geomatry
...
Fix computation of segments count for cubic curves.
Using screen coordinates of base points, instead of world coordinates
2024-06-27 14:42:27 +09:00
Hermet Park
0d9b7c2006
gl_engine: improve the dependency check
...
- dependency() works with a pkgconfig, more preferred.
- add fallback to GL library search with candididates.
2024-06-27 14:42:27 +09:00
Hermet Park
a0c6025132
lottie: fix a compile error on MSC with clang.
...
issue: https://github.com/thorvg/thorvg/issues/2347
2024-06-27 14:42:27 +09:00
Hermet Park
8b5d2e4a13
sw_engine: ++exception handling
...
prevent the out of range anti-aliasing frames.
issue: https://github.com/thorvg/thorvg/issues/2401
2024-06-27 14:42:27 +09:00
Hermet Park
8332ee3b95
sw_engine: hotfix avx/neon 8 bit rasterizer.
...
recte/rle 8 bit rasterizer has been broken,
make it work safely with c raster version.
issue: https://github.com/thorvg/thorvg/issues/2146
2024-06-27 14:42:27 +09:00