Depth sorting, alpha blending and batching

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

Depth sorting, alpha blending and batching

Сообщение WhiteDevil 25 июл 2011, 18:32

Всем привет!
Игруха у мну двухмерная. И штука какая:

Создаю объект, состоящий из множества под объектов (у меня 6-8), каждый из которых обладает своим собственным материалом. Шейдер для материала - Unlit\Transparent, тобишь простой бленд. На объекте так же присутствует скрипт z-сортинга, который взависимости от Х и У, устанавливает в Awake()-е объект на определенную Z координату. Предполагается что объектов таких требуется целое множество - до сотни. Что получается - разбивается батчинг, если объекты на разных зед-координатах.

Насколько я знаю, у блендинга вообще есть проблемы с сортировкой. Но, если объект не имеет подобъектов, и он обладает этим материалом... да даже если есть и группа, но материалы у всех подобъектов одинаковые, то батчинг есть. Или же если материалы разные, но шейдер дифузный. Батчинг тоже есть.

Немного странная и такая неопределенная ситуация получилась..

Это я делаю окружающую среду для уровня, ну чтоб вы представили что к чему. У меня есть трава и есть деревья. Трава - простой одиночный объект, хоть он и блендовый, он и сортится и батчится. Деревья - группа объектов, с разными материалами. Так вот если используя мой сортинг, батчинг умирает. Он есть только когда объекты находятся на одной координате Y(Z).
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Depth sorting, alpha blending and batching

Сообщение WhiteDevil 27 июл 2011, 15:26

Нашел ответ на юнитиАнсвере. Вобщем когда дело касается отображения множества прозрачных объектов, нужно быть аккуратным.
Если, например, у вас присутствует 2 разных материала, и оба собираются быть расшаренными для группы объектов, их требуется выводить в разных очередях (В шейдере, в поле "Render Queue" задать значение "Transparent+1" для первого и "Transparent+2" для второго), и тогда батчинг не сломается.
Второй вариант - задать для всех этих материалов очередь не более чем 2500 (например "Geometry+200", что будет 2200). Дело в том, что начиная с 2500 объекты начинаются сортироваться по глубине.
Как третий вариант, значение renderQueue можно скриптовать. "Но оно не сериализуемо", про этот минус я мало что могу сказать
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55


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

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

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