code wiki / _hdl_build / nx_gx6_tonemap_gate.nx

nx_gx6_tonemap_gate.nx

buildroot/runtime/_hdl_build/nx_gx6_tonemap_gate.nx

9471 B197 linesdepth 3pulls 5 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

about

nx_gx6_tonemap_gate.nx -- seq260 EAT-BY-BUILD: a real fixed-point TONEMAP replaces the hard 255 clamp. MEASURED defect: 50.4 percent of a real game frame (Gx-4 walk tick5, 99090/196608 px) clamped to pure 255,255,255 -- every bright surface went FLAT, all material detail in highlights destroyed. A blown-out surface scores WORSE than a dim one with any detail-scoring critic, so this capped human_fidelity directly. sg_tonemap = extended Reinhard out = x(1+x/W^2)/(1+x) with an explicit white point. The point is not that pixels get darker -- it is that DISTINCT RADIANCES STAY DISTINCT. This gate proves exactly that, at the function level (against a simulated old clamp) and on a real bright render. license_tier: ORIGINAL expect_exit: 0

dependencies 2 imports · 0 importers

nx_swgpu.nx nx_png_write.nx nx_gx6_tonemap_gate.nx

imports: nx_swgpu.nxnx_png_write.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main tm_puts sg_tonemap tm_pn tm_oldclamp swgpu_bytes ww hh sg_humanoid sg_reset sg_add_ellipsoid it_sin4096 it_cos4096 it_sin4096 ↻ sg_isqrt sg_project it_cos4096 ↻ it_sin4096 ↻ sg_render sg_raster sg_fb sg_zb sg_imax sg_imin sg_isqrt ↻ sg_tonemap ↻ tm_fb_rgb sg_fb ↻ ww ↻ hh ↻ tm_stats hh ↻ ww ↻ nx_png_write_rgb sys_openat_wr sys_mmap sys_write pw_chunk pw_u32be sys_mmap ↻

structs

none

consts

none

functions

11func tm_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
called by 1: main
12func tm_pn(v: i64) -> i64 { let b: *u8=sys_mmap(32) as *u8; var x: i64=v; var ng: i64=0; if x<0{ng=1;x=0-x} var i: i64=31; if x==0{b[i]=48 as u8;i=i-1} while x>0{b[i]=(48+x%10) as u8;x=x/10;i=i-1} if ng==1{b[i]=45 as u8;i=i-1} sys_write(1,(b as i64+i+1) as *u8,31-i); return 0 }
called by 1: main
15func tm_oldclamp(v: i64) -> i64 { if v > 255 { return 255 } if v < 0 { return 0 } return v }
called by 1: main
17func tm_fb_rgb(base: i64, dst: *u8) -> i64
called by 1: main calls 3: sg_fbwwhh
31func tm_stats(rgb: *u8, hist: *i64, out: *i64) -> i64
called by 1: main calls 2: hhww
68func main() -> i64