Переопределение уровня mipmap текстуры
Переопределите уровень mipmap, чтобы повлиять на то, какой уровень Unity загружается, вместо того, чтобы полагаться только на автоматическую потоковую передачу mipmap. Вы можете сделать это любым из следующих способов:
- Свойство Приоритет в окне Настройки импорта текстуры текстуры.
- API Texture2D.requestedMipmapLevel.
Использование свойства Priority
Выполните следующие действия:
- Выберите текстуру в окне Project.
- В окне Настройки импорта текстуры в разделе Дополнительно установите значение Приоритет между –128 и 127.
Когда Unity необходимо уменьшить уровни mipmap, чтобы достичь предела памяти, он рассматривает текстуры в порядке приоритета от низкого к высокому, пока не достигнет предела. Это означает, что текстуры с более высоким значением приоритета с большей вероятностью сохранят свои уровни mipmap с более высоким разрешением.
Unity удаляет уровень mipmap текстуры с низким приоритетом каждый раз, когда рассматриваются текстуры с таким же или более высоким приоритетом. Например, если вы установили одну текстуру Приоритет 1 и другой текстуры к Приоритет из 5, Unity может удалить четыре уровня mipmap, прежде чем рассматривать вторую текстуру.
Вы также можете использовать следующий APIs для установки значения Приоритет:
- TextureImporter.streamingMipmapsPriority
- Texture2D.streamingMipmapsPriority
- IHVImageFormatImporter.streamingMipmapsPriority
Используйте API
Texture2D.requestedMipmapLevel API устанавливает определенный уровень mipmap, переопределяя уровень, который будет рассчитан потоком mipmap. Это также необходимо для объектов Unity не может рассчитать уровень для. Используйте следующий APIs:
- Texture2D.requestedMipmapLevel, чтобы запросить, чтобы Unity переопределил уровень mipmap текстуры.
- Texture2D.IsRequestedMipmapLevelLoaded для проверки, закончил ли Unity загрузку запрошенного уровня mipmap.
- Texture2D.ClearRequestedMipmapLevel если вы больше не хотите переопределять уровень мипмапа.
Для базового примера, прикрепляющего текстуру к фиксированному уровню mipmap, см. Texture2D.requestedMipmapLevel.
Чтобы вручную рассчитать уровень из положения камеры, используйте Mesh.GetUVDistributionMetric API для оценки UV плотности сетки. Например код, см. Mesh.GetUVDistributionMetric.
Уровень, который вы просите, все еще зависит от вашего настройки качества текстуры. Предел mipmap может ограничить разрешение, так что запрашиваемый уровень 0 может не загрузить текстуру в полном разрешении. Unity может также снизить уровень загрузки, чтобы оставаться в пределах бюджет памяти, ограничиваемые Максимальное снижение уровня значение и в порядке текстуры потока Приоритет.
Переопределение уровней mipmap на всех текстурах
Используйте Texture.streamingTextureForceLoadAll для загрузки всех уровней mipmap для всех текстур.