-
-
Notifications
You must be signed in to change notification settings - Fork 806
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
render: Stroke paths with tiny-skia-path #11062
base: master
Are you sure you want to change the base?
Conversation
Any metrics on this already or do you want me to benchmark something? |
No metrics yet at all. I am currently just surprised that this approach even works as well as it appears to do (and first try, thanks Rust!). I plan to do some benchmarking soon, but if you find the time and initiative, more eyes on it can't hurt. Related: I suppose a wireframe rendering mode could come in handy for debugging/visualization/coolness purposes... I know it's not as simple now as back in the old |
e7cdf1d
to
cb7611b
Compare
290ee34
to
fec7ab2
Compare
10d2ff0
to
f0421b7
Compare
ec669bd
to
9d3be60
Compare
8dc3171
to
d95d5d4
Compare
d95d5d4
to
63f0cd9
Compare
63f0cd9
to
2cb2968
Compare
93a8de4
to
a2451eb
Compare
Somewhat related, for debugging/verifying/inspecting purposes: #11880 |
a2451eb
to
5f5f72a
Compare
b4533ac
to
624bde9
Compare
One small problem with this is that Also, the exact dotting/dashing algorithm might be different (see the updated And finally, this way of making a stroke mesh might, in some rare cases (such as in the linked z0r.de loop) produce highly suboptimal meshes, with lots of unnecessary internal vertices. While we could try to be clever and throw those away, I don't think the additional CPU overhead of the already slow tessellation justifies the handful of vertices saved for the GPU. I could be wrong though... |
624bde9
to
31df2b9
Compare
31df2b9
to
125793b
Compare
This is supposed to fix #7565 by not using
lyon
'sStrokeTessellator
- instead, for strokes, converting the Ruffle path to atiny_skia_path::Path
first, then running atiny_skia_path::PathStroker
on it, then converting that to alyon
path, and tessellating it as a fill with a non-zero fill rule.It's dumb and probably slow, but hey, it seems to work.
Fixes #13656, and fixes #13658 too.