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}