CurveTexture
Однопиксельная полоса данных из Curve.
CurveTexture создаёт float-текстуру: одно значение в RGBF или RF через TextureMode. Назначьте Curve и Width (32…4096). Источник — общая ссылка, его Changed пересоздаёт пиксели; отсутствующая кривая даёт нулевой канал. Значения выше 1 сохраняются без отдельного флага HDR.
Выборка использует Curve.SampleBaked(i/Width), а не i/(Width−1). Последний пиксель не выбирает точную координату 1. Для таблицы по всему диапазону подготовьте Curve с доменом 0…1: другой домен автоматически не масштабируется. Mipmaps не создаются.
В текущей реализации унаследованный GetImage() возвращает null даже при существующих GPU-пикселях. Для редкой диагностики можно получить Image через RenderingServer.Texture2DGet(texture.GetRid()); освобождайте полученный Image после использования. Не читайте GPU каждый кадр. Изменение BakeResolution источника требует EmitChanged() для обновления текстуры.
Проверены данные GPU в Windows Forward+/Vulkan, обновление общих источников и сохранение ресурса. Этот прогон не проверяет shader-выборку, производительность или качество графики.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
CurveTextureКонструктор
public CurveTexture();Создаёт полосу шириной 256 без источников Curve. Конструктор не гарантирует готовых пикселей до первого обновления.
Свойства3
CurveСвойство
public Curve Curve { get; set; }Общая ссылка на Curve, изначально null. Изменение источника через Changed пересоздаёт пиксели. Null заполняет канал нулями. Выборка всегда идёт в 0…1, даже если домен Curve другой.
TextureModeСвойство
public CurveTexture.TextureModeEnum TextureMode { get; set; }Rgb по умолчанию: RGBF, одно значение во всех трёх каналах. Red использует RF с одним каналом. Данные float сохраняют значения выше 1; режим не включает свечение.
WidthСвойство
public int Width { get; set; }Ширина полосы 32…4096, по умолчанию 256; высота всегда 1. Генерируются отсчёты i/Width, поэтому последний пиксель не достигает координаты 1. Mipmaps не создаются.
Методы5
GetCurveCurve
public Curve GetCurve();Общая ссылка на Curve, изначально null. Изменение источника через Changed пересоздаёт пиксели. Null заполняет канал нулями. Выборка всегда идёт в 0…1, даже если домен Curve другой.
CurveТекущая общая Curve или null, не копия.
GetTextureModeCurveTexture.TextureModeEnum
public CurveTexture.TextureModeEnum GetTextureMode();Rgb по умолчанию: RGBF, одно значение во всех трёх каналах. Red использует RF с одним каналом. Данные float сохраняют значения выше 1; режим не включает свечение.
CurveTexture.TextureModeEnumRgb по умолчанию: RGBF, одно значение во всех трёх каналах. Red использует RF с одним каналом. Данные float сохраняют значения выше 1; режим не включает свечение.
SetCurvevoid
public void SetCurve(Curve curve);Общая ссылка на Curve, изначально null. Изменение источника через Changed пересоздаёт пиксели. Null заполняет канал нулями. Выборка всегда идёт в 0…1, даже если домен Curve другой.
| Имя | Тип | По умолчанию |
|---|---|---|
curve | Curve | — |
curveОбщая ссылка на Curve, изначально null. Изменение источника через Changed пересоздаёт пиксели. Null заполняет канал нулями. Выборка всегда идёт в 0…1, даже если домен Curve другой.
SetTextureModevoid
public void SetTextureMode(CurveTexture.TextureModeEnum textureMode);Rgb по умолчанию: RGBF, одно значение во всех трёх каналах. Red использует RF с одним каналом. Данные float сохраняют значения выше 1; режим не включает свечение.
| Имя | Тип | По умолчанию |
|---|---|---|
textureMode | CurveTexture.TextureModeEnum | — |
textureModeRgb по умолчанию: RGBF, одно значение во всех трёх каналах. Red использует RF с одним каналом. Данные float сохраняют значения выше 1; режим не включает свечение.
SetWidthvoid
public void SetWidth(int width);Ширина полосы 32…4096, по умолчанию 256; высота всегда 1. Генерируются отсчёты i/Width, поэтому последний пиксель не достигает координаты 1. Mipmaps не создаются.
| Имя | Тип | По умолчанию |
|---|---|---|
width | int | — |
widthШирина полосы 32…4096, по умолчанию 256; высота всегда 1. Генерируются отсчёты i/Width, поэтому последний пиксель не достигает координаты 1. Mipmaps не создаются.
CurveTexture.TextureModeEnum
| Значение | Описание |
|---|---|
Red = 1 | Сохраняйте кривую только в красном канале. Это экономит видеопамять, но некоторые пользовательские шейдеры могут не работать с этим. |
Rgb = 0 | Сохраните кривую равномерно по красному, зеленому и синему каналам. Это использует больше видеопамяти, но более совместимо с шейдерами, которые считывают только значения зеленого и синего. |