import type { Material, Shader } from "three";
import { Vector2 } from "three";
import { type OnBeforeCompile, type ModifiedMaterial } from "../onBeforeCompile";
/**
 * uvDrawRange 增加的 uniforms
 */
export declare const uvDrawRange_uniforms: {
    invert: boolean;
    enableURange: boolean;
    enableVRange: boolean;
    uvMax: Vector2;
    uvMin: Vector2;
};
/**
 * uvDrawRange 在片元着色器中增加的代核心代码
 */
export declare const uvDrawRange_fragment_mainReplace = "\nuniform bool invert;\nuniform bool enableURange;\nuniform bool enableVRange;\n\nuniform vec2 uvMax;\nuniform vec2 uvMin;\nvoid main() {\n  bool isDiscard = false;\n  #if defined(USE_MAP) || defined(USE_UV)\n    vec2 rangeUV; \n    #ifdef USE_MAP\n      rangeUV = vMapUv;\n    #else\n      rangeUV = vUv;\n    #endif\n    bool xDiscard = enableURange && ( uvMin.x > rangeUV.x || rangeUV.x > uvMax.x);\n    bool yDiscard = enableVRange && (uvMin.y > rangeUV.y || rangeUV.y > uvMax.y);\n    isDiscard = xDiscard || yDiscard;\n  #endif\n\n  if (invert){\n    isDiscard = !isDiscard;\n  }\n  if (isDiscard) discard;\n";
/**
 * uvDrawRange 的 shader 的修改器
 * @remarks
 * Mender 都是用于 `createOnBeforeCompile` 方法的
 * @param shader
 */
export declare function uvDrawRange_Mender(shader: Shader): void;
/**
 * uvDrawRange 用于材质的 onBeforeCompile 函数
 */
export declare const uvDrawRange_onBeforeCompile: OnBeforeCompile;
/**
 * 用于实现绘制指定uv范围的材质修改器
 * @remarks
 * 材质被修改后可具备设置绘制指定uv范围
 * @param material
 * @returns
 */
export declare function uvDrawRangeModifier<M extends Material>(material: M): ModifiedMaterial<M, {
    invert: boolean;
    enableURange: boolean;
    enableVRange: boolean;
    uvMax: Vector2;
    uvMin: Vector2;
}>;
//# sourceMappingURL=uvDrawRange.d.ts.map