Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
ShaderMaterial
Наследует: Material < Resource < RefCounted < Object
Материал, определенный пользовательской программой Shader и значениями ее параметров шейдера.
Описание
Материал, который использует пользовательскую программу Shader для рендеринга визуальных элементов (эл. холста, сеток, неба, тумана) или для обработки частиц. По сравнению с другими материалами ShaderMaterial обеспечивает более глубокий контроль над сгенерированным кодом шейдера. Для получения дополнительной информации см. индекс документации шейдеров ниже.
Несколько ShaderMaterial могут использовать один и тот же шейдер и настраивать разные значения для униформ шейдера.
Примечание: Из соображений производительности сигнал Resource.changed выдается только при изменении Resource.resource_name. Только в редакторе он также выдается при изменении shader.
Обучающие материалы
Свойства
Методы
get_shader_parameter(param: StringName) const |
|
void |
set_shader_parameter(param: StringName, value: Variant) |
Описания свойств
Программа Shader, использованная для рендеринга этого материала.
Описания метода
Variant get_shader_parameter(param: StringName) const 🔗
Возвращает текущее значение, установленное для данного материала униформы в шейдере.
void set_shader_parameter(param: StringName, value: Variant) 🔗
Изменяет значение, установленное для этого материала униформы в шейдере.
Примечание: param чувствителен к регистру и должен точно соответствовать имени униформы в коде (а не имени, написанному с заглавной буквы в инспекторе).
Примечание: Изменения в униформе шейдера будут действовать на всех экземплярах, использующих этот ShaderMaterial. Чтобы этого избежать, используйте униформы для каждого экземпляра с помощью CanvasItem.set_instance_shader_parameter(), GeometryInstance3D.set_instance_shader_parameter() или дублируйте ресурс ShaderMaterial с помощью Resource.duplicate(). Униформы для каждого экземпляра обеспечивают лучшее повторное использование шейдера и, следовательно, работают быстрее, поэтому их следует предпочитать дублированию ShaderMaterial, когда это возможно.