import { d } from '../../gpu/kit/index'; import { ShapeField3 } from './agentForces'; /** The analytic 2D SDF menu's call shape (`sdf.buildAnalyticSdfFn`). */ type AnalyticSdf2d = (uv: d.v2f, radius: number, sides: number, rounding: number, innerRatio: number, rotation: number, height: number, offset: number, aperture: number) => { readonly x: number; }; /** Params view for the extruded flat-shape fields: the CPU-resolved analytic sub-prop bundle * (the driveAnalyticSubProps convention) plus the extrusion half-depth. */ interface ExtrudedAnalyticParamsView { readonly saRadius: number; readonly saSides: number; readonly saRounding: number; readonly saInnerRatio: number; readonly saRotation: number; readonly saHeight: number; readonly saOffset: number; readonly saAperture: number; readonly halfDepth: number; } /** The per-axis sin/cos rotation bundle the sdf3d MarchParams carry. */ interface RotSinCosView { readonly cx: number; readonly sx: number; readonly cy: number; readonly sy: number; readonly cz: number; readonly sz: number; } /** A layout whose MarchParams uniform carries the shape rotation (the sdf3d setups). */ interface RotatedFieldLayout { readonly $: { readonly params: { readonly rot: RotSinCosView; }; }; } /** * Flat analytic shape extruded in z: the baked 2D SDF evaluated in shape-local uv (y up → * v down), sub-props read live from `params.sa*`, rounded-extruded over `params.halfDepth`. */ declare function analyticExtruded(layout: { readonly $: { readonly params: ExtrudedAnalyticParamsView; }; }, sdf2d: AnalyticSdf2d): ShapeField3; /** * Flat SVG outline extruded in z (nearest texel read — plenty for containment forces). * Beyond the SDF texture's ±0.5 footprint the clamped field is flat (or, under a feature * touching the border, even reads INSIDE) — which strands strays and draws plumb-line * columns — so the field is extended with the exact distance to the footprint box, keeping * magnitude + direction valid everywhere the swarm can roam. */ declare function svgExtruded(layout: { readonly $: { readonly params: { readonly halfDepth: number; }; }; }, svgLayout: { readonly $: { readonly sdfSource: d.Infer>; }; }, cfg: { size: number; }): ShapeField3; /** * True analytic 3D volume: the setup's baked SDF sampled at the rotated point — rotation * (and any CPU-animated sub-props) arrive through the setup's MarchParams uniform, so the * field moves under the swarm exactly like the marched render would. */ declare function analytic3d(layout: RotatedFieldLayout, baked: ShapeField3): ShapeField3; /** * SVG lifted into 3D (the bevel-extruding SVG-3D setup's SDF), rotated by MarchParams and — * like the flat SVG field — extended beyond the SDF texture's footprint with the exact * distance to the footprint box (the clamped field is flat out there: zero gradient, and a * border-touching feature can even read inside). */ declare function svgLifted3d(layout: RotatedFieldLayout, baked: ShapeField3): ShapeField3; export declare const shapeField: { readonly analyticExtruded: typeof analyticExtruded; readonly svgExtruded: typeof svgExtruded; readonly analytic3d: typeof analytic3d; readonly svgLifted3d: typeof svgLifted3d; }; export {}; //# sourceMappingURL=shapeFields.d.ts.map