Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    Interface CompleteBlendingState

    interface CompleteBlendingState {
        blending: Blending;
        blendEquation: BlendingEquation;
        blendSrc: BlendingSrcFactor;
        blendDst: BlendingDstFactor;
        depthTest: boolean;
        depthWrite: boolean;
        transparent: boolean;
        shaderOutputMode:
            | "opaque"
            | "alpha-weighted"
            | "rgb-contribution"
            | "premultiplied-alpha";
    }
    Index
    blending: Blending
    blendEquation: BlendingEquation
    blendSrc: BlendingSrcFactor
    blendDst: BlendingDstFactor
    depthTest: boolean
    depthWrite: boolean
    transparent: boolean
    shaderOutputMode:
        | "opaque"
        | "alpha-weighted"
        | "rgb-contribution"
        | "premultiplied-alpha"

    Hint for shader RGB output composition. Only 'rgb-contribution' is machine-consumed: the Point and Line applyBlendingMode wrappers toggle the LUXAR_MAX_RGB_CONTRIBUTION define off it so max mode premultiplies RGB by intensity·opacity (required because MaxEquation + OneFactor compares contributions, not flat colour). The other three values document the fragment-output contract for readers but are consumed by no wrapper: 'alpha-weighted' (additive/luminous/normal — RGB unweighted, alpha = intensity·opacity), 'opaque' (the same alpha-carrying Point/Line output, with a contribution cutout before depth write; Mesh emits its own cutout alpha), and 'premultiplied-alpha' (gsplat normal — RGB carries the full premultiplied contribution, alpha a clamped coverage term for OneMinusSrcAlpha destination attenuation; the gsplat wrappers key that branch off isNormalMode, not off this field).