Описание
Класс для обработки разреженных текстур.
Разреженные текстуры — это текстуры, в которых не все данные текстуры могут одновременно находиться в памяти. Их также обычно называют «тайловыми текстурами» или «мегатекстурами».
Представьте себе текстуру размером 16384 x 16384 с 32 битами на пиксель. Для этого потребуется 1 ГБ памяти. Текстура разбита на прямоугольные «тайлы», и каждый тайл может либо присутствовать в памяти, либо нет. Вы можете загружать и выгружать эти фрагменты по мере необходимости в зависимости от расстояния до камеры, секторов мира, которые должен видеть игрок, и т. д.
В противном случае разреженные текстуры ведут себя так же, как и любые другие текстуры в шейдерах — они могут иметь мип-карты, могут использовать все режимы фильтрации текстур и т. д. на многих графических процессорах результат будет черным, но это не гарантируется).
Не все оборудование и платформы поддерживают разреженные текстуры, поэтому перед их использованием следует проверить SystemInfo.supportsSparseTextures. Например, в системах с DirectX требуется DX11.2 (Windows 8.1) и довольно свежий графический процессор; а в OpenGL требуется поддержка расширения ARB_sparse_texture. Разреженные текстуры поддерживают только несжатые форматы текстур.
После создания разреженной текстуры запросите размер плитки с помощью tileWidth и tileHeight. Размер плитки зависит от платформы и графического процессора.
Используйте UpdateTile или UpdateTileRaw, чтобы разместить плитку в памяти и обновить данные о ее цвете. Используйте UnloadTile, чтобы выгрузить плитку.
Смотрите так же: Sparse Textures.
Свойства
isCreated | Действительно ли создана разреженная текстура? (Только чтение) |
tileHeight | Получает высоту фрагмента разреженной текстуры (только для чтения). |
tileWidth | Получает ширину фрагмента разреженной текстуры (только для чтения). |
Конструкторы
SparseTexture | Создайте разреженную текстуру. |
Публичные Методы
UnloadTile | Выгрузить фрагмент разреженной текстуры. |
UpdateTile | Обновляет фрагмент разреженной текстуры, указав значения цвета. |
UpdateTileRaw | Обновляет фрагмент разреженной текстуры с необработанными значениями пикселей. |
Унаследованные члены
Статические Свойства
allowThreadedTextureCreation | Разрешает внутренним компонентам Unity создавать текстуры в любом потоке (а не в выделенном потоке рендеринга). |
currentTextureMemory | Объем памяти, который используют все текстуры в сцене. |
desiredTextureMemory | Общий размер текстур в байтах, загружаемых Unity при отсутствии других ограничений. Прежде чем Unity загрузит какие-либо текстуры, он применяет бюджет памяти, который уменьшает загруженное разрешение текстуры, если размеры текстуры превышают его значение. Значение `desiredTextureMemory` учитывает уровни MIP-карт, которые Unity запросила или которые вы установили вручную. Например, если Unity не загружает текстуру с полным разрешением, потому что она находится далеко или запрошенный уровень MIP-карт больше 0, Unity уменьшает значение `desiredTextureMemory`, чтобы оно соответствовало общему объему необходимой памяти. Значение `desiredTextureMemory` может быть больше, чем значение `targetTextureMemory`. |
GenerateAllMips | Может использоваться с конструкторами текстур, которые используют счетчик MIP, чтобы указать, что должны быть сгенерированы все MIP. Значение этого поля равно -1. |
nonStreamingTextureCount | Количество непотоковых текстур в сцене. Сюда входят экземпляры текстур Texture2D и CubeMap. Сюда не входят любые другие типы текстур, а также 2D-текстуры и текстуры CubeMap, создаваемые внутри Unity. |
nonStreamingTextureMemory | Объем памяти, который Unity выделяет для непотоковых текстур в сцене. Сюда входят только экземпляры текстур Texture2D и CubeMap. Сюда не входят любые другие типы текстур, а также 2D-текстуры и текстуры CubeMap, создаваемые внутри Unity. |
streamingMipmapUploadCount | Сколько раз была загружена текстура из-за потоковой передачи MIP-карт текстуры. |
streamingRendererCount | Количество средств визуализации, зарегистрированных в системе потоковой передачи текстур. |
streamingTextureCount | Количество потоковых текстур. |
streamingTextureDiscardUnusedMips | Это свойство заставляет систему потоковой передачи текстур отбрасывать все неиспользуемые MIP-карты вместо их кэширования до тех пор, пока не будет превышен бюджет памяти текстуры. Это полезно, когда вы профилируете или пишете тесты, чтобы сохранить предсказуемый набор текстур в памяти. |
streamingTextureForceLoadAll | Заставить потоковые текстуры загружать все уровни MIP-карт. |
streamingTextureLoadingCount | Количество потоковых текстур с загруженными в данный момент мип-картами. |
streamingTexturePendingLoadCount | Количество потоковых текстур с ожидающими загрузки мип-картами. |
targetTextureMemory | Общий объем памяти текстур, который Unity выделяет текстурам в сцене после применения бюджета памяти и завершения загрузки текстур. `targetTextureMemory` также принимает во внимание настройки потоковой передачи mipmap. Это значение включает только экземпляры текстур Texture2D и CubeMap. Он не включает какие-либо другие типы текстур, а также 2D-текстуры и текстуры CubeMap, создаваемые внутри Unity. |
totalTextureMemory | Общий объем памяти текстур, который Unity будет использовать, если он загрузит все текстуры на уровне mipmap 0. Это теоретическое значение, которое не принимает во внимание какие-либо входные данные из системы потоковой передачи или любые другие входные данные. например, когда вы устанавливаете «Texture2D.requestedMipmapLevel» вручную. Чтобы увидеть значение памяти текстуры, которое учитывает входные данные, используйте «desiredTextureMemory». «totalTextureMemory» включает только экземпляры текстур Texture2D и CubeMap. Он не включает какие-либо другие типы текстур, а также 2D-текстуры и текстуры CubeMap, создаваемые внутри Unity. |
Свойства
hideFlags | Должен ли объект быть скрыт, сохранен вместе со сценой или изменен пользователем? |
name | Имя объекта. |
anisoLevel | Определяет уровень анизотропной фильтрации Текстуры. |
dimension | Размерность (тип) текстуры (только для чтения). |
filterMode | Режим фильтрации Текстуры. |
graphicsFormat | Возвращает формат GraphicsFormat или формат цвета объекта текстуры. |
height | Высота текстуры в пикселях. (Только чтение) |
imageContentsHash | Хеш-значение текстуры. |
isReadable | Сохраняет ли Unity дополнительную копию пиксельных данных этой текстуры в адресуемой ЦП памяти. |
mipMapBias | Смещение MIP-карты Текстуры. |
mipmapCount | Сколько уровней MIP-карт в этой текстуре (только для чтения). |
updateCount | Этот счетчик увеличивается при обновлении текстуры. |
width | Ширина текстуры в пикселях. (Только чтение) |
wrapMode | Режим переноса координат текстуры. |
wrapModeU | Режим переноса координат текстуры U. |
wrapModeV | Режим переноса координат текстуры V. |
wrapModeW | Режим переноса координат текстуры W для Texture3D. |
Публичные Методы
GetInstanceID | Возвращает идентификатор экземпляра объекта. |
ToString | Возвращает имя объекта. |
GetNativeTexturePtr | Получает собственный (основной графический API) указатель на ресурс текстуры. |
IncrementUpdateCount | Увеличивает счетчик обновлений. |
Статические Методы
Destroy | Удаляет игровой объект, компонент или ресурс. |
DestroyImmediate | Немедленно уничтожает объект obj. Вместо этого вам настоятельно рекомендуется использовать Destroy. |
DontDestroyOnLoad | Не уничтожает целевой объект при загрузке новой сцены. |
FindObjectOfType | Возвращает первый активный загруженный объект типа Type. |
FindObjectsOfType | Получает список всех загруженных объектов типа Type. |
Instantiate | Клонирует исходный объект и возвращает клон. |
SetGlobalAnisotropicFilteringLimits | Устанавливает пределы анизотропии. |
SetStreamingTextureMaterialDebugProperties | Эта функция устанавливает свойства отладки потоковой передачи MIP-карт для любых материалов, которые используют эту Текстуру через систему потоковой передачи MIP-карт. |
Операторы
bool | Объект существует? |
operator != | Сравнивает, ссылаются ли два объекта на другой объект. |
operator == | Сравнивает две ссылки на объекты, чтобы определить, ссылаются ли они на один и тот же объект.. |