import { NormalBlendMode } from "./BlendModeConfig"; type Node = any; /** * Handles normal map blending with various techniques * Each method preserves surface detail differently */ export declare class NormalBlender { /** * Blend two normal maps using specified technique * @param normal1 - Base normal (should be in tangent space [-1,1]) * @param normal2 - Top normal (should be in tangent space [-1,1]) * @param blendFactor - Blend amount (0-1) * @param mode - Blending technique to use */ blend(normal1: Node, normal2: Node, blendFactor: Node, mode?: NormalBlendMode): Node; /** * Simple linear interpolation * Fast but can lose detail and doesn't preserve surface curvature well */ private linearBlend; /** * Reoriented Normal Blending (RNB) * Best quality - preserves detail and curvature * Based on: "Blending in Detail" by Colin Barré-Brisebois */ private reorientedBlend; /** * Whiteout Blending * Fast approximation, good for subtle details * Formula: n1 + n2 - (0,0,1) */ private whiteoutBlend; /** * Unity Detail Normal (UDN) Blending * Good balance between quality and performance */ private udnBlend; /** * Partial Derivative Blending * Preserves microsurface detail by considering normal derivatives * More expensive but highest quality for detailed surfaces */ private partialDerivativeBlend; /** * Overlay Blending * Similar to color overlay but for normals */ private overlayBlend; private overlayComponents; /** * Unpack normal from [0,1] texture space to [-1,1] tangent space */ unpackNormal(normalSample: Node): Node; /** * Pack normal from [-1,1] tangent space to [0,1] texture space */ packNormal(normal: Node): Node; } export {}; //# sourceMappingURL=NormalBlender.d.ts.map