RDUniform
Описание вида ресурса, binding и RID для uniform set.
RDUniform описывает привязку ресурсов к одному binding шейдера. Он не выделяет буфер или текстуру и не заменяет uniform set. Номер set задаётся отдельно; вид ресурса и RID должны соответствовать layout и одному устройству.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
RDUniformКонструктор
public RDUniform();Создаёт описание: Binding=0, UniformType=Image, список RID пустой. Не создаёт GPU-ресурс или uniform set. Перед использованием явно задайте тип, binding и RID, соответствующие layout шейдера.
Свойства3
BindingСвойство
public int Binding { get; set; }Номер binding внутри набора set шейдера. Должен совпадать с GLSL layout(binding=...); номер set задаётся отдельно при создании и привязке набора.
UniformTypeСвойство
public RenderingDevice.UniformType UniformType { get; set; }Вид ресурса привязки, например StorageBuffer. Должен соответствовать объявлению шейдера и переданным RID; этот параметр не выделяет GPU-ресурс.
_IdsСвойство
public Reckfell.Collections.Array<Rid> _Ids { get; set; }Внутреннее свойство сериализации списка RID. Getter возвращает отдельный контейнер; изменение его элементов не меняет описание. Setter сначала очищает описание, затем добавляет ненулевые RID; ошибка в элементе может оставить частичный список. Для обычного кода используйте AddId/ClearIds, а не это свойство. Описание не владеет GPU-ресурсами.
Методы7
AddIdvoid
public void AddId(Rid id);Добавляет RID в описание привязки. Ресурс должен принадлежать устройству будущего uniform set; добавление идентификатора не создаёт копию GPU-ресурса.
| Имя | Тип | По умолчанию |
|---|---|---|
id | Rid | — |
idRID ресурса подходящего вида на том же устройстве.
ClearIdsvoid
public void ClearIds();Очищает идентификаторы в описании привязки. Не освобождает сами GPU-ресурсы и не пересоздаёт уже созданный uniform set.
GetBindingint
public int GetBinding();Возвращает сохранённый Binding, изначально 0. Это номер binding внутри set, не индекс set, не порядковый номер RDUniform в массиве и не запрос существующего GPU uniform set.
intСохранённый номер binding; изначально 0.
GetIdsReckfell.Collections.Array<Rid>
public Reckfell.Collections.Array<Rid> GetIds();Возвращает новую коллекцию текущих RID описания. Изменение этой коллекции не редактирует описание; используйте AddId и ClearIds. GPU-ресурсы не копируются.
Reckfell.Collections.Array<Rid>Новая коллекция идентификаторов, ссылающихся на прежние ресурсы.
GetUniformTypeRenderingDevice.UniformType
public RenderingDevice.UniformType GetUniformType();Возвращает сохранённый тип, изначально UniformType.Image. Тип не определяется автоматически по RID: StorageBuffer и SamplerWithTexture нужно указывать явно. Соответствие layout проверяется при создании uniform set.
RenderingDevice.UniformTypeСохранённый UniformType; изначально Image.
SetBindingvoid
public void SetBinding(int pMember);Сохраняет номер binding в описании без проверки соответствия шейдеру. Отрицательный int может сохраниться, но не является корректным способом задать binding GLSL. Изменение не перенастраивает существующий uniform set; создайте новый set для другой привязки.
| Имя | Тип | По умолчанию |
|---|---|---|
pMember | int | — |
pMemberНовый номер binding из shader layout, не индекс descriptor set.
SetUniformTypevoid
public void SetUniformType(RenderingDevice.UniformType pMember);Сохраняет тип описания. Не конвертирует RID, не выделяет буфер и не меняет уже созданный set. Выберите тип по декларации shader layout; для combined sampler используйте SamplerWithTexture и пары sampler RID, texture RID.
| Имя | Тип | По умолчанию |
|---|---|---|
pMember | RenderingDevice.UniformType | — |
pMemberТип ресурса из layout, например StorageBuffer или SamplerWithTexture; не определяется по RID автоматически.