Не батчятся кубы

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

Re: Не батчятся кубы

Сообщение Paul Siberdt 13 фев 2011, 16:57

Gnoblin рассказывал про одну фишку батчинга, а недавно и у меня она всплыла:

Если клонировать кубы с униформным скейлом ( x, y и z одинаковы ), и потом помножить этот скейл на переменную или рандомную величину (не назначить новый скейл-вектор, а именно умножить на цыфирьку), то динамик батчинг не мержит эти объекты.

Как я лечился? После работы со скейлом в коде добавлял одной компоненте вектора маленькое значение, а-ля my.localScale.z += 0.001;
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не батчятся кубы

Сообщение discouraged_one 13 фев 2011, 17:04

@ Paul
вы же вроде в бете - я писал про это 8)
батчатся только объекты с одинаковым скейлом (потому что scale идет в шейдеры)
non-uniform scale объектов с большего не существует - вершины проебразуются и скейл ставится в 1. Поэтому non-uniform scale всегда батчится.
Non-uniform и uniform вместе не батчатся
@ WhiteDevil
открываем шейдер и читаем:
SubShader {
Tags { "RenderType"="Opaque" }
UsePass "Toon/Basic/BASE"
Pass {
Name "OUTLINE"

UsePass + Pass = 2 pass ;-)
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Не батчятся кубы

Сообщение Paul Siberdt 13 фев 2011, 17:23

Не, я не в бете, мне ее дал ****** совершенно незаконно :)

Какая у меня ситуация:
Инстансю набор камней из префаба с размером (1.1.1)
stones[i].localScale = Vector3.one * Random.Range(stoneSizes.x,stoneSizes.y);

Получаю число дравколов, равное числу камней

Что я делаю:
Инстансю набор камней из префаба с размером (1.1.1)
stones[i].localScale = Vector3.one * Random.Range(stoneSizes.x,stoneSizes.y);
stones[i].localScale.z += 0.01;


Получаю 1 дравкол (все камни сбатчены, все - разного скейла)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не батчятся кубы

Сообщение discouraged_one 13 фев 2011, 17:27

@ Paul
читаем еще раз
батчатся только объекты с одинаковым скейлом (потому что scale идет в шейдеры)
non-uniform scale объектов с большего не существует - вершины проебразуются и скейл ставится в 1. Поэтому non-uniform scale всегда батчится.
Non-uniform и uniform вместе не батчатся

смотрим на ваш пример - и видим почему именно так происходит ;-)
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Не батчятся кубы

Сообщение Paul Siberdt 13 фев 2011, 17:28

Так... все нон-униформ объекты, значит, батчатся всегда. То бишь, z += 0.001 делает униформ нон-униформным, что гарантирует смерживание, поскоольку нон-униформ в меш-дате перестаивается в новый меш с дефолтовым скейлом. Ок.
В принципе, я во всем удовлетворен... просто подумал, что с кубами топикстартера похожая загвоздка. :)


Есть у меня ситуация:
13 пустых трансформов с единичным скейлом через скрипт строят в себе процедурный меш. В результате, все 13 мешей выдают 6-7 дравколов, то есть, батчатся парами. Почему так происходит - пока не сообразил. :)

Насильственный нон-униформ пустого трансформа или добавление 0.001 уже после построения меша не изменяет ситуацию :)

ЗЫ: Это я так, для поддержания беседы, двравколы в данной ситуации проблем не вызывают. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Пред.

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

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

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


cron