import { Texture, Vector3 } from "three"; import { BlendModeConfig } from "./BlendModeConfigInterface"; import { MeshBasicNodeMaterial, MeshPhysicalNodeMaterial, MeshStandardNodeMaterial } from "three/webgpu"; type Node = any; export type MaskChannel = 'r' | 'g' | 'b' | 'a' | 'x' | 'y' | 'z' | 'w'; export type NodeMaterialInput = MeshPhysicalNodeMaterial | MeshStandardNodeMaterial | MeshBasicNodeMaterial; export interface LayerConfig { name?: string; materialInput?: NodeMaterialInput; map: { color?: Texture | Vector3; normal?: Texture; roughness?: Texture; metalness?: Texture; ao?: Texture; height?: Texture; arm?: Texture; }; color?: Vector3; roughness?: number; metalness?: number; scale?: number; materialTransform?: { overrideScale?: boolean; extractTextures?: boolean; respectMaterialSettings?: boolean; }; edgeWear: { enable?: boolean; intensity?: number; threshold?: number; falloff?: number; sharpness?: number; useNoise?: boolean; color?: { r: number; g: number; b: number; }; affectsMaterial?: boolean; roughness?: number; metalness?: number; wearPattern?: 'curvature' | 'ambient_occlusion' | 'world_space' | 'combined'; curvatureMethod?: 'normal' | 'position' | 'simplified' | 'world' | 'laplace'; }; triplanar: { enable?: boolean; useWorldPosition?: boolean; }; textureBombing: { enable?: boolean; blend?: number; }; mask: { map?: Texture; channel?: MaskChannel; invert?: boolean; useSlope?: boolean; slopeMin?: number; slopeMax?: number; useHeight?: boolean; heightMin?: number; heightMax?: number; useNoise?: boolean; noiseType?: 'perlin' | 'voronoi' | 'fbm'; noiseScale?: number; noiseOctaves?: number; noisePersistence?: number; noiseThreshold?: number; opacityMultiplier?: number; constantOpacity?: number; }; heightBlend?: { enable?: boolean; strength?: number; sharpness?: number; }; parallax?: { enable?: boolean; scale?: number; steps?: number; maxOffset?: number; method?: 'pom' | 'web-optimized' | 'simple'; quality?: 'low' | 'medium' | 'high'; }; blendMode?: BlendModeConfig; } export interface LayeredMaterialOptions { layers?: LayerConfig[]; blendSharpness?: number; } export interface LayerData { color: Node; normal: Node; roughness: Node; metalness: Node; ao: Node; height?: Node; } export {}; //# sourceMappingURL=LayerInterface.d.ts.map