Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

ShaderMaterial

继承: Material < Resource < RefCounted < Object

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

描述

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

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

注意:出于性能原因,仅当 Resource.resource_name 更改时才会发出 Resource.changed 信号。仅在编辑器中,它也会针对 shader 更改而发出。

教程

属性

Shader

shader

方法

Variant

get_shader_parameter ( StringName param ) const

void

set_shader_parameter ( StringName param, Variant value )


属性说明

Shader shader

用于渲染此材质的 Shader 程序。


方法说明

Variant get_shader_parameter ( StringName param ) const

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


void set_shader_parameter ( StringName param, Variant value )

更改这个材质的着色器中为某个 uniform 设置的值。

注意:param 大小写敏感,必须完全匹配代码中 uniform 的名称(不是检查器中首字母大写后的名称)。

注意:对着色器 uniform 的修改会在使用这个 ShaderMaterial 的所有实例上生效。要防止这种行为,请通过 GeometryInstance3D.set_instance_shader_parameter 使用单实例 uniform,或者使用 Resource.duplicate 制作该 ShaderMaterial 的副本。单实例 uniform 可以更好地复用着色器,因此速度也更快,所以应该尽可能优先使用,而不是制作 ShaderMaterial 的副本。