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

Unity: несколько камер работают значительно медленнее, чем одна при одинаковом кол-ве объектов

#0
20:15, 10 окт. 2018

Итак, Юнити.

Берем пустую сцену, создаем 100 кубов. Запускаем, замеряем fps. Получаем, скажем N.
Теперь половине из этих кубов ставим слой, отличный от default.
Клонируем камеру, настраиваем Culling Mask обеим камерам так, чтоб одна рендерила слой default, а вторая - остальные, ставим как надо Clear Flags.
Картинка в итоге будет такая же как при первом запуске.
Запускаем... и получаем fps примерно 0.6 от первоначального N.
При этом количество вершин, треугольников, текстур и тп, в кадре осталось неизменным.

Вопрос: что за хрень и как с этим бороться?


#1
20:32, 10 окт. 2018

Каждая камера это плюс один проход динамического батчинга и как минимум один дравкол + презент. И про филлрейт не забываем. Плюс на каждую камеру отдельный frame buffer и depth/stencil buffer (последний опционально).

Бороться с этим никак, так работают Unity и GAPI.

#2
20:53, 10 окт. 2018

Каждая смена камеры это resolve + restore. Грубо говоря - содержимое первой камеры копируется в текстуру, потом рисуется фуллскрин квад с этой текстурой. И та и та операция не дешёвая, особенно на мобилах. А если MSAA врублен то вообще можно вешаться.

#3
1:24, 11 окт. 2018

Вроде всё логично, плюс камера минус фпс.
А нафига тебе вторая камера, для какой цели ?

#4
5:26, 11 окт. 2018

Пиши свой движок !

#5
(Правка: 12:58) 12:57, 11 окт. 2018
Пиши свой движок !

Вместе с Петькой и Анкой ! :)
ПрограммированиеФорумГрафика