@raph@mastodon.online
@raph@mastodon.online avatar

raph

@raph@mastodon.online

I do fundamental research on 2D graphics, UI programming, and fonts, and am active in the Rust community. Currently on Google Fonts team. 🌈

This profile is from a federated server and may be incomplete. Browse more on the original instance.

pervognsen, (edited ) to random
@pervognsen@mastodon.social avatar

Another thing I noticed in the SDL 3 preview (which was apparently already added in vestigial form later in SDL 2) is that they have support now for a callback-based life cycle so you can integrate properly with platforms which expect that without having to resort to inversion-of-control hacks like fibers for interop. While I always liked the "app controls the main loop" aspect of the classic SDL event pumping model, that ship has sailed if you care about cross-platform support.

raph,
@raph@mastodon.online avatar

@floooh @pervognsen Oh, it's sooooo much more complicated than this. You can do smooth resize with DX11-style blit model DXGI, but in DX12-style flip model, the system just lacks the synchronization you need. It might be possible to get it almost good in some cases, but there's no systematic way to do it.

There are some bugs open on Microsoft, I'm not sure if and when they'll fix it properly.

raph,
@raph@mastodon.online avatar

@floooh @pervognsen Yes, that's the flip model, you can do DX11 with flip, but you can't do DX12 with blit (unless you play various interop games, which will almost certainly degrade performance in the non-resizing case).

I should probably talk about the various DXGI versions to avoid confusion, but those will be less familiar to most readers.

raph, to random
@raph@mastodon.online avatar

I'll be giving my talk on Xilem at this afternoon (14:40 CEST). It'll be on the conference livestream: https://2024.rustnl.org/live/

There'll be a lot to present. Among other things, we did the 0.1 release of Xilem last night. Things are moving!

raph, to random
@raph@mastodon.online avatar

I'm on the train to Delft for . I still have more work to do on the slides, and am a bit tired from the flight, but I'm sure it's going to be a great experience and I'm looking forward to meeting lots of people.

I was not able to do a lot of implementation work on Xilem because I was trying to meet a paper deadline, but the community has really come together, and I think the demo will be impressive. It's come a long way just in the last couple of weeks.

raph, to random
@raph@mastodon.online avatar

A major project I've been working on for many months is rendering vector graphics strokes on GPU. @armansito and I recently wrote a paper on our techniques, and it's now available on arXiv (and also submitted to a relevant conference): https://arxiv.org/abs/2405.00127

There's accompanying code and some more resources in the repo: https://github.com/linebender/gpu-stroke-expansion-paper. And of course there's the implementation in Vello.

I'm very proud of this work. Fingers crossed the paper gets accepted.

litherum, to random
@litherum@masto.ai avatar

The feature I most want from HLSL is malloc()

😂

raph,
@raph@mastodon.online avatar

@litherum HLSL has malloc? I know CUDA does.

raph,
@raph@mastodon.online avatar

@litherum Well, we're in the same boat there. I have a presentation called "I want a good parallel computer" where I expand on that, video should be up before too long.

raph,
@raph@mastodon.online avatar

@dneto @litherum I take your point - if we could do 1 THz sequential computers, we'd all be using those, as they're so much easier to program. But I'd still probably want a good parallel computer, if for no other reason than the challenge of how to program it. I admit I'm weird that way.

raph, to random
@raph@mastodon.online avatar

Another edition of This Month in Xilem: https://linebender.org/blog/tmix-03/

There's a lot of work here that's under the surface: GPU stroke expansion, progress on the Masonry refactor (which, among other things, will enable using the widgets with different language bindings or reactive layers), and font loading.

We're also really looking forward to @rustnl next month. That will be a great place for people interested in Rust UI to come together.

raph, to random
@raph@mastodon.online avatar

A week ago I figured out that the evolute of an Euler spiral (Cesàro equation κ(s) = s) is another simple power law spiral, the Cesàro equation being κ(s) = -1/s³. The writeup is at: https://linebender.org/wiki/curves/euler-spiral-evolute/

None of the math for this was very hard, in fact I can see the result being obtained hundreds of years ago if anyone had bothered to look. A challenge for math enthusiasts: does the result generalize to other spirals with a simple power law?

raph, to random
@raph@mastodon.online avatar

My RustLab 2023 talk video is now posted: https://youtu.be/mmW_RbTyj8c. I give an overview of Vello, the high performance GPU 2D graphics renderer I've been working on.

The slides are here: https://docs.google.com/presentation/d/1O-CktOdcnPyTxtCFlFYywGp20lkgy3hNp-mNb8C4ueU/edit?usp=sharing. They contain lots of links to other resources.

raph, to random
@raph@mastodon.online avatar

We'll be posting monthly updates on Xilem progress. Here's the one for January: https://linebender.org/blog/tmix-01/

This one is largely planning and getting things ready (no screenshots this time). I'm very hopeful about joining forces with winit, as I think we'll get a lot more collaboration with the rest of the Rust UI ecosystem.

fanf, to random
@fanf@mendeddrum.org avatar

on my blog!

joining ellipses with matching tangents

https://dotat.at/@/2024-02-05-joining-ellipses.html

once again featuring an interactive diagram

raph,
@raph@mastodon.online avatar

@fanf @simoncozens Ah, that is a shame, as I think you could make very nice f-holes with Euler spirals. But ellipses are very fine curves as well with nice curvature variation. I think the main thing that would bother me is the inability to express an inflection point so you'll get a curvature jump at that join.

lauren, to Youtube
@lauren@mastodon.laurenweinstein.org avatar

Years ago I wrote a series of April Fools Day columns for CACM (Communications of the ACM, a prestigious computer tech journal). They ultimately started labeling them explicitly as parody pieces, because some readers actually believed they were factual, despite being way over the top on issues such as teleportation, the conversion of the U.S. power grid from A.C. to D.C., and so on.

I ran into the same problem with a parody video I made many years ago in the style of a 1960s classified military film about the Internet. Again, some viewers thought it was legit, including some who really should have known better. I went back and labeled it as a parody.

Sometime later an expert on propaganda contacted me about the video and told me why some viewers thought it was real, even though it too was so outrageously over the top. He told me that I had (unwittingly and unknowingly) hit a series of cues that cause people to put aside their logic and accept material purely on an emotional level.

I found (and still find) this phenomenon to be very disconcerting, especially in an age of AI-generated misinformation and purposeful disinformation.

Human nature doesn't change.

raph,
@raph@mastodon.online avatar

@lauren @PandaChronicle I had exactly the same thing happen with my April Fools piece about moving from Rust to C++. I still get people express surprise that I'm still working in Rust.

That one blended some actual interesting points with over-the-top parody, and some of the latter was inside jokes, so it's not too hard to see why it might have confused people.

lauren, to random
@lauren@mastodon.laurenweinstein.org avatar

In the early days of computer terminals, it was not uncommon to have keyboards that featured no more than "2-key rollover". That meant that if you hit more than 2 keys closely together -- common with touch typing -- the results would be, well, not what you wanted.

This was, however, better than the situation with IBM keypunches, which had mechanical keyboards with 1-key rollover. That is, you could only type one character at a time, and all other keys were physically locked out until you released the first key.

Fun, eh?

raph,
@raph@mastodon.online avatar

@ian @lauren I love the font-weight idea! I'd especially love to see that with the variable version of Inconsolata, which has a wide range, and whose monospace design would evoke typewriters which were velocity sensitive in this way.

raph, to webgpu
@raph@mastodon.online avatar

An update on my exploration into GPU sorting, particularly a fast algorithm that can be ported to . There's a lot of really cool work going on in the space. I've created a page on the Linebender wiki that has a survey of papers, resources, and implementations: https://linebender.org/wiki/gpu/sorting/

I think it's a reasonably good snapshot of the current state, and hope to update it as things progress. Also contributors welcome! Should be useful to people doing Gaussian splatting in particular.

raph, to random
@raph@mastodon.online avatar

Another Xilem community blog post, this one by https://mastodon.online/@PoignardAzur, setting forth the roadmap for the Xilem widget tree in 2024: https://linebender.org/blog/xilem-backend-roadmap/

Some of the proposals there may be controversial, but I'm hoping that stirs passionate discussion. In any case, I'm excited about what this will bring.

In related news, we're now seriously exploring joining forces with winit for window creation. You'll hear more about that when we have something to show.

raph, to random
@raph@mastodon.online avatar

Among other creative outlets, I am a semi-pro voice actor. Last week, I filled in at the last minute for a spot that Google Maps needed, and you can now see it here: https://www.youtube.com/shorts/s-p-BIAT-qE

One of my life ambitions is to do voice for a video game. The window for that may be closing thanks to AI, but I also know I have lots of gamedev followers here. Get in touch!

raph, to random
@raph@mastodon.online avatar

Some extremely exciting news: Google Fonts is funding four developers from the open source community to work on Rust UI in 2024. Goals include demonstrating extremely high performance, using Vello for GPU-accelerated 2D rendering, and a port to Android.

All the work is in the open, and we look forward to working with others in the Rust UI ecosystem.

More details here: https://linebender.org/blog/xilem-2024/ I'm excited about what we'll build together!

lcamtuf, to random

deleted_by_author

  • Loading...
  • raph,
    @raph@mastodon.online avatar

    @lcamtuf https://donmoynihan.substack.com/p/the-campaign-to-remove-the-president is a fairly decent answer to your question, arguing that the treatment Claudine Gay got was disproportionate compared to that of, say, Marc Tessier-Lavigne, whose misconduct was far more serious.

    Ultimately, Rufo doesn't care about academic integrity, he probably barely knows what it is, other than a weapon he can use against people he disagrees with.

    raph, to random
    @raph@mastodon.online avatar

    I just found out that Prof Wirth has died. He was a major inspiration for me as a kid. I eagerly read his book on Pascal, at the time not appreciating how unusual it was for its elegance and simplicity. I also followed with interest his development of the Oberon language and Lilith workstation. When I was 13, he gave a talk not too far away, I think it might have been Johns Hopkins, and my dad took me to it. It was a wonderful experience, he was very kind and encouraging, as the photo shows.

    matt, to random

    Question for folks who understand GPU APIs such as Metal, like @raph: Is it possible to have traditional vsync behavior without blocking the main (UI) thread for a long time every frame, particularly on macOS? I ask because the default vsync behavior of the Bevy game engine is apparently blocking the main thread on macOS, and this is very bad for accessibility. It's apparently even affecting mouse input for users who aren't using accessibility tools, as discussed here: https://github.com/bevyengine/bevy/issues/9391

    raph,
    @raph@mastodon.online avatar

    @matt Yes, without question. What you're talking about is a form of frame pacing, which Metal supports just fine. Many 3D apps do a blocking call to present() because it's so much simpler, and the message still hasn't gone out widely, but it's well known that sacrifices performance in a number of ways, especially input lag.

    I should emphasize, it's possible to do non-blocking present without the fancy timing stuff, but by the time you've implemented that, why not get all the gains?

    raph,
    @raph@mastodon.online avatar

    @matt Probably not, but I'd have to dig deeper - this stuff is very very complicated. I agree strongly it's something that should be improved, both for linebender and game-type applications. Browsing the source, I see other problems, for example present_in_transaction is false on mac, which is one reason why smooth window resizing doesn't work.

    raph, to webgpu
    @raph@mastodon.online avatar

    Are you interested in working on parallel sorting algorithms in ? If so, get in touch. I'm especially interested in segmented merge sort (https://moderngpu.github.io/segsort.html), but other classic parallel sort algorithms including bitonic and radix are on the table.

    I would find this fascinating to work on myself (and that still might happen), but my time is pretty packed. Even so, I'm excited about the prospects to where I might be able to fund some work out of my own pocket. Let's discuss.

    raph,
    @raph@mastodon.online avatar

    I got a bunch of responses to this, some private. Thanks for those!

    I also did a bit of an exploration myself, including a bit of a fusion of FidelityFX sort and Onesweep ported to WebGPU, with the warp-local multi-split adapted to use shared memory instead of subgroups (warp operations). Details are in this Zulip thread: https://xi.zulipchat.com/#narrow/stream/197075-gpu/topic/Sorting.20revisited

    This is a preliminary investigation, which shows that performant WebGPU sorting is likely feasible. I hope it gets that conversation started.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • provamag3
  • GTA5RPClips
  • magazineikmin
  • tacticalgear
  • khanakhh
  • InstantRegret
  • Youngstown
  • mdbf
  • slotface
  • thenastyranch
  • everett
  • osvaldo12
  • kavyap
  • rosin
  • megavids
  • DreamBathrooms
  • Durango
  • normalnudes
  • ngwrru68w68
  • vwfavf
  • ethstaker
  • modclub
  • cubers
  • cisconetworking
  • Leos
  • anitta
  • tester
  • JUstTest
  • All magazines