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 可以使用相同的着色器并为着色器 uniform 配置不同的值。
注意:出于性能原因,仅当 Resource.resource_name 更改时才会发出 Resource.changed 信号。仅在编辑器中,它也会针对 shader 更改而发出。
教程¶
属性¶
方法¶
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 的副本。