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) 🔗

Изменяет значение, заданное для этого материала uniform-переменной в шейдере.

Примечание: param чувствителен к регистру и должен точно соответствовать имени uniform-переменной в коде (не заглавному имени в инспекторе).

Примечание: Изменения uniform-переменной шейдера будут эффективны для всех экземпляров, использующих этот ShaderMaterial. Чтобы предотвратить это, используйте uniform-переменные для каждого экземпляра с GeometryInstance3D.set_instance_shader_parameter() или дублируйте ресурс ShaderMaterial с помощью Resource.duplicate(). uniform-переменные для каждого экземпляра позволяют лучше повторно использовать шейдер и, следовательно, работают быстрее, поэтому их следует предпочесть дублированию ShaderMaterial, когда это возможно.