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}