code wiki / (root) / nx_texture_mip_alpha_gate_t241.nx

nx_texture_mip_alpha_gate_t241.nx source

↩ module page · 16 lines · 1419 B

1import "nx_wgsl.nx" 2import "nx_tex_sample_mip_alpha_candidate_t241.nx" 3import "nx_gate_verdict.nx" 4func mip218_emit(m:*i64,stage:i64,label:*u8,c:*i64)->i64{ 5 let out:*u8=sys_mmap(WG_EMIT_CAP);let trace:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64;let count:*i64=sys_mmap(8) as *i64;count[0]=0 6 let g:i64=glsl_emit_module(m,stage,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,count);gv_check("GLSL emission",g>0,c);wg_puts(label);wg_puts("_GLSL_BEGIN\n");if g>0{sys_write(1,out,g)}wg_puts("\nEND_SHADER\n") 7 count[0]=0;let w:i64=wgsl_emit_module(m,stage,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,count);gv_check("WGSL emission",w>0,c);wg_puts(label);wg_puts("_WGSL_BEGIN\n");if w>0{sys_write(1,out,w)}wg_puts("\nEND_SHADER\n") 8 gv_check("no IR refusal",sir_refused(m)==0,c);sys_munmap(out,WG_EMIT_CAP);sys_munmap(trace as *u8,WG_TRACE_CAP*8);return 0 9} 10func main()->i64{ 11 let c:*i64=gv_ctr();let v:*i64=sir_new();shsrc_fullscreen_tri(v);mip218_emit(v,STAGE_VERTEX,"MIP_VERTEX",c) 12 let f:*i64=nx_txs_mip_fragment_alpha(1);mip218_emit(f,STAGE_FRAGMENT,"MIP_FRAGMENT",c) 13 let normal:*i64=nx_txs_mip_fragment_alpha(0);mip218_emit(normal,STAGE_FRAGMENT,"MIP_NORMAL_LINEAR_FRAGMENT",c) 14 let out:*u8=sys_mmap(WG_EMIT_CAP);let n:i64=wg_uniform_layout(f,out,0,WG_EMIT_CAP);gv_check("uniform layout",n>0,c);if n>0{wg_puts(out)} 15 return gv_verdict("texture-mip-emission",c,"native area mip builder; actual GPU pixels and alpha coverage remain separate") 16}