Gem Smoke Effect

Soft volumetric smoke wreath with curl-noise drift and internal sparkles. Shader-rendered (continuously animated WebGL2 fragment shader, silhouette-clipped).

Usage

app.applyEffect(item, 'gem_smoke', {
  mode: 'inside',
  intensity: 1.0,
  radius: 1.1,
  palette: 0,           // 0 White, 1 Rose, 2 Emerald
  padding: 0.6,
  offsetX: 0,
  offsetY: 0,
  tint: '#ffffff',
  channels: {
    a: { speed: 0.18, curve: 'linear' },
    b: { speed: 0.45, curve: 'linear' },
  },
});

Parameters

Parameter Type Default Description
mode string 'inside' inside / outside / overlay
intensity number 1.0 Density multiplier (0–1.5)
radius number 1.1 Smoke ring radius — bell-curve falloff (0.4–1.6)
palette integer 0 0 White, 1 Rose, 2 Emerald
padding number 0.6 Bounds expansion (0.2–1.5)
offsetX / offsetY number 0 Shifts pattern center (-1 to 1)
tint string '#ffffff' Multiplicative tint
channels.a {speed, curve} {0.18, linear} Drift — curl-noise rotation field
channels.b {speed, curve} {0.45, linear} Sparkle — high-frequency noise spikes

Example: Mystical Reveal

const title = app.create('text', { content: 'Awaken', x: 540, y: 800, fontSize: 80, color: '#ffffff' });
app.applyEffect(title, 'gem_smoke', { palette: 2 /* emerald */, intensity: 1.2 });

Example: Twinkling Background Layer

// Slow drift, fast pulsing sparkles
app.applyEffect(bg, 'gem_smoke', {
  mode: 'outside',
  channels: {
    a: { speed: 0.05, curve: 'linear' },
    b: { speed: 1.5,  curve: 'pulse' },     // strobing sparkles
  },
});

Stacking

app.applyEffect(item, 'heatmap',   { mode: 'inside', palette: 0 });    // glowing core
app.applyEffect(item, 'gem_smoke', { mode: 'outside', palette: 1 });   // rose smoke halo

Related: Heatmap | Liquid Metal | Shader effects overview