mcpField
A
add-effects

add-effects

github.com/playcanvasCreative & media31309 installsUpdated 1w ago
Repository

About add-effects

A development skill for adding visual effects with PlayCanvas Engine components and materials. It maps effect types to Engine building blocks and examples, with implementation and runtime checks.

Key features

  1. 01Choose Engine building blocks by effect type
  2. 02Use particle systems and material shaders
  3. 03Build runtime meshes and wide lines
  4. 04Add full-screen and splat effects
  5. 05Reuse emitters and meshes
  6. 06Check triggers and entity counts

Use cases

  1. 01Adding particle effects to an app
  2. 02Customizing surface shading or geometry
  3. 03Implementing full-screen camera effects
  4. 04Verifying repeated effect triggers

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/playcanvas/skills --skill add-effects

After installing, type/add-effectsin Claude Code to confirm it loaded.

Details

From the project README

Effects

Pick the Engine building block first, then adapt its closest official example with find-examples:

  • Particle systems: the particlesystem component (graphics/particles-* examples).
  • Custom shading on existing surfaces: StandardMaterial chunk overrides (override-shader-chunks), or a ShaderMaterial when the effect needs its own shader pair.
  • Procedural or per-frame geometry: a runtime-updated Mesh on a render component (graphics/mesh-* examples), or WideLineRenderer for lines with width.
  • Full-screen effects: CameraFrame (light-scene).
  • Gaussian splat effects: the shipped gsplat scripts (reuse-scripts).

Engine gotchas

  • CurveSet takes one key array per channel. A flattened array type-checks, then fails at texture upload.
  • Create emitters and meshes at load and reuse them. Fire an emitter with reset() then play(); one-shots use loop: false.
  • The first use of a shader stalls a frame. Render each effect once behind a loading screen.
  • Animate values with setParameter, not a per-frame material.update().
  • A lit material on a custom mesh needs normals; otherwise use an unlit material.

Trigger each effect through the app's real inputs, and confirm repeated triggers keep entity counts stable.

Comments

Markdown supported