Еще одна яблооптимизация DrawCalls... теперь UV

Программирование для iPhone & Android

Еще одна яблооптимизация DrawCalls... теперь UV

Сообщение Paul Siberdt 03 сен 2010, 16:48

Только что возникло подозрение, проверил, подтверилось:

Изменение Scale и Offset текстурных координат происходят в материале и потому клонируют его, создавая дополнительный DrawCall.

Где подобное может встретиться? В текстурных атласах спрайтов и эффектов, когда картинку на плашке определяют uv-смещением в нужную позицию. Разумеется, удобнее всего это сделать операцией
Код: Выделить всё
my.renderer.material.SetTextureOffset ("_MainTex", v2Offset);

... что и дарит нам плусадын дравчик.

Дабы этого избежать, если в вашем проекте есть атласы эффектов, спрайтов и тому подобное, на инициализации изменяйте uv-развертку самого меша (благо спрайты и эффекты часто состоят из 4 и чуть более вертексов):
Код: Выделить всё
var mf : MeshFilter = GetComponent(MeshFilter);
var mesh : Mesh = mf.mesh;
var uvs : Vector2[] = mesh.uv ;
for (var i=0;i<uvs.length;i++)
   uvs[i] += v2Offset;
mesh.uv = uvs;
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Еще одна яблооптимизация DrawCalls... теперь UV

Сообщение Neodrop 03 сен 2010, 16:51

(3A4OT)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Еще одна яблооптимизация DrawCalls... теперь UV

Сообщение Paul Siberdt 03 сен 2010, 20:04

Продолжаем разговор.

У меня HUD написан на плашках, ибо 2D GUI не любят ни яблофон, ни сам Siberdt, если Вы знаете, кого я имею в виду.

Дабы плашки не казались унылыми иконками, я создал набор анимаций ( всякие дерганья и шевеления ), чтобы оживить игровое меню.
Плашки анимировал в майке, заскинив их на единственную root-косточку. Кто бы мог подумать, что мне этот способ аукнется! :)

Согласно этой теме-по-оптимизации-дравколов, не думая наваял функцию раскраски и смещения спрайта и при запуске ударился лбом о SkinnedMeshRenderer, который не дает доступа к mesh-данным. Пришлось попробовать варианты решения и вот лучший финт ушами, что удалось найти:

Если ваша модель содержит анимацию, но заскинена на единственную кость!

Кость, как таковая, вернее, ее имя - это все, что нужно компоненту Animation.
Удаляем из трансформа-кости SkinnedMeshRenderer и добавляем MeshFilter + MeshRenderer.

Вот и все, если добавить в соответствующие компоненты меш с материалом и не забыть сохранить все это в префаб, мы получаем идентичную натуральному анимацию кнопки-плашки-эффекта без морфинга по костям и с полным доступом к mesh-данным.
Красьте вертексы и смещайте ювишки в свое удовольствие. :ymparty:
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Еще одна яблооптимизация DrawCalls... теперь UV

Сообщение d3gator 04 сен 2010, 13:50

Плашки анимировал в майке, заскинив их на единственную root-косточку


А зачем их скинить на коточку?
skype : oleg_fomenko
d3gator
UNIт
 
Сообщения: 119
Зарегистрирован: 20 май 2009, 21:19

Re: Еще одна яблооптимизация DrawCalls... теперь UV

Сообщение Paul Siberdt 04 сен 2010, 14:01

Да в том и дело, что не за чем. Проще было анимировать локатор или группу и следить за результатом в майке на их чилдах. :D
Но и локаторы без скининга могут потребовать телодвижений с созданием мешфильтра и рендерера вручную, ибо при экспорте анимации, случается, уже в Юньке можно чуть упростить иерархию, забросив в пустой трансформ (локатора, группы или кости) нужный меш и, тем самым, сократив число объектов в сцене.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в iPhone & Android

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

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