Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Общие вопросы о Unity3D

Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 18 июн 2009, 07:14

в сцене 4 объекта (130к треугольников) фпс 600. добавляю 300 объектов (5к треугольников) фпс падает до 60... все объекты одновременно в кадре, до добавления, Draw Calls = 8. после, ближе к 600. на все добавленные объекты один материал.
может чтото упустил? заранее спасибо...
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение ffinder 18 июн 2009, 10:26

смущает 300 против 600?
на рендеринг теней тоже DrawCalls расходуются (надо же теневые буферы как-то получать)
ЗЫ: ИМХО
ffinder
UNITрон
 
Сообщения: 192
Зарегистрирован: 26 мар 2009, 17:35
  • Сайт

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 18 июн 2009, 10:52

справедливо подмечено - 300 против 600. эксперементальным путём выяснилось, цифра зависит от шейдера на материале. я так понял diffuse обрабатывается в два прохода, и следовательно выдаёт 600, тот же decal всего 300... но и это не радует, фпс по прежнему глубоко провисший :-??
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Neodrop 18 июн 2009, 14:01

Diffuse это один ДравКолл. Но, если включен pixel lighting то коллы удваиваются абсолютно на всех материалах, кроме люминисцентных.

Добавленные объекты должны быть независимы? Или их можно "склеить" ? Если можно, то используёте скрипт из Island Demo под названием CombineChildren и ваши 600 лишних дравколлов превратятся в два. :-?

Или, если объекты одинаковые, нужно их инстансировать от одного префаба.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Const_47 18 июн 2009, 14:54

&ffinder +100

А вообще быстродействие очень сильно зависит от применяемого материала-шейдера.
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 18 июн 2009, 16:45

в данном случае все объекты должны жить самостоятельно, аттачить их никак нельзя. объекты одинаковые, но расставлять их динамически... не вариант это. если проблема не с моей стороны, то жаль что у юнити с этим так трудно... виртулз такую сцену съедал на ура.
если не затруднит, жду коментариев по поводу прикреплённого. в крайнем случае придётся делать динамическую расстановку объектов.

пару коментариев по поводу вложенного: с префабом-кучей_объектов 4,6к треугольников, без префаба 0,9. в первом случае даёт 0,6к фпс, во втором 9к...в среднем съедается 90% производительности. очень надеюсь что прблема вызвана мною.

DrawCalls.7z
У вас нет доступа для просмотра вложений в этом сообщении.
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Neodrop 18 июн 2009, 18:34

А что делать то нужно в вашем проекте? У меня более 300 fps
Что куда добавлять? :-?

Скрытый текст:
drawCallsFromForum.png
У вас нет доступа для просмотра вложений в этом сообщении.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Neodrop 18 июн 2009, 18:41

Вообще, этот объект с цветочками, сделан из рук вон не правильно. Вам необходима реакция цветочков? Поэтому вы не хотите слить всё в один объект?

Нет ничего проще. Пишем простейший скрипт, который переберёт все ваши чилды в этом цветочном шаре и заменит их на инстанс одного-единственного цветка с размерами, позицией и вращением, идентичными исходным цветкам. Это будет гораздо производительнее для двига и в кадре ровным счётом ничего не изменится. То есть абсолютно ничего. :-? Хотя мне кажется, что 300 fps это и так нормально ;0)
Хотя, может я чего то не сделал? Так опишите задачу конкретнее. :-w
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 18 июн 2009, 20:04

в сцене просто болванка, ничего кроме. согласен что сделано не лучшим образом, но делалось очень давно, ещё под виртулз, сейчас перегоняется в юнити. и заставить моделлера переделывать сейчас уже невозможно... ну да не в этом суть. в полностью "обставленной сцене" получается ~130к треугольников и выдаёт 600фпс, а с этими цветами (которых всего на 4к стреугольников) падает до 60-90фпс... на работе обстановка ещё хуже, на жирафе 6600 без цветов 60-90 фпс, с ними падает до 10-20

вот что получается у меня с цветами и без
Скрытый текст:
ScreenShot_DrawCalls.jpg


цветы живут каждый отдельно, и объединять их никак нельзя. попробую скриптом поклонировать, но на мой взгляд это не панацея. это хорошо что объекты идентичны, а если так случится что не получится клонировать... :-?
У вас нет доступа для просмотра вложений в этом сообщении.
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Neodrop 18 июн 2009, 20:56

Прочитайте ВНИМАТЕЛЬНО то, что я написал выше и не трогайте попусту моделлера.
Перебрали объекты, заменили на инстансы одного-единственного (которые, естественно, префаб), выставили им вращение и scale и всё. В результате будут совершенно те же самые цветочки, но за один проход рендера, а не за сто двадцать.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 19 июн 2009, 09:35

вопрос:
добавляю модель через Instantiate, связь с префабом теряется... похоже чтото делаю не так, каким образом надо добавлять без потери связей?

и ещё, что программно инстансить, что добавлять руками из Project в Hierarchy эквивалентно. если это так, то фокус не пройдёт... дроколлс увелчивается и в этомслучае.

в глубоком раздумье... :-?
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Slava 19 июн 2009, 09:43

Я так понял, надо префаб одного цветка перенести из project в hierarchy, а в ней уже размножать - правая кнопка - dubliсate. Перетаскивать из project в hierarchy каждую копию - неправильно...
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 19 июн 2009, 10:22

drag&drop = dubliсate, ведь в итоге все объекты оказываются производной от одного префаба
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Neodrop 19 июн 2009, 11:31

Что так, что эдак одинаково.
Только что это за блажь - руками таскать? Скриптик не написать элементарный? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Много объектов, Draw Calls растёт, FPS падает. Как бороться?

Сообщение Zavhoz 19 июн 2009, 12:24

скрипт то я написал, только работу с инстансом не понял до конца, поэтому и спросил:
Zavhoz писал(а):добавляю модель через Instantiate, связь с префабом теряется... похоже чтото делаю не так, каким образом надо добавлять без потери связей?

делаю следующим образом:
Код: Выделить всё
foreach (Transform child in currentEntity)
      Instantiate(flower, child.position, child.rotation);


ну а если ручное копирование не отличается от программного то вывод один - проблема с кучей дрокаллов остаётся.
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

След.

Вернуться в Общие вопросы

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

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