import { d } from '../../gpu/kit'; import { transformColor } from '../../utilities/transformations'; /** Spawn: scatter motes across the WHOLE canvas (no empty-screen start), at rest. */ export declare const floatingParticlesInitKernel: import('typegpu').TgpuFn<(i: d.U32) => d.Void>; /** * The integrator: deterministic per-mote drift (the varied-heading part — density-preserving * uniform translation, same ± ranges as the old per-layer variance) plus the decaying * cursor-gust impulse, wrapped toroidally by the drift-family integrator — correct here * because the motion is pure drift, so coverage stays even (unlike a fluid box, nothing clumps). */ export declare const floatingParticlesUpdateKernel: (i: number) => void; export declare const makeFloatingParticlesSplatKernel: (shape: string) => (i: number) => void; export declare const floatingParticlesSplatKernel: (i: number) => void; export declare const floatingParticlesResolveKernel: (x: number, y: number) => void; /** Composite the particles OVER a child colour (the kit straight-alpha over) — kept from v1 so * the shader still works as a wrapping layer without an RTT. */ export declare const particleOverChild: import('typegpu').TgpuFn<(p: d.Vec4f, c: d.Vec4f) => d.Vec4f>; export interface ComponentProps { /** * Number of particles * * Accepts a number within the specified range. * @default 1200 */ count: number; /** * Speed of the shared drift * * Accepts a number between 0 and 1. * @default 0.25 */ speed: number; /** * Drift heading in degrees (0 = left, 90 = up, 180 = right, 270 = down — the classic default floats upward) * * Accepts a number between 0 and 360. * @default 90 */ angle: number; /** * Per-particle speed variance around the shared drift (0 = everything moves in lockstep) * * Accepts a number between 0 and 1. * @default 0.3 */ speedVariance: number; /** * Per-particle heading variance in degrees (0 = one shared direction, 180 = every which way) * * Accepts a number between 0 and 180. * @default 30 */ angleVariance: number; /** * Orbital wander — each particle circles lazily around its drift path instead of gliding straight * * @default 0.25 */ randomness: number; /** * Intensity of the twinkle (0 = steady, 1 = full shimmer) * * @default 0.5 */ twinkle: number; /** * Size of the particles (each also varies slightly for depth) * * @default 1.2 */ particleSize: number; /** * Edge softness of each particle — 0 is a crisp shape, 1 a soft glow puff * * @default 0.1 */ softness: number; /** * What each particle is drawn as — a crisp dot or square (softness still feathers them), or a soft glow puff * * Accepts one of the predefined option values. * @default "dot" */ shape: string; /** * Color of the particles * * Accepts hex strings (`#ff0000`), RGB objects (`{ r, g, b }`), or CSS color names (`limegreen`). * @default "#ffffff" */ particleColor: Parameters[0]; /** * How strongly the cursor stirs the field — 0 (default) leaves the drift undisturbed * * Accepts a number between 0 and 1. * @default 0 */ cursorStrength: number; } export declare const componentDefinition: import('../../gpu/porters').GpuShaderDefinition; export default componentDefinition; //# sourceMappingURL=index.d.ts.map