ShaderMaterial

继承: Material < Resource < RefCounted < Object

由自定义 Shader 程序定义的材质及其着色器参数的值。

描述

使用自定义 Shader 程序来渲染可见项目(画布项目、网格、天空、雾)或处理粒子的材质。与其他材质相比,ShaderMaterial 可以更深入地控制生成的着色器代码。有关更多信息,请参阅下面的着色器文档索引。

多个 ShaderMaterial 可以使用相同的着色器并为着色器 uniform 配置不同的值。

注意:出于性能原因,仅当 Resource.resource_name 更改时才会发出 Resource.changed 信号。仅在编辑器中,它也会针对 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 🔗

返回在着色器中此 uniform 材质的当前值。


void set_shader_parameter(param: StringName, value: Variant) 🔗

Changes the value set for this material of a uniform in the shader.

Note: param is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).

Note: Changes to the shader uniform will be effective on all instances using this ShaderMaterial. To prevent this, use per-instance uniforms with CanvasItem.set_instance_shader_parameter(), GeometryInstance3D.set_instance_shader_parameter() or duplicate the ShaderMaterial resource using Resource.duplicate(). Per-instance uniforms allow for better shader reuse and are therefore faster, so they should be preferred over duplicating the ShaderMaterial when possible.