перевод координат видеокарта делает одним умножением вектора на матрицу. собственно видеокарты изначально делались для таких операций и это гораздо проще, чем ты думаешь, фактически она делает подобную операцию как минимум для каждого пикселя на экране за кадр, а с учетом наложения текстур и спецэффектов даже неоднократно.
таки дело в кривой реализации (например переложить вычисления на кпу, для которого это далеко не типичная операция)
Disclaimer: Я не спорю, что дело в кривой реализации, просто хотелось бы прояснить некоторые моменты про отрисовку на CPU и прочую чепуху.
Скорее всего, для отрисовки всех иконок в 3D пространстве (брэкеты, букмарки, и пр.) CCP использует billboard – 3D объект из одной (односторонней) плоскости, всегда повёрнутой к камере. С его помощью ещё часто рисуют системы частиц. Эта штука не имеет никакого отношения к GUI, и тем более её никак не запихнёшь на CPU, даже если высчитывать координаты каждого брэкета на процессоре (что действительно не является трудоёмкой операцией для процессоров даже c первым SSE и не может их так перегружать). Все объекты в 3D пространстве отрисовываются GPU (и интерфейс тоже); все текстуры, которые вы видите в данный момент на экране, находятся в видеопамяти.
Другое дело, что, несмотря на то, что он очень простой, но это всё же отдельный объект, который, ко всему ещё и движется. Судя по всему, для каждого из них по старинке используется отдельный draw call. В конце концов, batching придумали позже. Этот процесс не так прост и очевиден из-за того, что добавление или исчезновение нового объекта (Выпуск дронов, например) к объектам, объединённым в один draw call, надо перестраивать индексный буфер, что само по себе является тяжелой операцией.