Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Unity размер Mesh данных в файле и в ram (2 стр)

Unity размер Mesh данных в файле и в ram (2 стр)

Страницы: 1 2
FDsagiziПостоялецwww11 окт. 201814:54#15
Mira
> Оставить стандартный скиннинг имхо.
Все-же решил перейти на vertex skiing

экономия в нашем проекте будет от 10-30 мб ram в зависимости от ситуации ( онлайн игра до 100 человек )
+ легче будет менять скины, тк не придется постоянно отгружать загружать skinned mesh-и в большом количестве
Ну и экономия CPU  тоже есть, посчитать матрицы проще чем делать CPU skinning на дохлых Андроидах

Правка: 11 окт. 2018 15:06

alexzzzzПостоялецwww11 окт. 201816:12#16
FDsagizi
> По всей видемости, юнити создает как минимум 2 дубликата для меша
> скиннинг у них работает через модификацию вершин на CPU или GPU - где
> возможно, видемо приходиться держать 2 копии, одна для текущего кадра, другая
> для след кадра.

Ты в билде смотрел? Потому что в редакторе всегда два меша, независимо от mesh.UploadMeshData(true) или mesh.UploadMeshData(false).

Polyflow3dПостоялецwww11 окт. 201819:12#17
FDsagizi
получается, тебе прийдется в каждый шейдер добавлять код для вертексов?
А как ты будешь массивы весов передавать в шейдер? Мобилы это поддерживают?
Кстати , если сильно критична память то можно веса костей вплоть до одного байта ужать. Должно хватить, если там не супер прецезионный скиннинг.
FDsagiziПостоялецwww11 окт. 201820:18#18
alexzzzz
Да в редакторе смотреть память смысла особого нету.
Polyflow3d
Да, в каждый - сделать это не трудно, тк шейдеров для персонажа оч мало. И там просто include и пару строк

Передавать в шейдер легко, либо через материал - mat.SetMstixesArray, либо чтобы не дублировать материалы через PropertiesBlock который передаётся в MeshRender - как я и делаю

Мобилы OpenGL ES 2.0 не знаю, тк у нас в проекте мин версия ES 3.0, там до 70 костей на меш можно передавать, у нас 52 кости на человека. Хотя если было бы 120, модно было бы разделить меш персонажа на части, чтобы не использовал в одном меше больше 70 костей.

Для мобил в целом это особенно хорошо, если игра сильно использует CPU или RAM.

Polyflow3dПостоялецwww11 окт. 201821:07#19
FDsagizi
ну, держи в курсе результатов.
А что за версия юнити? Я еще очень сомневаюсь что такой размер - это ошибка. Для чего-то, видимо, эта память нужна.
Кстати, попробуй Lightweight Render Pipeline, может там и скиннед меш меньше весит.
FDsagiziПостоялецwww12 окт. 20188:31#20
Polyflow3d
> Я еще очень сомневаюсь что такой размер - это ошибка. Для чего-то, видимо, эта память нужна.

Уже писал выше, что если использовать скиннинг через модификацию меша ( как юнити и делает ), на CPU или на GPU. то нужны дубликаты. По другому никак. Если кстати добавить 10 одинаковых персонажей с анимаций в кадр, то память тоже выростит - тк для каждого нужны дубликаты

Правка: 12 окт. 2018 8:31

MiraПостоялецwww12 окт. 201812:04#21
FDsagizi
Производительность не замерял? У встроенного скиннинга и совмещенного.
Тут тоже палка о двух концах, по идее.
Унити скиннят обьект один раз, а потом прокручивают через все рендерпассы.
У тебя будут вертексы скинниться в каждом пассе, а размер вершин со всем этим - довольно солидный.
FDsagiziПостоялецwww12 окт. 201812:34#22
Mira
Есть такое дело, но на слабых устройствах - рендер пасс 1, основной.

Там где есть тени - основной меш игрока в тень не идет, идет его сильный лод, те оверхеда нету.

Если же рассмотреть вариант с пре пассом - который мы стараемся не использовать ( игрок сам может включать какието настройки ), ну это уже реально дорогая операция, то оверхед по двойному vertex skinig-u не самый дорогой будет...

MiraПостоялецwww12 окт. 201813:14#23
Если у игрока самозатенение имеет место быть, то сильный лод даст жесткие атрефакты. Но на мобилках да, обычно тени полноценные не делают
FDsagiziПостоялецwww12 окт. 201813:34#24
Mira
> Если у игрока самозатенение имеет место быть, то сильный лод даст жесткие
> атрефакты. Но на мобилках да, обычно тени полноценные не делают

Ну и то, только для игрока который оч близко к камере, если же он будет дальше на 3-5 метров, там уже раздницы нету.
Да и железо, которые даст реально четкие тени, ей vertex skinning вообще смех :)

Для меня вообще удивительно что Юнити сам ничего не дает для vertex skinninga, вроде все остальные движки и игры - все использует только его.

MiraПостоялецwww12 окт. 201814:01#25
FDsagizi
> Для меня вообще удивительно что Юнити сам ничего не дает для vertex skinninga,
> вроде все остальные движки и игры - все использует только его.
да, у них некоторые решения специфичны.
тут они себе упростили графический конвеер, таким образом.
FDsagiziПостоялецwww12 окт. 201814:32#26
Mira
> тут они себе упростили графический конвеер, таким образом.

Это точно. По итогу результат - уменьшение размера RAM в 2 раза а не 3 раза, тк надо хранить индексы и веса костей а они добавляют 30% к размеру.

Если на сцене будет много анимированных мешей, то результат будет на много больше - тк каждый требует копию данных

Страницы: 1 2

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр