Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...
    • Axial stencil reach beyond a CUT joint end, px — TWO of the vertex stage's four ext arms (ny = the cut normal's PERPENDICULAR component in the leg's own local frame).

      Without a packet the fragment renders only the kept half-disc, whose axial extent is |ny|·rMax — a genuinely cheaper stencil than a cap, which is the whole reason joints cost less fill than free ends. With one, the deficit term reaches wherever MY OWN profile does (it renders max(mine − partner, 0) ≤ mine), so the end must reserve the FULL disc or the rasterizer chops the light the deficit rule draws (#1488). Both carry the AA apron.

      rMax is the vertex stage's OWN rMax — max(rA, rB) + apron, the same value the width gate compares and the quad's half-width uses — so both arms add the apron a second time, exactly as the four ext writes do (extA = rMax + APRON / abs(nLoc.y) * rMax + APRON). Passing the bare drawn radius instead would make this model reserve 0.5 px LESS than the shader: faithful-looking, and quietly able to chop what the shader draws.

      The two arms it does NOT model: the bare-apron BUTT an interior end keeps when there is no partner-far texel, the joint vertex is behind the near plane, the projected partner length degenerates (the shaders' ql > 1e-4 guard, shader-glsl-capsule.ts — this model divides by that length instead: a tiny-but-finite one is modelled as an extreme taper rather than a butt, and a ZERO one goes non-finite WHERE THE PACKET IS LIVE, which the sweep throws on rather than scoring as a vacuous 0 — gated off, the gradient is never read and the row scores finitely), or nLoc.x fails its sign test; and the free-end/hairpin rMax, which the model hardcodes at its own call sites and so cannot be reached through an injected rule. The first two of those are unproducible here (the model has no texels and no near plane), but the nLoc.x one merely goes unexercised: with θ the angle between q̂ and m̂, nl = 2|sin(θ/2)| and nLoc.x = −|sin(θ/2)|, so the window nl > 1e-3 ∧ nLoc.x > −1e-3 holds for θ in (0.057°, 0.115°) — a sliver just above the hairpin fallback, which leg(180, …) vs leg(180.08, …) would enter. No row in the sweep does.

      Parameters

      • rMax: number
      • ny: number
      • hasPacket: boolean

      Returns number