/** * JS-side signed-distance evaluator for SDFNode trees. This mirrors the * SDFRayMarchCompiler node shape but evaluates distances directly, so * conjecture probes can sample SDFs without compiling GLSL. */ export type SDFPrimitive = 'sphere' | 'box' | 'rounded_box' | 'torus' | 'cylinder' | 'cone' | 'capsule' | 'ellipsoid' | 'plane' | 'hex_prism' | 'tri_prism' | 'octahedron' | 'pyramid' | 'link' | 'capped_torus' | 'round_cone' | 'vesica' | 'rhombus' | 'gyroid' | 'heart' | 'mandelbulb' | 'menger'; export type SDFCSGOperation = 'union' | 'intersect' | 'difference' | 'subtract' | 'smooth_union' | 'smooth_intersect' | 'smooth_difference' | 'smooth_subtract'; export type SDFDomainOperation = 'repeat' | 'twist' | 'bend'; export type SDFPoint = readonly [number, number, number]; export interface SDFNode { type: 'primitive' | 'csg' | 'domain'; primitive?: SDFPrimitive; params?: Readonly>; operation?: SDFCSGOperation | SDFDomainOperation; smoothness?: number; children?: ReadonlyArray; translate?: SDFPoint; rotate?: SDFPoint; scale?: SDFPoint; } export interface SDFEvaluation { distance: number; point: SDFPoint; rootType: SDFNode['type']; primitive?: SDFPrimitive; operation?: SDFCSGOperation | SDFDomainOperation; } export type SDFSampleResolution = readonly [number, number, number]; export interface SDFSampleBounds { min: SDFPoint; max: SDFPoint; resolution: SDFSampleResolution; } export interface SDFDistanceField { bounds: { min: SDFPoint; max: SDFPoint; }; resolution: SDFSampleResolution; spacing: SDFPoint; distances: ReadonlyArray; samples: ReadonlyArray; } export declare function evaluateSDFNode(root: SDFNode, samplePoint: SDFPoint): number; export declare function sampleSDFDistanceField(root: SDFNode, bounds: SDFSampleBounds): SDFDistanceField; export declare class SDFPointEvaluator { readonly root: SDFNode; constructor(root: SDFNode); evaluate(samplePoint: SDFPoint): SDFEvaluation; sample(points: ReadonlyArray): ReadonlyArray; sampleField(bounds: SDFSampleBounds): SDFDistanceField; } //# sourceMappingURL=SDFPointEvaluator.d.ts.map