/** @packageDocumentation
 * @module WebGL
 */
/** Ordered list of render passes which produce a rendered frame.
 * [[RenderCommands]] organizes its [[DrawCommands]] into a list indexed by RenderPass.
 * @see [[Pass]] for the type from which the RenderPass for a [[Primitive]] is derived.
 * @internal
 */
export declare const enum RenderPass {
    None = 255,
    Background = 0,
    OpaqueLayers = 1,// XY planar models render without depth-testing in order based on priority
    OpaqueLinear = 2,// Linear geometry that is opaque and needs to be written to the pick data buffers
    OpaquePlanar = 3,// Planar surface geometry that is opaque and needs to be written to the pick data buffers
    PointClouds = 4,
    OpaqueGeneral = 5,// All other opaque geometry (including point clouds and reality meshes) which are not written to the pick data buffers
    Classification = 6,// Stencil volumes for normal processing of reality data classification.
    TranslucentLayers = 7,// like Layers but drawn without depth write, blending with opaque
    Translucent = 8,
    HiddenEdge = 9,
    Hilite = 10,
    OverlayLayers = 11,// Like Layers, but drawn atop all other geometry
    WorldOverlay = 12,// Decorations
    ViewOverlay = 13,// Decorations
    SkyBox = 14,
    BackgroundMap = 15,
    HiliteClassification = 16,// Secondary hilite pass for stencil volumes to process hilited classifiers for reality data
    ClassificationByIndex = 17,// Stencil volumes for processing classification one classifier at a time (used for generating pick data Ids and flashing a single classifier).
    HilitePlanarClassification = 18,
    PlanarClassification = 19,
    VolumeClassifiedRealityData = 20,
    COUNT = 21
}
/** Describes the [[RenderPass]]es in which a [[Primitive]] wants to be rendered.
 * Generally, each Pass corresponds to a single RenderPass. However a couple of passes specify that the primitive should be rendered
 * twice, in two different render passes.
 * [[RenderCommands.addPrimitive]] may ignore the requested Pass. For example, edges typically draw in RenderPass.OpaqueLinear, but
 * may also draw in RenderPass.HiddenEdge; and translucent geometry may sometimes be rendered in an opaque render pass instead.
 * @see [[CachedGeometry.getPass]].
 * @internal
 */
export type Pass = "skybox" | // SkyBox
"opaque" | // OpaqueGeneral
"opaque-linear" | // OpaqueLinear
"opaque-planar" | // OpaquePlanar
"translucent" | // Translucent
"point-clouds" | // PointClouds
"view-overlay" | // ViewOverlay
"classification" | // Classification
"none" | // None
"opaque-translucent" | // OpaqueGeneral and Translucent
"opaque-planar-translucent";
/** [[Pass]]es that map to two [[RenderPass]]es.
 * @internal
 */
export type DoublePass = "opaque-translucent" | "opaque-planar-translucent";
/** [[Pass]]es that map to a single [[RenderPass]].
 * @internal */
export type SinglePass = Exclude<Pass, DoublePass>;
/** Describes the type of geometry rendered by a ShaderProgram.
 * @internal
 */
export declare const enum GeometryType {
    IndexedTriangles = 0,
    IndexedPoints = 1,
    ArrayedPoints = 2
}
/** @internal */
export declare namespace Pass {
    /** Return the RenderPass corresponding to the specified Pass. */
    function toRenderPass(pass: SinglePass): RenderPass;
    /** Return true if the specified Pass renders during RenderPass.Translucent.
     * @note It is possible for both [[rendersTranslucent]] and [[rendersOpaque]] to return true (or false) for a given Pass.
     */
    function rendersTranslucent(pass: Pass): boolean;
    /** Return true if the specified Pass renders during one of the opaque RenderPasses.
     * @note It is possible for both [[rendersTranslucent]] and [[rendersOpaque]] to return true for a given Pass.
     */
    function rendersOpaque(pass: Pass): boolean;
    /** Return true if the specified Pass renders both during RenderPass.Translucent and one of the opaque RenderPasses. */
    function rendersOpaqueAndTranslucent(pass: Pass): pass is DoublePass;
    function toOpaquePass(pass: DoublePass): RenderPass;
}
/** Reserved texture units for specific sampler variables, to avoid conflicts between shader components which each have their own textures.
 * WebGL 2 guarantees a minimum of 16 vertex texture units.
 * @internal
 */
export declare enum TextureUnit {
    Zero,
    One,
    Two,
    Three,
    Four,
    Five,
    Six,
    Seven,
    ClipVolume,
    FeatureSymbology,
    SurfaceTexture,
    LineCode,
    PickFeatureId,
    PickDepthAndOrder,
    VertexLUT,
    AuxChannelLUT,
    PlanarClassification,
    PlanarClassificationHilite,
    ShadowMap,
    ThematicSensors,
    RealityMesh0,
    RealityMesh1,// Reality meshes do not use VertexLUT.
    RealityMesh2,//  Shadow map when picking -- PickDepthAndOrder otherwise....
    RealityMesh3,
    RealityMesh4,
    RealityMesh5,
    RealityMeshThematicGradient,
    EdgeLUT,
    NormalMap
}
/**
 * Defines the order in which primitives are rendered within a GLESList. This is chiefly
 * used to sort primitives which originate from the same element. e.g., the blanking fill
 * associated with a text field must always render behind the text; the edges of a surface
 * must render in front of the surface; etc.
 * An exception to the 'same element' rule is provided for planar surfaces and edges thereof
 * sketched onto non-planar surfaces. When the depth test is ambiguous the planar geometry
 * is always on top of the non-planar surface. This addresses z-fighting when shapes are
 * sketched onto surfaces, e.g. as part of push-pull modeling workflows.
 * @internal
 */
export declare const enum RenderOrder {
    None = 0,
    Background = 1,// i.e., background map drawn without depth
    BlankingRegion = 2,
    UnlitSurface = 3,// Distinction only made for whether or not to apply ambient occlusion.
    LitSurface = 4,
    Linear = 5,
    Edge = 6,
    Silhouette = 7,
    PlanarBit = 8,
    PlanarUnlitSurface = 11,
    PlanarLitSurface = 12,
    PlanarLinear = 13,
    PlanarEdge = 14,
    PlanarSilhouette = 15
}
/** @internal */
export declare function isPlanar(order: RenderOrder): boolean;
/** Flags indicating operations to be performed by the post-process composite step.
 * @internal
 */
export declare const enum CompositeFlags {
    None = 0,
    Translucent = 1,
    Hilite = 2,
    AmbientOcclusion = 4
}
/** Location in boolean array of SurfaceFlags above.
 * @internal
 */
export declare const enum SurfaceBitIndex {
    HasTexture = 0,
    ApplyLighting = 1,
    HasNormals = 2,
    IgnoreMaterial = 3,
    TransparencyThreshold = 4,
    BackgroundFill = 5,
    HasColorAndNormal = 6,
    OverrideRgb = 7,
    HasNormalMap = 8,
    HasMaterialAtlas = 9,
    UseConstantLodTextureMapping = 10,
    UseConstantLodNormalMapMapping = 11,
    Count = 12
}
/** Describes attributes of a MeshGeometry object. Used to conditionally execute portion of shader programs.
 * @internal
 */
export declare const enum SurfaceFlags {
    None = 0,
    HasTexture = 1,
    ApplyLighting = 2,
    HasNormals = 4,
    IgnoreMaterial = 8,
    TransparencyThreshold = 16,
    BackgroundFill = 32,
    HasColorAndNormal = 64,
    OverrideRgb = 128,
    HasNormalMap = 256,
    HasMaterialAtlas = 512
}
/** 16-bit flags indicating what aspects of a feature's symbology are overridden.
 * @internal
 */
export declare const enum OvrFlags {
    None = 0,
    Visibility = 1,
    Rgb = 2,
    Alpha = 4,
    IgnoreMaterial = 8,// ignore material color, specular properties, and texture.
    Flashed = 16,
    NonLocatable = 32,// do not draw during pick - allows geometry beneath to be picked.
    LineCode = 64,
    Weight = 128,
    Hilited = 256,
    Emphasized = 512,// rendered with "emphasis" hilite settings (silhouette etc).
    ViewIndependentTransparency = 1024,
    Rgba = 6
}
/** 8-bit flags indicating emphasis effects applied to a feature.
 * @internal
 */
export declare const enum EmphasisFlags {
    None = 0,
    Hilite = 1,
    Emphasized = 2,
    Flashed = 4,
    NonLocatable = 8
}
/** @internal */
export declare const enum IsTranslucent {
    No = 0,
    Yes = 1,
    Maybe = 2
}
//# sourceMappingURL=RenderFlags.d.ts.map