> Are immediate-mode GUIs up to the task?
Yes, there's no reason why imgui's can't do any of that.
> What is driving their authors to pursue this design?
To name a few: Ridiculous bloat and complicated development with things like Qt. No real GUI framework provided by Microsoft apart of their 4-5 half-abandoned offerings.
Also imgui is way simpler to wrap your head around. It's just straight up function calls with no complicated abstractions.
> Why aren't they choosing a declarative design?
Why should it be declarative though? imgui code looks fairly declarative when you read it and it's easy to understand what UI events cause changes
The fact that it requires an order of magnitude less code to do functionally the same thing as traditional toolkits.
>Why aren't they choosing a declarative design?
Because they aren't trying to build a native, standalone desktop application. Declarative design makes little sense for quick and dirty developer tools that just need to directly view and modify simple data structures.
This is a common misconception.
At least with Dear ImGui, all of the actual rendering is performed by the graphics driver, which has a cache.
So, while you may have to queue 100 "render texture" calls every frame, there's no real difference between ImGUI and retained-mode when it comes to the actual frames being rendered.
> Are immediate-mode GUIs up to the task? What is driving their authors to pursue this design? Why aren't they choosing a declarative design
Immediate mode UIs make managing state much easier, and avoids callbacks for event processing. That alone is worth it in my opinion.
> Are immediate-mode GUIs up to the task?
Enough for companies like Unity/UE4 to sponsor the github projects.
Most just don't this (and instead use dynamic buffers which are updated with new data each frame) because the state diffing would complicate the implementation and is usually "not worth it", but they still implement batching within a single frame and reduce the amount of draw calls as much as possible (for instance in Dear ImGui, there's usually one draw call per scroll/clip region so you get away with a handful or at most a few dozen draw calls even for complex UIs).
High refresh rate screens are a reality so you only have 3-6ms to render each frame, as well as high resolution screens at 4k-8k. That's a lot of pixels to push with a CPU on every frame. As another comment points out we also need accessibility. I would generalize this need as "GUIs need to be reinterpretable", this need is not limited to those with disabilities and such a capability can be useful to anyone that wants to customize, automate, and integrate their digital tools.
Are immediate-mode GUIs up to the task? What is driving their authors to pursue this design? Why aren't they choosing a declarative design?