code wiki / _hdl_build / nx_stdassets_gate.nx

nx_stdassets_gate.nx source

↩ module page · 92 lines · 6014 B

1// nx_stdassets_gate.nx -- ★FIELD-STANDARD EVIDENCE (the graphics MSU): load + render the KHRONOS glTF conformance 2// assets -- REAL third-party bytes (Box.glb "start with this", Duck.glb the COLLADA duck) -- on OUR renderer. This is 3// the anti-ellipsoid mechanism: evidence defined by the FIELD, not our own round-tripped exports. 4// T1 Box parses to its KNOWN canonical structure (24 verts / 12 tris) + renders red (its baseColorFactor 0.8,0,0). 5// T2 Duck parses (>2000 verts) + renders. T3 determinism. T4 regression (our own .glb still loads exactly). 6// T5 evidence gallery -> knowledge/nx_stdassets.png. license_tier: ORIGINAL expect_exit: 0 7import "nx_syscalls.nx" 8import "nx_png.nx" 9import "nx_trimesh.nx" 10import "nx_gltf_load.nx" 11 12func hw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 13func pn(v: i64) -> i64 { let b: *u8=sys_mmap(32) as *u8; var x: i64=v; var ng: i64=0; if x<0{ng=1;x=0-x} var i: i64=31; if x==0{b[i]=48 as u8;i=i-1} while x>0{b[i]=(48+x%10) as u8;x=x/10;i=i-1} if ng==1{b[i]=45 as u8;i=i-1} sys_write(1,(b as i64+i+1) as *u8,31-i); return 0 } 14func clearfb(fb: *i64, n: i64, c: i64) -> i64 { var i: i64=0; while i<n { fb[i]=c; i=i+1 } return 0 } 15func filled(fb: *i64, n: i64, bg: i64) -> i64 { var c: i64=0; var i: i64=0; while i<n { if fb[i]!=bg { c=c+1 } i=i+1 } return 0+c } 16func reddish(fb: *i64, n: i64) -> i64 { var c: i64=0; var i: i64=0; while i<n { let p: i64=fb[i]; let r: i64=p&255; let g: i64=(p>>8)&255; let b: i64=(p>>16)&255; if r>g+30 { if r>b+30 { c=c+1 } } i=i+1 } return c } 17 18const BG: i64 = 24 + 26*256 + 34*65536 19const W: i64 = 300 20const H: i64 = 300 21 22func main() -> i64 { 23 hw("=== nx_stdassets_gate -- Khronos conformance assets on the Nishi renderer (field evidence) ===\n" as *u8) 24 var fails: i64 = 0 25 let npx: i64 = W*H 26 let fb: *i64 = sys_mmap(npx*8) as *i64 27 let zb: *i64 = sys_mmap(npx*8) as *i64 28 tm_set_spec(0) 29 tm_set_tex(0) 30 31 // ---- T1 Box.glb (canonical: 24 verts / 12 tris, red material) ---- 32 let okB: i64 = gltf_load_std("knowledge/stdassets/Box.glb" as *u8, 520) 33 let bv: i64 = tm_nv(); let bt: i64 = tm_nt() 34 clearfb(fb, npx, BG); trimesh_zclear(zb, npx); trimesh_render(fb, zb, W, H, 2600, 0-600, 1500, 520, 2) 35 let bfil: i64 = filled(fb, npx, BG); let bred: i64 = reddish(fb, npx) 36 hw(" Box: ok="); pn(okB); hw(" verts="); pn(bv); hw(" tris="); pn(bt); hw(" filled="); pn(bfil); hw(" reddish="); pn(bred); hw("\n" as *u8) 37 var t1: i64 = 0 38 if okB == 1 { if bv == 24 { if bt == 12 { if bfil > 3000 { if bred > 2000 { t1 = 1 } } } } } 39 if t1 == 1 { hw("T1 PASS Khronos Box.glb: EXACT canonical structure (24v/12t) parsed + renders RED per its own material\n" as *u8) } 40 else { fails=fails+1; hw("T1 FAIL\n" as *u8) } 41 42 // ---- T2 Duck.glb ---- 43 let okD: i64 = gltf_load_std("knowledge/stdassets/Duck.glb" as *u8, 1000) 44 let dv: i64 = tm_nv(); let dt: i64 = tm_nt() 45 clearfb(fb, npx, BG); trimesh_zclear(zb, npx); trimesh_render(fb, zb, W, H, 2200, 0-300, 2200, 520, 2) 46 let dfil: i64 = filled(fb, npx, BG) 47 hw(" Duck: ok="); pn(okD); hw(" verts="); pn(dv); hw(" tris="); pn(dt); hw(" filled="); pn(dfil); hw(" ovf="); pn(tm_ovf()); hw("\n" as *u8) 48 var t2: i64 = 0 49 if okD == 1 { if dv > 2000 { if dt > 2000 { if dfil > npx/20 { if tm_ovf() == 0 { t2 = 1 } } } } } 50 if t2 == 1 { hw("T2 PASS Khronos Duck.glb (the COLLADA duck): real third-party asset parses + renders on our stack\n" as *u8) } 51 else { fails=fails+1; hw("T2 FAIL\n" as *u8) } 52 53 // ---- T3 determinism (Duck) ---- 54 let f2: *i64 = sys_mmap(npx*8) as *i64 55 clearfb(f2, npx, BG); trimesh_zclear(zb, npx); trimesh_render(f2, zb, W, H, 2200, 0-300, 2200, 520, 2) 56 var diff: i64 = 0; var i: i64 = 0 57 while i < npx { if f2[i]!=fb[i] { diff=diff+1 } i=i+1 } 58 var t3: i64 = 0 59 if diff == 0 { t3 = 1 } 60 if t3 == 1 { hw("T3 PASS deterministic\n" as *u8) } else { fails=fails+1; hw("T3 FAIL diff="); pn(diff); hw("\n" as *u8) } 61 62 // ---- T4 regression: our OWN .glb still loads exactly through the original loader ---- 63 let okO: i64 = gltf_load("knowledge/nishi_being.glb" as *u8) 64 var t4: i64 = 0 65 if okO == 1 { if tm_nv() == 7954 { if tm_nt() == 15912 { t4 = 1 } } } 66 if t4 == 1 { hw("T4 PASS regression: our own export still round-trips exactly (7954/15912)\n" as *u8) } 67 else { fails=fails+1; hw("T4 FAIL own-glb regression nv="); pn(tm_nv()); hw("\n" as *u8) } 68 69 // ---- T5 evidence gallery: Box | Duck front | Duck 3/4 ---- 70 let GW: i64 = W*3 71 let gal: *i64 = sys_mmap(GW*H*8) as *i64 72 clearfb(gal, GW*H, BG) 73 let cell: *i64 = sys_mmap(npx*8) as *i64 74 gltf_load_std("knowledge/stdassets/Box.glb" as *u8, 520) 75 clearfb(cell,npx,BG); trimesh_zclear(zb,npx); trimesh_render(cell,zb,W,H,2600,0-600,1500,520,2) 76 var y: i64 = 0 77 while y < H { var x: i64=0; while x<W { gal[y*GW+x]=cell[y*W+x]; x=x+1 } y=y+1 } 78 gltf_load_std("knowledge/stdassets/Duck.glb" as *u8, 1000) 79 clearfb(cell,npx,BG); trimesh_zclear(zb,npx); trimesh_render(cell,zb,W,H,0,0-200,2200,520,2) 80 y = 0 81 while y < H { var x: i64=0; while x<W { gal[y*GW+W+x]=cell[y*W+x]; x=x+1 } y=y+1 } 82 clearfb(cell,npx,BG); trimesh_zclear(zb,npx); trimesh_render(cell,zb,W,H,2200,0-300,2200,520,2) 83 y = 0 84 while y < H { var x: i64=0; while x<W { gal[y*GW+2*W+x]=cell[y*W+x]; x=x+1 } y=y+1 } 85 write_png(gal, GW, H, "knowledge/nx_stdassets.png" as *u8) 86 hw("T5 evidence -> knowledge/nx_stdassets.png (Khronos Box | Duck front | Duck 3/4)\n" as *u8) 87 88 if fails == 0 { hw("STDASSETS-GATE GREEN -- the FIELD'S conformance assets (Khronos Box exact-canonical + Duck) parse and render on the sovereign renderer: external evidence, not self-referential round-trips. Residual: textures (BoxTextured/DamagedHelmet), skinning assets (RiggedSimple), Stanford PLY corpus, Cornell GI reference.\n" as *u8); sys_exit(0); return 0 } 89 hw("STDASSETS-GATE RED fails="); pn(fails); hw("\n" as *u8) 90 sys_exit(1) 91 return 1 92}