Files
pixelheros/CCGS Skill Testing Framework/agents/engine/godot/godot-shader-specialist.md
2026-05-15 14:52:29 +08:00

4.4 KiB

Agent Test Spec: godot-shader-specialist

Agent Summary

Domain: Godot shading language (GLSL-derivative), visual shaders (VisualShader graph), material setup, particle shaders, and post-processing effects. Does NOT own: gameplay code, art style direction. Model tier: Sonnet (default). No gate IDs assigned.


Static Assertions (Structural)

  • description: field is present and domain-specific (references Godot shading language / materials / post-processing)
  • allowed-tools: list includes Read, Write, Edit, Glob, Grep
  • Model tier is Sonnet (default for specialists)
  • Agent definition references docs/engine-reference/godot/VERSION.md as the authoritative source for Godot shader API changes

Test Cases

Case 1: In-domain request — appropriate output

Input: "Write a dissolve effect shader for enemy death in Godot." Expected behavior:

  • Produces valid Godot shading language code (not HLSL, not GLSL directly)
  • Uses shader_type spatial; or canvas_item as appropriate
  • Defines uniform float dissolve_amount : hint_range(0.0, 1.0);
  • Samples a noise texture to determine per-pixel dissolve threshold
  • Uses discard; for pixels below the threshold
  • Optionally adds an edge glow using emission near the dissolve boundary
  • Code is syntactically correct for Godot's shading language

Case 2: HLSL redirect

Input: "Write an HLSL compute shader for this dissolve effect." Expected behavior:

  • Does NOT produce HLSL code
  • Clearly states: "Godot does not use HLSL directly; it uses its own shading language (a GLSL derivative)"
  • Translates the HLSL intent to the equivalent Godot shader approach
  • Notes that RenderingDevice compute shaders are available in Godot 4 but are a low-level API and flags it appropriately if that was the intent

Case 3: Post-cutoff API change — texture sampling (Godot 4.4)

Input: "Use texture() with a sampler2D to sample the noise texture in the shader." Expected behavior:

  • Checks the version reference: Godot 4.4 changed texture sampler type declarations
  • Flags the potential API change: sampler2D syntax and texture() call behavior may differ from pre-4.4
  • Provides the correct syntax for the project's pinned version (4.6) as documented in migration notes
  • Does NOT use pre-4.4 texture sampling syntax without flagging the version risk

Case 4: Fragment shader LOD strategy

Input: "The fragment shader for the water surface has 8 texture samples and is causing GPU bottlenecks on mid-range hardware." Expected behavior:

  • Identifies the per-fragment texture sample count as the primary cost driver
  • Proposes an LOD strategy:
    • Reduce sample count at distance (distance-based shader variant or LOD level)
    • Pre-bake some texture combinations offline
    • Use lower-resolution noise textures for distant samples
  • Provides the shader code modification implementing the LOD approach
  • Does NOT change gameplay behavior of the water system

Case 5: Context pass — Godot 4.6 glow rework

Input: Engine version context: Godot 4.6. Request: "Add a bloom/glow post-processing effect to the scene." Expected behavior:

  • References the VERSION.md note: Godot 4.6 includes a glow rework
  • Produces glow configuration guidance using the 4.6 WorldEnvironment approach, not the pre-4.6 API
  • Explicitly notes which properties or parameters changed in the 4.6 glow rework
  • Flags any properties that the LLM's training data may have incorrect information about due to the post-cutoff timing

Protocol Compliance

  • Stays within declared domain (Godot shading language, materials, VFX shaders, post-processing)
  • Redirects gameplay code requests to gameplay-programmer
  • Produces valid Godot shading language — never HLSL or raw GLSL without a Godot wrapper
  • Checks engine version reference for post-cutoff shader API changes (4.4 texture types, 4.6 glow rework)
  • Returns structured output (shader code with uniforms documented, LOD strategies with performance rationale)
  • Flags any post-cutoff API usage as requiring verification

Coverage Notes

  • Dissolve shader (Case 1) should be paired with a visual test screenshot in production/qa/evidence/
  • Texture API flag (Case 3) confirms the agent checks VERSION.md before using APIs that changed post-4.3
  • Glow rework (Case 5) is a Godot 4.6-specific test — verifies the agent applies the most recent migration notes