Войти
ПрограммированиеФорумГрафика

Кто-нибудь делал автосборку атласов на лету? (4 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#45
23:10, 9 мая 2022

Ghost2
Вот что даёт простая сортировка по высоте, по факту самый оптимальный результат. В случае шрифтов достаточно сортировать по size Y.
Fonts | Кто-нибудь делал автосборку атласов на лету?

#46
23:32, 9 мая 2022

g-cont
> У меня наилучшие результаты получались вот с такой формулой:
Это то и так очевидно. Ты лучше расскажи как найти лучшее место для вставки ещё 1 спрайта хотябы за ln N

#47
23:53, 9 мая 2022

samrrr
> Это то и так очевидно. Ты лучше расскажи как найти лучшее место для вставки ещё
> 1 спрайта хотябы за ln N
Добавлять последовательно в новый атлас, как 100 или типа того наберется, то перестроить весь атлас.

#48
0:11, 10 мая 2022

betauser
> Добавлять последовательно
Ну ну, давай подробнее, что значит последовательно.

#49
0:40, 10 мая 2022

samrrr
> Ну ну, давай подробнее, что значит последовательно.
Ну первая мысль - это иметь несколько атласов на определенные размеры изображений. Например, первый картинка максимум 32x32, второй 64x64, третий 128x128. Выровненные сетки, не упакованные. Постепенно заполняем их. Как только принимаем решение, что пора бы уже паковать, то в дополнительном потоке клеим из них упорядоченный сет атласов. Как досчитается, переключаемся на него.

#50
0:44, 10 мая 2022

betauser
> Ну первая мысль - это иметь несколько атласов на определенные размеры
> изображений. Например, первый картинка максимум 32x32, второй 64x64, третий
> 128x128. Выровненные сетки, не упакованные. Постепенно заполняем их. Как только
> принимаем решение, что пора бы уже паковать, то в дополнительном потоке клеим
> из них упорядоченный сет атласов. Как досчитается, переключаемся на него.
Это делает применение атласов практически бессмысленным в моем случае. У меня целевая платформа - raspberry pi 3, там переключение текстур - долгая операция, поэтому в атлас лучше упаковывать так чтобы как можно реже переключать текстуры, а не так чтобы память экономить

#51
0:59, 10 мая 2022

Huldra
> Это делает применение атласов практически бессмысленным в моем случае. У меня
> целевая платформа - raspberry pi 3, там переключение текстур - долгая операция,
> поэтому в атлас лучше упаковывать так чтобы как можно реже переключать
> текстуры, а не так чтобы память экономить
Можно все атласы хранить в одной текстуре (или массиве текстур). Типа вот тут в левой верхней части у нас сетка для изображений 32x32, а вот тут левее для 64x64. С массивом текстур проще, т.к. третье измерение как дополнительная адресация.

Ну это про динамический случай. Статичный расчет один раз упаковали всё и ну и всё.

#52
1:35, 10 мая 2022

в 2048x2048 слишком много не вместить

#53
2:58, 10 мая 2022

samrrr
> Ты лучше расскажи как найти лучшее место для вставки ещё 1 спрайта хотябы за ln
> N
А смысл? Вон тебе выше атлас показали. Сколько там глифов? 150 штук? Много ты сэкономишь на суперпупер алгоритме?

#54
4:20, 10 мая 2022

g-cont
> Если бы они были однородны, тогда бы и упаковщик не понадобился. Для
> моноширинного шрифта, он к примеру не нужен.
+/- это значит что нет чрезмерно длинных картинок на фоне относительно квадратных.

#55
11:13, 10 мая 2022

samrrr
> Ты лучше расскажи как найти лучшее место для вставки
У меня никаких идей по оптимизации формирования атласов. Только тупой перебор.

#56
11:26, 10 мая 2022

betauser
Чем ты нагенерил свои глифы, что они 70% пустого места имеют? Я вон в freetype получал нормальные глифы без пустого места. https://gitlab.com/nikitasamoukov/genglyphs

#57
13:48, 10 мая 2022

samrrr
> Чем ты нагенерил свои глифы, что они 70% пустого места имеют? Я вон в freetype
> получал нормальные глифы без пустого места.
> https://gitlab.com/nikitasamoukov/genglyphs
Это NeoAxis Engine! 70% пустого места непонятно где нашлось, между буквами нужно отступ для мипов, чтобы в 3D рисовать.

#58
13:52, 10 мая 2022

betauser
> Это NeoAxis Engine! 70% пустого места непонятно где нашлось, между буквами
> нужно отступ для мипов, чтобы в 3D рисовать.
тогда уж сразу sdf делать без всяких мипов.

#59
14:41, 10 мая 2022

Aroch
> тогда уж сразу sdf делать без всяких мипов.
У меня например для sdf тоже куча пустого прострнаства для всяких эффектов (тень, свечение, другие эффекты). Пример атласа:

+ Показать

Атлас генерится на лету прямо в рантайме (и даже не на этапе загрузки уровня, а прямо на этапе рендера). Т.е. игре нужно отрисовать новый глиф, которого еще нету, код: 1. Достает глифы в виде кривых из шрифта 2. Аппроксимирует кучей отрезков 3. Выделяет место под этот глиф в атласе 4. Генерит sdf прямо в атласе по нужному месту
И на фпс это не сказывается никак.

p.s. Еще один атлас:

+ Показать

Который так же генерится на лету. Ресурсы подгружаются заранее, но в текстуру атласа данные попадают непосредственно перед рендером. И самая тяжелая операция тут - копирование в этот самый атлас, а отнюдь не выделение места в атласе. И даже при этом всём на рендере это не сказывается никак.

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумГрафика