luv

Workshop wiki

luft-miters.org

The bevel junction is an open problem

The sharp bevel is a global map from sites to points #2H7DL8

LUFT's refounded chamfer has an unusually strong regularity. A canonical edge or vertex site s, its occupancy star, and the width w determine one point

G(s)=s+w\rho(\operatorname{star}(s))q(\operatorname{star}(s)).

An oriented face does not invent that point. It merely includes the same G(s) as every other face incident to the site. The CPU classifies four edge stars and four vertex stars into one 32-bit shape word; the vertex shader decodes those decisions and realizes sixteen points on the same 4 by 4 patch for every face. Fixed positive and negative index templates draw eighteen triangles. #RUAWR5 explains the displacement rule and its closure tests.

This is correct by construction in a specific sense: incident faces agree, the surface is watertight without stitching, cubical transforms preserve the rule, and CPU decisions have one continuous realization at the live width. It is also inherently a sharp-miter system. If several chamfer strips meet at one lattice vertex, they all have exactly one G(s) at which to terminate.

That limitation is honest and local. The ordinary convex and concave bevel geometry keeps its coherent structure; only a mixed junction asks for a codomain richer than one point.

A miter arc carries the band; it does not decorate a singularity #DJK8HW

Three user-supplied screenshots preserve the visual argument. The first is the original LUFT junction, deliberately zoomed and framed on the problem: the green chamfer strip loses its width and collapses into the one shared point.

The second is the first attempted repair. Extra points do not carry the strip around the corner; they enlarge the old singularity into a conspicuous pinwheel of skinny triangles.

The third is Blender's Bevel modifier with Outer Miter set to Arc. It is an independent visual oracle, not a requirement to copy Blender's mesh representation. Broad bevel bands turn through the mixed junction without a central star, a sliver fan, or a strip narrowing to a point. Blender's bevel documentation describes the Arc choice as two vertices near the meeting joined by a curved arc.

The transferable requirements are relational: approximately constant band width, an ordered turn, and a crease graph which follows the band. A broad architectural plate such as #Z5NDTA supplies context, but it cannot replace the user-framed closeup as evidence.

defun make-miter-study-scene render.lisp:469
defunmake-miter-study-scene

Build the wall-side stepped mountain used to judge mixed miters. #Z5NDTA

The two L-shaped terraces retain five-, six-, and seven-cell vertex stars in one architectural context. Their back edges meet a continuous wall so the same view also retains the truncated wall miter preserved by #DJK8HW.

let
builder
make-scene-builder:horizontal-bits5

Broad plinth and continuous back wall.

scene-builder-boxbuilder2142801:architecture-pt
scene-builder-boxbuilder2148907:architecture-pt

One isolated terrain cell makes the ordinary boulder-on-ground contact inspectable beside the architectural mixed-miter cases.

The lower L supplies the outie, straight six-cell run, innie, and the first wall termination. The upper L repeats them without isolation.

scene-builder-boxbuilder4115722:architecture-pt
scene-builder-boxbuilder483422:architecture-pt
scene-builder-boxbuilder5106733:architecture-pt
scene-builder-boxbuilder574533:architecture-pt

The minimal-arc transition crossed the architecture halfway #RJ0RLN

Commit 4724734 tried to move from the sharp junction to an Arc-like one while retaining a fixed face patch. It made two changes which need to be judged separately.

The useful representational observation was that one compact corner direction cannot describe several directed endpoints around the same vertex. The commit therefore replaced the CPU-authored edge and corner conclusions in the shape word with four complete eight-cell stars. It expanded every face from sixteen to twenty-four implicit points by adding two half-edge points at each corner, and from eighteen to twenty-six triangles.

But this also partly reversed the refoundation's CPU/GPU boundary. Before the commit the CPU classified occupancy and the shader decoded the answer. After it, the shader again counted occupancy, computed minority moments, projected half-edge stars, recognized miter configurations, and selected point formulas. The CPU still extracted a bounded neighborhood into a 16-byte record, so this was not a return to arbitrary shader-side world reads, but discrete bevel meaning had moved back into every vertex invocation.

Most importantly, the topology did not make the same transition as the point data. Directional endpoints were inserted into the old face-owned patch and triangulated back to its shared centre. The representation wanted a coherent vertex junction; the indices still described a centre-oriented face fan. The visible pinwheel in #DJK8HW is that mismatch, not a small tuning error.

LUFT has therefore returned to the sharp baseline. The failed transition is kept as evidence rather than retained as latent complexity in every ordinary face.

Structural proofs implemented the rejected specification faithfully #7LEM72

The minimal-arc experiment remained watertight, preserved shared incident-face positions, transformed over the cubical symmetry group, produced consistently wound nondegenerate triangles, and agreed between independent CPU and shader arithmetic to floating-point tolerance. Those checks established that the program implemented its specification.

They did not establish that the specification was an Arc bevel. None asked whether a strip retained its width, whether the crease graph contained an unexpected high-valence centre, or whether the triangulation formed slivers. The rendered closeup rejected the result immediately.

This separates three claims which future work must not conflate:

  1. the records and triangles are combinatorially valid;
  2. CPU and GPU realize the same formulas; and
  3. the formulas and connectivity express the intended bevel.

The first two remain necessary engineering evidence. The third needs an independent geometric oracle and human inspection. Exhausting all 256 stars cannot rescue a predicate which never states the visible requirement.

The sharp baseline remains inspectable at the problem scale #L7N4MO

The miter study of #Z5NDTA retains the exact #xCD wall termination alongside five-, six-, and seven-cell junctions. Two named captures use the production renderer, the normal 0.11-cell chamfer width, one camera, and construction ink as the only changed variable. They are diagnostic fixtures, not approved goldens.

defun capture-luft-miter-closeup luft-portraits.lisp:457
defuncapture-luft-miter-closeup
pathnamewireframetitle

Capture the #xCD wall termination at the normal chamfer width. #L7N4MO

let
unwind-protect
progn

At this yaw/pitch the camera lies backward from the motivating vertex (12,8,3), placing that exact join at frame centre.

setfviewer
luft.render:start-viewer:solid:bevel-widthluft:+mesh-bevel-width+:camera
luft.render:make-fly-camera:position:yaw2.0899425:pitch-0.33
:titletitle:width1200:height1200

The sharp junction with its construction edges #78WA2W

The same sharp junction without diagnostic ink #6X0WRV

A larger local object may preserve the old system's regularity #GBCLEV

The known constraint is small: one point cannot represent a band entering and leaving a mixed vertex at distinct locations. It does not yet determine the right replacement. Several questions remain open:

A promising design would generalize the gluing invariant rather than abandon it: every incident face derives the same ordered boundary from the same canonical vertex star, and the junction owns whatever fills that boundary. That is a consequence of the failure, not yet a selected implementation.

DONE Find a regular site-owned account of mixed bevel junctions #2PN62B

Intent. Understand whether an Arc-like mixed miter can preserve LUFT's site-local ownership, CPU-authored discrete geometry, bounded records, and fixed dense rendering without complicating every ordinary sharp bevel.

Evidence. Closed by the offset construction recorded in The beveled surface is a sum over sites. What was observed: every vertex the junction needs is an intersection of offset lines and therefore an integer lattice point (#IQC0Y4); the junction boundary and its constant-width criterion are defined by those intersections independently of any triangulation, and the fill is a fan of k equilateral w-tiles with k the band's turn in units of 60° — the wall-end flare is three tiles forming a half-hexagon trapezoid, the staircase saddle six forming a flat regular hexagon (#EUZLR8). The one-point collapse and the pinwheel are both rejected algebraically: sharp miters emit triangles with normals of type (3,1,1), outside the \{100\}/\{110\}/\{111\} alphabet, wherever a band dies (#GT4Y9J), while the Arc policy keeps every normal in the alphabet and every vertex integer, verified across six voxel fixtures with Blender's Arc bevel as an exact, integer-diffable oracle (#WK4YU4) — the independent oracle this mark asked for, stronger than the closeups it anticipated. The work grain is stated in #8UGGY0: ordinary faces keep a single quad, bands are per-edge instances, junction fans are per-vertex instances, so the ordinary face cost is unchanged. Implementation is selected as #RO2OCL, with the exhaustive star sweep as #WJRRK7.