Godot 着色器
将以下提示词粘贴到你的 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。
技能覆盖的工作流
- 选对类型:首行
shader_type canvas_item;(Sprite2D、TextureRect等)或shader_type spatial;(3D 材质)。 - 挂到节点:
ShaderMaterial绑定.gdshader,uniform 带source_color、hint_range等 hint,便于调色与数值编辑。 - 写输出变量:2D 写
COLOR;3D 写ALBEDO、EMISSION、ALPHA等——在 spatial 里写COLOR不会生效。 - 动画与采样:用内置
TIME驱动 UV 滚动;texture(tex, UV)读贴图;GDScript 用material.set_shader_parameter("name", value)改参数。 - 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 程序员