
基于 CCGS Skill Testing Framework 的 Godot 着色器专家 Agent 行为规格与测试指南【免费下载链接】Claude-Code-Game-StudiosTurn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.项目地址: https://gitcode.com/GitHub_Trending/cl/Claude-Code-Game-Studios导读本文以CCGS Skill Testing Framework中的godot-shader-specialistAgent 测试规格为骨架完整拆解这位「Godot 着色器专家」的领域边界、5 个核心测试用例、协议合规要求与版本感知机制并结合仓库中的引擎参考文档VERSION.md、breaking-changes.md、deprecated-apis.md、modules/rendering.md给出可复现的着色器代码与验证路径。读者读完既能掌握如何为着色器专项 Agent 编写测试规格也能获得一份针对 Godot 4.6 的着色器与后期处理实战速查。一、Agent 概览领域边界与职责划分规格文件 godot-shader-specialist.md 在Agent Summary中明确了该 Agent 的领域归属Domain属于它Godot 着色语言GLSL 衍生、可视化着色器VisualShader 图、材质设置、粒子着色器、后期处理效果。Does NOT own不属于它玩法代码gameplay code、美术风格方向art style direction。Model tierSonnet默认与多数 specialist 一致。Gate IDs无门禁 ID 分配不触发导演级阶段门禁。这一边界划分与该框架的分层思想一致godot-shader-specialist属于agents/engine/godot/引擎层下的语言/子域专家与godot-specialist负责节点/场景架构与语言选型、godot-gdscript-specialist、godot-csharp-specialist、godot-gdextension-specialist平级美术风格方向应上交给art-director之类的导演/负责人角色。关于框架整体结构可参见 CCGS Skill Testing Framework/CLAUDE.md 中的层级划分与 catalog.yaml 中该 Agent 的注册条目。静态断言Static Assertions测试的第一步是结构校验规格要求断言以下事实description:字段存在且领域明确引用 Godot 着色语言 / 材质 / 后期处理allowed-tools:列表包含 Read、Write、Edit、Glob、Grep模型层级为 Sonnetspecialist 默认Agent 定义将 docs/engine-reference/godot/VERSION.md 引用为 Godot 着色器 API 变更的权威来源。这四条断言共同保证该 Agent 的元数据完整、工具权限匹配能读写着色器文件、能全局搜索 API 用法、且强制其具备「查版本参考再写 API」的纪律。二、Case 1域内请求——溶解Dissolve效果着色器输入Write a dissolve effect shader for enemy death in Godot.期望行为逐条可验证产出有效的 Godot 着色语言代码——不是 HLSL也不是裸 GLSL根据场景选择shader_type spatial;或canvas_item定义uniform float dissolve_amount : hint_range(0.0, 1.0);采样噪声纹理得到逐像素溶解阈值低于阈值的像素使用discard;丢弃可选在溶解边界附近用 emission 添加边缘辉光语法符合 Godot 着色语言规范。可直接落地的示例实现以下代码同时满足规格中除「可选边缘辉光」外的全部检查点shader_type spatial; render_mode cull_disabled; // 溶解进度0.0 完整1.0 完全溶解可动画化 uniform float dissolve_amount : hint_range(0.0, 1.0) 0.0; uniform sampler2D noise_tex : source_color, filter_linear_mipmap, repeat_enable; uniform vec4 dissolve_color : source_color vec4(1.0, 0.6, 0.2, 1.0); uniform float edge_width : hint_range(0.0, 0.5) 0.08; varying vec2 uv; void vertex() { uv UV; } void fragment() { // 采样噪声纹理得到逐像素溶解阈值 float noise texture(noise_tex, uv).r; // 边缘辉光在噪声值接近 dissolve_amount 的窄带内发光 float band abs(noise - dissolve_amount); float glow 1.0 - smoothstep(0.0, edge_width, band); EMISSION dissolve_color.rgb * glow * 2.0; // 低于阈值的像素直接丢弃 if (noise dissolve_amount) { discard; } ALBEDO vec3(1.0); }要点注释hint_range(0.0, 1.0)让编辑器以滑块形式暴露该 uniformCase 1 第 3 点discard;位于片元着色器末尾的分支中Case 1 第 5 点噪声采样使用texture()sampler2D——这正是 Case 3 要重点提示的版本敏感 API见下文在 Godot 4.4 中采样器声明为Texture基类型对游戏玩法行为零侵入该着色器只作用于敌方死亡的表现层不会改动任何 gameplay 逻辑符合「Does NOT own: gameplay code」的领域纪律。三、Case 2HLSL 重定向——跨引擎语法不越权输入Write an HLSL compute shader for this dissolve effect.期望行为绝不产出 HLSL 代码明确说明Godot does not use HLSL directly; it uses its own shading language (a GLSL derivative)Godot 不直接使用 HLSL它使用自己的着色语言一种 GLSL 衍生将 HLSL 意图翻译为等价的 Godot 着色器方案若用户真实意图是计算着色器则说明 Godot 4 提供 RenderingDevice 计算着色器但这是底层 API需要恰当标注其复杂度与适用前提。这一用例的本质是领域防御测试Agent 可能被用户的措辞诱导写出错误引擎的代码。规格要求它以「明确拒绝 等价翻译 底层 API 风险标注」三段式响应。这与框架中其他引擎专家的重定向逻辑一致——例如 godot-specialist.md 的 Case 2 要求拒绝 UnityMonoBehaviour请求并提供 Godot 等价映射。四、Case 3Post-cutoff API 变更——4.4 纹理采样类型输入Use texture() with a sampler2D to sample the noise texture in the shader.期望行为检查版本参考Godot 4.4 改变了着色器纹理采样器的类型声明标注潜在 API 变更sampler2D语法与texture()调用行为在 4.4 前后可能不同给出项目锁定版本4.6的正确语法依据迁移笔记不得在未标注版本风险的情况下直接使用 4.4 之前的采样语法。仓库中的版本证据VERSION.md 记录了知识缺口警告LLM 训练数据截止约 4.34.4 / 4.5 / 4.6 引入了模型不知道的重大变化任何 Godot API 建议前必须交叉核对本目录。具体到着色器breaking-changes.md 的 4.3 → 4.4 表明确记录Rendering | Shader texture types | Parameter/return types changed fromTexture2DtoTexturedeprecated-apis.md 的 Patterns 表同样列出Texture2Din shader parameters →Texturebase type自 4.4 起modules/rendering.md 在「Common Mistakes」中重申UsingTexture2Din shader uniform types (useTexturesince 4.4)。因此正确做法是在 4.6 项目中声明uniform Texture noise_tex;并以采样器语义配合texture()使用若必须兼容旧写法必须显式标注「该写法为 4.4 之前语法存在版本风险」。这正是该测试规格要固化的行为「先查 VERSION.md再写 API」。五、Case 4片元着色器 LOD 策略——性能剖析与降采样输入The fragment shader for the water surface has 8 texture samples and is causing GPU bottlenecks on mid-range hardware.期望行为识别逐片元纹理采样次数是首要成本驱动因子提出 LOD 策略距离衰减采样数基于距离的着色器变体或 LOD 等级离线预烘焙部分纹理组合远处采样使用更低分辨率噪声纹理给出实现该 LOD 方案的着色器代码修改不得改变水面系统的玩法行为。示例实现距离驱动的采样数削减shader_type spatial; uniform sampler2D normal_tex; uniform sampler2D foam_tex; uniform sampler2D noise_tex; uniform vec2 view_range vec2(20.0, 80.0); // 近 / 远裁剪距离 varying vec3 world_pos; void vertex() { world_pos (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; } void fragment() { float dist distance(world_pos, CAMERA_POSITION_WORLD); // 归一化到 0近~ 1远 float t clamp((dist - view_range.x) / (view_range.y - view_range.x), 0.0, 1.0); // 近处 3 次采样法线 泡沫 噪声 vec3 n texture(normal_tex, UV).rgb; float foam texture(foam_tex, UV).r; float noise texture(noise_tex, UV * 2.0).r; // 远处降级法线换低分辨率 Mipmap 采样、泡沫用常量、噪声用低分辨率纹理 if (t 0.5) { n textureLod(normal_tex, UV, 4.0).rgb; // 直接取低 Mip 等级避免开销 foam 0.0; } // ... 组装水面材质仅表现层不触碰玩法逻辑 ALBEDO vec3(0.1, 0.3, 0.5) foam * 0.8; NORMAL normalize(n); }策略落点解释降采样顺序先把最贵的「第 2、3、4 次采样」降为textureLod低 Mip 读取再按距离裁剪可省略的纹理通道预烘焙泡沫与噪声若在远处无视觉价值直接替换为常量或低频纹理减少寄存器与带宽压力零玩法影响所有改动都发生在片元着色器的表现计算内不改变物理、碰撞或水面交互逻辑——这符合规格「Does NOT change gameplay behavior」的要求。配合仓库中的 perf-profile.md 分析技能可以先把「每片元采样次数」这类热点数据量化出来再决定 LOD 变体阈值。六、Case 5上下文传递——Godot 4.6 Glow辉光重做输入引擎版本上下文为 Godot 4.6请求Add a bloom/glow post-processing effect to the scene.期望行为引用 VERSION.md 中「Godot 4.6 包含 glow 重做」的记录使用4.6 的 WorldEnvironment 方案给出 glow 配置指引而非 4.6 之前的 API明确说明 4.6 glow 重做中哪些属性或参数发生了改变标注任何 LLM 训练数据可能因截止时间而持有错误信息的属性。4.6 glow 重做的仓库事实breaking-changes.md 的 4.5 → 4.6 表记录Rendering | Glow processes BEFORE tonemapping | Was after tonemapping. Scenes with glow will look different. Adjust intensity/blend in WorldEnvironment.modules/rendering.md 与 current-best-practices.md 也同步确认glow 现在在 tonemapping 之前处理并使用屏幕混合screen blending模式现有 glow 设置可能观感不同需在 WorldEnvironment 中调整强度与混合参数。4.6 推荐配置路径WorldEnvironment → Environment → Glow ├── Glow: Enabled在 4.6 中于 tonemapping 前执行使用屏幕混合 ├── Intensity: 按场景重新校准顺序改变后原数值观感不同 └── Blend Mode: Screen / Softlight / Additive / Replace 按需选择配套的后期处理基础设施4.3 推荐使用CompositorCompositorEffect构建结构化后期处理链而不是手写 viewport 着色器链见 deprecated-apis.md 的 Patterns 表。若项目对 AA 有需求4.5 新增的SMAA 1x比 FXAA 锐利、比 TAA 便宜与 4.5 的Shader Baker预编译着色器、显著降低启动卡顿也是渲染侧的可选项详见 current-best-practices.md。七、协议合规Protocol Compliance测试规格要求该 Agent 在每一次交互后满足以下合规清单停留在声明领域内Godot 着色语言、材质、VFX 着色器、后期处理将玩法代码请求重定向到 gameplay-programmer产出有效的 Godot 着色语言——绝不输出 HLSL或在没有 Godot 包装的情况下输出裸 GLSL检查引擎版本参考以识别 post-cutoff 着色器 API 变更4.4 纹理类型、4.6 glow 重做返回结构化输出带注释 uniform 的着色器代码、带性能论证的 LOD 策略将任何 post-cutoff API 的使用标注为「需要验证」。这六条是对五个用例行为约束的提炼也是/skill-test之类测试命令逐项勾选验证的验收项框架工作流见 CCGS Skill Testing Framework/CLAUDE.md。八、覆盖说明与 QA 证据闭环规格的Coverage Notes给出了三层质量闭环要求Case 1溶解着色器应与production/qa/evidence/中的可视化测试截图配对——即功能测试必须有截图证据沉淀在production/qa/evidence/目录Case 3纹理 API 标注确认 Agent 在使用任何 4.3 之后变更的 API 前检查 VERSION.md——把「查版本」从口头要求变为可自动断言的行为Case 5glow 重做是 Godot 4.6 专属测试——验证 Agent 应用了最新的迁移笔记。这一闭环与框架中 story-done.md、test-evidence-review.md 等技能共同构成「行为规格 → 测试用例 → 证据沉淀 → 回归」的完整 QA 循环。九、给你的实战清单写 dissolve 类 VFX 着色器参考第二节模板记得加hint_range、噪声阈值、discard分支与可选边缘 glow写任何涉及纹理采样器的着色器先核对 VERSION.md 与 breaking-changes.md确认 4.4 后应使用Texture基类型声明调 glow / 后期处理明确 4.6 中 glow 在 tonemapping 之前执行需在 WorldEnvironment 重新校准 Intensity 与 Blend Mode优先采用CompositorCompositorEffect结构优化片元着色器性能以「逐片元采样次数」为第一指标按距离做 LOD 变体、用textureLod取低 Mip、离线预烘焙纹理组合给 Agent 写测试规格参考 templates/agent-test-spec.md 模板每个用例明确「输入 → 期望行为 → 断言」并保留 Protocol Compliance 与 Coverage Notes 小节。最后规格文件本身就是一份可直接复用的验收清单把它作为回归测试基线每次升级 Godot4.4 → 4.5 → 4.6或更换 LLM 后重跑一遍就能持续守住「Agent 不写过期 API、不越权、输出结构正确」的质量底线。【免费下载链接】Claude-Code-Game-StudiosTurn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.项目地址: https://gitcode.com/GitHub_Trending/cl/Claude-Code-Game-Studios创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考