nx_cast_normal_gate_t133.nx source
↩ module page · 27 lines · 2235 B
1import "nx_wgsl.nx"
2import "nx_cast_surface_normal_t133.nx"
3import "nx_game_page_artifact_lib.nx"
4import "nx_gate_verdict.nx"
5func csurf_normal_probe_v1(m:*i64)->i64{
6 sir_storage(m,"samples",T_V4F,0,0,0);sir_storage(m,"results",T_V4F,1,1,0)
7 let f:i64=sir_func(m,"main",T_VOID);let gid:i64=sir_builtin(m,"global_invocation_id",T_V3U)
8 ws_st(m,f,sir_var(m,"q",T_I32,cs_i32(m,sir_swz(m,gid,"x",T_U32))))
9 ws_st(m,f,sir_var(m,"vN",T_V3F,ws_v1(m,T_V3F,ws_f(m,"0.0"))))
10 let at:i64=cs_imul(m,cs_i(m,"q"),ws_i(m,"3"))
11 let nn:i64=ws_sw(m,sir_index(m,sir_ident(m,"samples",T_V4F),at,T_V4F),"xyz",T_V3F)
12 let aa:i64=ws_sw(m,sir_index(m,sir_ident(m,"samples",T_V4F),cs_iadd(m,at,ws_i(m,"1")),T_V4F),"xyz",T_V3F)
13 let bb:i64=ws_sw(m,sir_index(m,sir_ident(m,"samples",T_V4F),cs_iadd(m,at,ws_i(m,"2")),T_V4F),"xyz",T_V3F)
14 csurf_finish_normal_v1(m,f,nn,aa,bb)
15 ws_st(m,f,ws_set(m,sir_index(m,sir_ident(m,"results",T_V4F),cs_i(m,"q"),T_V4F),ws_v4(m,cs_sx3(m,"vN","x"),cs_sx3(m,"vN","y"),cs_sx3(m,"vN","z"),ws_f(m,"0.0"))));return f
16}
17func main()->i64{
18 let c:*i64=gv_ctr();gv_head("ATTACHMENT FINITE NORMAL SOURCE")
19 let out:*u8=sys_mmap(WG_EMIT_CAP);let tr:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64;let tn:*i64=sys_mmap(16) as *i64
20 let v:*i64=sir_new();shsrc_cast_attachment_vs_v1(v);let n:i64=wgsl_emit_module(v,STAGE_VERTEX,out,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)
21 gv_check("attachment vertex emits guarded shared normal",n>0&&sir_refused(v)==0&&v[M_OVER]==0,c)
22 let fd:i64=sys_openat_wr("/tmp/cast-attachment-t133.wgsl",MODE_0644);var wrote:i64=-1;if fd>=0{wrote=sys_write(fd,out,n);sys_close(fd)};gv_check("complete guarded vertex artifact",wrote==n&&n>0,c)
23 let m:*i64=sir_new();csurf_normal_probe_v1(m);let z:i64=wgsl_emit_module(m,STAGE_COMPUTE,out,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)
24 gv_check("same native normal helper emits compute witness",z>0&&sir_refused(m)==0&&m[M_OVER]==0,c)
25 let pf:i64=sys_openat_wr("/tmp/cast-normal-probe-t133.wgsl",MODE_0644);var pw:i64=-1;if pf>=0{pw=sys_write(pf,out,z);sys_close(pf)};gv_check("complete native normal witness artifact",pw==z&&z>0,c)
26 gv_kv("vertex_bytes",n);gv_kv("probe_bytes",z);return gv_verdict("SURFACE-NORMAL133",c,"Native shader emission only; actual cancelling-normal GPU vectors pending")
27}