wip(assembler): round L35 -- smooth passage walls without regular ribs (evaluator v21)

The shared passage carve took the minimum of piecewise-linear capsules (scallops at joins) and added
wall relief on regular 8 m / 4 m octaves, which read as evenly spaced ribs. Interior sweep joins are
now Catmull-Rom smoothed and the relief uses irregular rotated 43/29/19 m scales; the natural wobble
remains. New axial ripple audit (0.125 m radius samples, 0.5-8 m periods): beaded control and L34
geometry fail, all 24 passage rows pass. FI mouth tread apron tapered. 30/30 determinism, 16/16
invariants, ring audits LOD0-8 pass; cost within noise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-22 07:28:50 +02:00
1 parent 49e29fcd36
commit ba017077d1
28 files changed
+1727 -17

No files matched your search

+26 -1
View File
@@ -965,7 +965,32 @@ bool PlanResolvedLayoutPassagesV1(ResolvedLayoutSnapshotV3& layout,std::int32_t
const double ledge=std::min<double>(ringRadius/4,
static_cast<double>(cfg?std::max<std::int64_t>(0,
cfg->cascadeLedgeSubvoxels):0));
radius-=ledge*(0.5-0.5*std::cos(angle*steps));
// Give each turn a seeded, shallow angular profile so the same cosine
// scallop cannot repeat at full ledge depth on every revolution.
const std::uint32_t controlCount=std::clamp(steps*2u,8u,
segments/2u);
const double coordinate=angle*controlCount
/(2.0*3.14159265358979323846);
const std::uint32_t control0=static_cast<std::uint32_t>(std::floor(coordinate));
const std::uint32_t control1=(control0+1u)%controlCount;
const double blend=coordinate-std::floor(coordinate);
const auto controlValue=[&](std::uint32_t control)
{
const std::uint32_t salt=0x43415343u
^(loopIndex*0x9e3779b9u)^(control*0x85ebca6bu);
const std::uint32_t bits=static_cast<std::uint32_t>(PassageSeed(seed,
upper.strateIndex,lower.strateIndex,connection,salt)>>40);
return 2.0*static_cast<double>(bits)/16777215.0-1.0;
};
const double smooth=blend*blend*(3.0-2.0*blend);
const double irregular=std::lerp(controlValue(control0),
controlValue(control1),smooth);
const std::uint32_t loopHash=static_cast<std::uint32_t>(PassageSeed(seed,
upper.strateIndex,lower.strateIndex,connection,
0x4c454447u+loopIndex)>>40);
const double amplitude=0.60+0.40
*static_cast<double>(loopHash)/16777215.0;
radius-=ledge*amplitude*(0.24+0.10*irregular);
}
if(pathStyle!=1u&&anchoredIslandPassage&&passageAnchor)
{