back
user profile
raphlinus
13,685karma·1,846submissions·March 7, 2014
about
I do research on fundamental UI technology and 2D graphics, with a focus on Rust and fonts.
@raph@mastodon.online
recent activity (1,846 total)
comment
+1 to always measuring. That said, we have done some experiments regarding power, including on Android, and it looks favorable. The general rule of thumb is that a GPU has about 10x the raw throughput…
comment
So this is a little bit more complicated as a tradeoff. The main reason Skia is faster is that it's generating fewer primitives (quadratic Béziers instead of lines or arcs). Depending on the deta…
comment
Good catch! We took the mmark CPU numbers out (in response to review feedback) because they made the graphs hard to read, but it scales very much the same way as the Nehab timings dataset. The raw CPU…
comment
The technique works for both fills and strokes, and is used by Vello for both, including for the text rendering. One of the nice things we found is that lowering Euler spirals to arcs works particular…
comment
The description of "project manager mathematicians" reminded me of "A letter to my old friend Jonathan" [1] and the followup [2] by Edsger Dijkstra from 1975. It was written as sat…
comment
There's a bit more information at [1], but I think the details are not public. The hardware is tracking a separate program counter (and call stack) for each thread. So in the CAS example, one t…
comment
I'm not aware of any similarly mature GPU-based JSON parser, but I believe such a thing is possible. My stack monoid work [1] contains a bunch of ideas that may be helpful for building one. I…
comment
One of the other major things that's changed is that Nvidia now has independent thread scheduling (as of Volta, see [1]). That allows things like individual threads to take locks, which is a pret…
comment
There's also a recent Mastodon thread[1] that has the highlights of this blog post and links to it. [1]: https://mastodon.online/@johncarlosbaez@mathstodon.xyz/11258... …
comment
Until that video comes out, you can read the proposal[1]. This appears to be quite recent (the timestamp says 4 days ago). I personally found the writing style of the proposal to be clearer than the t…
comment
Personally, I would say writing compute shaders to do nontrivial tasks like parsing, sorting, and handling data structures. There's a lot of this in Vello. There's a small community of peopl…
comment
I think that to some extent represents the dream, with caveats. A few pieces need to fall into place. 1. You need to formalize the semantics of unsafe Rust. Ralf Jung's pioneering RustBelt[1] wor…
comment
It's a good question. I touch on it a little in my thesis (mostly chapter 2). First, there is psychology literature from the 50's [1] that indicates that curvature minima and maxima are sali…
comment
That's a joke answer, as you meant it to be trivially true for any curve family, but there is an important sense in which it is not true - Hobby splines are not closed under subdivision. So if yo…
comment
No. Among other things, they'd have a higher degree of continuity if they were. I personally find this a fascinating topic, so much so that I did a PhD on it. The most natural loss function to op…
comment
Most of the applications of Hobby's spline would be better served by using Euler spirals instead. These are G2 continuous and have less curvature varation (in fact, Euler spirals are solutions of…
comment
As a counterpoint, I appreciated this recent post by Martin Kleppmann[1]: I've worked out why I don't get much value out of LLMs. The hardest and most time-consuming parts of my job involve …
comment
It's... ok. What kurbo does is lower to quadratic Béziers[1], then the analytic solution to nearest for a quadratic Bézier is the solution to a cubic equation[2]. I'm not sure this is the be…
comment
Cool to see! The tweak suggested in the blog post when you're near the vertex of the parabola is valid, and the implementation that was in Vello did something very similar. This is also the fla…
comment
For the math aficionados in this thread, I have a frequency domain related set of ideas I'd like to develop into a more rigorous mathematical theory. Basically, represent a curve as Chebyshev pol…
comment
To me it recalls "This has made a lot of people very angry and has been widely regarded as a bad move," which is a bit from the introduction and first chapter of the Hitchhiker's Guide.
comment
Very cool project, and I love to see more work in this space. Something else to look at is the Vortex project from Georgia Tech[1]. Rather than recapitulating the fixed-function past of GPU design, I …
comment
I think you've got a point here. 2D rendering is reasonably well defined. The problem is the overwhelming complexity of the GPU ecosystem. If you just had a decent parallel computer, it wouldn…
comment
I'm looking forward to doing careful benchmarking, as this renderer absolutely looks like it will be competitive. It turns out that is really hard to do, if you want meaningful results. My init…
comment
Good further reading on this change is "Windowless controls are not magic"[1] from Raymond Chen, and the followup "Windows are not cheap objects"[2]. It's a fascinating tradeo…
comment
Often does it actually improve the title? I think the actual use case is stuff like "how I cross-compiled Eliza to the IBM 1401 using Zig", where it is a little cleaner without.
comment
Indeed. I learned color theory from "The Measurement of Appearance" by Richards Hunter and Harold, and one of the strengths of that work is that goes well beyond simple color into things lik…
comment
Indeed, and there's a most excellent essay that goes into considerably more detail on this: https://www.exurbe.com/tools-for-thinking-about-censorship/ , written partly in r…
comment
I joined Android in April 2012. Looking back, at that time Android was incredibly lean for what it was accomplishing. The entire Frameworks team reported to one manager, and we would fit in a medium s…