К основному содержанию
скилл CX Codex

godot-shaders — скилл для Claude Code: шейдеры Godot 4.7

Скилл учит агента писать canvas_item и spatial шейдеры на Godot Shading Language: анимация по TIME, юниформы, чтение экрана. Пригодится, когда нужен эффект в 2D или 3D без ручного перебора вариантов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-shaders -a claude-code
Открыть на GitHub

Что делает godot-shaders

Скилл задаёт агенту порядок работы с шейдерами Godot 4.7. Первая строка файла — тип: shader_type canvas_item; для спрайтов и прочих CanvasItem или shader_type spatial; для 3D-материалов. Дальше ShaderMaterial, fragment() с выводом в COLOR либо ALBEDO, и юниформы с хинтами, чтобы параметры крутились в инспекторе.

Внутри четыре готовых шаблона: тонировка со сдвигом UV по TIME, растворение по порогу NoiseTexture2D с discard, эмиссивный rim light через NORMAL и VIEW, размытие с выборкой экрана. Каждый разобран на конкретном .gdshader, есть и вызов из GDScript: material.set_shader_parameter("amount", 0.7).

Отдельный блок — переезд с 3.x: SCREEN_TEXTURE удалён, цветовые хинты hint_color и hint_albedo стали source_color. Вот где чаще всего ломается: если в spatial-шейдере написать COLOR, на экране не изменится ничего. Ещё TIME переполняется каждые time_rollover_secs — по умолчанию 3600, так что период анимации лучше брать кратным этому числу либо подавать своё время через юниформ. discard на части железа бьёт по раннему Z-тесту, и там, где хватает прозрачности, советует обойтись COLOR.a.

Какие задачи решает

  • написать растворение спрайта по шуму, а не гадать с discard
  • собрать 2D-эффект с прокруткой текстуры по времени
  • добавить эмиссивный rim light на 3D-модель
  • сделать размытие экрана через hint_screen_texture
  • перенести шейдер с Godot 3.x на 4.7 без поломанных хинтов

Примеры запросов агенту

  • Напиши dissolve.gdshader для Sprite2D: растворение по NoiseTexture2D, порог вынеси в uniform с hint_range
  • Сделай spatial-шейдер с rim light, цвет и силу выведи в юниформы с source_color и hint_range
  • Перепиши этот шейдер с SCREEN_TEXTURE на hint_screen_texture под Godot 4.7

Как установить godot-shaders

1Через Skills CLI (Vercel)

npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-shaders -a claude-code

2Вручную: положить файлы

~/.claude/skills/godot-shaders/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/godot-shaders/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора77

godot-animation Скилл подсказывает, как собирать анимации в Godot 4.7 через AnimationPlayer, AnimationTree и Tween. Пригодится для персонажей, спрайтов и UI. CX Codex +1 6 700установок godot-ui-control Скилл для Claude Code учит агента верстать HUD и меню в Godot 4.7 на Control-нодах: якоря, контейнеры, тема, фокус. CX Codex +1 6 700установок godot-nodes-scenes Учит агента собирать проект Godot 4.7 из узлов и сцен: делать переиспользуемые .tscn, ставить инстансы в рантайме и не падать на удалённых узлах. CX Codex +1 6 400установок godot-gdscript Помогает писать типизированный код на GDScript 2.0 для Godot 4.7 и обновлять старые скрипты с версии 3.x. Пригодится при отладке логики узлов, сигналов и корутин. CX Codex +1 6 500установок godot-physics Настраивает физические тела Godot 4.7, слои коллизий, триггеры Area и лучи в 2D и 3D. Помогает избежать ошибок с перекрытием масок и дёрганием RigidBody. CX Codex +1 6 300установок rpg Скилл для создания RPG с прогрессией персонажа, инвентарём, квестами, диалогами и боевой системой. Подходит для разработки механик роста, экипировки, целей и формул урона. CX Codex +1 6 400установок godot-signals-groups Настраивает слабосвязанную архитектуру в Godot 4.7 через типизированные сигналы и группы узлов. Помогает связать события сцен без жёстких ссылок и переписать вызовы со старого API Godot 3.x. CX Codex +1 6 200установок prototype-fast Скилл для геймдева: за жёсткий таймбокс собирает играбельный прототип одной механики и помогает решить, оставить её или выбросить. CX Codex +1 6 300установок

Похожие

godot-shaders-basics thedivergentai Помогает писать шейдеры для Godot без потери батчинга и поломки depth prepass. Пригодится при настройке эффектов попадания, растворения и экранного постпроцессинга. CX Codex +1 688установок godot-3d-lighting thedivergentai Скилл для ИИ-агентов, который подсказывает, как настроить 3D-освещение в Godot: каскады теней, затухание источников, VoxelGI, SDFGI и запекание лайтмапов. CX Codex +1 449установок godot-ui Zate Скилл даёт агенту знания о Control-нодах, темах и типовых экранах Godot. Пригодится, когда собираешь меню, HUD или инвентарь. CX Codex +1 2 700установок godot-best-practices agent-skills Задаёт правила архитектуры и стандарты GDScript для Godot 4.x. Помогает агенту связывать узлы через сигналы, типизировать переменные и настраивать загрузку ресурсов. CX Codex +1 2 100установок godot-asset-generator agent-skills Скилл генерирует 2D-спрайты, тайлсеты и интерфейсы через нейросети и готовит их для Godot 4.x. Пригодится при сборке графики для прототипов и спрайтовых игр. CX Codex +1 1 000установок spritecook-use-assets-in-godot SpriteCook Переносит спрайт-листы SpriteCook в Godot: собирает ресурс SpriteFrames и узел AnimatedSprite2D. Пригодится, когда анимации уже нарисованы, а в движке их ещё нет. CX Codex +1 555установок

Рядом в теме «Геймдев и 3D: Unity, Unreal, Godot, Blender»

Всё по теме «Геймдев и 3D: Unity, Unreal, Godot, Blender» →

Вопросы о godot-shaders

Как установить godot-shaders в Claude Code?

Выполните npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-shaders -a claude-code. Скилл появится в ~/.claude/skills/godot-shaders/SKILL.md.

Что делает godot-shaders?

Помогает агенту писать и править .gdshader под Godot 4.7: тип шейдера, fragment() и vertex(), юниформы с хинтами, анимация по TIME и UV, чтение экрана. Внутри есть шаблоны 2D- и 3D-эффектов и список типичных ошибок.

Чем hint_screen_texture отличается от SCREEN_TEXTURE?

В 4.x переменной SCREEN_TEXTURE больше нет. Вместо неё объявляют юниформ uniform sampler2D screen_tex : hint_screen_texture; и читают его по SCREEN_UV.

Исходный текст

SKILL.md · Apache-2.0
---
name: godot-shaders
description: >
  Write Godot 4.7 shaders in the Godot Shading Language: canvas_item shaders for 2D
  and spatial shaders for 3D, with vertex/fragment functions, uniforms (source_color,
  hint_range), TIME/UV animation, and screen-reading via hint_screen_texture. Use
  when authoring .gdshader files, writing fragment/vertex code, making 2D/3D visual
  effects, or porting 3.x shaders (SCREEN_TEXTURE, hint_color) to 4.x.
---

# Godot Shaders (4.x)

Write `canvas_item` (2D) and `spatial` (3D) shaders in the Godot Shading Language, animate
with `TIME`/`UV`, expose `uniform`s, and read the screen. Targets **Godot 4.7**.

## When to use

- Use when writing `.gdshader` code or a `ShaderMaterial`: 2D effects (outline, dissolve,
  flash, water), 3D surface shaders (rim light, toon, scrolling UV), or screen-space
  post effects.

**When *not* to use:** the cross-engine *concepts* of shading (UVs, vertex/fragment
theory) → `shader-programming`; particles/VFX nodes → general 3D; non-shader visuals.

## Core workflow

1. **Pick the shader type** on the first line: `shader_type canvas_item;` for 2D
   (Sprite2D, TextureRect, anything `CanvasItem`) or `shader_type spatial;` for 3D
   materials. (`particles`, `sky`, `fog` also exist.)
2. **Attach via a `ShaderMaterial`.** Create a `ShaderMaterial`, assign your `.gdshader`,
   and put it on the node's `material`. Uniforms appear in the Inspector.
3. **Write `fragment()`** to set the output: `COLOR` (2D) or `ALBEDO`/`EMISSION`/`ALPHA`
   (3D). Optionally `vertex()` to move geometry and `light()` for custom lighting.
4. **Expose tunables as `uniform`s** with hints (`source_color`, `hint_range`) so they are
   editable and correctly color-managed.
5. **Animate with the built-in `TIME`** and sample textures with `texture(tex, UV)`.
6. **Set uniforms from code** with `material.set_shader_parameter("name", value)`.

## Patterns

### 1. 2D (canvas_item): tint + scrolling UV

```glsl
shader_type canvas_item;

uniform vec4 tint : source_color = vec4(1.0);     // source_color = sRGB-correct color
uniform float scroll_speed : hint_range(0.0, 2.0) = 0.3;

void fragment() {
    vec2 uv = UV;
    uv.x += TIME * scroll_speed;                  // scroll horizontally over time
    COLOR = texture(TEXTURE, uv) * tint;          // TEXTURE = the node's texture
}
```

### 2. 2D dissolve using a noise threshold

```glsl
shader_type canvas_item;

uniform sampler2D noise : repeat_enable;          // a NoiseTexture2D
uniform float amount : hint_range(0.0, 1.0) = 0.0;

void fragment() {
    vec4 tex = texture(TEXTURE, UV);
    float n = texture(noise, UV).r;
    if (n < amount) {
        discard;                                  // cut the pixel away
    }
    COLOR = tex;
}
```

### 3. 3D (spatial): emissive rim light

```glsl
shader_type spatial;

uniform vec4 base_color : source_color = vec4(0.2, 0.5, 1.0, 1.0);
uniform vec3 rim_color : source_color = vec3(0.6, 0.8, 1.0);
uniform float rim_power : hint_range(0.5, 8.0) = 3.0;

void fragment() {
    ALBEDO = base_color.rgb;
    // VIEW and NORMAL are view-space built-ins; rim is strong at grazing angles.
    float rim = pow(1.0 - dot(NORMAL, VIEW), rim_power);
    EMISSION = rim_color * rim;
}
```

### 4. Screen-reading post effect (4.x hint, not SCREEN_TEXTURE)

```glsl
shader_type canvas_item;

// 4.x: declare the screen as a uniform with hint_screen_texture.
uniform sampler2D screen_tex : hint_screen_texture, filter_linear_mipmap;
uniform float blur : hint_range(0.0, 4.0) = 1.0;

void fragment() {
    vec2 px = SCREEN_PIXEL_SIZE * blur;
    vec4 c = texture(screen_tex, SCREEN_UV);
    c += texture(screen_tex, SCREEN_UV + vec2(px.x, 0.0));
    c += texture(screen_tex, SCREEN_UV - vec2(px.x, 0.0));
    COLOR = c / 3.0;
}
```

Set a uniform from GDScript:

```gdscript
$Sprite2D.material.set_shader_parameter("amount", 0.7)
```

## Pitfalls

- **3.x → 4.x renames.** `SCREEN_TEXTURE` is removed — declare
  `uniform sampler2D x : hint_screen_texture;` and sample with `SCREEN_UV`. Color hints
  `hint_color`/`hint_albedo`→`source_color`; `hint_white`/`hint_black`→
  `hint_default_white`/`hint_default_black`; `hint_range` stays. Depth/normal use `hint_depth_texture` / `hint_normal_roughness_texture`.
- **Wrong output variable.** In `canvas_item` write `COLOR`; in `spatial` write `ALBEDO`
  (and `EMISSION`, `ALPHA`, `ROUGHNESS`, `METALLIC`). Writing `COLOR` in a spatial shader
  does nothing.
- **Color uniforms without `source_color`** are treated as raw linear values and look
  wrong (washed/dark) because Godot won't sRGB-convert them.
- **Object drawn in the wrong order, casts no shadow, or skips SSAO (3D)** → the spatial
  shader reads or writes `ALPHA`, which moves the whole material to the transparent
  pipeline even if the value is always `1.0`. Don't touch `ALPHA` in opaque shaders; for
  hard cut-outs also set `ALPHA_SCISSOR_THRESHOLD` (alpha-scissor stays in the opaque pass).
- **Sampling outside [0,1] UV** without `repeat_enable` clamps. Add `: repeat_enable` to
  the sampler uniform for tiling/scroll.
- **Effect jumps once an hour** → `TIME` (seconds since start, affected by `time_scale`, not
  by pausing) wraps every `rendering/limits/time/time_rollover_secs` (3600 by default).
  Pick periods that divide the rollover, or feed your own time through a uniform.
- **`discard` is costly** on some hardware and breaks early-Z; prefer setting `ALPHA`/
  `COLOR.a` when you can.

## References

- For built-in variables per shader type, render modes, `varying`, custom `light()`,
  `vertex()` displacement, and the visual shader graph, read
  `references/shading-language.md`.

## Related skills

- `shader-programming` — engine-agnostic shader concepts (GLSL/HLSL).
- `godot-3d-essentials` — materials, environment, and where spatial shaders live.
- `godot-ui-control` — applying shaders to UI for effects.

© gamedev-skills · Apache-2.0 · gamedev-skills/awesome-gamedev-agent-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой