用途:在 Godot 4.x(目标 4.7)中编写 .gdshader 代码或 ShaderMaterial,包括 2D 效果(描边、溶解、闪光、水面)、3D 表面着色器(边缘光、卡通、UV 滚动)以及屏幕空间后处理。不适用于跨引擎着色理论、粒子/VFX 节点或非着色器视觉内容。
主要能力:首行指定着色器类型,2D 用 shader_type canvas_item,3D 用 shader_type spatial。通过 ShaderMaterial 挂载,uniform 会显示在检查器中。fragment() 输出 2D 的 COLOR 或 3D 的 ALBEDO/EMISSION/ALPHA,可选 vertex() 移动几何体、light() 自定义光照。支持 source_color、hint_range 等提示,使用 TIME 与 texture(tex, UV) 采样,代码中可用 material.set_shader_parameter("name", value) 设置参数。
使用要点:4.x 中 SCREEN_TEXTURE 已移除,改为声明 uniform sampler2D x : hint_screen_texture 并用 SCREEN_UV 采样;颜色提示由 hint_color 改为 source_color;深度/法线使用 hint_depth_texture / hint_normal_roughness_texture。canvas_item 写 COLOR,spatial 写 ALBEDO(写 COLOR 无效)。3D 透明需显式开启。UV 超出 [0,1] 需加 repeat_enable。TIME 持续增长,周期性效果用 fract()/mod() 包裹。discard 性能开销较大,能用 ALPHA 替代时优先使用。
限制:资料未提供收费、价格、平台或效果数据;更多内置变量、渲染模式、varying、自定义 light()/vertex() 与可视化着色器图需参考 references/shading-language.md。