EvenRing
Generator. Emits particles evenly spaced in time, like a ring of emission slots. (Formerly named GenEvenPeriodic.)
The ring-in-time model. Each slot fires once per period, where the period is 100 / rate seconds (the time it takes to fill the emitter’s whole capacity once). A slot is reused every period, so a particle must die before its slot’s turn comes around again. If a particle lives longer than the period, its slot is still occupied when its turn returns, the shot is dropped, and a gap forms that propagates as visible “waves”.
All properties must remain constant over time, otherwise generating glitches may occur. The rate is specified as a percentage of emitter capacity per second.
Setting the rate from particle life. Choose the rate straight from how long your particles live:
rate = 100 / life
For example, 2-second particles → 50%, 3-second particles → 33.3%. A small safety margin is applied automatically by every backend (GPU33 as well as the CPU/JS and C# runtimes), stretching the real ring period just past the particle life. This means these obvious values fill the capacity smoothly without waves, and every backend renders identically — you do not need to shave the rate down by hand.
Properties & inputs:
- Generating rate (input | property): Percentage of emitter capacity generated per second. Also sets the ring period (100 / rate seconds).
- Particle max. life (property): Helper to pick the rate by eye. Enter roughly how long your particles live and the rate is set to 100 / life. It is a standalone estimate — it is NOT read from the Termination section (an emitter may have several life limits, or none).
- Enable time limit (property): Limits the generating duration in seconds.
- Enable shots limit (property): Limits the total number of emission events.
- Delay (input | property): Delay in seconds before generation starts.
- Start Phase (input | property): Value from 0 to 1. If 1, the first shot fires immediately. If 0, a full period elapses first.
- Burst (input | property): Number of particles per shot.
- Burst pos mode (property): Controls how the Burst Pos. output is spread across the particles of one shot. Normalized (default) runs the first particle to 0 and the last to 1 (index / (burst − 1)). Linear runs the first particle to 0 and the last to 1 − 1/burst (index / burst), so the value never quite reaches 1 — useful when Burst Pos. drives a looping or tiling gradient where the last particle should not land on the same value as the first.
Outputs:
- Burst Amount (float): Number of particles in the current burst.
- Burst Pos. (float): Position of a particle within the burst. The range depends on Burst pos mode: Normalized gives [0; 1] (last particle = 1), Linear gives [0; 1 − 1/burst] (last particle < 1).
- Shots Made (float): How many shots this generator had already completed when the particle was born — 0 for the particles of the very first shot, 1 for the second one, and so on. Useful to make each shot differ from the previous ones (colour, size, direction). In the Emitter Guide the same value is available directly as the Number of shots value type.
On GPU33 the shots count is not stored but derived from the emitter's time, which gives the same numbers as the CPU runtimes as long as the generator's timing inputs (rate, burst, delay, start phase) are constant. If any of them is connected to a changing value, exporting reports a warning, because the count may then drift from the CPU runtimes.