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

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

Страницы: 1 2 3 4 5 6 Следующая »
#0
18:52, 6 мая 2022

Хочу сделать в своем движке автосборку атласов на лету, интересно, делал ли кто-нибудь такое и какие могут быть подводные камни?

#1
19:40, 6 мая 2022

Huldra
> автосборку атласов на лету

Подводный камень вижу только в одном: непонятно что именно это значит, и
так то атлас уже сам по себе - это оптимизационное решение, и с "налету" слабо сочетается.

#2
20:03, 6 мая 2022

Huldra
> Хочу сделать в своем движке автосборку атласов на лету, интересно, делал ли
> кто-нибудь такое и какие могут быть подводные камни?
https://blackpawn.com/texts/lightmaps/
Подводные камни: нужны бордеры для рабочей фильтрации на GPU. Проблемы с тайлингом. Проблемы с mip-ами.

#3
20:38, 6 мая 2022

Der FlugSimulator
> Подводный камень вижу только в одном: непонятно что именно это значит, и
> так то атлас уже сам по себе - это оптимизационное решение, и с "налету" слабо
> сочетается.
Не совсем. Атлас нужен для того чтобы можно было нормально выводить сразу несколько текстур.

Оптимизирует он рендер. Соответственно можно и на старте игры атлас создавать.

#4
20:49, 6 мая 2022

Der FlugSimulator
> Подводный камень вижу только в одном: непонятно что именно это значит, и
> так то атлас уже сам по себе - это оптимизационное решение, и с "налету" слабо
> сочетается.
Атласы собирают руками заранее, при этом собирают часто неудачно, напихивают в один атлас что придется. Делают 10 атласов. При рендеринге используются элементы с нескольких атласов и из-за этого не получается забатчить рендеринг геометрии. Если бы атласы собирались из часто чередующихся текстур, получилось бы забатчить гораздо больше геометрии, переключений между атласами стало бы гораздо меньше. Я хочу вместо того чтобы заранее собирать атласы, сделать автоматическую сборку атласов из того что часто используется вместе, чтобы батчинг стал возможен там где до этого происходило переключение атласов. По мере прохождения игроком уровня произойдет автосборка 20-30 атласов, если собирать атласы постепенно, серьезных потерь производительности во время сборки не будет, зато в результате применения аккуратно собранных атласов производительность вырастет.

#5
20:51, 6 мая 2022

Huldra
> При рендеринге используются элементы с нескольких атласов
Это все равно лучше чем по текстуре на спрайт.

#6
21:14, 6 мая 2022

Huldra
Непонятно, зачем на лету? Почему бы не собрать его на момент запаковки ресурсов или, в худшем случае, на момент старта игры?

#7
21:27, 6 мая 2022

HolyDel
> Непонятно, зачем на лету? Почему бы не собрать его на момент запаковки ресурсов
> или, в худшем случае, на момент старта игры?
Для примера, представь себе, что я делаю игру типа Дьябло. На момент запаковки ресурсов и даже старта игры не известно, каким персонажем я буду играть, в какое подземелье я попаду и каких монстров там будет больше всего. Это становится известно только когда я вхожу в подземелье. И вот в этот момент становится возможна сборка атласа из текстур нужных для подземелья, монстров и персонажа. Если повезет, необходимые текстуры уместятся на 1 атлас.

#8
21:32, 6 мая 2022

"На лету" - это оправдано в рантайме, допустим из внешних (заранее неизвестных) данных.

У тебя же, как я понял, компоновка атласа в design-time возможна. Значит там её и надо делать.

#9
21:33, 6 мая 2022

Der FlugSimulator
> У тебя же
Я вообще не игру делаю, а движок, так что я в design time точно ничего не могу скомпоновать, я даже не знаю какую игру будут делать разработчики на моем движке

#10
21:36, 6 мая 2022

Да, на прошлой работе была автосборка атласов на лету, проект был на Юнити, но только для UI, никаких мипов или подобного.

#11
4:38, 7 мая 2022

mr_ix
> Да, на прошлой работе была автосборка атласов на лету, проект был на Юнити, но
> только для UI, никаких мипов или подобного.
Кстати да, кэширование шрифтов же это по сути создание атласа. И подобное на лету
делается часто, просто потому что Японский и Китайский.

#12
11:10, 7 мая 2022

В World Of Warcraft (по крайней мере на старте в 2004) использовали подобное - для каждого персонажа генерился текстурный атлас из текстур для одетых на него шмоток.

#13
18:10, 7 мая 2022

Huldra
> я в design time точно ничего не могу скомпоновать, я даже не знаю какую игру будут делать разработчики на моем движке

Ну значит и атласы не ты собирать будешь, а упомянутые разработчики. Так что design-time никак не отменяется:
Ты упомянул некие уровни. Видимо есть и гуи-тул для их сборки. Тайлы-спрайты это будут или 3д геометрия, при построении
уровня список текстур в этом уровне у тебя (у разработчика уровня) есть. По нему и генерируй атлас под этот уровень.

#14
18:34, 7 мая 2022

Super_inoy
> Японский и Китайский.
Ага, как в одной японской jRPG, где шрифт кэшируется каждую смену ui...открытие и закрытие меню это веселая вещь, которая не фризит только на PS3. На PS VITA мелкие фризы, а на PC вообще играть нереал

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