import { MeshPhysicalNodeMaterial } from "three/webgpu"; import { LayerConfig, LayerData, LayeredMaterialOptions } from "./types"; import { MaterialSampler } from "./core/MaterialSampler"; import { LayerBlender } from "./core/LayerBlender"; import { MaskGenerator } from "./core/MaskGenerator"; import { NoiseGenerator } from "./features/noise/NoiseGenerator"; import { NoiseConfig } from "./features/noise/NoiseConfig"; type Node = any; export declare class LayeredMaterial extends MeshPhysicalNodeMaterial { layers: LayerConfig[]; blendSharpness: number; protected sampler: MaterialSampler; protected blender: LayerBlender; protected maskGen: MaskGenerator; protected noiseGen: NoiseGenerator; private topologySignature; constructor(options?: LayeredMaterialOptions); protected setupMaterial(): void; private applyLayerChanges; private computeTopologySignature; private mergeLayerConfig; protected buildLayerBlending(): LayerData; protected getDefaultLayer(): LayerData; addLayer(config: LayerConfig): void; removeLayer(index: number): void; /** * Insert a layer at a specific index * @param index - Position to insert at (0 = bottom, length = top) * @param config - Layer configuration */ insertLayer(index: number, config: LayerConfig): void; /** * Move a layer from one position to another * @param fromIndex - Current layer index * @param toIndex - Target layer index */ moveLayer(fromIndex: number, toIndex: number): void; /** * Swap two layers * @param indexA - First layer index * @param indexB - Second layer index */ swapLayers(indexA: number, indexB: number): void; /** * Get the number of layers */ getLayerCount(): number; /** * Get a layer by index */ getLayer(index: number): LayerConfig | undefined; updateLayer(index: number, config: Partial): void; cloneX(): LayeredMaterial; /** * Sample a layer configuration into layer data * @param layer - Layer configuration to sample */ protected sampleLayer(layer: LayerConfig): LayerData; /** * Blend two layers together with a mask * @param baseLayer - Base layer data * @param topLayer - Top layer data * @param mask - Blend mask node * @param config - Layer config for blend modes */ protected blendLayers(baseLayer: LayerData, topLayer: LayerData, mask: Node, config: LayerConfig): LayerData; /** * Generate procedural noise * @param uvCoords - UV coordinates for noise generation * @param config - Noise configuration */ protected generateNoise(uvCoords: Node, config: NoiseConfig): Node; /** * Generate a mask for a layer * @param layer - Layer configuration */ protected generateMask(layer: LayerConfig): Node; } export {}; //# sourceMappingURL=LayeredMaterial.d.ts.map