import { BufferGeometry, Mesh } from 'three'; import { MeshStandardNodeMaterial } from 'three/webgpu'; import type { CellComplex, TransformN } from '@holotope/core'; export interface ProjectedSurfaceGPUOptions { color?: number; opacity?: number; /** Iterated-perspective view distance along w. Default 4. */ viewDistance?: number; /** Denominator clamp guarding the perspective divide. Default 1e-4. */ epsilon?: number; /** Material to install the projection node on (overrides color/opacity). */ material?: MeshStandardNodeMaterial; } /** * GPU render product: the 2-faces of a 4D cell complex, projected * 4D → 3D **in the vertex shader** via TSL — the surface counterpart of * `ProjectedEdgesGPU`. * * Faces expand once, at construction, into a static triangle soup of 4D * positions (simplex triangles directly; cuboid quads and polygon loops * fan-triangulated from their first corner, matching ProjectedSurface3D). * Each `update` writes only the rotation/translation uniforms. Flat * shading comes from fragment derivatives, so normals need no CPU * recomputation either — the entire per-frame cost is a handful of * uniforms. * * Requires `WebGPURenderer` (WGSL or its WebGL2/GLSL fallback — both * compile from the same node graph). */ export declare class ProjectedSurfaceGPU { readonly complex: CellComplex; readonly geometry: BufferGeometry; readonly object: Mesh; readonly triangleCount: number; private readonly rotationUniform; private readonly translationUniform; readonly viewDistanceUniform: import("three/webgpu").UniformNode<"float", number>; private readonly identity; constructor(complex: CellComplex, options?: ProjectedSurfaceGPUOptions); /** Uploads the 4D transform to the GPU — uniforms only, O(1). */ update(transform?: TransformN): void; dispose(): void; } //# sourceMappingURL=projected-surface-gpu.d.ts.map