code wiki / (root) / nx_cast_normal_gate_t133.nx

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}