Texture Atlas — а нужен ли?

Раздел, посвящённый самому важному - скорости.

Texture Atlas — а нужен ли?

Сообщение ArtUni3d 20 июл 2012, 17:52

Часто слышу о том что текстуры нужно собирать в одну большую текстуру и использовать для нескольких объектов.

Но когда дело дошло до теста то... Материалы под point light-ами ведь не батчатся. Какая тогда разница сколько в сцене материалов? Объекты целесообразно комбайнить и использовать мультиматериал, но объеденять текстуры похоже нет.
Так что же это? Великое заблуждение актуальное только для простеньких 2d игр с vertex lit-ом?
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Texture Atlas — а нужен ли?

Сообщение seaman 20 июл 2012, 20:21

Это актуально для любого 2D, в том числе ГУИ.
Однако - ткните плиз где написано, что они не бачатся?
Вот в мануале:
- Batching dynamic objects has certain overhead per vertex, so batching is applied only to meshes containing less than 900 vertex attributes in total.
- If your shader is using Vertex Position, Normal and single UV, then you can batch up to 300 verts and if your shader is using Vertex Position, Normal, UV0, UV1 and Tangent, then only 180 verts. Please note: attribute count limit might be changed in future
- Don't use scale. Objects with scale (1,1,1) and (2,2,2) won't batch.
- Uniformly scaled objects won't be batched with non-uniformly scaled ones. Objects with scale (1,1,1) and (1,2,1) won't be batched. On the other hand (1,2,1) and (1,3,1) will be.
- Using different material instances will cause batching to fail.
- Objects with lightmaps have additional (hidden) material parameter: offset/scale in lightmap, so lightmapped objects won't be batched (unless they point to same portions of lightmap)
- Multi-pass shaders will break batching. E.g. Almost all unity shaders supports several lights in forward rendering, effectively doing additional pass for them

Тут нет ничего о PointLight.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Texture Atlas — а нужен ли?

Сообщение ArtUni3d 20 июл 2012, 21:28

Только 2D и GUI? Я просто про 3D. Кто-то на форуме сказал про Point Light-ы, где именно, не вспомню. Но ситуация та-же, в 3D я добавляю 4 кубика с одинаковым материалом и имею Draw Call: 1, Batched: 3
Стоит добавить Point Light и получается Draw Call: 4, Batched: 0

Если Батчинг актуален только для 2D, то вопрос снят. Спасибо.
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Texture Atlas — а нужен ли?

Сообщение WhiteDevil 21 июл 2012, 12:45

Батчинг актуален всегда.
И да, поинт лайт вам на руку не сыграет. Заюзайте дирекшн лайт.
Притом статик батчинг сработает и с поинт лайтами и даже с запеченными поинт лайтами.
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Atlas — а нужен ли?

Сообщение ArtUni3d 21 июл 2012, 18:00

WhiteDevil писал(а):Батчинг актуален всегда.
И да, поинт лайт вам на руку не сыграет


Значит не всегда:)
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Texture Atlas — а нужен ли?

Сообщение Paul Siberdt 21 июл 2012, 19:16

«Видишь суслика? — Нет. — И я не вижу. А он есть!»
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Texture Atlas — а нужен ли?

Сообщение mp3 21 июл 2012, 20:41

Ну, если Ваша цель - добиться как можно больше Draw Call, то да, он Вам не нужен.
Be straight, or go forward.
Аватара пользователя
mp3
Адепт
 
Сообщения: 1071
Зарегистрирован: 21 окт 2009, 23:50

Re: Texture Atlas — а нужен ли?

Сообщение ArtUni3d 22 июл 2012, 20:00

Блин, я ваша не понимать)
Я в курсе что батчинг работает без света вообще или только с директ лайтом. Но это простенькие игры, как я и сказал.

Речь идет о 3d с normal spec. шейдерами и множеством Point light-ов. В этом случаи батчинг не работает. Верно?
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Texture Atlas — а нужен ли?

Сообщение gnoblin 23 июл 2012, 01:37

есть динамический бачинг, есть статический

если у вас динамические объекты и они со сложными шейдерами и-или освещаются поинтлайтом то да - динамический работать не будет

если статические объекты - таких проблем нет


одинаковые материалы с атласом полезны даже тогда когда нифея вообще не бачится - тупо потому что юнити проще так работать
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Texture Atlas — а нужен ли?

Сообщение ArtUni3d 23 июл 2012, 13:40

Аа, то есть Атлас не Draw Call-ам нужен, а вообще, для fps-а. Теперь ясно. Спасибо.
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Texture Atlas — а нужен ли?

Сообщение gnoblin 23 июл 2012, 17:04

ArtUni3d писал(а):Аа, то есть Атлас не Draw Call-ам нужен, а вообще, для fps-а. Теперь ясно. Спасибо.

не, в основном дроколам ).
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Texture Atlas — а нужен ли?

Сообщение Guyver 24 июл 2012, 12:12

дро коллы уменьшатся при батчинге + в любом случае геометрия на выходе сортируется по стейтам (текстуры, материалы, шейдеры и прочее)

чем меньше переключений стейтов, тем лучше .. для дирикса <= 9 это очень критично (читал гдет давно, что в 10 ++, благодоря винде висте и 7ке вызовы дирикса выполняются чутьли не как в ОГЛ по скорости)

т.о. экономится кол-во переключений стейтов. (фактически дороговизна оверхеда вызова дро колл примерно = оверхеду любого вызова в устройство)
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Texture Atlas — а нужен ли?

Сообщение discouraged_one 29 июл 2012, 17:06

ArtUni3d писал(а):Только 2D и GUI? Я просто про 3D. Кто-то на форуме сказал про Point Light-ы, где именно, не вспомню. Но ситуация та-же, в 3D я добавляю 4 кубика с одинаковым материалом и имею Draw Call: 1, Batched: 3
Стоит добавить Point Light и получается Draw Call: 4, Batched: 0

Если Батчинг актуален только для 2D, то вопрос снят. Спасибо.

(facepalm)
не судьба посмотреть что в сцене по умолчанию уже есть directional light. И если вы добавите point light то у вас уже будет два источника ergo multipass lighting ergo wont batch
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Texture Atlas — а нужен ли?

Сообщение Paul Siberdt 03 авг 2012, 20:16

Кстати, а почему бы, при появлении в сцене первого источника, не отключать дефолтовый дирекшкн? Так это сделано, например, в Maya.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Оптимизация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3