nx_eye_aperture_gate_t203.nx source
↩ module page · 18 lines · 2126 B
1import "nx_wgsl.nx"
2import "nx_gate_verdict.nx"
3import "nx_cast_shader_src.nx"
4
5func main()->i64{
6 let c:*i64=gv_ctr();let m:*i64=sir_new()
7 sir_uniform(m,"uPoint" as *u8,T_V3F,0);sir_uniform(m,"uOrigin" as *u8,T_V3F,0);sir_uniform(m,"uRight" as *u8,T_V3F,0);sir_uniform(m,"uUp" as *u8,T_V3F,0);sir_uniform(m,"uDepth" as *u8,T_V3F,0);sir_uniform(m,"uMin" as *u8,T_F32,0);sir_uniform(m,"uMax" as *u8,T_F32,0);sir_uniform(m,"uOpen" as *u8,T_F32,0);sir_fragout(m,"fc" as *u8,T_V4F,0)
8 let f:i64=sir_func(m,"main" as *u8,T_VOID)
9 let inside:i64=cs_aperture_contains_v1(m,cs_v3(m,"uPoint" as *u8),cs_v3(m,"uOrigin" as *u8),cs_v3(m,"uRight" as *u8),cs_v3(m,"uUp" as *u8),cs_v3(m,"uDepth" as *u8),cs_fl(m,"uMin" as *u8),cs_fl(m,"uMax" as *u8),cs_fl(m,"uOpen" as *u8))
10 let yes:i64=ws_set(m,ws_id(m,"fc" as *u8,T_V4F),ws_v4(m,ws_f(m,"1.0" as *u8),ws_f(m,"1.0" as *u8),ws_f(m,"1.0" as *u8),ws_f(m,"1.0" as *u8)))
11 let no:i64=ws_set(m,ws_id(m,"fc" as *u8,T_V4F),ws_v4(m,ws_f(m,"1.0" as *u8),ws_f(m,"0.0" as *u8),ws_f(m,"0.0" as *u8),ws_f(m,"1.0" as *u8)))
12 ws_st(m,f,ws_if(m,inside,yes,no))
13 let a:*u8=sys_mmap(WG_EMIT_CAP);let t:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64;let n:*i64=sys_mmap(8) as *i64;n[0]=0
14 let g:i64=glsl_emit_module(m,STAGE_FRAGMENT,a,WG_EMIT_CAP,t,WG_TRACE_CAP,n);gv_check("aperture-glsl-emits" as *u8,g>0,c);if g>0{sys_write(1,"APERTURE_GLSL_BEGIN\n" as *u8,20);sys_write(1,a,g);sys_write(1,"\nAPERTURE_GLSL_END\n" as *u8,19)}
15 n[0]=0;let w:i64=wgsl_emit_module(m,STAGE_FRAGMENT,a,WG_EMIT_CAP,t,WG_TRACE_CAP,n);gv_check("aperture-wgsl-emits" as *u8,w>0,c);if w>0{sys_write(1,"APERTURE_WGSL_BEGIN\n" as *u8,20);sys_write(1,a,w);sys_write(1,"\nAPERTURE_WGSL_END\n" as *u8,19)}
16 let layout:i64=wg_uniform_layout(m,a,0,WG_EMIT_CAP);gv_check("aperture-uniform-layout" as *u8,layout>0,c);if layout>0{var chars:i64=0;while chars<WG_EMIT_CAP&&a[chars]!=(0 as u8){chars=chars+1};gv_check("aperture-layout-text-complete" as *u8,chars<WG_EMIT_CAP,c);if chars<WG_EMIT_CAP{sys_write(1,a,chars)}}
17 return gv_verdict("eye-aperture-shared-expression" as *u8,c,"emission only; actual pixel and pose qualification separate" as *u8)
18}