import { GpuShaderDefinition } from '../../gpu/porters'; import { d } from '../../gpu/kit'; import { transformColor } from '../../utilities/transformations'; /** * Spawn: seed the flock already IN FORMATION — K elongated clusters (one per ~250 agents), each * with a shared heading and cruise velocity, jittered per agent. Frame one reads as a murmuration * instead of a uniform scatter that takes seconds to self-organise; actually pre-running the sim * would cost O(N²) per warm-up step, so the formation is seeded, not simulated. `seed` re-rolls the * layout (the harness re-dispatches this one-shot when it changes — runtime, no recompile). */ export declare const boidsInitKernel: import('typegpu').TgpuFn<(i: d.U32) => d.Void>; /** * The integrator: the Reynolds triple over one neighbour scan, the cursor attract/predator * field, and the soft edge turn — folded in that order into one kernel by the steering-family * integrator, which owns the cruise variation, the agitation envelope, the min-cruise speed * clamp and the reflective wall safety net. */ export declare const boidsUpdateKernel: (i: number) => void; export declare const makeBoidsSplatKernel: (shape: string) => (i: number) => void; export declare const makeBoidsResolveKernel: (mode: number) => (x: number, y: number) => void; export declare const boidsSplatKernel: (i: number) => void; export declare const boidsResolveKernel: (x: number, y: number) => void; export interface ComponentProps { /** * Number of flocking agents * * Accepts a number between 100 and 4000. * @default 2000 */ count: number; /** * Re-rolls the flock * * Accepts a number between 0 and 100. * @default 0 */ seed: number; /** * Overall cruising speed of the flock * * Accepts a number between 0.2 and 5. * @default 2 */ speed: number; /** * How strongly agents steer away from crowding their neighbours * * Accepts a number between 0 and 3. * @default 1.7 */ separation: number; /** * How strongly agents match their neighbours * * Accepts a number between 0 and 3. * @default 1.5 */ alignment: number; /** * How strongly agents steer toward the local center of the flock * * Accepts a number between 0 and 3. * @default 1 */ cohesion: number; /** * How far each agent can sense its neighbours (in screen heights) — larger sees bigger, smoother flocks * * Accepts a number between 0.05 and 0.35. * @default 0.12 */ perception: number; /** * How the flock reacts to the cursor * * Accepts one of: `"none"`, `"attract"`, `"repel"`. * @default "repel" */ cursorMode: string; /** * Strength of the cursor * * Accepts a number between 0 and 3. * @default 1.5 */ cursorStrength: number; /** * What each agent is drawn as — a hard-edged arrow, streak or square pointing along its heading, a plain dot, or a soft glowing comet * * Accepts one of the predefined option values. * @default "arrow" */ agentShape: string; /** * Size of each agent * * Accepts a number between 0.5 and 3. * @default 1.5 */ size: number; /** * How long each agent * * Accepts a number between 0 and 1. * @default 0 */ trails: number; /** * Color of agents cruising calmly with the flock * * Accepts hex strings (`#ff0000`), RGB objects (`{ r, g, b }`), or CSS color names (`limegreen`). * @default "#8ec5ff" */ colorA: Parameters[0]; /** * Color agents flash toward when agitated — scattering from the predator cursor or banking through a hard turn * * Accepts hex strings (`#ff0000`), RGB objects (`{ r, g, b }`), or CSS color names (`limegreen`). * @default "#ff7ad9" */ colorB: Parameters[0]; /** * Color space for the rest→excited color ramp * * Accepts one of the predefined option values. * @default "oklab" */ colorSpace: string; } export declare const componentDefinition: GpuShaderDefinition; export default componentDefinition; //# sourceMappingURL=index.d.ts.map