ShaderMaterial
Материал с Shader и собственными значениями параметров.
Ссылается на Shader без автоматического клонирования. Разные ShaderMaterial могут использовать одну программу с независимыми параметрами; один общий ShaderMaterial разделяет значения у потребителей. Место назначения должно соответствовать shader_type.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ShaderMaterialКонструктор
public ShaderMaterial();Создаёт материал без назначенного Shader. Назначьте подходящий Shader и передайте материал потребителю соответствующего типа. Создание ShaderMaterial само по себе не компилирует произвольный эффект и не включает нужный проход.
Свойства1
ShaderСвойство
public Shader Shader { get; set; }Shader, используемый материалом. Несколько материалов могут ссылаться на один Shader, сохраняя разные обычные uniform. Несколько мешей с одним ShaderMaterial делят его параметры; для независимых значений нужен отдельный материал либо instance uniform.
Методы4
GetShaderShader
public Shader GetShader();Возвращает назначенный общий ресурс Shader, не его копию. До назначения ресурс может отсутствовать.
ShaderНазначенный Shader или null, если он не задан.
GetShaderParameterVariant
public Variant GetShaderParameter(StringName param);Читает значение, явно сохранённое в ShaderMaterial. Если override отсутствует, возвращает Nil, даже когда shader-код задаёт default и поверхность использует его. Не используйте результат как полную проверку shader-кода или поддержку опечатанного имени.
| Имя | Тип | По умолчанию |
|---|---|---|
param | StringName | — |
paramТочное имя параметра с учётом регистра. height_scale и Height_scale — разные ключи.
VariantСохранённый Variant или Nil при отсутствии override. В проверенном примере height_scale сначала Nil, хотя shader-default 0.9 создаёт видимый рельеф.
SetShadervoid
public void SetShader(Shader shader);Назначает ресурс Shader материалу без клонирования. Несколько материалов могут разделять код шейдера, сохраняя собственные значения uniform.
| Имя | Тип | По умолчанию |
|---|---|---|
shader | Shader | — |
shaderРесурс Shader подходящего типа для рисуемого объекта.
SetShaderParametervoid
public void SetShaderParameter(StringName param, Variant value);Записывает обычный uniform этого материала по точному имени с учётом регистра. Изменение видно всем его пользователям. Nil удаляет override и возвращает shader-default. Метод может сохранить неизвестное имя: успешное чтение назад не доказывает, что uniform объявлен и влияет на кадр.
| Имя | Тип | По умолчанию |
|---|---|---|
param | StringName | — |
value | Variant | — |
paramИмя обычного uniform, например height_scale. Для instance uniform используйте GeometryInstance3D.SetInstanceShaderParameter. Проверяйте имя через Shader.GetShaderUniformList.
valueVariant подходящего shader-типу значения; для sampler2D передайте Texture2D. default(Variant) задаёт Nil и снимает override, а не назначает число 0.