nx_gpe_hair_geometry_gate.nx
buildroot/runtime/nx_gpe_hair_geometry_gate.nx
about
nx_gpe_hair_geometry_gate.nx -- GATE: prove /world/beach renders hair GEOMETRY that MOVES with
the N-segment chain, and prove the same measurement CANNOT pass on rigid hair.
WHAT THIS GATE IS FOR. Two capabilities shipped and never met. ref9d.nxa carries real groom
geometry (HSTR, 2200 strands x 8 points -- measured by nx_asset_floor_gate, sections=16) and the
page drew it RIGID: every hair vertex skinned haw=1 to the head joint, a helmet. nx_hairdyn_lib
shipped a spring-bone chain on nx_softdyn's one solver and was imported by NOTHING but its own
gate. gpe_hair_geometry is the join. These teeth measure the join rather than asserting it.
THE ANTI-VACUITY SUBJECT IS THE LIB'S OWN RIGID CONTROL. hd_tick_rigid is not a mutant I wrote
for this gate -- it ships in nx_hairdyn_lib precisely as "the ABSENCE of the solver", the
trivial wrong implementation that still has hair in the sense that the joints exist and follow
the head. Baking with it yields a table that cannot vary and cannot differ between segments, so
every motion tooth below is proven against the exact thing this rung replaces.
NO TOLERANCE IS CHOSEN ANYWHERE. Every tooth is a COUNT or an INEQUALITY against zero or one:
does the table vary at all, does it supply more than one distinct offset, does the swing change
sign. A threshold picked to make a swing "big enough" would be the magic number this estate
refuses, and none is needed to separate a chain from a helmet.
license_tier: ORIGINAL No hw writes (Rule 26).
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_game_page_emit.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 26 | const HGG_BUF: i64 = 1048576 |
| 27 | const HGG_TBL_SLOTS: i64 = 8192 |
functions
| 32 | func hgg_find(b: *u8, n: i64, s: *u8) -> i64 called by 1: main |
| 53 | func hgg_distinct(t: *i64, off: i64, n: i64) -> i64 called by 1: main |
| 70 | func hgg_varies(t: *i64, n: i64, f: i64) -> i64 called by 1: main |
| 86 | func hgg_sign_changes(t: *i64, n: i64, f: i64, seg: i64) -> i64 called by 1: main |
| 104 | func hgg_seg_maxabs(t: *i64, n: i64, f: i64, seg: i64) -> i64 called by 1: main |
| 116 | func main() -> i64 |