Show HN: Forma – An efficient vector-graphics renderer
github.com
github.com
This code is simpler than Vello (the new name for piet-gpu), focused on vector path rendering. It's also a strong demo of the power of WebGPU, while also having a performant software-only pipeline. I definitely encourage people to take a closer look.
I mean, it does work, it's just slower than using compute in most cases. I mean, people have emulated Linux in the GPU rasterization pipeline [1], so the raster pipeline is clearly Turing complete :)
There was a recent discussion about map rendering and I commented to "just convert to SVG and let the browser render it" to which someone said that's too slow, to which I said "so improve the browsers vector rendering" rather than do a high performance renderer just for map software.
Edit: glossed over the "browser" part. My bad.
https://osmand.net/blog/osmand-android-4-3-released/#new-fas...
I see no slowness in OSM+ rendering on Android once the data for an area is loaded, as you pan, zoom, etc. But the pause between opening a new location and having it rendered is quite noticeable.
I dunno. I'm not that bright. I don't fully understand it all. But I feel like it should be easy to say, "here's some SVG files for my toy 2D game. I expect they'll scale infinitely well when I zoom the viewport" but alas it was such a migraine with PhaserJS/PixiJs, Godot, and Unity3D.
I'm excited about any sort of project to get you vector graphics as close to the metal as possible before being rasterized (ideally upon draw to the graphics buffer)
It's at https://github.com/parasol-framework/parasol but fair warning though, it is in alpha right now and going through an overhaul.
Get a NeXT workstation and use Display Postscript?
edit: although, as I look more deeply, I may be misunderstanding and this may not be something that would benefit existing SVG browser rendering in any way...
I ran into a bunch of issues especially with text, when starting to scale "objects-with-txt", had to add bunch of weird css-stuff everywhere and not it's not very cross-browser.
I'm now back on the ThreeJS train again :/
Like, how does sorting pixel segments result in coverage masks? Is there an accumulator somewhere that isn't mentioned?
This looks like an issue with wgpu-rs, but am I wrong in assuming that the CPU device would work regardless of the graphic card?
What's a pixel segment exactly? Just a list of pixel coordinates that intersect?
The map of Paris rendered in 40ms on my M1 Air which is crazy considering it's a 14MB file with tons of overlapping shapes.
I'm guessing supporting stroke is difficult because you would need to ultimately convert them to shapes which can travel through the pipeline.
BTW WebGPU 1.0 now has a target date of May 4 2023 to be enabled by default in Chrome Stable. But with the origin trial you don't have to wait.
I'm interested enough to click on a demo, but I'm not _quite_ interested enough to figure out what hoops I would need to jump through to get that demo running myself.
There are other processes that allow you to retain copyright for yourself, but they require approval process.
(I used to work at Google, and have followed this process before.)
There are many lawyers and such at Google who think about these things more intensely than you and I do. I'm sure they have looked at all angles.
EDIT: I do find it amusing to watch HN and other forums whenever something new and interesting is dumped under the /google org and people need to be convinced it's not some radical new direction Google is taking. But I've also been wrong before. I dismissed Fuchsia as a personal hobby project that grew out of control, until it grew out of control enough that it rm -r'd everything I'd been working on for 2+ years.
Commit rights, I'm actually not clear on, but by default I think you'd lose rights. I believe there's likely a process for keeping them,, but I don't recall what it is. The one repo I contributed to that followed this process was essentially abandoned long before I left Google.