code wiki / _hdl_build / nx_d3d_shade_gate.nx

nx_d3d_shade_gate.nx source

↩ module page · 96 lines · 5292 B

1// nx_d3d_shade_gate.nx -- D3: SHADE a rasterized triangle by EXECUTING a real shader, graded pixel-exact vs WARP. 2// Composes the sovereign pieces: nx_dxbc_exec (run the real fxc shader -> fragment color) + our barycentric rasterizer 3// (WARP-perfect coverage) -> a shaded frame. Graded against WARP's actual output (knowledge/warp_shaded.ppm). API- 4// agnostic backend (serves D3D or Vulkan). WARP/fxc = benchmark oracles only; the stack is 100% NishiLang. license_tier: ORIGINAL expect_exit: 0 5import "nx_syscalls.nx" 6import "nx_dxbc.nx" 7import "nx_dxbc_exec.nx" 8import "nx_f32_hw.nx" 9 10func hw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 11func 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 } 12func edge(ax: i64, ay: i64, bx: i64, by: i64, px: i64, py: i64) -> i64 { return (bx-ax)*(py-ay) - (by-ay)*(px-ax) } 13func tri_in(px: i64, py: i64, sgn: i64) -> i64 { 14 let sx: i64 = 2*px + 1; let sy: i64 = 2*py + 1 15 let w0: i64 = edge(64,32,96,96,sx,sy) * sgn // (x1,y1,x2,y2) 16 let w1: i64 = edge(96,96,32,96,sx,sy) * sgn // (x2,y2,x0,y0) 17 let w2: i64 = edge(32,96,64,32,sx,sy) * sgn // (x0,y0,x1,y1) 18 if w0 >= 0 { if w1 >= 0 { if w2 >= 0 { return 1 } } } 19 return 0 20} 21// float32 [0,1] -> UNORM u8, D3D-style round(f*255) 22func to_unorm(bits: i64) -> i64 { return f32_int(f32_add(f32_mul(bits, f32_of(255)), f32_div(f32_of(1), f32_of(2)))) } 23 24func main() -> i64 { 25 hw("=== nx_d3d_shade_gate -- D3: EXECUTE a real shader to shade a triangle, grade vs WARP ===\n" as *u8) 26 var fails: i64 = 0 27 let szc: *i64 = sys_mmap(16) as *i64 28 let cso: *u8 = sys_read_file("knowledge/shaded_ps.cso" as *u8, szc) 29 let nc: i64 = szc[0] 30 let szp: *i64 = sys_mmap(16) as *i64 31 let ppm: *u8 = sys_read_file("knowledge/warp_shaded.ppm" as *u8, szp) 32 if (cso as i64) == 0 { hw("FAIL no shaded_ps.cso\n" as *u8); sys_exit(1); return 1 } 33 if (ppm as i64) == 0 { hw("FAIL no warp_shaded.ppm\n" as *u8); sys_exit(1); return 1 } 34 var hdr: i64 = 0; var nl: i64 = 0; var i: i64 = 0 35 while i < 40 { if ppm[i] == (10 as u8) { nl = nl + 1; if nl == 3 { hdr = i + 1; i = 40 } } i = i + 1 } 36 37 // EXECUTE the real fxc shader -> fragment color 38 let payoff: i64 = dxbc_find(cso, nc, dx_fourcc(83, 72, 69, 88)) 39 let regs: *i64 = sys_mmap(256*8) as *i64 40 sh_execute(cso, payoff, nc, regs) 41 let r: i64 = to_unorm(regs[64]) 42 let g: i64 = to_unorm(regs[65]) 43 let b: i64 = to_unorm(regs[66]) 44 hw(" OUR executed shader color = ("); pn(r); hw(","); pn(g); hw(","); pn(b); hw(")\n" as *u8) 45 46 // T1 shader color matches WARP's interior pixel 47 let wr: i64 = ppm[hdr + (32*64 + 32)*3] as i64 48 let wg: i64 = ppm[hdr + (32*64 + 32)*3 + 1] as i64 49 let wb: i64 = ppm[hdr + (32*64 + 32)*3 + 2] as i64 50 hw(" WARP interior color = ("); pn(wr); hw(","); pn(wg); hw(","); pn(wb); hw(")\n" as *u8) 51 var t1: i64 = 0 52 if r == wr { if g == wg { if b == wb { t1 = 1 } } } 53 if t1 == 1 { hw("T1 PASS our shader-executed color == WARP's shaded pixel (128,64,191)\n" as *u8) } else { fails=fails+1; hw("T1 FAIL color mismatch\n" as *u8) } 54 55 // rasterize + full-frame pixel-diff vs WARP 56 var area: i64 = edge(32,96,64,32,96,96) 57 var sgn: i64 = 1 58 if area < 0 { sgn = 0 - 1 } 59 let out: *u8 = sys_mmap(64*64*3 + 32) 60 var agree: i64 = 0 61 var cov: i64 = 0 62 var y: i64 = 0 63 while y < 64 { 64 var x: i64 = 0 65 while x < 64 { 66 let inside: i64 = tri_in(x, y, sgn) 67 var orr: i64 = 0; var ogg: i64 = 0; var obb: i64 = 0 68 if inside == 1 { orr = r; ogg = g; obb = b; cov = cov + 1 } 69 let o3: i64 = (y*64 + x)*3 70 out[o3] = orr as u8; out[o3+1] = ogg as u8; out[o3+2] = obb as u8 71 let wrr: i64 = ppm[hdr + o3] as i64 72 let wgg: i64 = ppm[hdr + o3 + 1] as i64 73 let wbb: i64 = ppm[hdr + o3 + 2] as i64 74 if orr == wrr { if ogg == wgg { if obb == wbb { agree = agree + 1 } } } 75 x = x + 1 76 } 77 y = y + 1 78 } 79 hw(" coverage="); pn(cov); hw(" pixel-agreement vs WARP="); pn(agree); hw("/4096\n" as *u8) 80 var t2: i64 = 0 81 if agree == 4096 { t2 = 1 } 82 if t2 == 1 { hw("T2 PASS shaded frame is PIXEL-IDENTICAL to WARP (4096/4096) -- shader-execute + raster both match Microsoft\n" as *u8) } else { fails=fails+1; hw("T2 FAIL agreement="); pn(agree); hw("\n" as *u8) } 83 84 // artifact: our shaded frame as a viewable PPM 85 let fd: i64 = sys_openat_wr("knowledge/nx_d3d_shaded.ppm\x00" as *u8, 0x1a4) 86 let h6: *u8 = "P6\n64 64\n255\n" as *u8 87 var hn: i64 = 0 88 while h6[hn] != (0 as u8) { hn = hn + 1 } 89 sys_write(fd, h6, hn); sys_write(fd, out, 64*64*3); sys_close(fd) 90 hw("T3 artifact -> knowledge/nx_d3d_shaded.ppm (our frame, viewable)\n" as *u8) 91 92 if fails == 0 { hw("NX-D3D-SHADE GREEN -- D3: a real shader shades a triangle, PIXEL-EXACT vs Microsoft WARP (sovereign stack)\n" as *u8); sys_exit(0); return 0 } 93 hw("NX-D3D-SHADE RED fails="); pn(fails); hw("\n" as *u8) 94 sys_exit(1) 95 return 1 96}