import { InstancedBufferGeometry, LineSegments } from 'three'; import type { CellComplex, TransformN } from '@holotope/core'; export interface ProjectedEdgesInstancedGPUOptions { /** Number of instances. */ count: number; color?: number; /** Iterated-perspective view distance along w. Default 4. */ viewDistance?: number; /** Denominator clamp guarding the perspective divide. Default 1e-4. */ epsilon?: number; } /** * Instanced GPU render product: many rigid copies of one 4D cell * complex's 1-skeleton, projected 4D → 3D in the vertex shader. * * The 4D positions upload once, shared by all instances; each instance * carries its own rigid transform as five instanced vec4 attributes — * the four **columns** of the SO(4) rotation matrix plus the * translation. The vertex stage reconstructs * * world = c₀·x + c₁·y + c₂·z + c₃·w + t * * (the matrix–vector product expressed over columns, which avoids * assembling a mat4 from attributes) and then applies the shared * perspective divide. One draw call renders every copy; updating an * instance writes 20 floats. * * Column storage means `Matrix4.elements` (column-major) copies * straight into the attribute with no transpose. */ export declare class ProjectedEdgesInstancedGPU { readonly complex: CellComplex; readonly count: number; readonly geometry: InstancedBufferGeometry; readonly object: LineSegments; readonly viewDistanceUniform: import("three/webgpu").UniformNode<"float", number>; private readonly columns; private readonly translations; private readonly scratchMatrix; private readonly scratchTranslation; constructor(complex: CellComplex, options: ProjectedEdgesInstancedGPUOptions); /** Writes one instance's rigid transform (20 floats). */ setInstanceTransform(instance: number, transform: TransformN): void; dispose(): void; } //# sourceMappingURL=projected-edges-instanced-gpu.d.ts.map