Как тени в деталях влияют на производительность UNITY?
Если кратко, то тут понятно - больше теней и источников света с тенями - больше DC - медленнее работает.
Но можно ли как-то это обойти? Я в каком смысле. Допустим, у меня на сцене одновременно должно быть много точечных источников света с включенными тенями. Скажем, 100. Понятно, что при таких цифрах адекватную производительность не получить.
Но что, если у меня при этом будет очень мало ShadowCaster? Ну, скажем, всего 20. Мне необходимо много источников света и тени не обязательны, но каким-то образом эти источники необходимо лимитировать комнатами. Т.е. в одной комнате пусть фонарь светит без теней, но никак не влияет на соседнюю комнату. Я хочу поставлю между комнатами ShadowCaster и таким образом лимитировать. Получу ли я на Deferred рендеринге адекватную производительность или сам факт источников, которые просчитывают тени будет бить достаточно сильно, а количество Shadow Caster'ов играет мало роли?
Графика в игре такая, что видно реально одновременно очень много источников. Не получится включать только некоторые в какой-то момент.
Olek1, пока я просто хочу понять, как работает эта система (это ведь не невозможно?) и, в результате, найти какой-нибудь костыль, который поможет мне её обойти без серьёзных потерь в графике и производительности (а это, вероятно, невозможно, но пока я не разберусь - не узнаю)
Потому я задал вполне конкретный вопрос и с примером - уменьшение количества ShadowCaster'ов влияет положительно на производительность и каким образом? Может есть еще какие трюки?
Павло Пономаренко, я бы делал видеозаглушку на каждой неактивной комнате с анимацией что там происходит внутри и фиксированную камеру снаружи для режима просмотра внутренностей корабля
Павло Пономаренко, плоская красиво отрендеренная короткая зацикленная видеозаглушка правильно, поэтому я бы делал фиксированную камеру для "режима просмотра внутренностей корабля" снабдив прогрессбарами комнаты если надо видеть что там выполняется в лучших традициях весёлого фермера, а всё считать это сложно в нынешних реалиях даже топового железа
каждую комнату в отдельности конечно репрезентовал бы уже в максимуме возможностей со всеми динамическими спецэффектами, вы можете сделать видео отображающиеся на плоских двумерных "спрайтах" которые чуть утоплены в глубь комнаты и немного поворачиваются к камере лицом если надо сделать не фиксированный view, а на переднем их плане расставить дополнительные 3D декорации, чтобы скрыть иллюзию:
в комнате с печью на переднем плане поставить какуюто 3Dшную бочку специально чтобы отвести внимание, в парнике пару какихто растений развешать впереди, на складе несколько коробок между зрителем и заглушкой поставить, в лаборатории установить какието колбы чтобы отвлекали
это сейчас у вас 20-30 комнат и уже лагает, а если будет 100-1000 когда корабль вырастет, или 1000-10000 их, всё вообще ляжет!
или научиться программировать, чтобы сделать режим просмотра 3х3 где 9 комнат будут выглядеть полноценно, при этом чтобы остальное ничего не считалось
комнаты (или группы комнат) друг от друга изолировать
Olek1, нет, ирония в том, что у меня сейчас на Юнити 5.5 ничего не лагает при отличной, объемной графике даже на слабых машинах. Обратите внимание на количество DC - их 300-500. Увы, тут дело не в умении программировать, а в умении обходить и использовать особенности рендеринга Юнити.
Но в юнити 5.6 они удалили одну очень важную фичу. Я хочу найти способ перейти на новые версии Юнити без потери объема. И потому я хочу узнать, как именно работают тени. Куда именно используются DC при отрисовке света и как их уменьшить всякими нестандартными способами, которые остались в новых версиях.
Но есть две проблемы. Во-первых, команда Юнити совершенно не думает о том, как работать с запеканием в процедурно-генерируемых уровнях. Из-за этого, к примеру, совершенно не работают Light Probe'ы.
Во-вторых, в 5.6 они вырубили Directional Specular lightmap'ы из-за чего картинка выглядит плоской и неинтересной. И единственный совет на официальном форуме об использовании Reflection Probe вместо Directional Specular дает просто отвратный результат:
Я плотно застрял на версии 5.5 и боюсь, что скоро мне это вылезет боком, потому ищу альтернативы. Я хочу понять, как именно считается всё это, чтобы найти альтернативу и перейти на более новую версию Юнити.
Вот вы говорите 2000 теней. Всё дело в количестве теней? Как эти тени считать? Все объекты, до которых дотягивается свет?
Что, если каждая группа источников будет иметь "контейнер", слитый в один объект и дальше тени распространятся не будут? Будет ли это считаться, что количество источников=количество теней? Или те ШедоуКастеры, что в тени - тоже кастят тени?
Вот пример, где каждая группа источников находятся в своем боксе. Красные линии - это пример, как останавливаются лучи. Тут будет квадратичное количество теней?