import { Color, NodeMaterial } from 'three/webgpu'; import type { TSLNode, TSLUniformNode, TSLVec3Node } from '../types/tsl.js'; export interface SDFSliceVolumeNodeMaterialOptions { layerCount?: number | undefined; opacity?: number | undefined; bandWidth?: number | undefined; sliceSpread?: number | undefined; sheetOpacity?: number | undefined; insideColor?: import('three/webgpu').ColorRepresentation | undefined; outsideColor?: import('three/webgpu').ColorRepresentation | undefined; surfaceColor?: import('three/webgpu').ColorRepresentation | undefined; sheetColor?: import('three/webgpu').ColorRepresentation | undefined; } export interface SDFSliceVolumeUniforms { layerCount: TSLUniformNode<'uint', number>; surface: TSLUniformNode<'float', number>; opacity: TSLUniformNode<'float', number>; bandWidth: TSLUniformNode<'float', number>; sheetOpacity: TSLUniformNode<'float', number>; insideColor: TSLUniformNode<'color', Color>; outsideColor: TSLUniformNode<'color', Color>; surfaceColor: TSLUniformNode<'color', Color>; sheetColor: TSLUniformNode<'color', Color>; localPosition: TSLVec3Node; sdf: TSLNode; reverseOrder: TSLUniformNode<'bool', boolean>; sliceSpread: TSLUniformNode<'float', number>; } /** * Back-to-front depth-slice renderer for inspecting a 3D SDF in scene space. * * Each instance is one transparent XY plane sampling a distinct Z depth. The display * stack can be spread apart without changing the sampled texture depths, making the * individual sheets legible while preserving their field data. Instances are reversed * when viewed from behind so alpha always composites back-to-front. Float SDF values * are reconstructed manually without requiring WebGPU's optional float filtering. * * @class SDFSliceVolumeNodeMaterial * @extends {NodeMaterial} */ export declare class SDFSliceVolumeNodeMaterial extends NodeMaterial { /** Mutable slice presentation uniforms. */ sliceVolumeUniforms: SDFSliceVolumeUniforms; /** Runtime type guard that is always `true` for this material. */ isSDFSliceVolumeNodeMaterial: boolean; /** * Create an instanced SDF slice-volume material. * * @param {THREE.Storage3DTexture} sdfTexture - 3D SDF texture to visualize. * @param {Object} [options] - Slice presentation options. * @param {number} [options.layerCount=96] - Number of ordered depth-slice instances. * @param {number} [options.opacity=0.075] - Alpha contributed by one dense layer. * @param {number} [options.bandWidth=0.05] - Visible SDF band width in field units. * @param {number} [options.sliceSpread=1.25] - Display-space depth spread relative to the cube. * @param {number} [options.sheetOpacity=0.015] - Faint alpha used to reveal each whole sheet. * @param {THREE.ColorRepresentation} [options.insideColor=0xff4f83] - Negative-distance tint. * @param {THREE.ColorRepresentation} [options.outsideColor=0x42d9ff] - Positive-distance tint. * @param {THREE.ColorRepresentation} [options.surfaceColor=0xeafff8] - Zero-crossing tint. * @param {THREE.ColorRepresentation} [options.sheetColor=0x173746] - Sheet, grid, and border tint. */ constructor(sdfTexture: import('three/webgpu').Storage3DTexture, options?: SDFSliceVolumeNodeMaterialOptions); }