vfx-smoke

Creates soft particle smoke plumes in Godot using GPUParticles3D and a noise-based shader.

66|4|Updated Feb 26, 2026
One-click install
npx skills add https://github.com/SummerEngine/summer --skill vfx-smoke-summerengine
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: vfx-smoke
Source: https://github.com/SummerEngine/summer/tree/main/library/skills/vfx-smoke
Command: npx skills add https://github.com/SummerEngine/summer --skill vfx-smoke-summerengine

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building convincing 3D smoke effects in Godot requires coordinating a billboard particle shader, a particle process material, and a controller script — a combination with many silent failure modes like clamped scale curves, missing shader includes, and incorrect CUSTOM attribute reads. ## Core Features & Use Cases - Complete smoke recipe: Provides a ready-to-use spatial shader with FBM noise, a @tool GDScript controller for GPUParticles3D, and exact MCP wiring steps to add the node to any scene. - Named cookbook variants: Ships tuned parameter sets for chimney smoke, black fire smoke, steam vents, rocket trails, and fog banks. - Pitfall documentation: Covers anti-patterns like using blend_add, forgetting cull_disabled, and reading CUSTOM in fragment() instead of vertex-stage INSTANCE_CUSTOM. - Use Case: After placing a campfire in a scene, ask the agent to add rising smoke above the flame — it writes the shader and controller files, adds the GPUParticles3D node, and verifies with a screenshot. ## Quick Start Add a smoke plume rising above the campfire in my main scene using the vfx-smoke recipe.

Frequently Asked Questions about vfx-smoke

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make a smoke particle effect in Godot?

Use GPUParticles3D with a ParticleProcessMaterial emitting from a small sphere, a QuadMesh draw pass, and an unshaded blend_mix shader that masks soft round puffs with FBM noise. A controller script sets velocity, scale curve, and lifetime so puffs rise, grow, and fade.

How do I add smoke above a fire or chimney in a 3D scene?

Add a GPUParticles3D node parented just above the heat source, attach the smoke controller script, and set rise_height, particle_count, and wind_direction. For a campfire, position the smoke node 0.5 to 2 meters above the flame top.

Why does my Godot particle shader fail with 'Unknown identifier: CUSTOM'?

In a spatial shader, CUSTOM does not exist in fragment(); the particle built-in is INSTANCE_CUSTOM and it is vertex-stage only. INSTANCE_CUSTOM.x holds the rotation angle while the particle age lives in .y, so pass age to fragment via a varying.

Why doesn't my smoke scale curve grow the particles?

Godot's Curve defaults to max_value 1.0 and silently clamps every sample, so any end scale multiplier above 1.0 is flattened. Set c.max_value to the multiplier before adding curve points so the growth ramp actually applies.

When should I use FogVolume instead of smoke particles?

Use a FogVolume with volumetric fog when you need room-scale ground fog, genuine visual occlusion, or smoke that reacts to the player. GPUParticles3D smoke is visual only and does not scale to large volumes or physically interact.

How do I make smoke trail behind a moving rocket in Godot?

Set local_coords to false on the GPUParticles3D node so emitted puffs stay in world space while the rocket moves away. Use a narrow spawn radius, long lifetime, and a large end scale multiplier for a dissipating trail.