Patrick Walton
02012431ca
Implement color dodge and color burn blend modes
2020-02-25 11:37:42 -08:00
Patrick Walton
5b228ed825
Implement multiply, screen, hard light, and overlay blend modes.
2020-02-24 21:23:17 -08:00
Patrick Walton
149efeb672
Fix `is_fully_transparent()` for colors.
...
Oops!
2020-02-24 21:22:36 -08:00
Patrick Walton
99d980c0c7
Fix batch breaking logic for blend modes
2020-02-24 21:22:15 -08:00
Patrick Walton
00b7a2ee5a
Factor out 3-element selection into a `select3()` function
2020-02-24 21:21:30 -08:00
Patrick Walton
c96cb62f47
Factor out common functions used in tile alpha shaders
2020-02-24 19:42:32 -08:00
Patrick Walton
5421525eaa
Implement the HSL filters (called "non-separable blend modes" in the spec).
...
These cannot be implemented with the standard OpenGL blending functions, so we
have to do them manually in a shader, which requires a good deal of machinery
to create intermediate framebuffers and so forth.
2020-02-24 15:37:44 -08:00
Patrick Walton
67d12adb6c
Replace layers with render targets, which can be used as patterns.
...
This allows us to efficiently handle a lot of workloads that require multiple
HTML canvases, without CPU readback. For example, you can render paths to a
render target, then turn that render target into a repeating pattern that you
fill other paths with. Or you can render paths to a render target and then
composite that render target as a whole with a blend mode.
This introduces a new `DrawRenderTarget` render command that blits a render
target without any paths involved. This is basically just a hack that works
around the fact that our tiled renderer doesn't yet support effects that widen
the ink region (i.e. blurs). It can be removed once we have that support.
2020-02-21 22:14:18 -08:00
Patrick Walton
3245796445
Add support for multiple paint texture pages.
...
This avoids arbitrary limits on the number of images, gradients, etc. you can
have.
2020-02-21 14:46:10 -08:00
Patrick Walton
0b102ec97d
Fix compile error in `convert` utility
2020-02-20 22:23:38 -08:00
Patrick Walton
36538d5748
Implement a few more blend modes and switch to premultiplied alpha for layer
...
compositing
2020-02-20 22:22:15 -08:00
Patrick Walton
4933efb513
Add Lighten and Darken composite ops
2020-02-20 20:38:43 -08:00
Patrick Walton
ab55b9509b
Fix handling of solid tiles with the Clear blend mode
2020-02-20 18:15:20 -08:00
Patrick Walton
6acd2d91f7
Implement `clear_rect()` in the canvas front-end by introducing the concept of
...
per-path blend modes.
These should be useful for some canvas composite operations as well.
2020-02-20 15:52:40 -08:00
Patrick Walton
0c3dad974f
Expose individual blend factors in `pathfinder_gpu`
2020-02-20 15:28:37 -08:00
Patrick Walton
16a2de88df
Rename "postprocessing" to "effects" and start initial work on composite ops
2020-02-20 14:22:07 -08:00
Patrick Walton
d9e994e46d
Transition the existing postprocessing system to a layers system.
...
This is preparatory work for composite ops and blurs.
Closes #261 .
2020-02-20 11:21:45 -08:00
Patrick Walton
25f9346160
Add an incomplete port of the NanoVG example app
2020-02-19 11:00:03 -08:00
Patrick Walton
fd070d7a24
Start an `angle` module in `pathfinder_geometry`
2020-02-19 10:59:40 -08:00
Patrick Walton
95d5fab5ef
Minor cleanup in `pathfinder_canvas`
2020-02-19 10:59:40 -08:00
Patrick Walton
cc9711e151
Transform some paints in the canvas API
2020-02-18 16:06:39 -08:00
Patrick Walton
3f79927eb1
Allow the paint texture to grow a bit
2020-02-18 15:06:09 -08:00
Patrick Walton
d97eb32566
Add a (somewhat inefficient) HSLA to RGBA conversion function
2020-02-18 14:36:26 -08:00
Patrick Walton
df150dea8a
Add a method to fetch the center of a rect
2020-02-18 14:36:10 -08:00
Patrick Walton
dcd12279d4
Fix counterclockwise arc logic
2020-02-18 14:36:02 -08:00
Patrick Walton
4419553acc
Clamp gradient time to [0, 1]
2020-02-18 14:35:37 -08:00
Patrick Walton
28c0811daa
Fix `pathfinder_swf` build
2020-02-17 15:24:21 -08:00
Patrick Walton
a383c9a2ab
Fix build of `pathfinder_text`
2020-02-17 14:55:05 -08:00
Patrick Walton
3ad1c25796
Implement the even-odd fill rule
2020-02-17 14:44:48 -08:00
Patrick Walton
243f2cc9b2
Add basic, incomplete support for clip paths in SVG
2020-02-16 15:02:37 -08:00
Patrick Walton
677c607a8c
Get clips working for canvas
2020-02-16 13:45:15 -08:00
Patrick Walton
0d3bbbd506
Clip entire tiles appropriately.
...
This doesn't composite masks together, so it's currently incomplete.
2020-02-15 18:01:23 -08:00
Patrick Walton
a8019a1a1a
Fix mask positioning on OpenGL
2020-02-15 18:00:25 -08:00
Patrick Walton
631e16ce9b
Fix flipped Y axis in mask texture positioning
2020-02-15 14:08:22 -08:00
Patrick Walton
f26eecae7a
Build clip paths before draw paths
2020-02-15 14:04:01 -08:00
Patrick Walton
496b55ee4e
Add front-end support for clip paths. They don't do anything yet.
2020-02-15 13:21:12 -08:00
Patrick Walton
fefa3c3cd3
Rename `PathObject` to `DrawPath` to differentiate it from a clip path
2020-02-15 12:39:15 -08:00
Patrick Walton
6e28552a44
Add missing shaders
2020-02-14 22:10:04 -08:00
Patrick Walton
0883f54e2d
Add a separate mask blit step, in preparation for supporting clips.
...
We can elide this in the future if there are no clips, but it isn't a huge
performance regression right now, so let's just unconditionally do it.
2020-02-14 21:56:43 -08:00
Patrick Walton
6a73a63336
Factor out mask texture UV calculation, and rename a couple of render commands
2020-02-14 21:37:20 -08:00
Patrick Walton
31becb1570
Flatten objects' tiles ourselves instead of having Rayon do it.
...
A prerequisite for clips.
2020-02-14 21:20:19 -08:00
Patrick Walton
84ffc3151e
Split shaders out into a separate module.
2020-02-14 11:56:38 -08:00
Patrick Walton
90445bac7e
Implement basic support for non-repeating image patterns.
2020-02-11 17:20:21 -08:00
Patrick Walton
aad467e716
Implement basic radial gradients.
...
This doesn't handle the case where the circles are not concentric yet.
2020-02-10 22:15:50 -08:00
Patrick Walton
5a21557a6d
Implement basic linear gradients.
...
This is not a very efficient implementation yet, but it seems to work.
2020-02-10 16:01:05 -08:00
Patrick Walton
740597d886
Merge pull request #254 from arturoc/remove-log-restriction
...
Remove log restriction
2020-02-06 08:38:08 -08:00
Patrick Walton
183c802a13
Merge pull request #257 from linkmauve/eijebong
...
Bump almost all dependencies to their latest version
2020-02-06 08:37:20 -08:00
Emmanuel Gil Peyrot
124472cff1
Regenerate Cargo.lock with the latest changes
2020-02-06 09:39:58 +01:00
Emmanuel Gil Peyrot
6ce416e77c
Bump all outdated dependencies
...
I’m pleasantly surprised that none of these required any (visible) code
change, but tests pass so let’s go with that. :)
2020-02-06 09:39:50 +01:00
Emmanuel Gil Peyrot
03e3a9fded
Bump glutin dependency in the example
...
The API of winit has changed quite a lot in their 0.20 release.
2020-02-06 09:39:50 +01:00
Emmanuel Gil Peyrot
d2b8e2cd30
Bump euclid dependency of area-lut
2020-02-06 09:39:50 +01:00
Emmanuel Gil Peyrot
fb22aafada
Update swf-related crates
...
swf-tree got renamed into swf-types for their 0.10 release.
2020-02-06 09:39:50 +01:00
Emmanuel Gil Peyrot
2d2bc14e5c
Remove unused import
2020-02-06 08:45:14 +01:00
Patrick Walton
706b6dbd1d
Add an API for gradients to the canvas frontend, not implemented yet
2020-02-05 20:01:11 -08:00
Patrick Walton
9a2e4f0b6d
Merge pull request #259 from linkmauve/fix-missing-quickcheck
...
Add quickcheck build-dependency
2020-02-05 15:24:28 -08:00
Patrick Walton
a66ed4c073
Specify tile texture coordinates as an affine transform.
...
Part of the groundwork for gradients.
2020-02-05 13:59:32 -08:00
Emmanuel Gil Peyrot
cc6fe7864b
Add quickcheck build-dependency
...
quickcheck usage in pathfinder_content had been added in
b8f622203a
, but not to the Cargo.toml.
This makes tests pass again.
2020-02-05 14:35:20 +01:00
Patrick Walton
b269723254
Switch to per-pixel texture lookup for paints.
...
This is a prerequisite for supporting gradients and images.
2020-02-04 21:50:13 -08:00
Patrick Walton
1e84ddf1ff
Use the texture allocator to allocate solid colors
2020-02-03 22:24:34 -08:00
Patrick Walton
b8f622203a
Add a simple quadtree-based texture allocator
2020-01-31 14:38:01 +01:00
Patrick Walton
2db43797c3
Split colors out into their own crate.
...
A lot of downstream consumers of `pathfinder_gpu` want to use colors without
the path stuff.
2020-01-31 09:17:04 +01:00
Arturo Castro
3be6d70577
remove log restrictions from renderer, demo/common and gl crates
2020-01-28 15:24:21 +01:00
Arturo Castro
7213b3e1cb
Remove log restriction
...
pathfinder-geometry enabled a log feature that restricts logging
to warn for any binary using it.
2020-01-28 12:07:03 +01:00
Patrick Walton
cd05eefac7
Merge pull request #252 from s3bk/fix-simd
...
fix simd for scalar platforms
2020-01-23 19:44:21 -08:00
Patrick Walton
5ea86ccba8
Bump `pathfinder_geometry` and `pathfinder_simd` to version 0.4
2020-01-23 18:24:56 -08:00
Sebastian K
de0f9055ed
fix scalar simd impls
2020-01-24 00:24:22 +03:00
Patrick Walton
3f72847294
Add a few missing methods to geometry and SIMD; fix SIMD tests
2020-01-14 21:31:22 -08:00
Patrick Walton
422ccbc15c
Merge pull request #250 from servo/i686
...
Support `pathfinder_simd` on 32-bit x86.
2020-01-14 13:04:28 -08:00
Patrick Walton
ee9187849b
Support `pathfinder_simd` on 32-bit x86.
...
Closes #249 .
2020-01-14 13:03:31 -08:00
Patrick Walton
ce3b40cd5c
Make timer queries and framebuffer readback async
2020-01-07 13:03:15 -08:00
Patrick Walton
eb66459ef4
Fold the `.round()` method on SIMD vectors into float-to-int conversion.
...
This drops our requirements from SSE4.1 to SSE2.
Closes #241 .
2019-12-29 15:05:01 -08:00
Patrick Walton
0bb6b88859
Stop using AVX2 when packing pixels.
...
Partially addresses #241 .
2019-12-29 12:38:36 -08:00
Patrick Walton
986792349f
Use the SSE2 `_mm_movemask_ps` on x86 instead of the SSE4.1 `_mm_test_all_ones`
...
and `_mm_test_all_zeros`.
Partially addresses #241 .
2019-12-29 12:13:58 -08:00
Patrick Walton
7f6374f110
Merge pull request #245 from s3bk/sorted_vector_binary_search
...
use a binary search for pathfinder_renderer::SortedVector
2019-12-29 11:29:45 -08:00
Patrick Walton
dcefd7b70b
Merge pull request #246 from s3bk/usvg_0.8
...
update usvg to 0.8
2019-12-29 11:29:09 -08:00
Sebastian K
e38e2d800f
update usvg to 0.8
2019-12-28 11:46:31 +03:00
Sebastian K
805066e65c
use a binary search for pathfinder_renderer::SortedVector
2019-12-28 11:14:25 +03:00
Patrick Walton
0662f6433f
Allow any texture format to be uploaded; fix Metal compilation on newer rustcs
2019-12-20 11:48:51 -08:00
Patrick Walton
7c655246ae
Add some more features to blending, and expand texture upload features
2019-12-19 08:58:02 -08:00
Patrick Walton
9124d9856a
Add some more methods to 3D vectors, and a `gluLookAt()` workalike
2019-12-18 15:19:42 -08:00
Patrick Walton
8dabd0a7ea
Add RGBA32F support
2019-12-14 13:58:02 -08:00
Patrick Walton
521ab3b5ba
Add a 3D vector type
2019-12-07 11:52:35 -08:00
Patrick Walton
b912cbbeb4
Merge pull request #242 from SethDusek/master
...
Bump lyon, font-kit and skribo versions to fix crashes
2019-11-30 15:01:40 -08:00
Kamal Ahmad
29713c5cd9
Bump lyon, font-kit and skribo versions to fix crashes
2019-11-20 22:51:03 +05:00
Patrick Walton
fa54868eb1
Add support for single float uniforms to `pathfinder_gpu`
2019-11-15 21:17:50 -08:00
Patrick Walton
9260dbce93
Fix Cargo.toml in `pathfinder_geometry`
2019-11-10 10:33:34 -08:00
Patrick Walton
586d974b7d
Update `Cargo.toml`s in preparation for publishing SIMD and geometry
2019-11-10 10:32:41 -08:00
Patrick Walton
ff212dce36
Add 2D matrix uniform types and a couple more useful geometry methods
2019-11-10 10:28:20 -08:00
Patrick Walton
5d5d30346b
Remove unnecessary dependencies from `pathfinder_gl`
2019-10-19 15:37:17 -07:00
Patrick Walton
99654270c9
Merge pull request #232 from s3bk/PR
...
fix #219 (minimum stroke thickness)
2019-10-04 20:30:23 -07:00
Patrick Walton
8914cb4977
Merge pull request #236 from est31/master
...
Remove redundant fixedbitset dependency
2019-09-07 18:22:43 -07:00
est31
ad143712a8
Remove redundant fixedbitset dependency
2019-08-30 20:24:09 +02:00
Sebastian Köln
3d0e911c3e
fix #219 (minimum stroke thickness)
2019-08-10 18:35:56 +03:00
Patrick Walton
f89ed900a3
Merge pull request #225 from est31/optional_text_rendering
...
Make text rendering optional in pathfinder_canvas
2019-08-05 13:51:49 -07:00
est31
3928e8d964
Rename the feature text → pf-text
2019-08-05 22:49:08 +02:00
est31
38df17696a
Put the text stuff into separate files
2019-07-27 19:18:10 +02:00
est31
fa1a32bdbb
Make text rendering optional in pathfinder_canvas
2019-07-27 06:13:02 +02:00
Patrick Walton
3c18f99bf8
Merge pull request #216 from toolness/c-improvements
...
Expose Canvas transform and save/restore to C
2019-07-22 15:18:48 -07:00
Patrick Walton
842348c65f
Merge pull request #218 from s3bk/master
...
fixes and a possible canvas addition
2019-07-22 15:17:29 -07:00
Sebastian Köln
f00038eac1
don't return a reference
2019-07-19 20:57:15 +03:00