TextureLayered
Базовый контракт массива 2D-слоёв и кубических карт.
TextureLayered объединяет запросы размера, формата и данных для Texture2DArray, Cubemap и CubemapArray. Это не Texture3D: слои не образуют непрерывную координату глубины. Фильтрация внутри слоя и между mip-уровнями не означает смешивание соседних слоёв.
GetLayers считает изображения/грани, GetLayerData читает один слой. У cubemap-array число карт равно GetLayers()/6. Создавайте обычные ресурсы через конкретный подкласс и CreateFromImages; hooks с подчёркиванием предназначены для своей реализации.
Проверены нативные запросы собственного подкласса и ресурсные операции конкретных типов в Windows Forward+/Vulkan. Поддержка всех типов на любом backend и корректность произвольного собственного sampler этим не доказаны.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
TextureLayeredКонструктор
public TextureLayered();Создаёт базовый ресурс без загруженных слоёв. Для обычного использования создайте Texture2DArray, Cubemap или CubemapArray и вызовите CreateFromImages. Собственный подкласс должен согласованно предоставлять тип, размеры, формат и данные слоёв.
Методы14
GetFormatImage.Format
public Image.Format GetFormat();Возвращает общий Image.Format слоёв от реализации. Базовый Max без поставщика не является форматом готового изображения. Полученные срезы не обязательно имеют RGBA8.
Image.FormatОбщий формат изображений слоёв.
GetHeightint
public int GetHeight();Возвращает высоту основного уровня одного слоя; у cubemap это высота квадратной грани.
intВысота одного слоя в текселях.
GetLayerDataImage
public Image GetLayerData(int layer);Читает один слой по индексу от 0. У конкретных ImageTextureLayered это отдельное Image из GPU-данных; его изменение не обновляет текстуру, используйте UpdateLayer. Image включает собственную mip-цепочку, если она есть. Чтение может быть дорогим, не выполняйте его каждый кадр без необходимости. Для CubemapArray индекс грани равен 6 × номер куба + номер грани.
| Имя | Тип | По умолчанию |
|---|---|---|
layer | int | — |
layerИндекс слоя от 0 до GetLayers() − 1; для cubemap-array — 6 × номер куба + грань.
ImageImage выбранного слоя; проверьте доступность данных перед чтением пикселей.
GetLayeredTypeTextureLayered.LayeredType
public TextureLayered.LayeredType GetLayeredType();Возвращает вид ресурса: Type2DArray, Cubemap или CubemapArray. Это классификация текстуры, не её RID и не Image.Format.
TextureLayered.LayeredTypeВид ресурса из LayeredType.
GetLayersint
public int GetLayers();Возвращает количество слоёв. Для Cubemap это 6, для CubemapArray — число граней, кратное 6, а не число кубических карт. Mipmap-уровни не прибавляются к этому числу.
intЧисло слоёв, включая все грани cubemap.
GetWidthint
public int GetWidth();Возвращает ширину основного уровня одного слоя, а не общую ширину всех изображений или импортируемого листа.
intШирина одного слоя в текселях.
HasMipmapsbool
public bool HasMipmaps();Возвращает наличие mipmaps у слоёв. У ImageTextureLayered цепочка хранится внутри каждого Image, в отличие от отдельных mip-срезов Texture3D. Флаг не генерирует отсутствующие уровни.
boolЕсть ли у слоёв mip-цепочки по контракту реализации.
_GetFormatImage.Format
public virtual Image.Format _GetFormat();Переопределите для собственного TextureLayered. Возвращает общий Image.Format слоёв от реализации. Базовый Max без поставщика не является форматом готового изображения. Полученные срезы не обязательно имеют RGBA8.
Image.FormatОбщий формат изображений слоёв.
_GetHeightint
public virtual int _GetHeight();Переопределите для собственного TextureLayered. Возвращает высоту основного уровня одного слоя; у cubemap это высота квадратной грани.
intВысота одного слоя в текселях.
_GetLayerDataImage
public virtual Image _GetLayerData(int layerIndex);Поставщик одного Image для собственного TextureLayered, вызываемый нативным GetLayerData. Согласуйте данные с форматом, размером и mipmaps. Обработайте границы индекса в реализации; поведение произвольного подкласса не обязано совпадать с GPU-ресурсом ImageTextureLayered.
| Имя | Тип | По умолчанию |
|---|---|---|
layerIndex | int | — |
layerIndexИндекс слоя, для которого собственная реализация предоставляет Image.
ImageImage указанного слоя, согласованное с метаданными ресурса.
_GetLayeredTypeuint
public virtual uint _GetLayeredType();Поставщик вида собственного TextureLayered. C# hook возвращает uint: используйте числовое значение соответствующего TextureLayered.LayeredType. Значение не выделяет GPU-текстуру автоматически.
uintЧисловое uint-значение LayeredType.
_GetLayersint
public virtual int _GetLayers();Переопределите для собственного TextureLayered. Возвращает количество слоёв. Для Cubemap это 6, для CubemapArray — число граней, кратное 6, а не число кубических карт. Mipmap-уровни не прибавляются к этому числу.
intЧисло слоёв, включая все грани cubemap.
_GetWidthint
public virtual int _GetWidth();Переопределите для собственного TextureLayered. Возвращает ширину основного уровня одного слоя, а не общую ширину всех изображений или импортируемого листа.
intШирина одного слоя в текселях.
_HasMipmapsbool
public virtual bool _HasMipmaps();Переопределите для собственного TextureLayered. Возвращает наличие mipmaps у слоёв. У ImageTextureLayered цепочка хранится внутри каждого Image, в отличие от отдельных mip-срезов Texture3D. Флаг не генерирует отсутствующие уровни.
boolЕсть ли у слоёв mip-цепочки по контракту реализации.
TextureLayered.LayeredType
| Значение | Описание |
|---|---|
Cubemap = 1 | Texture это... |
CubemapArray = 2 | Texture это... |
Type2DArray = 0 | Texture является общим |