Итак, Юнити.
Берем пустую сцену, создаем 100 кубов. Запускаем, замеряем fps. Получаем, скажем N.
Теперь половине из этих кубов ставим слой, отличный от default.
Клонируем камеру, настраиваем Culling Mask обеим камерам так, чтоб одна рендерила слой default, а вторая - остальные, ставим как надо Clear Flags.
Картинка в итоге будет такая же как при первом запуске.
Запускаем... и получаем fps примерно 0.6 от первоначального N.
При этом количество вершин, треугольников, текстур и тп, в кадре осталось неизменным.
Вопрос: что за хрень и как с этим бороться?
Каждая камера это плюс один проход динамического батчинга и как минимум один дравкол + презент. И про филлрейт не забываем. Плюс на каждую камеру отдельный frame buffer и depth/stencil buffer (последний опционально).
Бороться с этим никак, так работают Unity и GAPI.
Каждая смена камеры это resolve + restore. Грубо говоря - содержимое первой камеры копируется в текстуру, потом рисуется фуллскрин квад с этой текстурой. И та и та операция не дешёвая, особенно на мобилах. А если MSAA врублен то вообще можно вешаться.
Вроде всё логично, плюс камера минус фпс.
А нафига тебе вторая камера, для какой цели ?
Пиши свой движок !
Пиши свой движок !
Вместе с Петькой и Анкой ! :)
Тема в архиве.