authoring-godot-prompt…
Use when writing or editing a SKILL.md, a skill's references/*.md, or an agent definition in this repo — required frontmatter,…
Use when choosing a renderer or planning a project's look and frame budget — renderer per platform, lighting strategy and light limits, anti-aliasing, 3D resolution scaling (FSR, MetalFX), SubViewports and render targets, shader stutter, graphics settings menus, and rendering
$ npx -y skills add jame581/GodotPrompter --skill rendering-pipeline --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/rendering-pipelineContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when choosing a renderer or planning a project's look and frame budget — renderer per platform, lighting strategy and light limits, anti-aliasing, 3D resolution scaling (FSR, MetalFX), SubViewports and render targets, shader stutter, graphics settings menus, and rendering
name: rendering-pipeline description: Use when choosing a renderer or planning a project's look and frame budget — renderer per platform, lighting strategy and light limits, anti-aliasing, 3D resolution scaling (FSR, MetalFX), SubViewports and render targets, shader stutter, graphics settings menus, and rendering stats
Project-level rendering decisions: which renderer runs where, how the lighting is built for it, how edges are smoothed, what resolution 3D renders at, and how to measure the result. All examples target Godot 4.3+ with no deprecated APIs. GDScript is shown first, then C#.
This skill picks the strategy; **3d-essentials** holds the per-node recipes (materials, light properties, GI setup, fog, decals).
> **Related skills:** **3d-essentials** for materials, lights, environment and GI node setup, **2d-essentials** for 2D lights and shadows, **shader-basics** for post-processing, compositor effects and the Shader Baker, **godot-optimization** for profiling CPU/GPU bottlenecks, **web-export** for the Compatibility-only browser target.
---
The renderer decides which lighting features exist at all, so choose it before building the look.
| Renderer | `rendering_method` | Use for | Missing compared to Forward+ | |---|---|---|---| | **Forward+** | `forward_plus` | Desktop and console, high-end visuals | — | | **Mobile** | `mobile` | Phones, tablets, standalone XR, low-end desktop | SDFGI, VoxelGI, SSAO/SSIL/SSR, volumetric fog, TAA, FSR | | **Compatibility** | `gl_compatibility` | Web (the only option there), very old GPUs | Everything Mobile lacks (though SSAO arrives in 4.6), plus FXAA/SMAA and MetalFX; glow is a simplified version |
Set **Project Settings → Rendering → Renderer → Rendering Method**. Platform overrides already exist: `rendering/renderer/rendering_method.mobile` defaults to `mobile` and `rendering_method.web` to `gl_compatibility`, so one project can run Forward+ on desktop and Mobile on phones — but then **test the look on both**, because effects silently disappear on the lighter renderer.
A settings menu must hide options the running renderer cannot honor. The later sections use this helper:
func is_forward_plus() -> bool:
# Godot 4.4+: prefer RenderingServer.get_current_rendering_method(), which also sees
# the --rendering-method CLI flag and the automatic fallback on unsupported hardware.
return ProjectSettings.get_setting_with_override("rendering/renderer/rendering_method") == "forward_plus"public static bool IsForwardPlus()
{
// Godot 4.4+: prefer RenderingServer.GetCurrentRenderingMethod(), which also sees
// the --rendering-method CLI flag and the automatic fallback on unsupported hardware.
return ProjectSettings.GetSettingWithOverride("rendering/renderer/rendering_method").AsString() == "forward_plus";
}Short feature table: see the renderer comparison in **3d-essentials** (`references/renderer-comparison.md`).
---
Decide where light comes from before placing lights. Baked light is nearly free at runtime on every renderer; real-time GI is Forward+ only.
| Scene | Forward+ | Mobile | Compatibility | |---|---|---|---| | Static level, fixed sun | LightmapGI + real-time sun shadows | LightmapGI | LightmapGI | | Day/night cycle, large outdoor | SDFGI | Sky ambient + DirectionalLight3D | Sky ambient + DirectionalLight3D | | Small dynamic interiors | VoxelGI | LightmapGI + ReflectionProbes | LightmapGI + ReflectionProbes | | Procedural levels (nothing to bake) | SDFGI | Ambient + a few shadowed lights | Ambient + few unshadowed lights |
**Light budgets**
| Renderer | Limit | Setting | |---|---|---| | Forward+ | 512 clustered elements (omni + spot lights + decals + reflection probes) in view | `rendering/limits/cluster_builder/max_clustered_elements` | | Mobile | 8 omni + 8 spot lights per mesh | — split large meshes so lights don't compete | | Compatibility | 8 omni + 8 spot lights per object; 32 renderable lights per type (omni, spot) per frame | `rendering/limits/opengl/max_lights_per_object`, `max_renderable_lights` |
Rules that hold everywhere:
Light and GI node setup: **3d-essentials** (Sections 3 and 5).
---
| Method | Cost | Smooths | Renderers | Notes | |---|---|---|---|---| | MSAA 2×/4×/8× (`msaa_3d`) | Medium–high | Geometry edges | All three | 2× or 4× is usually the sweet spot; no help with shader/texture shimmer | | FXAA (`screen_space_aa`) | Low | Everything, blurry | Forward+, Mobile | Cheapest whole-image option | | SMAA (Godot 4.5+) | Low–medium | Everything, sharper than FXAA | Forward+, Mobile | Tune `rendering/anti_aliasing/quality/smaa_edge_detection_threshold` | | TAA (`use_taa`) | Medium | Everything incl. specular shimmer | Forward+ only | Ghosting on particles and skinned meshes | | FSR 2 at scale `1.0` | Medium | Like TAA, sharper | Forward+ only | Set `scaling_3d_mode` to FSR 2 and `scaling_3d_scale = 1.0` |
The project settings (`rendering/anti_aliasing/quality/*`) are read once at startup. To change AA from a settings menu, set the root viewport:
func apply_antialiasing(msaa: Viewport.MSAA, use_fxaa: bool, use_taa: bool) -> void:
var vp := get_viewport()
vp.msaa_3d = msaa
vp.screen_space_aa = Viewport.SCREEN_SPACE_AA_FXAA if use_fxaa else Viewport.SCREEN_SPACE_AA_DISABLED
vp.use_taa = use_taa and is_forward_plus()public void ApplyAnti
Agentic skills framework for Godot 4.x game development. Gives AI coding agents domain-specific expertise for GDScript and C# projects.
Use when writing or editing a SKILL.md, a skill's references/*.md, or an agent definition in this repo — required frontmatter,…
Use when cutting a GodotPrompter release or bumping its version — the version-bump sequence, tag-triggered workflow, and the…
Use when working with 2D-specific systems — TileMaps, parallax scrolling, 2D lights and shadows, canvas layers, particles 2D,…
Use when working with 3D-specific systems — materials, lighting, shadows, environment, global illumination, fog, LOD, occlusion…
Use when building character abilities — Resource-based abilities with cost/cooldown/cast, buffs/debuffs, stat modifiers, gameplay…
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels