Hermet Park
4aaa0dafc4
common: code refactoring
...
replaced internal string usage with char*
2024-11-08 15:26:04 +09:00
Hermet Park
9b9a0308c8
sw_engine: hotfix range broken
...
hotfix for release. need to review the logic again
2024-11-08 00:47:46 +09:00
Hermet Park
2b32c24712
lottie: corrected drop-shadow handling
...
opacity value type should be float with range 0 ~ 256
2024-11-08 00:47:46 +09:00
Hermet Park
9a134fcb90
api: revise the apis for v1.0
...
replaced std::string with char* in API parameters.
API Modification:
- Result Picture::load(const std::string& path) -> Result Picture::load(const char* filename)
- Result Picture::load(const char* data, uint32_t size, const std::string& mimeType, const std::string& rpath = "", bool copy = false) -> Result Picture::load(const char* data, uint32_t size, const char* mimeType, const char* rpath = "", bool copy = false)
- Result Text::load(const std::string& path) -> Result Text::load(const char* filename)
- Result Text::load(const char* name, const char* data, uint32_t size, const std::string& mimeType = "ttf", bool copy = false) -> Result Text::load(const char* name, const char* data, uint32_t size, const char* mimeType = "ttf", bool copy = false)
- Result Text::unload(const std::string& path) -> Result Text::unload(const char* filename)
- Result Saver::save(std::unique_ptr<Paint> paint, const std::string& path, uint32_t quality = 100) -> Result Saver::save(std::unique_ptr<Paint> paint, const char* filename, uint32_t quality = 100)
- Result Saver::save(std::unique_ptr<Animation> animation, const std::string& path, uint32_t quality = 100, uint32_t fps = 0) -> Result Saver::save(std::unique_ptr<Animation> animation, const char* filename, uint32_t quality = 100, uint32_t fps = 0)
issue: https://github.com/thorvg/thorvg/issues/1372
2024-11-06 21:32:45 +09:00
Sergii Liebodkin
52356b023d
wg_engine: fix scene blending
...
In a case of scenes without masking white clear color used, instead of black color
Issue https://github.com/thorvg/thorvg/issues/2592
Issue https://github.com/thorvg/thorvg/issues/2921
2024-11-06 01:11:15 +09:00
Hermet Park
e0365142a7
renderer: support SceneEffect DropShadow
...
Apply a drop shadow effect with a Gaussian Blur filter.
API Addition:
- enum class SceneEffect::DropShadow
Parameters:
- color_R(int)[0 - 255]
- color_G(int)[0 - 255]
- color_B(int)[0 - 255]
- opacity(int)[0 - 255]
- angle(float)[0 - 360]
- distance(float)
- blur_sigma(float)[> 0]
- quality(int)[0 - 100]
issue: https://github.com/thorvg/thorvg/issues/2718
2024-11-06 00:56:11 +09:00
Sergii Liebodkin
93ebd388c7
wg_engine: implement dash offset
...
Introduced dash offset param for stroke dashes
Issue https://github.com/thorvg/thorvg/issues/2592
2024-11-05 12:05:49 +09:00
Sergii Liebodkin
505ebe9fe6
wg_engine: fix close command logic
...
On a close path command creates a new object started form the closed point
issue: https://github.com/thorvg/thorvg/pull/2923
2024-11-05 11:55:38 +09:00
Mira Grudzinska
0a43beb89b
sw_engine: fix render fill region
...
Shape's bbox represents only fill's render region.
Render region of fill and stroke is stored in SwTask.
This was visible while rendering shapes with a stroke -
fill was to big.
@Issue: https://github.com/thorvg/thorvg/issues/2908
Co-Authored-By: Hermet Park <hermet@lottiefiles.com>
2024-10-31 23:08:27 +09:00
Sergii Liebodkin
8b27efc99f
wg_engine: fix cubic splines and circles tesselation quality
...
Tesseletion factor now depends on scale matix of the shape
2024-10-31 20:24:35 +07:00
Sergii Liebodkin
f13c72e3d7
wg_engine: fix equals gradient offsets
...
In case if gradient offsets are equal the last color are used instead of first
2024-10-31 19:05:56 +07:00
Mira Grudzinska
d9be58d4b7
lottie: fix transformations in text range selector
...
Since the translate API was used while text updating,
the subsequent range selector transformations gets overwritten
when updating the shape (scale and rotate, adding another
translation will persist). This caused unexpected results.
Fixed by using the transform API when additional transformations
are needed - also fixes applying more than one range selector.
2024-10-29 11:23:22 +09:00
Sergii Liebodkin
1d78835609
wg_engine: fix artifacts with zero length segmants on path
...
Fixed cases, if path have equals neighbors points on the path
2024-10-29 11:02:09 +09:00
RuiwenTang
a855666e41
gl_engine: seperate the index buffer from vertex buffer
...
WebGL has a strict rule that does not allow the same GLBuffer
to be bound to both ARRAY_BUFFER and ELEMENT_ARRAY_BUFFER at the same time.
(https://registry.khronos.org/webgl/specs/latest/1.0/#5.14.5 )
To support WebGL in the future, a separate GLBuffer is used to store index data.
2024-10-29 00:00:19 +09:00
Sergii Liebodkin
975ddb68ca
wg_engine: fixed image and scene normal blend
...
Pre-multiplied color on alpha chanel applied
2024-10-28 23:35:37 +09:00
Sergii Liebodkin
c57e2e6c9f
wg_engine: multisampling support
...
Used native hardware MSAA x4
Full multisampling support including custom blend and compositions.
Must be verified on web and 4K resolution for performance issues
2024-10-25 00:14:04 +09:00
Hermet Park
bace4e3e9e
renderer: --shadow variable compiler warning
2024-10-24 21:33:47 +09:00
Sergii Liebodkin
0815366763
wg_engine: clippath optimization
...
Full review of clipping workflow.
Before we are used separate render target for each clip path and compute shader to find clip path intersections with AND logic.
Now we are using depth buffer and transactions from depth to stencil and back to get AND logic intersections,
Compute shaders, layouts and pipelines was removed
2024-10-24 17:49:17 +09:00
Mira Grudzinska
422674b4c9
api: add focal parameters to the radial apis
...
API modification:
- Result RadialGradient::radial(float cx, float cy, float radius)
- Result RadialGradient::radial(float cx, float cy, float r, float fx, float fy, float fr)
- Result RadialGradient::radial(float* cx, float* cy, float* radius)
- Result RadialGradient::radial(float* cx, float* cy, float* r, float* fx = nullptr, float* fy = nullptr, float* fr = nullptr)
@Issue: https://github.com/thorvg/thorvg/issues/2860
2024-10-23 11:10:14 +09:00
Sergii Liebodkin
b851d98805
wg_engine: use tvg math constants
...
Use tvg pi constant instead of cmath. better mingw compiler support on windows
2024-10-22 16:26:55 +03:00
Hermet Park
2d47585c98
renderer: hotfix a broken svg file sharing
...
Do not allow data sharing among same svg instances.
This should be addressed properly.
2024-10-22 14:27:04 +09:00
Hermet Park
41c1171197
sw_engine: corrected the blur feathering region.
...
issue: https://github.com/thorvg/thorvg/issues/2892
2024-10-22 13:49:14 +09:00
Hermet Park
765f927dd0
gl_engine: code clean up
...
ensure consistency in coding style.
2024-10-20 13:04:24 +09:00
Hermet Park
c4c262fb16
png, gl_engine: fixed an wrong png colorspace.
...
issue: https://github.com/thorvg/thorvg/pull/2880
2024-10-20 13:04:24 +09:00
Hermet Park
7c06fdd7b1
sw_engine: fixed linear gradient filling masking.
...
properly filtering alpha channel of the 8bits linear gradient
masking drawing.
issue: https://github.com/thorvg/thorvg/issues/2204
2024-10-19 20:40:07 +09:00
RuiwenTang
c3772d11af
gl_engine: ignore masking alpha when calculate inv luma masking
2024-10-19 14:04:43 +09:00
Hermet Park
b4304b6d1f
gl_engine: code refactoring
...
- clean up code
- resolve some data casting compiler warnings
2024-10-18 13:40:34 +09:00
Mira Grudzinska
9109656800
sw_engine: fix _rasterDirectImage
...
Since the source buffer is 32 bits, not 8 bits,
both alpha and inverse alpha need to be calculated.
2024-10-18 12:15:02 +09:00
Hermet Park
b2622193b2
gl_engine: initialize members properly.
...
corrected a regression of uninitialized data value access.
2024-10-18 01:06:36 +09:00
Hermet Park
1e9609c6f7
wg_engine: merged math functions with common
...
issue: https://github.com/thorvg/thorvg/issues/2313
2024-10-17 21:08:00 +09:00
Hermet Park
a26a386ccd
gl_engine: merged point/line data structure with common
...
this also contains a code clean up.
issue: https://github.com/thorvg/thorvg/issues/2313
2024-10-17 20:32:19 +09:00
Sergii Liebodkin
81cb7da9f3
wg_engine: MSAA support, part 1 - move blending to fragment shaders
...
Apply custom blending using fragment shaders instead of compute shaders.
2024-10-17 18:00:15 +09:00
Hermet Park
bb253dd3fb
sw_engine: rectify the blending method of grayscale fill
...
issue: https://github.com/thorvg/thorvg/issues/2842
issue: https://github.com/thorvg/thorvg/issues/2841
2024-10-17 17:07:36 +09:00
Hermet Park
0a16152d75
api: renamed the composite with mask.
...
Since we've separated ClipPath and Masking,
Masking now has a distinct and independent purpose.
API Modification:
- enum class CompositeMethod -> enum class MaskMethod
- Result Paint::composite(std::unique_ptr<Paint> target, CompositeMethod method) -> Result Paint::mask(std::unique_ptr<Paint> target, MaskMethod method)
- CompositeMethod Paint::mask(const Paint** target) const -> MaskMethod Paint::mask(const Paint** target) const
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-16 14:41:26 +09:00
Sergii Liebodkin
adebbcd4e2
wg_engine: fix miter qdge cases math
2024-10-16 00:52:07 +09:00
Sergii Liebodkin
40cff2d6f5
wg_engine: fix long path support
...
created a singe shared instance of stoke generator in heap, instead of stack. No performace impact
2024-10-16 00:52:07 +09:00
Sergii Liebodkin
c926eebba1
wg_engine: fix empty shape aabb handling
...
see https://github.com/thorvg/thorvg/issues/2843 :
2024-10-16 00:52:07 +09:00
RuiwenTang
0c08dab32f
gl_engine: implement path trim in tvgGlTessellator
...
Implement the path trim claculation, and handle the strokeTrim before
doing Path stroke.
issue: https://github.com/thorvg/thorvg/issues/2435
2024-10-15 20:02:42 +09:00
Hermet Park
630cbc48ae
api: revise the api for v1.0
...
- refactored the Fill matrix to hold internal data statically.
- refactored for clean & neat the raster engine / svg loader logic.
API Modification:
- Matrix Fill::transform() const -> Matrix& Fill::transform() const
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-14 23:32:55 +09:00
Hermet Park
6a45e6e494
api: revise the api for v1.0
...
API Modification:
- Matrix Paint::transform() -> Matrix& Paint::transform()
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-14 17:22:20 +09:00
Hermet Park
65916857e2
api: polish the thorvg API usages
...
Use ColorSpace to support various types of raw bitmaps.
API Modifications:
- Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, bool premultiplied, bool copy = false) -> Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, ColorSpace cs, bool copy = false)
- Tvg_Result tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, bool premultiplied, bool copy) -> Tvg_Result tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, Tvg_Colorspace cs, bool copy)
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-13 11:15:57 +09:00
Hermet Park
0e45fabb3d
spec out tvg binary format
...
issue: https://github.com/thorvg/thorvg/issues/2721
2024-10-12 21:07:31 +09:00
Hermet Park
367ac5f331
api: removed redundant CompisiteMethod::ClipPath
...
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-12 16:02:38 +09:00
Hermet Park
9bc900206b
api: polish the thorvg API usages.
...
API Modification:
- SwCanvas::Colorspace -> ColorSpace
API Addition:
- ColorSpace::Unknown
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-12 15:38:03 +09:00
Mira Grudzinska
0a677396c4
sw_engine: split long lines to avoid overflow
...
@Issue: https://github.com/thorvg/thorvg/issues/2651
2024-10-10 14:21:13 +09:00
Hermet Park
8cdc0da1e2
lottie: Fine-tune for post-processing effect.
...
reduce quality for the post-processing effect to
improve general performance, while fine-tuning the quality
for lower resolutions.
2024-10-09 20:41:52 +09:00
Hermet Park
4feab345fb
sw_engine: properly update the render region
...
shape render region should be aligned with the
current shape bbox. this could bring the compact size
of the rendering region even shapes are not drawable.
2024-10-09 20:41:52 +09:00
Hermet Park
01559a45c0
api: remove deprecations
...
issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-07 20:43:37 +09:00
Sergii Liebodkin
b4238cd647
wg_engine: fix long path decoding crash
...
fixed crash with shape have too big path
2024-10-07 17:00:43 +09:00
Sergii Liebodkin
2bd8fdad36
wg_engine: fix custom scene blending with opacity
...
fixed incorrect opacity applience for scene blending
2024-10-04 23:23:03 +09:00