I am wondering what type of UI renderer Aspect uses. I am quite impressed with the performance of the app and from what I can gather from your GitHub, you guys don’t publish what UI renderer and GUI library you are using.
Out of curiosity, are you guys using an immediate-mode or retained-mode GUI? I’ve heard retained mode is more computationally efficient.
I sent a job application a while back because I heard you use D-Lang to make Aspect, which is really cool.
We are currently using OpenGL/OpenGL ES for rendering. The UI framework and renderer is one that I originally developed in C++ and ported/reimplemented in D around 20 years back (at the time for implementing the editor of a 3D game engine). Although it has been planned for quite a while, I never got around to open source it so far, because there are certain design decisions that I’d like to revisit before others start to depend on it – it’s obvious that there are going to be some bigger breaking changes involved.
It does use a retained state approach. Although I think immediate GUIs are nicer in many ways, I didn’t find an approach that is able to scale well enough in terms of UI complexity/performance. The retained UI “scene graph” also enables certain optimizations, such as caching chunks of the UI as combined vertex/index buffers or as pre-rendered textures that can be reused for drawing later frames.
Still, this is one of the areas where I’d like to revisit the design to see if parts of it can still be changed to use a more functional style. Currently it is similar to something like Qt in that it defines widget types as individual classes that implement handling of inputs, state management and drawing in a single entity.
That’s really cool! I’m working on a vello wrapper in hopes of either making my own rmgui on vulkan back-end or dropping it into dlangui as a replacement for whatever it uses (Guess I replace the OpenGL calls?)
Would love to let you use it to aid in your path forward. I did several weeks of research using AI to get a lay of the current library and ui architecture landscape, and I noticed Microsoft’s Avalonia UI library is migrating to vello, too. But Vello is rust-native so it drags in a build time dependency. That is a minor gripe, but the benefits outweigh the annoyance.