Gradient
Цветовые точки и выборка с Linear, Constant или Cubic.
Gradient хранит пары позиции и цвета, а не пиксели текстуры. По умолчанию это непрозрачный чёрный в 0 и белый в 1, Linear и Srgb. Sample возвращает цвет для позиции; за крайними точками остаётся ближайший крайний цвет. Пустой массив точек даёт непрозрачный чёрный.
Индексы не являются постоянными идентификаторами: Sample, GetColor и GetOffset могут отсортировать точки. При работе с массивами назначайте Colors и Offsets согласованной длины: каждый setter меняет число точек. Полученные массивы — копии; их редактирование не меняет ресурс. Используйте конечные уникальные позиции.
Для LinearSrgb и Oklab RGB преобразуется для интерполяции и возвращается в sRGB; Constant использует цвет точки напрямую. Cubic может дать значения выше 1 или ниже 0. При передаче результата в градиентную текстуру учитывайте UseHdr: RGBA8 ограничивает диапазон, RGBAF сохраняет расширенные значения.
Выборка, режимы, цветовые пространства, сортировка, массивы и обновление связанных текстур проверены в текущем Runtime. Совпадающие позиции, NaN/Infinity и неверные индексы не проверялись как допустимые данные.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
GradientКонструктор
public Gradient();Создаёт две точки: непрозрачный чёрный в 0 и белый в 1, Linear и Srgb.
Свойства4
ColorsСвойство
public Color[] Colors { get; set; }Массив цветов текущих точек. Чтение возвращает отдельный Color[], без принудительной сортировки точек. Изменение копии не меняет ресурс. Назначение массива меняет число точек до его длины и может удалить прежние точки. Подготовьте Colors и Offsets одинаковой длины; не считайте назначение частичным обновлением.
InterpolationColorSpaceСвойство
public Gradient.ColorSpace InterpolationColorSpace { get; set; }Пространство интерполяции: Srgb по умолчанию, LinearSrgb или Oklab. В двух последних вариантах RGB преобразуется для интерполяции и возвращается обратно в sRGB; альфа интерполируется отдельно. Constant возвращает цвет точки без такого преобразования. Это не флаг HDR текстуры.
InterpolationModeСвойство
public Gradient.InterpolationModeEnum InterpolationMode { get; set; }Способ выборки между точками: Linear по умолчанию, Constant удерживает левый цвет до следующей точки, Cubic использует соседние точки и может дать компоненты вне 0…1. В точной позиции точки Sample возвращает её цвет. Это не сглаживание текстуры и не настройка фильтра sampler.
OffsetsСвойство
public float[] Offsets { get; set; }Позиции текущих точек. Чтение возвращает отдельный float[] в текущем внутреннем порядке, без принудительной сортировки. Назначение меняет число точек до длины массива и отмечает порядок для последующей сортировки. Обычно используйте конечные уникальные позиции 0…1; setter сам этот диапазон не ограничивает.
Методы19
AddPointvoid
public void AddPoint(float offset, Color color);Добавляет пару позиции и цвета, увеличивает число точек и делает текущий порядок несортированным. Сортировка выполняется при Sample, GetColor/GetOffset и SetColor/SetOffset. Сохраняйте собственный смысл точки отдельно: индекс после сортировки может измениться.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | float | — |
color | Color | — |
offsetКонечная позиция. Обычно 0…1; диапазон не зажимается автоматически.
colorНовый цвет точки. Для интерполяции с расширенным диапазоном учитывайте формат целевой текстуры.
GetColorColor
public Color GetColor(int point);Сначала сортирует точки по позиции, затем возвращает цвет указанного индекса. Индекс должен существовать; ошибочный индекс не является способом получить цвет за пределами градиента.
| Имя | Тип | По умолчанию |
|---|---|---|
point | int | — |
pointИндекс существующей точки; порядок может измениться после сортировки.
ColorЦвет существующей точки после сортировки.
GetColorsColor[]
public Color[] GetColors();Возвращает значение свойства Gradient.Colors.
GetInterpolationColorSpaceGradient.ColorSpace
public Gradient.ColorSpace GetInterpolationColorSpace();Возвращает значение свойства Gradient.InterpolationColorSpace.
GetInterpolationModeGradient.InterpolationModeEnum
public Gradient.InterpolationModeEnum GetInterpolationMode();Возвращает значение свойства Gradient.InterpolationMode.
GetOffsetfloat
public float GetOffset(int point);Сначала сортирует точки по позиции, затем возвращает позицию указанного индекса. Это чтение может изменить внутренний порядок массивов Colors и Offsets.
| Имя | Тип | По умолчанию |
|---|---|---|
point | int | — |
pointИндекс существующей точки; порядок может измениться после сортировки.
floatПозиция существующей точки после сортировки.
GetOffsetsfloat[]
public float[] GetOffsets();Возвращает значение свойства Gradient.Offsets.
GetPointCountint
public int GetPointCount();Возвращает текущее число пар позиции/цвета, включая ноль после назначения пустого массива. Само число точек не запускает сортировку.
intТекущее число точек; изначально 2.
RemovePointvoid
public void RemovePoint(int point);Удаляет существующий индекс в текущем порядке, не выполняя предварительную сортировку. Нельзя удалять последнюю оставшуюся точку этим методом. Для полного обнуления назначьте пустой массив Offsets или Colors. Не используйте сохранённый индекс после операций, которые меняют порядок.
| Имя | Тип | По умолчанию |
|---|---|---|
point | int | — |
pointИндекс существующей точки; порядок может измениться после сортировки.
Reversevoid
public void Reverse();Заменяет каждую позицию на 1 − offset, сохраняет её цвет и сортирует результат. Не ограничивает исходные позиции диапазоном 0…1: позиция −0.5 станет 1.5.
SampleColor
public Color Sample(float offset);Возвращает цвет для конечной позиции с учётом режима и пространства интерполяции; при необходимости сортирует точки. До первой и после последней точки возвращает крайний цвет. Пустой градиент даёт непрозрачный чёрный, одна точка — её цвет. Cubic может выходить за 0…1; одинаковые позиции, NaN и Infinity не используйте.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | float | — |
offsetКонечная позиция. Обычно 0…1; диапазон не зажимается автоматически.
ColorВычисленный цвет; его компоненты не гарантированно ограничены 0…1.
SetColorvoid
public void SetColor(int point, Color color);Сначала сортирует точки, затем заменяет цвет существующего индекса и уведомляет об изменении ресурса. Назначенная градиентная текстура получит запрос на пересоздание пикселей.
| Имя | Тип | По умолчанию |
|---|---|---|
point | int | — |
color | Color | — |
pointИндекс существующей точки; порядок может измениться после сортировки.
colorНовый цвет точки. Для интерполяции с расширенным диапазоном учитывайте формат целевой текстуры.
SetColors2 перегрузки
public void SetColors(Color[] colors);Назначает значение свойства Gradient.Colors.
| Имя | Тип | По умолчанию |
|---|---|---|
colors | Color[] | — |
colorsПолный массив цветов: его длина становится числом точек. Подготовьте согласованный Offsets.
public void SetColors(ReadOnlySpan<Color> colors);Назначает значение свойства Gradient.Colors.
| Имя | Тип | По умолчанию |
|---|---|---|
colors | ReadOnlySpan<Color> | — |
colorsПолный массив цветов: его длина становится числом точек. Подготовьте согласованный Offsets.
SetInterpolationColorSpacevoid
public void SetInterpolationColorSpace(Gradient.ColorSpace interpolationColorSpace);Назначает значение свойства Gradient.InterpolationColorSpace.
| Имя | Тип | По умолчанию |
|---|---|---|
interpolationColorSpace | Gradient.ColorSpace | — |
interpolationColorSpaceSrgb, LinearSrgb или Oklab; для Constant преобразование не используется.
SetInterpolationModevoid
public void SetInterpolationMode(Gradient.InterpolationModeEnum interpolationMode);Назначает значение свойства Gradient.InterpolationMode.
| Имя | Тип | По умолчанию |
|---|---|---|
interpolationMode | Gradient.InterpolationModeEnum | — |
interpolationModeLinear, Constant или Cubic; Cubic может превышать диапазон компонентов 0…1.
SetOffsetvoid
public void SetOffset(int point, float offset);Сначала сортирует точки, затем меняет позицию существующего индекса и снова помечает порядок несортированным. Позиция не зажимается в 0…1. После следующей сортировки индекс этой точки может измениться.
| Имя | Тип | По умолчанию |
|---|---|---|
point | int | — |
offset | float | — |
pointИндекс существующей точки; порядок может измениться после сортировки.
offsetКонечная позиция. Обычно 0…1; диапазон не зажимается автоматически.
SetOffsets2 перегрузки
public void SetOffsets(ReadOnlySpan<float> offsets);Назначает значение свойства Gradient.Offsets.
| Имя | Тип | По умолчанию |
|---|---|---|
offsets | ReadOnlySpan<float> | — |
offsetsПолный массив конечных уникальных позиций. Длина становится числом точек.
public void SetOffsets(float[] offsets);Назначает значение свойства Gradient.Offsets.
| Имя | Тип | По умолчанию |
|---|---|---|
offsets | float[] | — |
offsetsПолный массив конечных уникальных позиций. Длина становится числом точек.
Gradient.ColorSpace
| Значение | Описание |
|---|---|
LinearSrgb = 1 | Линейное цветовое пространство sRGB. |
Oklab = 2 | Цветовое пространство Oklab. Это цветовое пространство обеспечивает плавный и однородно выглядящий переход между цветами. |
Srgb = 0 | Цветовое пространство sRGB. |
Gradient.InterpolationModeEnum
| Значение | Описание |
|---|---|
Constant = 1 | Константная интерполяция, цвет резко меняется в каждой точке и остается однородным между ними. Это может привести к видимой алиасинге при использовании для градиентной текстуры в некоторых случаях. |
Cubic = 2 | Кубическая интерполяция. |
Linear = 0 | Линейная интерполяция. |