code wiki / _hdl_build / nx_gsplat_face_gate.nx

nx_gsplat_face_gate.nx source

↩ module page · 143 lines · 6841 B

1// nx_gsplat_face_gate.nx -- ★THE FRONTIER PIPELINE, SOVEREIGN: our own anatomical base mesh -> 3D GAUSSIANS -> 2// splat-rendered, colours from the reference projection. This is exactly what GaussianAvatars/HumanSplat do 3// (mesh/SMPL-X -> Gaussians -> splat), built entirely on our stack: nx_faceanat (inside-out geometry) -> 4// nx_meshgen (surface-nets verts) -> nx_gsplat (integer splatting). No trained weights (only a generator would). 5// T1 the mesh's verts become Gaussians and SPLAT into a coherent face-sized soft surface 6// T2 the reference PROJECTION colours the front-band Gaussians (photo-textured splats) -- a healthy painted count 7// T3 determinism + PNG knowledge/nx_gsplat_face.png 8// license_tier: ORIGINAL expect_exit: 0 9import "nx_syscalls.nx" 10import "nx_jpeg_ascii.nx" 11import "nx_faceanat.nx" 12import "nx_meshgen.nx" 13import "nx_gsplat.nx" 14import "nx_png.nx" 15 16func hw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 17func 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 } 18func lum(px: i64) -> i64 { return (px & 255) + ((px >> 8) & 255) + ((px >> 16) & 255) } 19 20const P_UC: i64 = 256 21const P_VC: i64 = 329 22const P_SU: i64 = 333 23const P_SV: i64 = 350 24const P_VLO: i64 = 240 25const P_VHI: i64 = 440 26 27func main() -> i64 { 28 hw("=== nx_gsplat_face_gate -- our anatomical mesh -> 3D Gaussians -> splat (frontier pipeline, sovereign) ===\n" as *u8) 29 var fails: i64 = 0 30 let W: i64 = gs_w() 31 let H: i64 = gs_h() 32 let npx: i64 = W * H 33 34 // emit the anatomical face mesh (surface-nets verts = the Gaussian centres) 35 let base: i64 = sys_mmap(sdf_bytes()) as i64 36 let F: *i64 = sys_mmap((MG_N+1)*(MG_N+1)*(MG_N+1)*8) as *i64 37 let cubevi: *i64 = sys_mmap(MG_N*MG_N*MG_N*8) as *i64 38 let vbuf: *i64 = sys_mmap(MG_MAXV*3*8) as *i64 39 let fbuf: *i64 = sys_mmap(MG_MAXF*3*8) as *i64 40 let mo: *i64 = sys_mmap(16) as *i64 41 faceanat_build(base) 42 mg_build(base, F, cubevi, vbuf, fbuf, mo) 43 let nv: i64 = mo[0] 44 hw(" mesh verts (= gaussians): "); pn(nv); hw("\n" as *u8) 45 46 // decode the reference for per-gaussian colour 47 let szp: *i64 = sys_mmap(16) as *i64 48 let jpeg: *u8 = sys_read_file("knowledge/elara_face_hi.jpg" as *u8, szp) 49 var tex: i64 = 0 50 var tw: i64 = 0 51 var th: i64 = 0 52 if (jpeg as i64) != 0 { 53 let rgbp: *i64 = sys_mmap(8) as *i64 54 let twp: *i64 = sys_mmap(8) as *i64 55 let thp: *i64 = sys_mmap(8) as *i64 56 if nx_jpeg_decode_rgb(jpeg, szp[0], rgbp, twp, thp) == NX_JPEG_ASCII_OK { tex = rgbp[0]; tw = twp[0]; th = thp[0] } 57 } 58 let rgb: *u8 = tex as *u8 59 60 // build the gaussian cloud: one gaussian per vert, scale so neighbours overlap into a surface, colour from 61 // the projection (front-band) else a normal-shaded skin tone. 62 let gauss: *i64 = sys_mmap(nv*8*8) as *i64 63 var painted: i64 = 0 64 var vi: i64 = 0 65 while vi < nv { 66 let x: i64 = vbuf[vi*3] 67 let y: i64 = vbuf[vi*3+1] 68 let z: i64 = vbuf[vi*3+2] 69 // sdf-gradient normal (front-facing = nz<0) 70 let e: i64 = 12 71 let gx: i64 = sdf_eval(base, x+e, y, z) - sdf_eval(base, x-e, y, z) 72 let gy: i64 = sdf_eval(base, x, y+e, z) - sdf_eval(base, x, y-e, z) 73 let gz: i64 = sdf_eval(base, x, y, z+e) - sdf_eval(base, x, y, z-e) 74 // default: skin tone shaded by lambert (light upper-front-left) 75 let gl: i64 = gs_expn() // reuse as a nonzero guard? no -- compute length 76 let nl: i64 = gx*(0-121) + gy*191 + gz*(0-121) // dot with light dir (unnormalized) 77 let glen: i64 = gx*gx + gy*gy + gz*gz 78 var sh: i64 = 150 79 if glen > 0 { sh = 130 + nl * 90 / (glen + 1) } 80 if sh < 70 { sh = 70 } 81 if sh > 255 { sh = 255 } 82 var cr: i64 = sh * 236 / 255 83 var cg: i64 = sh * 180 / 255 84 var cb: i64 = sh * 156 / 255 85 // reference projection on front-band verts 86 if tex != 0 { if gz < 0 - 2 { 87 let u: i64 = P_UC + x * P_SU / 1024 88 let v: i64 = P_VC - y * P_SV / 1024 89 if v >= P_VLO { if v < P_VHI { if u >= 1 { if u < tw-1 { if v < th-1 { 90 let o: i64 = (v*tw+u)*3 91 cr = (rgb[o] as i64)&255; cg = (rgb[o+1] as i64)&255; cb = (rgb[o+2] as i64)&255 92 painted = painted + 1 93 } } } } } 94 } } 95 gs_set(gauss, vi, x, y, z, 24, cr, cg, cb, 235) 96 vi = vi + 1 97 } 98 hw(" painted (reference-coloured) gaussians: "); pn(painted); hw("\n" as *u8) 99 100 // splat 101 let fb: *i64 = sys_mmap(npx*8) as *i64 102 let acc: *i64 = sys_mmap(npx*3*8) as *i64 103 let trans: *i64 = sys_mmap(npx*8) as *i64 104 let depth: *i64 = sys_mmap(nv*8) as *i64 105 let sxb: *i64 = sys_mmap(nv*8) as *i64 106 let syb: *i64 = sys_mmap(nv*8) as *i64 107 let sigb: *i64 = sys_mmap(nv*8) as *i64 108 let order: *i64 = sys_mmap(nv*8) as *i64 109 let count: *i64 = sys_mmap((gs_nb()+2)*8) as *i64 110 let explut: *i64 = sys_mmap(gs_expn()*8) as *i64 111 gs_build_explut(explut) 112 gs_render(gauss, nv, 200, 4, fb, acc, trans, depth, sxb, syb, sigb, order, count, explut, 26, 28, 44) 113 114 var face: i64 = 0 115 var pi: i64 = 0 116 while pi < npx { if lum(fb[pi]) > 130 { face = face + 1 } pi = pi + 1 } 117 hw(" splatted face px (non-bg): "); pn(face); hw("\n" as *u8) 118 var t1: i64 = 0 119 if face > 8000 { t1 = 1 } 120 if t1 == 1 { hw("T1 PASS the mesh's verts splat into a coherent face-sized surface\n" as *u8) } 121 else { fails=fails+1; hw("T1 FAIL too small\n" as *u8) } 122 123 var t2: i64 = 0 124 if painted > 200 { t2 = 1 } 125 if t2 == 1 { hw("T2 PASS reference projection colours the front-band gaussians (photo-textured splats)\n" as *u8) } 126 else { fails=fails+1; hw("T2 FAIL projection\n" as *u8) } 127 128 let fb2: *i64 = sys_mmap(npx*8) as *i64 129 gs_render(gauss, nv, 200, 4, fb2, acc, trans, depth, sxb, syb, sigb, order, count, explut, 26, 28, 44) 130 var diff: i64 = 0 131 pi = 0 132 while pi < npx { if fb[pi] != fb2[pi] { diff = diff + 1 } pi = pi + 1 } 133 write_png(fb, W, H, "knowledge/nx_gsplat_face.png" as *u8) 134 var t3: i64 = 0 135 if diff == 0 { t3 = 1 } 136 if t3 == 1 { hw("T3 PASS deterministic + PNG knowledge/nx_gsplat_face.png\n" as *u8) } 137 else { fails=fails+1; hw("T3 FAIL diff="); pn(diff); hw("\n" as *u8) } 138 139 if fails == 0 { hw("GSPLAT-FACE-GATE 3/3 GREEN -- our anatomical base, rendered via 3D GAUSSIAN SPLATTING (the frontier rep), photo-coloured, sovereign + integer + deterministic\n" as *u8); sys_exit(0); return 0 } 140 hw("GSPLAT-FACE-GATE RED fails="); pn(fails); hw("\n" as *u8) 141 sys_exit(1) 142 return 1 143}