Войти
UnityФорумПрограммирование

Быстро считать текстуру

#0
(Правка: 18:24) 18:22, 13 янв. 2021

Задача - быстро считывать с диска текстуры размером 512х512.
Быстро должно работать и на телефоне. При этом основной поток блочится не должен.

Что пробовал:

UnityWebRequestTexture.GetTexture
медленно
texture.LoadImage
достаточно быстро, но фризит main, потому не годится
texture.LoadRawTextureData
идеально по скорости, но сами файлы слишком большие получаются.

https://codeberg.org/matiaslavik/unity-async-textureimport
обертка над FreeImage. Не сказать что по скорости сильно лучше метода номер 1.

Пробовал сжимать файлы для LoadRawTextureData, слишком медленно.

Может кто еще какие-то методы подскажет?


#1
0:35, 14 янв. 2021

Ну я пользовался только через
https://docs.unity3d.com/ScriptReference/AssetBundle.LoadAsset.html
Так же юнити все советуют через ассерты делать
https://blogs.unity3d.com/ru/2018/10/08/optimizing-loading-perfor… oad-pipeline/

Лучшего точно не предложу

#2
2:51, 14 янв. 2021

DanQuimby
Увы, ассет бандлы нельзя по определенным причинам использовать.

#3
0:43, 15 янв. 2021

Increaser
быстро, или все же асинхронно?

#4
0:45, 15 янв. 2021

Polyflow3d
Быстро и асинхнонно.

#5
8:24, 15 янв. 2021

Increaser
а, понятно - быстро, асинхронно сделано должно быть вчера, и (еще наверное ) любые форматы.
Тогда - ой.

#6
(Правка: 15:18) 15:16, 15 янв. 2021

Polyflow3d
Да нет, все не так плохо.

Просто ищу замену UnityWebRequestTexture.GetTexture в проекте, но, похоже, какого-либо готового решения нет. Остановлюсь на ней, это не прям критичная проблема.

Буду грузить сначала текстуру с меньшим разрешением, чтобы визуально не было лага, а потом подменять на более жирные.

#7
(Правка: 16:50) 16:50, 23 янв. 2021

В своём проекте использую gzip кодирование и LoadRawTextureData

+ Показать

Но перед этим текстуры следует запаковать в архивы.

+ Показать

Этим же способом я сохраняю/читаю меши и рендер текстуры с любым форматом.
#8
17:52, 23 янв. 2021

Kripto289
Спасибо, попробую.

UnityФорумПрограммирование