Текстурные константы — Софт Эйт Софт
Description: Список текстурных констант, используемых в Вердж3Д.

# Константы текстур

Эти константы определяют форматы и режимы рендеринга текстур.

- Режимы маппинга
- Режимы развёрток
- Фильтры увеличения
- Фильтры уменьшения
- Типы текстур
- Форматы текстур
- DDS / ST3C форматы сжатия текстур
- PVRTC формат сжатия текстур
- ETC Формат Сжатия Текстур
- ASTC формат сжатия текстур
- BPTC Compressed Texture Formats
- Кодирование

#

## Режимы маппинга

`v3d.UVMapping v3d.CubeReflectionMapping v3d.CubeUVReflectionMapping`

Они определяют режим отображения текстуры. UVMapping — это режим по умолчанию, при котором текстура отображается с использованием UV-координат объекта.

Остальные определяют типы маппинга окруженающей среды.

CubeReflectionMapping предназначен для использования с CubeTexture, которая состоит из шести текстур, по одной для каждой грани куба. CubeReflectionMapping — это значение по умолчанию для CubeTexture.

#

## Режимы развёрток

`v3d.RepeatWrapping v3d.ClampToEdgeWrapping v3d.MirroredRepeatWrapping`

Они определяют свойства текстуры wrapS и wrapT, которые определяют горизонтальное и вертикальное развёртывание текстуры.

При использовании RepeatWrapping текстура будет просто повторяться до бесконечности.

ClampToEdgeWrapping используется по умолчанию. Последний пиксель текстуры растягивается до края сетки.

При использовании MirroredRepeatWrapping текстура будет повторяться до бесконечности, зеркально отражаясь при каждом повторении.

#

## Фильтры увеличения

`v3d.NearestFilter v3d.LinearFilter`

Для использования со свойством magFilter текстуры, они определяют функцию увеличения текстуры, которая будет использоваться, когда пиксель, на который накладывается текстура, имеет площадь меньше или равную одному элементу текстуры (текселу).

NearestFilter возвращает значение элемента текстуры, который является ближайшим (по расстоянию Манхэттена) к указанным координатам текстуры.

LinearFilter используется по умолчанию и возвращает средневзвешенное значение четырех элементов текстуры, которые ближе всего к указанным координатам текстуры, и может включать элементы, обернутые или повторенные из других частей текстуры, в зависимости от значений wrapS и wrapT, а также от точного отображения.

#

## Фильтры уменьшения

`v3d.NearestFilter v3d.NearestMipmapNearestFilter v3d.NearestMipmapLinearFilter v3d.LinearFilter v3d.LinearMipmapNearestFilter v3d.LinearMipmapLinearFilter`

Для использования со свойством minFilter текстуры, они определяют функцию минимизации текстуры, которая используется всякий раз, когда пиксель, на который наносится текстура, отображается на область, превышающую один элемент текстуры (тексель).

В дополнение к NearestFilter и LinearFilter для минификации можно использовать следующие четыре функции:

NearestMipmapNearestFilter выбирает мипмапу, наиболее точно соответствующую размеру текстурируемого пикселя, и использует критерий NearestFilter (ближайший к центру пикселя тексель) для получения значения текстуры.

NearestMipmapLinearFilter выбирает два отображения, которые наиболее точно соответствуют размеру текстурируемого пикселя, и использует критерий NearestFilter для получения значения текстуры из каждого отображения. Окончательное значение текстуры является средневзвешенным значением этих двух значений.

LinearMipmapNearestFilter выбирает мипмапу, наиболее точно соответствующую размеру текстурируемого пикселя, и использует критерий LinearFilter (средневзвешенное значение четырех текселей, наиболее близких к центру пикселя) для получения значения текстуры.

LinearMipmapLinearFilter используется по умолчанию и выбирает два отображения, которые наиболее точно соответствуют размеру текстурируемого пикселя, и использует критерий LinearFilter для получения значения текстуры из каждого отображения. Окончательное значение текстуры является средневзвешенным значением этих двух значений.

#

## Типы текстур

`v3d.UnsignedByteType v3d.ByteType v3d.ShortType v3d.UnsignedShortType v3d.IntType v3d.UnsignedIntType v3d.FloatType v3d.HalfFloatType v3d.UnsignedShort4444Type v3d.UnsignedShort5551Type v3d.UnsignedInt248Type`

Используется со свойством type текстуры, которое должно соответствовать правильному формату.

UnsignedByteType используется по умолчанию.

#

## Форматы текстур

`v3d.AlphaFormat v3d.RedFormat v3d.RedIntegerFormat v3d.RGFormat v3d.RGIntegerFormat v3d.RGBAFormat v3d.RGBAIntegerFormat v3d.LuminanceFormat v3d.LuminanceAlphaFormat v3d.DepthFormat v3d.DepthStencilFormat`

Используются для назначения свойства format текстур, они определяют, как элементы двухмерной текстуры, или «тексели», считываются шейдерами.

AlphaFormat отбрасывает красный, зеленый и синий компоненты и считывает только альфа-компонент.

RedFormat отбрасывает зеленый и синий компоненты и считывает только красный компонент.

RedIntegerFormat отбрасывает зеленый и синий компоненты и считывает только красный компонент. Тексели считываются как целые числа, а не с плавающей точкой. (может использоваться только с рендерингом WebGL 2).

RGFormat отбрасывает альфа- и синие компоненты и считывает красную и зеленую компоненты. (может использоваться только с рендерингом WebGL 2).

RGIntegerFormat отбрасывает альфа- и синие компоненты и считывает красную и зеленую компоненты. Тексели считываются как целые числа, а не с плавающей точкой (может использоваться только с рендерингом WebGL 2).

RGBAFormat используется по умолчанию и считывает красный, зеленый, синий и альфа-компоненты.

RGBAIntegerFormat используется по умолчанию и считывает красный, зеленый, синий и альфа-компоненты. Тексели считываются как целые числа, а не с плавающей точкой. (может использоваться только с рендерингом WebGL 2).

LuminanceFormat считывает каждый элемент как один компонент яркости. Затем это значение преобразуется в плавающую точку, ограничивается в диапазоне [0,1], а затем собирается в RGBA-элемент, помещая значение яркости в красный, зеленый и синий каналы и присоединяя 1.0 к альфа-каналу.

LuminanceAlphaFormat считывает каждый элемент как двойное значение яркости/альфа-канала. Происходит тот же процесс, что и для LuminanceFormat, за исключением того, что альфа-канал может иметь значения, отличные от `1.0`.

DepthFormat считывает каждый элемент как одно значение глубины, преобразует его в значение с плавающей точкой и зажимает в диапазон [0,1]. Это значение по умолчанию для DepthTexture.

DepthStencilFormat каждый элемент представляет собой пару значений глубины и шаблона. Компонент глубины пары интерпретируется как в DepthFormat. Компонент шаблона интерпретируется на основе внутреннего формата "глубина + шаблон".

Обратите внимание, что текстура должна иметь правильное значение type, как описано выше. Ознакомьтесь с WebGLRenderingContext.texImage2D для деталей.

#

## DDS / ST3C форматы сжатия текстур

`v3d.RGB_S3TC_DXT1_Format v3d.RGBA_S3TC_DXT1_Format v3d.RGBA_S3TC_DXT3_Format v3d.RGBA_S3TC_DXT5_Format`

Для назначения свойства CompressedTexture — format. Требуют поддержки расширения WEBGL_compressed_texture_s3tc.

Через это расширение доступны четыре S3TC формата. К ним относятся:

RGB_S3TC_DXT1_Format: Сжатое в DXT1 изображение в формате RGB.
RGBA_S3TC_DXT1_Format: DXT1-сжатое изображение в формате RGB с простым включением/выключением альфа-значения.
RGBA_S3TC_DXT3_Format: DXT3-сжатое изображение в формате RGBA-изображения. По сравнению с 32-битной RGBA-текстурой оно обеспечивает сжатие 4:1.
RGBA_S3TC_DXT5_Format: DXT5-сжатое изображение в формате RGBA. Оно также обеспечивает сжатие 4:1, но отличается от сжатия DXT3 тем, как выполняется альфа-сжатие.

#

## PVRTC формат сжатия текстур

`v3d.RGB_PVRTC_4BPPV1_Format v3d.RGB_PVRTC_2BPPV1_Format v3d.RGBA_PVRTC_4BPPV1_Format v3d.RGBA_PVRTC_2BPPV1_Format`

Для назначения свойства CompressedTexture — format. Требуется поддержка расширения WEBGL_compressed_texture_pvrtc. PVRTC обычно доступен только на мобильных устройствах с чипсетами PowerVR, а это в основном устройства Apple.

Через это расширение доступны четыре PVRTC формата. К ним относятся:

RGB_PVRTC_4BPPV1_Format: Сжатие RGB в 4-битном режиме. Один блок на каждые 4×4 пикселя.
RGB_PVRTC_2BPPV1_Format: Сжатие RGB в 2-битном режиме. Один блок на каждые 8×4 пикселя.
RGBA_PVRTC_4BPPV1_Format: Сжатие RGBA в 4-битном режиме. Один блок на каждые 4×4 пикселя.
RGBA_PVRTC_2BPPV1_Format: Сжатие RGBA в 2-битном режиме. Один блок на каждые 8×4 пикселя.

#

## ETC Формат Сжатия Текстур

`v3d.RGB_ETC1_Format v3d.RGB_ETC2_Format v3d.RGBA_ETC2_EAC_Format`

Для назначения свойства CompressedTexture — format. Требуют поддержки расширения WEBGL_compressed_texture_etc1 (ETC1) или WEBGL_compressed_texture_etc (ETC2).

#

## ASTC формат сжатия текстур

`v3d.RGBA_ASTC_4x4_Format v3d.RGBA_ASTC_5x4_Format v3d.RGBA_ASTC_5x5_Format v3d.RGBA_ASTC_6x5_Format v3d.RGBA_ASTC_6x6_Format v3d.RGBA_ASTC_8x5_Format v3d.RGBA_ASTC_8x6_Format v3d.RGBA_ASTC_8x8_Format v3d.RGBA_ASTC_10x5_Format v3d.RGBA_ASTC_10x6_Format v3d.RGBA_ASTC_10x8_Format v3d.RGBA_ASTC_10x10_Format v3d.RGBA_ASTC_12x10_Format v3d.RGBA_ASTC_12x12_Format`

Для назначения свойства CompressedTexture — format. Требуется поддержка расширения WEBGL_compressed_texture_astc.

#

## BPTC Compressed Texture Formats

`v3d.RGBA_BPTC_Format`

Для назначения свойства CompressedTexture — format. Требуют наличия поддержки расширения EXT_texture_compression_bptc.

#

## Кодирование

`v3d.LinearEncoding v3d.sRGBEncoding v3d.BasicDepthPacking v3d.RGBADepthPacking v3d.LinearDepthPacking v3d.RGBADistancePacking v3d.ESMDistancePacking`

Для использования со свойством encoding текстуры.

Если тип кодировки изменен после того, как текстура уже использовалась материалом, необходимо установить Material.needsUpdate в `true`, чтобы материал перекомпилировался.

LinearEncoding по умолчанию. Значения, отличные от этого, действительны только для карты материала, envMap и emissiveMap.

## Исходный файл

О том как получить исходный код этого модуля читайте тут.