import { BufferGeometry, LineSegments } from 'three'; import type { CellComplex, TransformN } from '@holotope/core'; export interface ProjectedEdgesGPUOptions { color?: number; /** Iterated-perspective view distance along w. Default 4. */ viewDistance?: number; /** Denominator clamp guarding the perspective divide. Default 1e-4. */ epsilon?: number; } /** * GPU render product: the 1-skeleton of a 4D cell complex, projected * 4D → 3D **in the vertex shader** via TSL. * * The 4D positions upload once as a static `position4` attribute; each * `update` only writes a mat4 rotation, a vec4 translation, and the * projection uniforms — no per-frame CPU projection, no buffer re-upload. * SO(4) being a linear map on ℝ⁴ is what makes this exact: the whole 4D * rigid transform fits native GPU types. * * Requires `WebGPURenderer` (which itself falls back to WebGL2); the node * material compiles to WGSL or GLSL through the same TSL graph. Numerics * are Float32 on the GPU versus the CPU products' Float64 — for * unit-scale polytopes the difference is far below a pixel, and the CPU * path remains the golden reference. */ export declare class ProjectedEdgesGPU { readonly complex: CellComplex; readonly geometry: BufferGeometry; readonly object: LineSegments; private readonly rotationUniform; private readonly translationUniform; readonly viewDistanceUniform: import("three/webgpu").UniformNode<"float", number>; private readonly identity; constructor(complex: CellComplex, options?: ProjectedEdgesGPUOptions); /** Uploads the 4D transform to the GPU — uniforms only, O(1). */ update(transform?: TransformN): void; dispose(): void; } //# sourceMappingURL=projected-edges-gpu.d.ts.map