/** @packageDocumentation
 * @module WebGL
 */
import { ProgramBuilder } from "../ShaderBuilder";
import { IsAnimated, IsClassified, IsInstanced, IsThematic, PositionType, TechniqueFlags } from "../TechniqueFlags";
/** @internal */
export declare function createSurfaceHiliter(instanced: IsInstanced, classified: IsClassified, posType: PositionType): ProgramBuilder;
/** @internal */
export declare const octDecodeNormal = "\nvec3 octDecodeNormal(vec2 e) {\n  e = e / 255.0 * 2.0 - 1.0;\n  vec3 n = vec3(e.x, e.y, 1.0 - abs(e.x) - abs(e.y));\n  if (n.z < 0.0) {\n    vec2 signNotZero = vec2(n.x >= 0.0 ? 1.0 : -1.0, n.y >= 0.0 ? 1.0 : -1.0);\n    n.xy = (1.0 - abs(n.yx)) * signNotZero;\n  }\n\n  return normalize(n);\n}\n";
/** @internal */
export declare function addSurfaceFlags(builder: ProgramBuilder, withFeatureOverrides: boolean, withFeatureColor: boolean): void;
/** @internal */
export declare function addTexture(builder: ProgramBuilder, animated: IsAnimated, isThematic: IsThematic, isPointCloud: boolean, isHilite: boolean, isMaplayer: boolean): void;
export declare const discardClassifiedByAlpha = "\n  if (u_no_classifier_discard)\n    return false;\n\n  bool hasAlpha = alpha <= s_maxAlpha;\n  bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\n  bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\n  return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\n";
/** @internal */
export declare function createSurfaceBuilder(flags: TechniqueFlags): ProgramBuilder;
export declare function addClassificationTranslucencyDiscard(builder: ProgramBuilder): void;
//# sourceMappingURL=Surface.d.ts.map