Agent Skills
返回列表
💻

Godot 着色器

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-shaders-sh-h55xcw。

技能介绍

你在写什么

在 Godot 4.x 里,.gdshader 和 ShaderMaterial 是 2D 精灵、UI 贴图和 3D 表面材质共用的扩展点:描边、溶解、水面滚动、边缘光、卡通着色,以及屏幕空间后处理,都要在 Godot Shading Language 里把 fragment()(必要时 vertex() / light())写对,并把可调参数暴露成 Inspector 里的 uniform。

技能覆盖的工作流

  1. 选对类型:首行 shader_type canvas_item;(Sprite2D、TextureRect 等)或 shader_type spatial;(3D 材质)。
  2. 挂到节点:ShaderMaterial 绑定 .gdshader,uniform 带 source_color、hint_range 等 hint,便于调色与数值编辑。
  3. 写输出变量:2D 写 COLOR;3D 写 ALBEDO、EMISSION、ALPHA 等——在 spatial 里写 COLOR 不会生效。
  4. 动画与采样:用内置 TIME 驱动 UV 滚动;texture(tex, UV) 读贴图;GDScript 用 material.set_shader_parameter("name", value) 改参数。
  5. 4.x 读屏:不再用已移除的 SCREEN_TEXTURE,应声明 uniform sampler2D x : hint_screen_texture; 并用 SCREEN_UV 采样。

技能内还整理了 2D tint/滚动、噪声溶解、3D 自发光 rim、屏显后处理等 Patterns,并指向 references/shading-language.md 查内置变量与 render mode。

适用边界与坑

  • 别混用技能:跨引擎的 UV/顶点片元概念 → shader-programming;粒子节点 → 通用 3D;非着色器视觉管线另找对应技能。
  • 3.x → 4.x:hint_color / hint_albedo 等改为 source_color;颜色 uniform 不加 source_color 会按线性值显示,发灰或发暗。
  • 透明与 UV:3D 半透明需 render mode 或材质透明设置;UV 超出 [0,1] 要 sampler 加 : repeat_enable 才能平铺。
  • TIME 持续增长,周期效果用 fract() / mod() 包一层;能改 alpha 就别滥用 discard,部分硬件上代价高且影响 early-Z。

使用场景

  • 独立游戏在 Godot 4 里给 Sprite2D 写描边或溶解消失,需要正确的 canvas_item 与噪声阈值 fragment
  • 3D 角色材质要做边缘光或卡通着色,要在 spatial 里配置 ALBEDO/EMISSION 与 uniform 可调参数
  • UI 或全屏节点要做闪白、扭曲等后处理,需按 4.x 方式声明 hint_screen_texture 并用 SCREEN_UV 采样
  • 玩法需要在运行时改水面滚动速度或溶解进度,用 GDScript 调用 set_shader_parameter 驱动材质

适合人员

  • 用 Godot 4 做 2D 动作或平台游戏、要给角色与特效挂 ShaderMaterial 的独立开发者
  • 负责 3D 场景外观、要在材质里写 spatial 着色器而不是只用 StandardMaterial 的美术向程序员
  • 从 Godot 3 迁到 4、仍按 SCREEN_TEXTURE 和旧 color hint 写屏显与 uniform 需要对照迁移清单的维护者
  • 在 Cursor 里写 .gdshader 时经常搞混 canvas_item 的 COLOR 与 spatial 输出变量的 gameplay 程序员