import type * as THREE from "three"; import type { ThreeParts } from "../realistic/textures.ts"; /** Where the trail's picture comes from: its pixels are asked for only while it is on, so a page that paints nothing never makes them. */ export interface PaintSource { data(): Uint8Array; width: number; height: number; } export interface PaintTexture { uniforms: { paintMap: { value: THREE.Texture | null; }; paintNow: { value: number; }; paintSpan: { value: number; }; paintOn: { value: number; }; }; /** Whether the picture is on the graphics card now. */ readonly held: boolean; /** * Make the picture when painting goes on (and send it), send it again when `changed`, and give it back when painting is off. * With painting off nothing is made and nothing is held. */ sync(on: boolean, changed: boolean): void; dispose(): void; } /** A texture over the trail (equirectangular, north in the first row), made on the first paint and freed on clear. The same uniforms go on the sphere and on any tile laid over it. */ export declare function createPaintTexture(three: ThreeParts, source: PaintSource): PaintTexture;