Как стать автором
Обновить

Комментарии 17

НЛО прилетело и опубликовало эту надпись здесь
Канвас будет весь пересчитываться, перестраиваться и перерисовываться в каждом кадре, а это — обновление довольно высокополигональной геометрии, что означает затраты ЦПУ + мусор для GC

Ну можно же вынести в отдельный канвас именно динамику для всплывающих надписей.
Высокополигональная геометрия — это тоже странное утверждение, ректы же, как и в партиклах.
Мусор есть и тут, при сборке самих надписей, если их надо собирать динамически.

ну это же еще дополнительные screen->ui space преобразования, которых можно избежать.

Какбудто текущий шейдер делает меньше вычислений, а если понадобиться локализация, что прийдёться делать?
для вычислений шейдера у вас пару сотен ядер, а для цпу сколько?
Локализация да, особенно китайская. Но не всем она нужна, да и не всегда надо цифры локализовывать.
Интересно было б сравнить с релиализацией в VFX Graph
НЛО прилетело и опубликовало эту надпись здесь
А мусор для GC откуда появляется, если используем пул?

просто навскидку — уничтожение старой и создание новой геометрии. А еще посмотрите исходники Unity UI — сколько раз там при проходе по всяким лейаут группам используется GetComponent
Сделал замер производительности профайлером Юнити. Добавил в конец статьи.
Хотелось бы добавить, что это решение в первую очередь не про производительность, а про кастомизацию. Реализовать VFX для обычных UI-элементов юнити такое себе удовольствие, а партиклы настроить легко и просто.
На самом деле, мы пробовали паковать 7, 8 и 9 символов, но точности float не хватает.
Получается, что в каждый float, используя десятичные разряды, мы упакуем целых 6 цифр, в отличии от стандартного варианта с четырьмя байтами.

А чем не устроил не менее стандартный вариант с восемью шестнадцатеричными цифрами? Скоростью извлечения отдельных цифр? Хотя не думаю, что она будет медленнее парсинга float-а...

Согласен, почему-то упустили этот момент. Надо будет попробовать.
Кроме того, данный подход подразумевает использование всего лишь одного инстанса Particle System для каждого типа сообщений, что дает огромный прирост в производительности по сравнению с выводом этих же сообщений с помощью Unity UI

А производились ли какие-нибудь замеры производительности? Хотелось бы узнать, на сколько Ваш метод лучше «стандартного»
Сделал замер производительности профайлером Юнити. Добавил в конец статьи.
А на каком железе производились замеры? Участвовали ли в тестах несколько конфигураций железа? И интересна еще нагрузка на GPU
Даже не знаю как относиться к этому материалу. С одной стороны, кастомный шейдер + партиклы и ограничение на только моноширинные шрифты, для решения задачи, которую можно было-бы очень легко решить средствами freetype, это какой-то треш. С другой стороны — это вся суть Unity3D: тупая лень разработчиков движка, приводящая к отсутствию интеропа к зависимостям движка и как результат: НЕОБХОДИМОСТЬ лепить такую дичь.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории