nx_worldpipe_relief_contact_gate_t140.nx source
↩ module page · 36 lines · 1971 B
1// Current canonical consumer qualification with a controlled non-flat HQ fixture.
2// Does not install the candidate producer or claim full integrated worldgen.
3import "_hdl_build/nx_wasm_craft_move_t72.nx"
4import "nx_gate_verdict.nx"
5func main() -> i64 {
6 let ctr: *i64 = gv_ctr()
7 gv_head("RELIEF / current Q8 consumer contract" as *u8)
8 let arena: *u8 = sys_mmap_shared(CRAFT_EXT_TOTAL)
9 if (arena as i64) <= 0 { return 3 }
10 let base: i64 = arena as i64
11 wc_spec(base,2)
12 gv_check_eq("current Beach smooth surface enabled",wsp(base)[P_SURF],1,ctr)
13 gv_check_eq("current Beach erosion disabled",wsp(base)[P_ERODE],0,ctr)
14 gv_check_eq("current Beach staged terrain disabled",wsp(base)[P_WPIPE],0,ctr)
15 // All surrounding terrain samples form an analytic ramp, zero structures.
16 var z: i64 = 0
17 while z < WZ {
18 var x: i64 = 0
19 while x < WX { hq_set(base,x,z,11*256+x+2*z); x = x + 1 }
20 z = z + 1
21 }
22 let xq: i64 = 32*256+128
23 let zq: i64 = 32*256+128
24 // Bilinear shader surf is 12+97.5/256 blocks. Native truncates to Q8.
25 let expected: i64 = 12*256+97
26 gv_check_eq("native bilinear field is analytic ramp",wc_surface_source(base,xq,zq),expected,ctr)
27 gv_check_eq("NPC floor consumer reads same field",wc_contact_floor_q(base,xq,zq,WY-1),expected,ctr)
28 gv_check_eq("player exact supported pose is clear",wc_player_position_clear(base,xq,expected+EYE,zq),1,ctr)
29 gv_check_eq("player one Q8 unit below field refused",wc_player_position_clear(base,xq,expected+EYE-1,zq),0,ctr)
30 gv_check_eq("last-column missing interpolation corner refused",wc_surface_source(base,(WX-1)*256,zq),0-1,ctr)
31 gv_kv("shader_exact_surface_numerator_q8_times2",expected*2+1)
32 gv_kv("native_surface_q8",expected)
33 gv_kv("shader_native_quantization_bound_q8",1)
34 gv_check_eq("owned gate arena released",sys_munmap(arena,CRAFT_EXT_TOTAL),0,ctr)
35 return gv_verdict("RELIEF-CONTACT" as *u8,ctr,"current native consumers only; actual GPU upload and integrated relief world remain pending" as *u8)
36}