A question about UI optimization with Unreal (Compass)

Well I think your method is already highly optimised and its a constraint between performance, usability and quality how we nail down things.

Using atlas is a common method still in UE however new compass and ux requirements are much more demanding, landscape is changing and leaning towards UX more.

New compasses like, animated icons, Icons transitioning between compass and world, dynamic distance texts, 3d rotations and many more. Depending on the game/engine I used different approaches and in UMG, I generally go with materials on shader level solutions.

One of the approaches I used is: having a compass manager spawning indicators that is relevant to the players look direction and discard if not look direction or relevant ( like distance too much). This enables to control sizes and emphasis on objectives in different scales, colors, so player can know what is a meaningfull target just by looking. Still this is not less costly than yours but have different pros ofc.

Worked on some different compasses or atleast be in the team working on those in a compass that has vertical information also directional.

An interesting one that i did using another engine for a space game prototype.
On that I literally used 3D thin cylinders with textures and actual objects embedded on it. Rendered with additional camera as overlay into a shader, where actual objects are in world but not player viewing. It was cost efficient even though it doesn’t sounds like that.

Interestingly this apprach enabled couple of things. First the animations are super since its real 3D they ease out in the edges even turn before dissappear, thus gives a super realistic feeling almost like a gyroscope feeliing or analog ui. (I love physical interfaces)
Secondly, it gave me some more artistic advantages like adding physics to 3D meshes. So when vehicle is hit or there is a acceleration, those effects are visible on compass. Think I can do that in unreal too but don’t think would be nice without writing something custom to viewport hud renderer.

Edit : Maybe can do something like that with niagara actually, could be an interesting one.