code wiki / (root) / nx_nxa_texbake.nx

nx_nxa_texbake.nx source

↩ module page · 63 lines · 2566 B

1// nx_nxa_texbake.nx -- CLI for the texture ladder (debt 1786546859): 2// nx_nxa_texbake bake <in.nxa> <out.png> [res=2048] [seed=1] albedo atlas from TEXC+SKEL regions 3// nx_nxa_texbake view <in.nxa> <out.png> [res=1024] [seed=1] textured 3-view turntable render 4// Core in nx_nxa_texbake_lib.nx (the gate imports the same implementation). Fail-closed, named reasons. 5// license_tier: ORIGINAL expect_exit: 0 6import "nx_syscalls.nx" 7import "nx_nxa_texbake_lib.nx" 8const K_MAGIC_2048: i64 = 2048 9const K_MAGIC_1024: i64 = 1024 10 11func na_atoi(s: *u8) -> i64 { 12 var v: i64 = 0 13 var i: i64 = 0 14 while s[i] != (0 as u8) { 15 let c: i64 = s[i] as i64 16 if c >= 48 { if c <= 57 { v = v*10 + (c - 48) } } 17 i = i + 1 18 } 19 return v 20} 21 22func main(argc: i64, argv: *i64) -> i64 { 23 if argc < 4 { 24 nt_err("usage: nx_nxa_texbake bake <in.nxa> <out.png> [res=2048] [seed=1]\n" as *u8) 25 nt_err(" nx_nxa_texbake view <in.nxa> <out.png> [res=1024] [seed=1]\n" as *u8) 26 nt_err(" bake: fill the TEXC atlas with per-region skin albedo (Face|Torso|Limbs|Gens from SKEL anatomy)\n" as *u8) 27 nt_err(" view: bind the baked atlas to the renderer's per-fragment image path and render a turntable\n" as *u8) 28 sys_exit(2) 29 return 2 30 } 31 let verb: *u8 = argv[1] as *u8 32 let inp: *u8 = argv[2] as *u8 33 let outp: *u8 = argv[3] as *u8 34 var res: i64 = 0 35 var seed: i64 = 1 36 if argc >= 5 { res = na_atoi(argv[4] as *u8) } 37 if argc >= 6 { seed = na_atoi(argv[5] as *u8) } 38 let lp: *i64 = sys_mmap(16) as *i64 39 let b: *u8 = sys_read_file(inp, lp) 40 if (b as i64) == 0 { nt_err("TEXBAKE-REFUSE cannot read input NXA\n" as *u8); sys_exit(1); return 1 } 41 if (verb[0] as i64) == 98 { 42 if res == 0 { res = K_MAGIC_2048 } 43 let atlas: *u8 = sys_mmap(res*res*3 + 64) 44 let rc: i64 = ntb_bake(b, lp[0], res, seed, atlas) 45 if rc != 0 { sys_exit(0 - rc); return 0 - rc } 46 ntb_write_atlas_png(atlas, res, outp) 47 nt_outs("TEXBAKE-OK res=" as *u8); nt_outn(res) 48 nt_outs(" seed=" as *u8); nt_outn(seed) 49 nt_outs(" -> " as *u8); nt_outs(outp); nt_outs("\n" as *u8) 50 sys_exit(0) 51 return 0 52 } 53 if (verb[0] as i64) == 118 { 54 if res == 0 { res = K_MAGIC_1024 } 55 let rc2: i64 = ntb_view(b, lp[0], res, seed, outp) 56 if rc2 != 0 { sys_exit(0 - rc2); return 0 - rc2 } 57 sys_exit(0) 58 return 0 59 } 60 nt_err("TEXBAKE-REFUSE unknown verb (bake|view)\n" as *u8) 61 sys_exit(2) 62 return 2 63}