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}