Video wird geladen...

Video konnte nicht geladen werden

Zur Startseite

Hot take: retained-mode was a premature optimization. We built Membrane using rust and egui and never looked back. When our IDE was react-based we had to worry about reflows and re-renders. With immediate-mode every frame is a re-render! But it only takes 900us

89,828 Aufrufe • vor 1 Jahr •via X (Twitter)

10 Kommentare

Profilbild von Juan Campa
Juan Campavor 1 Jahr

Retained-mode made sense when GPUs didn't exist but these days virtually every device has a powerful enough GPU to continually paint what amounts to a bunch of rectangles.

Profilbild von static_assert(false)
static_assert(false)vor 1 Jahr

Nice UI! … now let’s see the battery life

Profilbild von Juan Campa
Juan Campavor 1 Jahr

It uses 0.9ms out of 16.6ms which translates to ~6% usage of a single CPU core! I’m okay with that. (assuming 60hz display, double for 120hz) GPU might actually be less than DOM-based apps because there’s no layer compositor. I haven’t measured though. Everything is rendered in a single pass. It does nothing while idle or backgrounded. Only when being interacted with.

Profilbild von WerWolv
WerWolvvor 1 Jahr

Had the exact same experience when making ImHex! Immediate Mode is great. I did make one optimization though. By default we render at the screen refresh rate but if the window isn't focused or no input events have happened for a few seconds, we lower it to 5 FPS

Profilbild von Patryk Zoltowski
Patryk Zoltowskivor 1 Jahr

This maybe makes sense for some desktop apps but definitely not for mobile apps or OS ui - would drain battery too much. Imagine all windows OS gui and apps written in immediate mode and battery would be dead much faster.

Profilbild von ____ _____
____ _____vor 1 Jahr

Look into lazy evaluation! You can use an immediate mode API with retained mode performance if you do it right. That's what I did on my own project at least.

Profilbild von Juan Campa
Juan Campavor 1 Jahr

Isn’t that exactly what react does?

Profilbild von Johannes Schickling
Johannes Schicklingvor 1 Jahr

Damn this UI looks awesome!

Profilbild von Patrick Smith
Patrick Smithvor 1 Jahr

React is a retained virtual DOM because the other retained system, the DOM, has a slow API. Which is then transformed by the browser into another retained layout tree, and that into a retained paint tree. It’s multiple levels of retained.

Profilbild von Johann Woelper
Johann Woelpervor 1 Jahr

I did the same with my image viewer: Never looked back. The most important part is that UI is fun again now.

Ähnliche Videos