# defineParticleEffect2D

```ts
import { defineParticleEffect2D } from "@pibbl/core/particles";
```

Creates an immutable validated effect from one or more named emitters. The
returned value contains no clock or mutable population. A mounted component or
particle system owns execution.

Emitter capacity, emission sources, shape, initial values, motion modules,
over-life appearance, renderer, and optional bounds are compiled once. Invalid
or unsupported combinations fail at definition time with the effect, emitter,
and property in the diagnostic.

Types: [`PibblParticleEffect2D`](/reference/types/particles/#pibblparticleeffect2d),
[`PibblParticleEffect2DInput`](/reference/types/particles/#pibblparticleeffect2dinput),
and [`PibblParticleEmitter2D`](/reference/types/particles/#pibblparticleemitter2d).

## API details from source

<span id="api-defineParticleEffect2D"></span>

Validates and brands a reusable Canvas 2D particle effect while preserving emitter names and
parameter types.

```ts
defineParticleEffect2D: <const Input extends PibblParticleEffect2DInput>(input: Input) => PibblParticleEffect2D<Input['emitters'][number]['name'], PibblParticleValuesOf<Input extends { readonly parameters: infer Definitions; } ? Extract<Definitions, PibblParticleParameterDefinitions> : undefined>>
```

Related API: [defineParticleEffect2D](/reference/functions/define-particle-effect-2d/), [PibblParticleEffect2DInput](/reference/types/particles/#pibblparticleeffect2dinput), [PibblParticleEffect2D](/reference/types/particles/#pibblparticleeffect2d), [PibblParticleValuesOf](/reference/types/particles/#pibblparticlevaluesof), [PibblParticleParameterDefinitions](/reference/types/particles/#pibblparticleparameterdefinitions).

### Parameters

- **`input`** — Emitter definitions, parameter declarations, and effect configuration.

### Returns

A validated particle effect preserving emitter names and parameter types. See
[PibblParticleEffect2D](/reference/types/particles/#pibblparticleeffect2d) , [PibblParticleValuesOf](/reference/types/particles/#pibblparticlevaluesof) ,
[PibblParticleParameterDefinitions](/reference/types/particles/#pibblparticleparameterdefinitions) .

### See also

[PibblParticleEffect2D](/reference/types/particles/#pibblparticleeffect2d)

[PibblParticleValuesOf](/reference/types/particles/#pibblparticlevaluesof)

[PibblParticleParameterDefinitions](/reference/types/particles/#pibblparticleparameterdefinitions)

[PibblParticleEffect2DInput](/reference/types/particles/#pibblparticleeffect2dinput)

[View source — packages/core/src/features/particles/lib/definition.ts:609](/source/packages/core/src/features/particles/lib/definition-ts/#L609)

## Implementation guidance for agents

Read the [Canvas particles companion](/agents/topics/particles/) for ownership, adaptation, failure modes, and verification. [Agent start](/agents/) provides the version-selection workflow.

## Complete minimal examples

- [Particle effect configuration](/minimal-examples/particles/effect/): Compose a typed ember emitter from emission, motion, appearance, and bounds. [Plain source](/minimal/particles/effect.ts)
## Documentation version

Documentation built with @pibbl/core 0.0.2, revision 272a94a. ALPHA — NOT FOR PRODUCTION USE.
