/** * Stable public entry point for the Transmission product block. * @module three-blocks/transmission */ import type * as THREE from 'three/webgpu'; import type { MeshTransmissionDitherAnchor as MeshTransmissionDitherAnchorImplementation, MeshTransmissionNodeMaterialParameters, MeshTransmissionRefractionMode as MeshTransmissionRefractionModeImplementation, MeshTransmissionViewportBufferNode as MeshTransmissionViewportBufferNodeImplementation } from './Materials/MeshTransmissionNodeMaterial.cjs'; /** Post-exit refraction model used when the backdrop has a non-zero distance. */ export type MeshTransmissionRefractionMode = MeshTransmissionRefractionModeImplementation; /** Coordinate domain used to anchor stochastic transmission sampling. */ export type MeshTransmissionDitherAnchor = MeshTransmissionDitherAnchorImplementation; /** Sampleable mip-aware TSL source accepted as a custom transmission backdrop. */ export type MeshTransmissionViewportBufferNode = MeshTransmissionViewportBufferNodeImplementation; /** * Physical-material parameters plus the intentional transmission controls accepted at * construction. A custom viewport buffer is borrowed and is never disposed by the material. */ export type MeshTransmissionNodeMaterialOptions = MeshTransmissionNodeMaterialParameters; /** * Intentional stable surface for the transmission material. * * This interface inherits the normal Three.js `MeshPhysicalNodeMaterial` contract so the value * remains usable anywhere Three.js expects a material. Structural controls rebuild the shader; * set them before a render when possible. The default shared viewport buffer is package-owned. */ export interface MeshTransmissionNodeMaterial extends THREE.MeshPhysicalNodeMaterial { /** Runtime type guard that is always `true` for this material. */ readonly isMeshTransmissionNodeMaterial: true; /** Artistic per-channel dispersion strength. */ chromaticAberration: number; /** Directional blur strength along the refraction flow. */ anisotropicBlur: number; /** Offset added to the internal clock used by temporal distortion. */ time: number; /** Noise displacement applied to the refraction normal. */ distortion: number; /** Noise displacement applied to the shading normal. */ surfaceDistortion: number; /** World-space scale of the distortion noise. */ distortionScale: number; /** Animation strength for time-varying distortion. */ temporalDistortion: number; /** Stochastic sampling jitter strength. */ ditherStrength: number; /** Tiling frequency of the stochastic sampling pattern. */ ditherScale: number; /** Normalized viewport-border width used to fade refraction offsets. */ edgeFade: number; /** Artistic multiplier applied to the physically scaled blur footprint. */ blurScale: number; /** Assumed world-space distance from the exit surface to the sampled backdrop. */ backdropDistance: number; /** Stochastic gather taps per colour channel; changing this recompiles the material. */ samples: number; /** Post-exit ray model; changing this recompiles the material. */ refractionMode: MeshTransmissionRefractionMode; /** Dither coordinate domain; changing this recompiles the material. */ ditherAnchor: MeshTransmissionDitherAnchor; /** * Borrowed viewport source sampled by the refraction graph. Assigning `null` restores the * package-owned shared viewport snapshot; changing the source recompiles the material. */ viewportBuffer: MeshTransmissionViewportBufferNode | null; /** * Release Three.js material resources. The operation is safe to repeat; it does not dispose a * custom viewport buffer supplied by the caller. */ dispose(): void; } interface MeshTransmissionNodeMaterialConstructor { readonly prototype: MeshTransmissionNodeMaterial; /** Create a physical transmission material with optional stable transmission controls. */ new (options?: MeshTransmissionNodeMaterialOptions): MeshTransmissionNodeMaterial; } /** * Construct a transmission material without wrapping or replacing its Three.js identity. * Construction can throw when a supplied viewport source is not a sampleable TSL node. */ export declare const MeshTransmissionNodeMaterial: MeshTransmissionNodeMaterialConstructor; export {};