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.

ShaderMaterial

Наследует: Material < Resource < RefCounted < Object

Материал, определенный пользовательской программой Shader и значениями ее параметров шейдера.

Описание

Материал, который использует пользовательскую программу Shader для рендеринга визуальных элементов (эл. холста, сеток, неба, тумана) или для обработки частиц. По сравнению с другими материалами ShaderMaterial обеспечивает более глубокий контроль над сгенерированным кодом шейдера. Для получения дополнительной информации см. индекс документации шейдеров ниже.

Несколько ShaderMaterial могут использовать один и тот же шейдер и настраивать разные значения для униформ шейдера.

Примечание: Из соображений производительности сигнал Resource.changed выдается только при изменении Resource.resource_name. Только в редакторе он также выдается при изменении shader.

Обучающие материалы

Свойства

Shader

shader

Методы

Variant

get_shader_parameter(param: StringName) const

void

set_shader_parameter(param: StringName, value: Variant)


Описания свойств

Shader shader 🔗

Программа 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, когда это возможно.