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}