code wiki / (root) / nx_gpe_hair_geometry_gate.nx

nx_gpe_hair_geometry_gate.nx

buildroot/runtime/nx_gpe_hair_geometry_gate.nx

9957 B223 linesdepth 11pulls 49 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

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

nx_syscalls.nx nx_gate_verdict.nx nx_game_page_emit.nx nx_gpe_hair_geometry_gate.nx

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

main gv_ctr sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ gv_head gv_puts sys_write ↻ gpe_hair_nseg gpe_hstr_pts gpe_hair_frames gv_puts ↻ gv_num sys_mmap ↻ sys_write ↻ sys_munmap hd_ticks_per_s sd_isqrt vm_isqrt gv_check gv_puts ↻ sys_mmap ↻ gpe_hair_chain_bake gpe_hair_nseg ↻ gpe_hair_frames ↻ gpe_hair_seglen hd_alloc sd_alloc

structs

none

consts

26const HGG_BUF: i64 = 1048576
27const HGG_TBL_SLOTS: i64 = 8192

functions

32func hgg_find(b: *u8, n: i64, s: *u8) -> i64
called by 1: main
53func hgg_distinct(t: *i64, off: i64, n: i64) -> i64
called by 1: main
70func hgg_varies(t: *i64, n: i64, f: i64) -> i64
called by 1: main
86func hgg_sign_changes(t: *i64, n: i64, f: i64, seg: i64) -> i64
called by 1: main
104func hgg_seg_maxabs(t: *i64, n: i64, f: i64, seg: i64) -> i64
called by 1: main
116func main() -> i64