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

    Everything the viewer knows about one numeric physical knob.

    interface PhysicalKnobSpec {
        prop: PhysicalKnobProp;
        label: string;
        min: number;
        max: number;
        default: number;
        step: number;
        sliderMax?: number;
        maxIsInfinite?: boolean;
        logScale?: boolean;
        programAffecting: boolean;
    }
    Index

    Three property name (camelCase); the attr name is the table key (snake_case).

    label: string

    Layers-panel label.

    min: number

    Smallest value the material accepts; lower values clamp here.

    max: number

    Largest value the material accepts (Infinity = unbounded); higher values clamp.

    default: number

    What an ABSENT knob renders as — three's own default unless documented otherwise.

    step: number

    Slider step (ignored on a log track).

    sliderMax?: number

    Top of the slider track when the domain is unbounded. With PhysicalKnobSpec.maxIsInfinite the top stop MEANS "no limit" (Infinity), which is how attenuation_distance's default is reachable from a finite slider.

    maxIsInfinite?: boolean

    The slider's top stop maps to Infinity (see sliderMax).

    logScale?: boolean

    Present on a geometric track (a length whose useful range spans decades).

    programAffecting: boolean

    Whether 0 → >0 (and back) selects a shader variant. Three's WebGL setters bump the material version on that crossing already; MeshPhysicalNodeMaterial stores plain properties and bakes the flags into its lighting model at setup, so setPhysicalKnob flags needsUpdate itself — one rule for both twins.