@developerz.ai/ts23d 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/CLAUDE.md +1 -1
- package/README.md +10 -5
- package/dist/{chunk-a8fxakcj.js → chunk-6b05mnmx.js} +2 -2
- package/dist/{chunk-kgvbpqqw.js → chunk-7rtfjh9f.js} +6 -5
- package/dist/chunk-7rtfjh9f.js.map +10 -0
- package/dist/{chunk-1ypfs7ga.js → chunk-8j4c28jt.js} +790 -276
- package/dist/chunk-8j4c28jt.js.map +46 -0
- package/dist/{chunk-wtqhq529.js → chunk-d1fv6hrm.js} +6 -6
- package/dist/{chunk-wtqhq529.js.map → chunk-d1fv6hrm.js.map} +1 -1
- package/dist/{chunk-gcyp9b4d.js → chunk-dbq4qf52.js} +362 -215
- package/dist/chunk-dbq4qf52.js.map +25 -0
- package/dist/{chunk-xnt2sdhf.js → chunk-drna2rny.js} +2 -2
- package/dist/{chunk-ravbb06q.js → chunk-dxvypr7y.js} +2 -2
- package/dist/{chunk-11v28977.js → chunk-f6yme003.js} +85 -71
- package/dist/{chunk-11v28977.js.map → chunk-f6yme003.js.map} +6 -6
- package/dist/{chunk-4ddzsqtc.js → chunk-hg7pf34j.js} +4 -3
- package/dist/{chunk-4ddzsqtc.js.map → chunk-hg7pf34j.js.map} +5 -5
- package/dist/{chunk-w1zyhj40.js → chunk-jq4e17tj.js} +2 -2
- package/dist/{chunk-kvcep7ft.js → chunk-y63c6zcv.js} +967 -218
- package/dist/chunk-y63c6zcv.js.map +53 -0
- package/dist/cli/args.d.ts +7 -1
- package/dist/cli/bin.js +66 -25
- package/dist/cli/bin.js.map +6 -5
- package/dist/cli/manifest.d.ts +5 -1
- package/dist/cli/texture-cache.d.ts +4 -0
- package/dist/core/definition.d.ts +7 -0
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/export/credits.d.ts +4 -0
- package/dist/export/glb-options.d.ts +48 -0
- package/dist/export/glb.d.ts +5 -35
- package/dist/export/hierarchy.d.ts +23 -0
- package/dist/export/index.d.ts +2 -1
- package/dist/export/index.js +21 -7
- package/dist/export/index.js.map +1 -1
- package/dist/export/lod-coverage.d.ts +12 -0
- package/dist/export/metadata.d.ts +2 -0
- package/dist/export/version.d.ts +2 -2
- package/dist/grammar/index.js +2 -2
- package/dist/index.js +63 -17
- package/dist/index.js.map +1 -1
- package/dist/kinds/head-armour.d.ts +3 -7
- package/dist/kinds/head-bust.d.ts +3 -2
- package/dist/kinds/head-face.d.ts +3 -1
- package/dist/kinds/head-garb.d.ts +4 -0
- package/dist/kinds/head-mesh.d.ts +4 -0
- package/dist/kinds/head-mouth.d.ts +4 -0
- package/dist/kinds/head-params.d.ts +9 -1
- package/dist/kinds/head-tone.d.ts +10 -0
- package/dist/kinds/head-torso.d.ts +35 -0
- package/dist/kinds/index.js +6 -6
- package/dist/material/cc0.d.ts +4 -0
- package/dist/material/define.d.ts +34 -0
- package/dist/material/generator.d.ts +1 -1
- package/dist/material/index.d.ts +8 -3
- package/dist/material/index.js +39 -7
- package/dist/material/index.js.map +1 -1
- package/dist/material/library.d.ts +7 -0
- package/dist/material/material-def.d.ts +30 -0
- package/dist/material/paint/canvas.d.ts +7 -0
- package/dist/material/paint/default-sheet.d.ts +3 -1
- package/dist/material/paint/fabric.d.ts +4 -0
- package/dist/material/paint/image-strip.d.ts +4 -0
- package/dist/material/paint/kit.d.ts +5 -0
- package/dist/material/paint/metal.d.ts +3 -0
- package/dist/material/paint/orm.d.ts +1 -1
- package/dist/material/paint/strip.d.ts +1 -1
- package/dist/material/paint/types.d.ts +32 -2
- package/dist/material/palette.d.ts +2 -0
- package/dist/material/slots.d.ts +5 -0
- package/dist/material/texture-source.d.ts +34 -0
- package/dist/material/trim-sheet.d.ts +20 -4
- package/dist/neural/index.js +2 -2
- package/dist/passes/index.js +2 -2
- package/dist/primitives/index.js +3 -3
- package/dist/qa/index.js +2 -2
- package/dist/render/beauty.d.ts +1 -1
- package/dist/render/index.js +3 -3
- package/dist/render/lighting.d.ts +7 -0
- package/dist/render/shade.d.ts +1 -1
- package/dist/testing/index.js +5 -5
- package/docs/README.md +4 -0
- package/docs/architecture/gltf-capabilities.md +38 -1
- package/docs/architecture/materials.md +151 -0
- package/docs/idea/10-sculpting.md +166 -0
- package/docs/idea/11-materials-authoring.md +132 -0
- package/docs/idea/12-blender-bridge.md +136 -0
- package/docs/idea/13-asset-pipeline-research.md +89 -0
- package/docs/plans/roadmap.md +12 -0
- package/package.json +2 -1
- package/recipes/boxcar/README.md +7 -0
- package/recipes/boxcar/boxcar.ts +118 -34
- package/recipes/goblin_head/README.md +27 -14
- package/recipes/goblin_head/goblin_head.ts +11 -9
- package/recipes/human_head/README.md +8 -4
- package/recipes/human_head/human_head.ts +4 -3
- package/recipes/material_swatches/material_swatches.ts +11 -5
- package/recipes/orc_head/README.md +32 -20
- package/recipes/orc_head/orc_head.ts +9 -7
- package/src/cli/args.ts +16 -3
- package/src/cli/manifest.ts +6 -0
- package/src/cli/run.ts +33 -9
- package/src/cli/texture-cache.ts +24 -0
- package/src/core/asset.ts +1 -0
- package/src/core/definition.ts +7 -0
- package/src/core/errors.ts +6 -1
- package/src/export/credits.ts +25 -0
- package/src/export/glb-options.ts +53 -0
- package/src/export/glb.ts +100 -113
- package/src/export/hierarchy.ts +122 -0
- package/src/export/index.ts +17 -1
- package/src/export/lod-coverage.ts +71 -0
- package/src/export/metadata.ts +3 -0
- package/src/export/version.ts +1 -1
- package/src/kinds/head-armour.ts +103 -73
- package/src/kinds/head-bust.ts +49 -86
- package/src/kinds/head-face.ts +94 -74
- package/src/kinds/head-garb.ts +181 -0
- package/src/kinds/head-hair.ts +74 -33
- package/src/kinds/head-mesh.ts +43 -5
- package/src/kinds/head-mouth.ts +111 -0
- package/src/kinds/head-params.ts +11 -2
- package/src/kinds/head-presets.ts +30 -27
- package/src/kinds/head-tone.ts +52 -0
- package/src/kinds/head-torso.ts +230 -0
- package/src/kinds/head.ts +8 -3
- package/src/material/cc0.ts +41 -0
- package/src/material/define.ts +130 -0
- package/src/material/generator.ts +15 -8
- package/src/material/index.ts +34 -3
- package/src/material/library.ts +196 -0
- package/src/material/material-def.ts +84 -0
- package/src/material/paint/canvas.ts +11 -1
- package/src/material/paint/compose.ts +1 -1
- package/src/material/paint/decode-png.ts +19 -13
- package/src/material/paint/default-sheet.ts +40 -28
- package/src/material/paint/fabric.ts +63 -0
- package/src/material/paint/image-strip.ts +88 -0
- package/src/material/paint/kit.ts +37 -0
- package/src/material/paint/masks.ts +3 -1
- package/src/material/paint/metal.ts +109 -0
- package/src/material/paint/orm.ts +14 -1
- package/src/material/paint/planks.ts +49 -4
- package/src/material/paint/strip.ts +35 -29
- package/src/material/paint/types.ts +45 -2
- package/src/material/paint/validate.ts +19 -3
- package/src/material/palette.ts +3 -0
- package/src/material/slots.ts +18 -0
- package/src/material/texture-source.ts +86 -0
- package/src/material/trim-sheet.ts +79 -13
- package/src/render/beauty.ts +2 -2
- package/src/render/lighting.ts +26 -0
- package/src/render/shade.ts +10 -5
- package/dist/chunk-1ypfs7ga.js.map +0 -42
- package/dist/chunk-gcyp9b4d.js.map +0 -22
- package/dist/chunk-kgvbpqqw.js.map +0 -10
- package/dist/chunk-kvcep7ft.js.map +0 -43
- /package/dist/{chunk-a8fxakcj.js.map → chunk-6b05mnmx.js.map} +0 -0
- /package/dist/{chunk-xnt2sdhf.js.map → chunk-drna2rny.js.map} +0 -0
- /package/dist/{chunk-ravbb06q.js.map → chunk-dxvypr7y.js.map} +0 -0
- /package/dist/{chunk-w1zyhj40.js.map → chunk-jq4e17tj.js.map} +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/render/camera.ts", "../src/render/depth-map.ts", "../src/render/
|
|
3
|
+
"sources": ["../src/render/camera.ts", "../src/render/depth-map.ts", "../src/render/lighting.ts", "../src/render/texture.ts", "../src/render/shade.ts", "../src/render/ground.ts", "../src/render/options.ts", "../src/render/resolve.ts", "../src/render/scene.ts", "../src/render/vis-buffer.ts", "../src/render/beauty.ts", "../src/render/font.ts", "../src/render/lod-strip.ts", "../src/render/metrics.ts", "../src/render/photo-match.ts", "../src/render/review-prompt.ts", "../src/render/review-warnings.ts", "../src/render/raster.ts", "../src/render/sheet.ts", "../src/render/review.ts", "../src/render/thumbnail.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"// Perspective camera for beauty renders: orbit (azimuth/elevation about the asset), auto-framed so\n// the asset fills the frame, with an optional zoomed sub-window (a true high-res crop of the same\n// shot, used for detail close-ups). Z up, +X front; azimuth 0 looks at the front, −35° is a 3/4.\n\nexport interface PerspectiveCamera {\n readonly eye: readonly [number, number, number];\n /** Unit right, up, forward (view direction). */\n readonly r: readonly [number, number, number];\n readonly u: readonly [number, number, number];\n readonly f: readonly [number, number, number];\n /** Pixels per unit of tan(angle) — the focal length in pixels. */\n readonly focal: number;\n readonly cx: number;\n readonly cy: number;\n readonly width: number;\n readonly height: number;\n}\n\nexport interface Orbit {\n readonly azDeg: number;\n readonly elDeg: number;\n readonly fovDeg: number;\n /** Fraction of the frame the asset may fill (0–1). */\n readonly fill: number;\n}\n\ntype V3 = [number, number, number];\n\nfunction basis(azDeg: number, elDeg: number): { dir: V3; r: V3; u: V3; f: V3 } {\n const az = (azDeg * Math.PI) / 180;\n const el = (elDeg * Math.PI) / 180;\n const dir: V3 = [Math.cos(el) * Math.cos(az), Math.cos(el) * Math.sin(az), Math.sin(el)];\n const f: V3 = [-dir[0], -dir[1], -dir[2]];\n const rl = Math.hypot(f[1], f[0]) || 1;\n const r: V3 = [f[1] / rl, -f[0] / rl, 0];\n const u: V3 = [r[1] * f[2] - r[2] * f[1], r[2] * f[0] - r[0] * f[2], r[0] * f[1] - r[1] * f[0]];\n return { dir, r, u, f };\n}\n\n/** Project world xyz → [screen x, screen y, view depth]. Depth ≤ 0 means behind the eye. */\nexport function project(c: PerspectiveCamera, x: number, y: number, z: number): V3 {\n const dx = x - c.eye[0];\n const dy = y - c.eye[1];\n const dz = z - c.eye[2];\n const w = dx * c.f[0] + dy * c.f[1] + dz * c.f[2];\n const sx = dx * c.r[0] + dy * c.r[1] + dz * c.r[2];\n const sy = dx * c.u[0] + dy * c.u[1] + dz * c.u[2];\n return [c.cx + (sx / w) * c.focal, c.cy - (sy / w) * c.focal, w];\n}\n\n/**\n * Orbit camera framing `points` (xyz triples, world) in a width × height image. Iterates a few\n * times: re-centre on the projected extent, then dolly so the larger axis fills `fill`.\n */\nexport function frameOrbit(\n points: Float32Array,\n o: Orbit,\n width: number,\n height: number,\n): PerspectiveCamera {\n const { dir, r, u, f } = basis(o.azDeg, o.elDeg);\n const stride = Math.max(1, Math.floor(points.length / 3 / 20000)) * 3;\n let lo: V3 = [Infinity, Infinity, Infinity];\n let hi: V3 = [-Infinity, -Infinity, -Infinity];\n for (let i = 0; i < points.length; i += 3)\n for (let k = 0; k < 3; k++) {\n const v = points[i + k] ?? 0;\n lo[k] = Math.min(lo[k] ?? 0, v);\n hi[k] = Math.max(hi[k] ?? 0, v);\n }\n if (points.length === 0) {\n lo = [-0.5, -0.5, -0.5];\n hi = [0.5, 0.5, 0.5];\n }\n const target: V3 = [(lo[0] + hi[0]) / 2, (lo[1] + hi[1]) / 2, (lo[2] + hi[2]) / 2];\n const radius = Math.max(Math.hypot(hi[0] - lo[0], hi[1] - lo[1], hi[2] - lo[2]) / 2, 0.05);\n const tanY = Math.tan((o.fovDeg * Math.PI) / 360);\n const focal = height / 2 / tanY;\n let dist = radius / Math.sin(Math.atan(tanY)) + radius;\n const at = (d: number): PerspectiveCamera => ({\n eye: [target[0] + dir[0] * d, target[1] + dir[1] * d, target[2] + dir[2] * d],\n r,\n u,\n f,\n focal,\n cx: width / 2,\n cy: height / 2,\n width,\n height,\n });\n for (let iter = 0; iter < 6; iter++) {\n const cam = at(dist);\n let x0 = Infinity;\n let x1 = -Infinity;\n let y0 = Infinity;\n let y1 = -Infinity;\n for (let i = 0; i < points.length; i += stride) {\n const p = project(cam, points[i] ?? 0, points[i + 1] ?? 0, points[i + 2] ?? 0);\n x0 = Math.min(x0, p[0]);\n x1 = Math.max(x1, p[0]);\n y0 = Math.min(y0, p[1]);\n y1 = Math.max(y1, p[1]);\n }\n if (!Number.isFinite(x0)) break;\n // Shift the target by the screen-space offset of the extent's centre, at the target's depth.\n const k = dist / focal;\n const ox = ((x0 + x1) / 2 - width / 2) * k;\n const oy = -((y0 + y1) / 2 - height / 2) * k;\n for (let a = 0; a < 3; a++) target[a] = (target[a] ?? 0) + (r[a] ?? 0) * ox + (u[a] ?? 0) * oy;\n const need = Math.max((x1 - x0) / (width * o.fill), (y1 - y0) / (height * o.fill));\n // Perspective: dolly on the part of the distance in front of the target, not through it.\n dist = Math.max(dist * need ** 0.85, radius * 1.05);\n }\n return at(dist);\n}\n\n/** The same shot through a zoomed window: (nx, ny) ∈ [0,1]² is the window centre, k the zoom. */\nexport function zoomWindow(\n c: PerspectiveCamera,\n nx: number,\n ny: number,\n k: number,\n): PerspectiveCamera {\n return {\n ...c,\n focal: c.focal * k,\n cx: c.width / 2 - (nx * c.width - c.cx) * k,\n cy: c.height / 2 - (ny * c.height - c.cy) * k,\n };\n}\n\n/** Same camera at another resolution (supersampling): every pixel quantity scales by s. */\nexport function scaled(c: PerspectiveCamera, s: number): PerspectiveCamera {\n return {\n ...c,\n focal: c.focal * s,\n cx: c.cx * s,\n cy: c.cy * s,\n width: c.width * s,\n height: c.height * s,\n };\n}\n",
|
|
6
6
|
"// Orthographic depth maps along a direction: the sun's shadow map, the sky-direction maps that\n// give ambient occlusion (and the soft contact shadow on the ground), and the silhouette masks the\n// review metrics compare. Stores, per texel, the highest dot(p, dir) — the surface nearest the light.\n\nimport type { Scene } from './scene.ts';\n\nexport interface DepthMap {\n readonly size: number;\n /** −Infinity where nothing was drawn. */\n readonly data: Float32Array;\n readonly dir: readonly [number, number, number];\n readonly r: readonly [number, number, number];\n readonly u: readonly [number, number, number];\n /** Texel coordinate = (dot(p, r) − r0) · k, (u1 − dot(p, u)) · k. */\n readonly r0: number;\n readonly u1: number;\n readonly k: number;\n}\n\n/** Map frame in the map's own (r, u) coordinates: centre and half-extent, metres. */\nexport interface MapFrame {\n readonly cr: number;\n readonly cu: number;\n readonly half: number;\n}\n\nexport type MapAlpha = (tri: number, b1: number, b2: number) => boolean;\n\nexport function mapAxes(dir: readonly [number, number, number]): {\n r: [number, number, number];\n u: [number, number, number];\n} {\n const up: [number, number, number] = Math.abs(dir[2]) > 0.99 ? [1, 0, 0] : [0, 0, 1];\n let r: [number, number, number] = [\n up[1] * dir[2] - up[2] * dir[1],\n up[2] * dir[0] - up[0] * dir[2],\n up[0] * dir[1] - up[1] * dir[0],\n ];\n const l = Math.hypot(r[0], r[1], r[2]) || 1;\n r = [r[0] / l, r[1] / l, r[2] / l];\n const u: [number, number, number] = [\n dir[1] * r[2] - dir[2] * r[1],\n dir[2] * r[0] - dir[0] * r[2],\n dir[0] * r[1] - dir[1] * r[0],\n ];\n return { r, u };\n}\n\n/** The frame that just contains the scene seen along `dir`, with a 2% margin. */\nexport function fitFrame(s: Scene, dir: readonly [number, number, number]): MapFrame {\n const { r, u } = mapAxes(dir);\n let r0 = Infinity;\n let r1 = -Infinity;\n let u0 = Infinity;\n let u1 = -Infinity;\n const P = s.positions;\n for (let i = 0; i < P.length; i += 3) {\n const x = P[i] ?? 0;\n const y = P[i + 1] ?? 0;\n const z = P[i + 2] ?? 0;\n const a = x * r[0] + y * r[1] + z * r[2];\n const b = x * u[0] + y * u[1] + z * u[2];\n if (a < r0) r0 = a;\n if (a > r1) r1 = a;\n if (b < u0) u0 = b;\n if (b > u1) u1 = b;\n }\n if (!Number.isFinite(r0)) return { cr: 0, cu: 0, half: 1 };\n return { cr: (r0 + r1) / 2, cu: (u0 + u1) / 2, half: Math.max(r1 - r0, u1 - u0, 1e-3) * 0.51 };\n}\n\nexport function depthMap(\n s: Scene,\n dir: readonly [number, number, number],\n size: number,\n frame: MapFrame = fitFrame(s, dir),\n alpha?: MapAlpha,\n): DepthMap {\n const { r, u } = mapAxes(dir);\n const k = size / (2 * frame.half);\n const r0 = frame.cr - frame.half;\n const u1 = frame.cu + frame.half;\n const data = new Float32Array(size * size).fill(-Infinity);\n const nv = s.positions.length / 3;\n const X = new Float32Array(nv);\n const Y = new Float32Array(nv);\n const D = new Float32Array(nv);\n const P = s.positions;\n for (let v = 0; v < nv; v++) {\n const x = P[v * 3] ?? 0;\n const y = P[v * 3 + 1] ?? 0;\n const z = P[v * 3 + 2] ?? 0;\n X[v] = (x * r[0] + y * r[1] + z * r[2] - r0) * k;\n Y[v] = (u1 - (x * u[0] + y * u[1] + z * u[2])) * k;\n D[v] = x * dir[0] + y * dir[1] + z * dir[2];\n }\n const I = s.indices;\n for (let t = 0; t < s.triangles; t++) {\n const a = I[t * 3] ?? 0;\n const b = I[t * 3 + 1] ?? 0;\n const c = I[t * 3 + 2] ?? 0;\n const ax = X[a] ?? 0;\n const ay = Y[a] ?? 0;\n const bx = X[b] ?? 0;\n const by = Y[b] ?? 0;\n const cx = X[c] ?? 0;\n const cy = Y[c] ?? 0;\n const area = (bx - ax) * (cy - ay) - (by - ay) * (cx - ax);\n if (Math.abs(area) < 1e-12) continue;\n const inv = 1 / area;\n const da = D[a] ?? 0;\n const db = D[b] ?? 0;\n const dc = D[c] ?? 0;\n const cut = alpha !== undefined && s.surface[t] === 1;\n const lx = ax < bx ? Math.min(ax, cx) : Math.min(bx, cx);\n const hx = ax > bx ? Math.max(ax, cx) : Math.max(bx, cx);\n const ly = ay < by ? Math.min(ay, cy) : Math.min(by, cy);\n const hy = ay > by ? Math.max(ay, cy) : Math.max(by, cy);\n const minX = lx < 0 ? 0 : Math.floor(lx);\n const maxX = hx > size - 1 ? size - 1 : Math.ceil(hx);\n const minY = ly < 0 ? 0 : Math.floor(ly);\n const maxY = hy > size - 1 ? size - 1 : Math.ceil(hy);\n // Edge functions are affine in (px, py): step them instead of re-evaluating per texel.\n const A0 = (by - cy) * inv;\n const B0 = (cx - bx) * inv;\n const A1 = (cy - ay) * inv;\n const B1 = (ax - cx) * inv;\n const C0 = (bx * cy - by * cx) * inv;\n const C1 = (cx * ay - cy * ax) * inv;\n for (let y = minY; y <= maxY; y++) {\n const py = y + 0.5;\n let w0 = C0 + A0 * (minX + 0.5) + B0 * py;\n let w1 = C1 + A1 * (minX + 0.5) + B1 * py;\n for (let x = minX; x <= maxX; x++, w0 += A0, w1 += A1) {\n if (w0 < 0 || w1 < 0 || w0 + w1 > 1) continue;\n const d = w0 * da + w1 * db + (1 - w0 - w1) * dc;\n const i = y * size + x;\n if (d <= (data[i] ?? 0)) continue;\n if (cut && alpha && !alpha(t, w1, 1 - w0 - w1)) continue;\n data[i] = d;\n }\n }\n }\n return { size, data, dir, r, u, r0, u1, k };\n}\n\n/**\n * Fraction of `taps` (pairs of texel offsets) at which world point (x,y,z) sees past the map —\n * 1 = fully lit/open, 0 = fully occluded. `bias` in metres along the map direction.\n */\nexport function visibility(\n m: DepthMap,\n x: number,\n y: number,\n z: number,\n bias: number,\n taps: Float32Array,\n): number {\n const tx = (x * m.r[0] + y * m.r[1] + z * m.r[2] - m.r0) * m.k;\n const ty = (m.u1 - (x * m.u[0] + y * m.u[1] + z * m.u[2])) * m.k;\n const d = x * m.dir[0] + y * m.dir[1] + z * m.dir[2] + bias;\n const s = m.size;\n let lit = 0;\n for (let i = 0; i < taps.length; i += 2) {\n const px = Math.floor(tx + (taps[i] ?? 0));\n const py = Math.floor(ty + (taps[i + 1] ?? 0));\n if (px < 0 || py < 0 || px >= s || py >= s || d >= (m.data[py * s + px] ?? 0)) lit++;\n }\n return (lit * 2) / taps.length;\n}\n\n/**\n * Ambient openness at (x,y,z) along the map direction, 0…1: an occluder `reach` metres or more\n * away counts for nothing, nearer ones linearly more — AO with a falloff, so a few sky directions\n * give a soft contact shadow instead of long streaks.\n */\nexport function openness(\n m: DepthMap,\n x: number,\n y: number,\n z: number,\n bias: number,\n reach: number,\n): number {\n const px = Math.floor((x * m.r[0] + y * m.r[1] + z * m.r[2] - m.r0) * m.k);\n const py = Math.floor((m.u1 - (x * m.u[0] + y * m.u[1] + z * m.u[2])) * m.k);\n const s = m.size;\n if (px < 0 || py < 0 || px >= s || py >= s) return 1;\n const gap = (m.data[py * s + px] ?? 0) - (x * m.dir[0] + y * m.dir[1] + z * m.dir[2] + bias);\n return gap <= 0 ? 1 : gap >= reach ? 1 : gap / reach;\n}\n",
|
|
7
|
+
"// The studio rig every beauty render shares: a warm key sun placed relative to the camera, a cool\n// sky hemisphere fill with a warm ground bounce, sky directions for ambient occlusion, PCF tap\n// patterns, and the filmic tone curve. Constants live here so every shot is lit the same way.\n\nexport type V3 = [number, number, number];\n\nexport interface Rig {\n /** Unit vector toward the sun. */\n readonly sun: V3;\n readonly sunColor: V3;\n readonly sky: V3;\n readonly bounce: V3;\n /** Unit vectors toward the sky, upper hemisphere, for the AO maps. */\n readonly skyDirs: readonly V3[];\n readonly exposure: number;\n}\n\nconst unit = (az: number, el: number): V3 => {\n const a = (az * Math.PI) / 180;\n const e = (el * Math.PI) / 180;\n return [Math.cos(e) * Math.cos(a), Math.cos(e) * Math.sin(a), Math.sin(e)];\n};\n\n/** Rings of sky directions: elevations and how many azimuths each ring holds (12 total). */\nconst RINGS: readonly (readonly [number, number])[] = [\n [14, 5],\n [38, 4],\n [64, 2],\n [88, 1],\n];\n\nexport function studioRig(cameraAzDeg: number): Rig {\n const skyDirs: V3[] = [];\n RINGS.forEach(([el, n], ring) => {\n for (let i = 0; i < n; i++) skyDirs.push(unit((360 * (i + ring * 0.37)) / n, el));\n });\n return {\n // Key light from camera-left and above: the near flank is lit, the front falls to fill, and\n // the shadow lands behind and to the right where it grounds the model without hiding it.\n sun: unit(cameraAzDeg - 50, 55),\n // Calibrated so an open, sun-facing surface receives ≈ 1.0 irradiance: the output pixel is\n // the albedo itself (vertex colour × sheet), not a lifted version of it.\n sunColor: [0.95, 0.91, 0.84],\n sky: [0.3, 0.33, 0.4],\n bounce: [0.16, 0.15, 0.13],\n skyDirs,\n exposure: 1,\n };\n}\n\nconst HORIZON: V3 = [0.82, 0.8, 0.76];\nconst ZENITH: V3 = [0.3, 0.34, 0.44];\nconst FLOOR: V3 = [0.3, 0.28, 0.26];\nconst BAND = 0.12;\n\n/**\n * The studio environment a reflection sees, channel `k`, along a reflection vector with up\n * component `rz`: a bright cyclorama horizon fading to a cooler zenith, a dark band where the\n * floor meets the wall, the lit floor below. Roughness pre-blurs it toward its mean, so polished\n * metal shows the horizon line and rough metal a soft gradient — what makes metal read as metal.\n */\nexport function envRadiance(rz: number, rough: number, k: number): number {\n const h = HORIZON[k] ?? 0;\n const sharp =\n rz >= 0\n ? h + ((ZENITH[k] ?? 0) - h) * Math.sqrt(rz)\n : rz > -0.3\n ? h * BAND + ((FLOOR[k] ?? 0) - h * BAND) * Math.min(1, -rz / 0.3) ** 0.5\n : (FLOOR[k] ?? 0);\n const blurred = 0.5 * h + 0.25 * (ZENITH[k] ?? 0) + 0.25 * (FLOOR[k] ?? 0);\n // Above the horizon the blur keeps a little of the up/down split so rough metal still shades.\n const tilt = 1 + 0.25 * Math.max(-1, Math.min(1, rz * 2));\n const t = Math.min(1, rough * 1.6);\n return sharp + (blurred * tilt - sharp) * t;\n}\n\n/** Poisson-ish disc of 12 taps (texel offsets), radius ~1.6, rotated four ways for dithering. */\nconst DISC: readonly (readonly [number, number])[] = [\n [-0.94, -0.4],\n [0.95, -0.77],\n [-0.09, -0.93],\n [0.34, 0.29],\n [-0.92, 0.46],\n [-0.38, -0.06],\n [0.79, 0.19],\n [-0.24, 0.78],\n [0.44, -0.3],\n [0.55, 0.85],\n [-0.66, -0.87],\n [0.06, 0.37],\n];\n\nexport function pcfTaps(radius: number): Float32Array[] {\n return [0, 1, 2, 3].map((k) => {\n const a = (k * Math.PI) / 8;\n const c = Math.cos(a) * radius;\n const s = Math.sin(a) * radius;\n const out = new Float32Array(DISC.length * 2);\n DISC.forEach(([x, y], i) => {\n out[i * 2] = x * c - y * s;\n out[i * 2 + 1] = x * s + y * c;\n });\n return out;\n });\n}\n\n/**\n * Tone curve, linear in → linear display out: identity up to 0.6 (mid-tones and the palette stay\n * true), then a smooth exponential shoulder that rolls highlights into 1 without clipping.\n */\nexport function tone(x: number): number {\n if (x <= 0) return 0;\n if (x <= 0.6) return x;\n return 0.6 + 0.4 * (1 - Math.exp(-(x - 0.6) / 0.4));\n}\n\nexport const toSrgb8 = (v: number): number =>\n Math.round(255 * (v <= 0.0031308 ? v * 12.92 : 1.055 * Math.min(1, v) ** (1 / 2.4) - 0.055));\n\nexport const fromSrgb = (v: number): number =>\n v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\n",
|
|
7
8
|
"// The trim sheet as the beauty renderer samples it: albedo (linear, alpha), tangent-space normal\n// and ORM, each as a box-filtered mip chain, sampled bilinearly — U repeats (strips tile), V clamps\n// (rows never bleed). The mip level is chosen per triangle by the caller (texel ÷ pixel footprint).\n\nimport type { PaintedSheet } from '../material/index.ts';\n\nexport interface Mip {\n readonly size: number;\n /** 4 floats per texel. */\n readonly data: Float32Array;\n}\n\nexport interface SheetTextures {\n readonly size: number;\n readonly albedo: readonly Mip[];\n readonly normal: readonly Mip[];\n readonly orm: readonly Mip[];\n}\n\nconst SRGB = new Float32Array(256).map((_, i) => {\n const v = i / 255;\n return v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\n});\n\nfunction chain(src: Uint8Array, size: number, decode: (c: number, v: number) => number): Mip[] {\n const top = new Float32Array(size * size * 4);\n for (let i = 0; i < top.length; i++) top[i] = decode(i & 3, src[i] ?? 0);\n const out: Mip[] = [{ size, data: top }];\n let cur = out[0];\n while (cur && cur.size > 4) {\n const s = cur.size / 2;\n const d = new Float32Array(s * s * 4);\n const p = cur.data;\n const w = cur.size;\n for (let y = 0; y < s; y++)\n for (let x = 0; x < s; x++)\n for (let c = 0; c < 4; c++) {\n const a = ((2 * y * w + 2 * x) << 2) + c;\n const b = a + w * 4;\n d[((y * s + x) << 2) + c] =\n ((p[a] ?? 0) + (p[a + 4] ?? 0) + (p[b] ?? 0) + (p[b + 4] ?? 0)) * 0.25;\n }\n cur = { size: s, data: d };\n out.push(cur);\n }\n return out;\n}\n\nconst cache = new WeakMap<PaintedSheet, SheetTextures>();\n\nexport function sheetTextures(sheet: PaintedSheet): SheetTextures {\n const hit = cache.get(sheet);\n if (hit) return hit;\n const t: SheetTextures = {\n size: sheet.size,\n albedo: chain(sheet.albedo, sheet.size, (c, v) => (c === 3 ? v / 255 : (SRGB[v] ?? 0))),\n normal: chain(sheet.normal, sheet.size, (c, v) => (c === 3 ? 1 : v / 127.5 - 1)),\n orm: chain(sheet.orm, sheet.size, (_c, v) => v / 255),\n };\n cache.set(sheet, t);\n return t;\n}\n\n/** Bilinear sample of mip `level` at (u, v) into out[0..3]. */\nexport function sample(\n mips: readonly Mip[],\n level: number,\n u: number,\n v: number,\n out: Float32Array,\n): void {\n const m = mips[Math.min(mips.length - 1, Math.max(0, level))] ?? mips[0];\n if (!m) return;\n const s = m.size;\n const x = u * s - 0.5;\n const y = Math.min(s - 1, Math.max(0, v * s - 0.5));\n const xf = Math.floor(x);\n const yf = Math.floor(y);\n const fx = x - xf;\n const fy = y - yf;\n const x0 = ((xf % s) + s) % s;\n const x1 = (x0 + 1) % s;\n const y0 = yf;\n const y1 = Math.min(s - 1, yf + 1);\n const d = m.data;\n const a = (y0 * s + x0) << 2;\n const b = (y0 * s + x1) << 2;\n const c = (y1 * s + x0) << 2;\n const e = (y1 * s + x1) << 2;\n const w0 = (1 - fx) * (1 - fy);\n const w1 = fx * (1 - fy);\n const w2 = (1 - fx) * fy;\n const w3 = fx * fy;\n for (let k = 0; k < 4; k++)\n out[k] =\n (d[a + k] ?? 0) * w0 + (d[b + k] ?? 0) * w1 + (d[c + k] ?? 0) * w2 + (d[e + k] ?? 0) * w3;\n}\n",
|
|
8
|
-
"// Per-pixel shading of the visibility buffer: reconstruct position, normal, UV and vertex colour\n// from (triangle, barycentrics), perturb by the trim sheet's normal map, then light it — key sun\n// with a PCF shadow, sky/bounce hemisphere × multi-direction AO × the sheet's baked occlusion,\n//
|
|
9
|
+
"// Per-pixel shading of the visibility buffer: reconstruct position, normal, UV and vertex colour\n// from (triangle, barycentrics), perturb by the trim sheet's normal map, then light it — key sun\n// with a PCF shadow, sky/bounce hemisphere × multi-direction AO × the sheet's baked occlusion,\n// a roughness-driven sun specular (normalised Blinn–Phong + Schlick Fresnel) and a studio\n// environment reflection (envRadiance) per texel from the sheet's ORM, so metal reads as metal.\n\nimport type { PerspectiveCamera } from './camera.ts';\nimport { type DepthMap, openness, visibility } from './depth-map.ts';\nimport { envRadiance, type Rig } from './lighting.ts';\nimport type { Scene } from './scene.ts';\nimport { type SheetTextures, sample } from './texture.ts';\n\nexport interface ShadeContext {\n readonly scene: Scene;\n readonly cam: PerspectiveCamera;\n readonly tex: SheetTextures;\n readonly rig: Rig;\n readonly sunMap: DepthMap;\n readonly aoMaps: readonly DepthMap[];\n readonly pcf: readonly Float32Array[];\n /** AO falloff distance, metres: occluders farther than this along a sky direction don't count. */\n readonly reach: number;\n}\n\nconst ONE_TAP = new Float32Array([0, 0]);\nconst hyp = (x: number, y: number, z: number): number => Math.sqrt(x * x + y * y + z * z);\nconst texel = new Float32Array(4);\n\n/** Sky openness at p for a surface facing n: cosine-weighted share of unoccluded sky directions. */\nexport function skyOpen(c: ShadeContext, p: readonly number[], n: readonly number[]): number {\n let open = 0;\n let total = 0;\n const dirs = c.rig.skyDirs;\n for (let k = 0; k < dirs.length; k++) {\n const d = dirs[k];\n const m = c.aoMaps[k];\n if (!d || !m) continue;\n const w = 0.5 + 0.5 * ((n[0] ?? 0) * d[0] + (n[1] ?? 0) * d[1] + (n[2] ?? 0) * d[2]);\n if (w <= 0) continue;\n const off = 1.5 / m.k;\n const v = openness(\n m,\n (p[0] ?? 0) + (n[0] ?? 0) * off,\n (p[1] ?? 0) + (n[1] ?? 0) * off,\n (p[2] ?? 0) + (n[2] ?? 0) * off,\n 2 / m.k,\n c.reach,\n );\n open += w * v;\n total += w;\n }\n return total > 0 ? open / total : 1;\n}\n\n/** Sun visibility at p (geometric normal n), PCF with one of four rotated tap sets. */\nexport function sunVisible(\n c: ShadeContext,\n p: readonly number[],\n n: readonly number[],\n set: number,\n): number {\n const m = c.sunMap;\n const off = 1.2 / m.k;\n return visibility(\n m,\n (p[0] ?? 0) + (n[0] ?? 0) * off,\n (p[1] ?? 0) + (n[1] ?? 0) * off,\n (p[2] ?? 0) + (n[2] ?? 0) * off,\n 1.5 / m.k,\n c.pcf[set & 3] ?? ONE_TAP,\n );\n}\n\nconst pos = [0, 0, 0];\nconst nrm = [0, 0, 0];\nconst geo = [0, 0, 0];\n\n/** Linear radiance of triangle `t` at barycentrics (b1, b2) into out[0..2]. */\nexport function shadeSample(\n c: ShadeContext,\n t: number,\n b1: number,\n b2: number,\n mip: number,\n set: number,\n out: Float32Array,\n): void {\n const s = c.scene;\n const ia = (s.indices[t * 3] ?? 0) * 3;\n const ib = (s.indices[t * 3 + 1] ?? 0) * 3;\n const ic = (s.indices[t * 3 + 2] ?? 0) * 3;\n const b0 = 1 - b1 - b2;\n const P = s.positions;\n const N = s.normals;\n const C = s.colors;\n for (let k = 0; k < 3; k++) {\n pos[k] = (P[ia + k] ?? 0) * b0 + (P[ib + k] ?? 0) * b1 + (P[ic + k] ?? 0) * b2;\n nrm[k] = (N[ia + k] ?? 0) * b0 + (N[ib + k] ?? 0) * b1 + (N[ic + k] ?? 0) * b2;\n }\n const ua = (ia / 3) * 2;\n const ub = (ib / 3) * 2;\n const uc = (ic / 3) * 2;\n const U = s.uvs;\n const u = (U[ua] ?? 0) * b0 + (U[ub] ?? 0) * b1 + (U[uc] ?? 0) * b2;\n const v = (U[ua + 1] ?? 0) * b0 + (U[ub + 1] ?? 0) * b1 + (U[uc + 1] ?? 0) * b2;\n const e = c.cam.eye;\n let vx = e[0] - (pos[0] ?? 0);\n let vy = e[1] - (pos[1] ?? 0);\n let vz = e[2] - (pos[2] ?? 0);\n const vl = hyp(vx, vy, vz) || 1;\n vx /= vl;\n vy /= vl;\n vz /= vl;\n let nl = hyp(nrm[0] ?? 0, nrm[1] ?? 0, nrm[2] ?? 1) || 1;\n // Double-sided view: a normal facing away from the eye is lit as its back face.\n if ((nrm[0] ?? 0) * vx + (nrm[1] ?? 0) * vy + (nrm[2] ?? 0) * vz < 0) nl = -nl;\n for (let k = 0; k < 3; k++) {\n nrm[k] = (nrm[k] ?? 0) / nl;\n geo[k] = nrm[k] ?? 0;\n }\n // Normal map through the triangle's tangent frame (skipped where UVs are degenerate).\n const T = s.tangents;\n const to = t * 6;\n const tx = T[to] ?? 0;\n const ty = T[to + 1] ?? 0;\n const tz = T[to + 2] ?? 0;\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n sample(c.tex.normal, mip, u, v, texel);\n const mx = texel[0] ?? 0;\n const my = texel[1] ?? 0;\n const mz = texel[2] ?? 1;\n const n0 = nrm[0] ?? 0;\n const n1 = nrm[1] ?? 0;\n const n2 = nrm[2] ?? 0;\n const bx = T[to + 3] ?? 0;\n const by = T[to + 4] ?? 0;\n const bz = T[to + 5] ?? 0;\n const px = tx * mx + bx * my + n0 * mz;\n const py = ty * mx + by * my + n1 * mz;\n const pz = tz * mx + bz * my + n2 * mz;\n const pl = hyp(px, py, pz) || 1;\n nrm[0] = px / pl;\n nrm[1] = py / pl;\n nrm[2] = pz / pl;\n }\n sample(c.tex.albedo, mip, u, v, texel);\n const surf = s.surface[t] ?? 0;\n const glass = surf === 2;\n let ar = (texel[0] ?? 1) * ((C[ia] ?? 1) * b0 + (C[ib] ?? 1) * b1 + (C[ic] ?? 1) * b2);\n let ag =\n (texel[1] ?? 1) * ((C[ia + 1] ?? 1) * b0 + (C[ib + 1] ?? 1) * b1 + (C[ic + 1] ?? 1) * b2);\n let ab =\n (texel[2] ?? 1) * ((C[ia + 2] ?? 1) * b0 + (C[ib + 2] ?? 1) * b1 + (C[ic + 2] ?? 1) * b2);\n sample(c.tex.orm, mip, u, v, texel);\n const occ = texel[0] ?? 1;\n const rough = glass ? 0.06 : Math.max(0.08, texel[1] ?? 0.8);\n const metal = glass ? 0 : (texel[2] ?? 0);\n if (glass) {\n ar *= 0.12;\n ag *= 0.14;\n ab *= 0.16;\n }\n const r = c.rig;\n const n0 = nrm[0] ?? 0;\n const n1 = nrm[1] ?? 0;\n const n2 = nrm[2] ?? 1;\n const ndl = n0 * r.sun[0] + n1 * r.sun[1] + n2 * r.sun[2];\n const gdl = (geo[0] ?? 0) * r.sun[0] + (geo[1] ?? 0) * r.sun[1] + (geo[2] ?? 0) * r.sun[2];\n const lit = ndl > 0 && gdl > -0.05 ? sunVisible(c, pos, geo, set) * ndl : 0;\n const open = skyOpen(c, pos, geo);\n const hemi = 0.5 + 0.5 * n2;\n const amb = open * (0.35 + 0.65 * occ);\n const dk = 1 - metal;\n // Specular: half vector, normalised Blinn–Phong lobe, Schlick Fresnel against F0.\n let hx = r.sun[0] + vx;\n let hy = r.sun[1] + vy;\n let hz = r.sun[2] + vz;\n const hl = hyp(hx, hy, hz) || 1;\n hx /= hl;\n hy /= hl;\n hz /= hl;\n const ndh = Math.max(0, n0 * hx + n1 * hy + n2 * hz);\n const vdh = Math.max(0, vx * hx + vy * hy + vz * hz);\n const ndv = Math.max(0, n0 * vx + n1 * vy + n2 * vz);\n const shin = Math.min(2048, 2 / (rough * rough * rough * rough) - 2);\n const lobe = ((shin + 8) / 25.13) * ndh ** shin;\n const fr = (1 - vdh) ** 5;\n const fv = (1 - ndv) ** 5;\n // Image-based term: the studio seen along the reflection, occluded like the sky (+ cavity AO).\n const rz = 2 * ndv * n2 - vz;\n const specOcc = open * (0.4 + 0.6 * occ);\n const ch = [ar, ag, ab];\n for (let k = 0; k < 3; k++) {\n const al = ch[k] ?? 0;\n const f0 = 0.04 * dk + al * metal;\n const sky = (r.bounce[k] ?? 0) * (1 - hemi) + (r.sky[k] ?? 0) * hemi;\n const diffuse = al * dk * ((r.sunColor[k] ?? 0) * lit + sky * amb);\n const spec = (f0 + (1 - f0) * fr) * lobe * lit * (r.sunColor[k] ?? 0) * 0.8;\n const env = glass\n ? (f0 + (1 - f0) * fv * (1 - rough) * (1 - rough)) * (r.sky[k] ?? 0) * open * 2.5\n : (f0 + (Math.max(1 - rough, f0) - f0) * fv) * envRadiance(rz, rough, k) * specOcc;\n out[k] = (diffuse + spec + env) * r.exposure;\n }\n}\n",
|
|
9
10
|
"// The seamless studio floor as a shadow catcher: a world-space grid over the asset's footprint\n// holding how much light reaches the floor (sun shadow × sky openness, 1 = untouched). The renderer\n// multiplies the background by it, so the floor is invisible except for the shadows that ground\n// the model — the clean product-shot look, with a soft contact shadow from the AO maps.\n\nimport type { PerspectiveCamera } from './camera.ts';\nimport { type ShadeContext, skyOpen, sunVisible } from './shade.ts';\n\nexport interface FloorGrid {\n readonly z: number;\n readonly x0: number;\n readonly y0: number;\n readonly cell: number;\n readonly size: number;\n readonly light: Float32Array;\n}\n\nconst UP = [0, 0, 1];\n\nexport function floorGrid(c: ShadeContext, size: number): FloorGrid {\n const s = c.scene;\n const z = s.min[2];\n const h = s.max[2] - s.min[2];\n const half = Math.max(s.max[0] - s.min[0], s.max[1] - s.min[1]) / 2 + Math.max(h * 1.4, 0.2);\n const cx = (s.min[0] + s.max[0]) / 2;\n const cy = (s.min[1] + s.max[1]) / 2;\n const cell = (2 * half) / size;\n const light = new Float32Array(size * size);\n const sunUp = Math.max(0, c.rig.sun[2]);\n // Floor radiance split: sun share vs sky share of an open floor, so shadows read as soft\n // (sky still lights the shadow) and the contact shadow comes from the AO term alone.\n const sunW = sunUp * (c.rig.sunColor[1] ?? 1);\n const skyW = c.rig.sky[1] ?? 1;\n const p = [0, 0, z];\n for (let j = 0; j < size; j++)\n for (let i = 0; i < size; i++) {\n p[0] = cx - half + (i + 0.5) * cell;\n p[1] = cy - half + (j + 0.5) * cell;\n const sun = sunVisible(c, p, UP, (i + j * 2) & 3);\n const open = skyOpen(c, p, UP);\n light[j * size + i] = (sunW * sun * (0.55 + 0.45 * open) + skyW * open) / (sunW + skyW);\n }\n return { z, x0: cx - half, y0: cy - half, cell, size, light: blur(blur(light, size), size) };\n}\n\n/** 3 × 3 box blur (edges clamp): hides the grid's cell steps under perspective magnification. */\nfunction blur(src: Float32Array, n: number): Float32Array {\n const out = new Float32Array(src.length);\n for (let y = 0; y < n; y++)\n for (let x = 0; x < n; x++) {\n let s = 0;\n for (let dy = -1; dy <= 1; dy++)\n for (let dx = -1; dx <= 1; dx++) {\n const yy = Math.min(n - 1, Math.max(0, y + dy));\n const xx = Math.min(n - 1, Math.max(0, x + dx));\n s += src[yy * n + xx] ?? 1;\n }\n out[y * n + x] = s / 9;\n }\n return out;\n}\n\n/** Floor light where the eye ray through pixel (px, py) meets the floor; 1 off the grid/above. */\nexport function floorLight(g: FloorGrid, cam: PerspectiveCamera, px: number, py: number): number {\n const sx = (px - cam.cx) / cam.focal;\n const sy = -(py - cam.cy) / cam.focal;\n const dx = cam.f[0] + cam.r[0] * sx + cam.u[0] * sy;\n const dy = cam.f[1] + cam.r[1] * sx + cam.u[1] * sy;\n const dz = cam.f[2] + cam.r[2] * sx + cam.u[2] * sy;\n if (dz >= -1e-6) return 1;\n const t = (g.z - cam.eye[2]) / dz;\n const gx = (cam.eye[0] + dx * t - g.x0) / g.cell - 0.5;\n const gy = (cam.eye[1] + dy * t - g.y0) / g.cell - 0.5;\n const ix = Math.floor(gx);\n const iy = Math.floor(gy);\n if (ix < 0 || iy < 0 || ix >= g.size - 1 || iy >= g.size - 1) return 1;\n const fx = gx - ix;\n const fy = gy - iy;\n const L = g.light;\n const o = iy * g.size + ix;\n return (\n (L[o] ?? 1) * (1 - fx) * (1 - fy) +\n (L[o + 1] ?? 1) * fx * (1 - fy) +\n (L[o + g.size] ?? 1) * (1 - fx) * fy +\n (L[o + g.size + 1] ?? 1) * fx * fy\n );\n}\n",
|
|
10
|
-
"// The studio rig every beauty render shares: a warm key sun placed relative to the camera, a cool\n// sky hemisphere fill with a warm ground bounce, sky directions for ambient occlusion, PCF tap\n// patterns, and the filmic tone curve. Constants live here so every shot is lit the same way.\n\nexport type V3 = [number, number, number];\n\nexport interface Rig {\n /** Unit vector toward the sun. */\n readonly sun: V3;\n readonly sunColor: V3;\n readonly sky: V3;\n readonly bounce: V3;\n /** Unit vectors toward the sky, upper hemisphere, for the AO maps. */\n readonly skyDirs: readonly V3[];\n readonly exposure: number;\n}\n\nconst unit = (az: number, el: number): V3 => {\n const a = (az * Math.PI) / 180;\n const e = (el * Math.PI) / 180;\n return [Math.cos(e) * Math.cos(a), Math.cos(e) * Math.sin(a), Math.sin(e)];\n};\n\n/** Rings of sky directions: elevations and how many azimuths each ring holds (12 total). */\nconst RINGS: readonly (readonly [number, number])[] = [\n [14, 5],\n [38, 4],\n [64, 2],\n [88, 1],\n];\n\nexport function studioRig(cameraAzDeg: number): Rig {\n const skyDirs: V3[] = [];\n RINGS.forEach(([el, n], ring) => {\n for (let i = 0; i < n; i++) skyDirs.push(unit((360 * (i + ring * 0.37)) / n, el));\n });\n return {\n // Key light from camera-left and above: the near flank is lit, the front falls to fill, and\n // the shadow lands behind and to the right where it grounds the model without hiding it.\n sun: unit(cameraAzDeg - 50, 55),\n // Calibrated so an open, sun-facing surface receives ≈ 1.0 irradiance: the output pixel is\n // the albedo itself (vertex colour × sheet), not a lifted version of it.\n sunColor: [0.95, 0.91, 0.84],\n sky: [0.3, 0.33, 0.4],\n bounce: [0.16, 0.15, 0.13],\n skyDirs,\n exposure: 1,\n };\n}\n\n/** Poisson-ish disc of 12 taps (texel offsets), radius ~1.6, rotated four ways for dithering. */\nconst DISC: readonly (readonly [number, number])[] = [\n [-0.94, -0.4],\n [0.95, -0.77],\n [-0.09, -0.93],\n [0.34, 0.29],\n [-0.92, 0.46],\n [-0.38, -0.06],\n [0.79, 0.19],\n [-0.24, 0.78],\n [0.44, -0.3],\n [0.55, 0.85],\n [-0.66, -0.87],\n [0.06, 0.37],\n];\n\nexport function pcfTaps(radius: number): Float32Array[] {\n return [0, 1, 2, 3].map((k) => {\n const a = (k * Math.PI) / 8;\n const c = Math.cos(a) * radius;\n const s = Math.sin(a) * radius;\n const out = new Float32Array(DISC.length * 2);\n DISC.forEach(([x, y], i) => {\n out[i * 2] = x * c - y * s;\n out[i * 2 + 1] = x * s + y * c;\n });\n return out;\n });\n}\n\n/**\n * Tone curve, linear in → linear display out: identity up to 0.6 (mid-tones and the palette stay\n * true), then a smooth exponential shoulder that rolls highlights into 1 without clipping.\n */\nexport function tone(x: number): number {\n if (x <= 0) return 0;\n if (x <= 0.6) return x;\n return 0.6 + 0.4 * (1 - Math.exp(-(x - 0.6) / 0.4));\n}\n\nexport const toSrgb8 = (v: number): number =>\n Math.round(255 * (v <= 0.0031308 ? v * 12.92 : 1.055 * Math.min(1, v) ** (1 / 2.4) - 0.055));\n\nexport const fromSrgb = (v: number): number =>\n v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\n",
|
|
11
11
|
"// Validate beauty-render options up front: a bad size or angle fails with a code and the exact\n// fix instead of a blank or giant image. The CLI's --size/--az/--el/--fov flags land here too.\n\nimport { Ts23dError } from '../core/index.ts';\n\nexport interface CheckedBeauty {\n readonly width: number;\n readonly height: number;\n readonly azDeg: number;\n readonly elDeg: number;\n readonly fovDeg: number;\n readonly supersample: number;\n}\n\ninterface Raw {\n readonly width?: number;\n readonly height?: number;\n readonly azDeg?: number;\n readonly elDeg?: number;\n readonly fovDeg?: number;\n readonly supersample?: number;\n readonly window?: { readonly x: number; readonly y: number; readonly zoom: number };\n}\n\nfunction need(ok: boolean, cause: string, fix: string): void {\n if (!ok) throw new Ts23dError('T3D_RENDER_OPTIONS', { cause, fix });\n}\n\nexport function checkBeautyOptions(o: Raw): CheckedBeauty {\n const v = {\n width: o.width ?? 1600,\n height: o.height ?? 900,\n azDeg: o.azDeg ?? -35,\n elDeg: o.elDeg ?? 18,\n fovDeg: o.fovDeg ?? 30,\n supersample: o.supersample ?? 2,\n };\n for (const k of ['width', 'height'] as const)\n need(\n Number.isInteger(v[k]) && v[k] >= 16 && v[k] <= 8192,\n `${k} ${v[k]} is not an integer in 16…8192 pixels`,\n 'pass a size like 1600x900 (--size WxH), each side 16–8192',\n );\n need(\n Number.isFinite(v.azDeg),\n `azimuth ${v.azDeg} is not a number`,\n 'pass degrees, e.g. --az -35',\n );\n need(\n Number.isFinite(v.elDeg) && v.elDeg >= -10 && v.elDeg <= 89,\n `elevation ${v.elDeg} is outside −10…89°`,\n 'pass degrees above the horizon, e.g. --el 18 (89 = straight down)',\n );\n need(\n Number.isFinite(v.fovDeg) && v.fovDeg >= 5 && v.fovDeg <= 120,\n `field of view ${v.fovDeg} is outside 5…120°`,\n 'pass a vertical FOV in degrees, e.g. --fov 30',\n );\n need(\n Number.isInteger(v.supersample) && v.supersample >= 1 && v.supersample <= 4,\n `supersample ${v.supersample} is not 1, 2, 3 or 4`,\n 'use supersample: 2 (4 samples per pixel)',\n );\n if (o.window)\n need(\n Number.isFinite(o.window.zoom) && o.window.zoom >= 1 && o.window.zoom <= 64,\n `window zoom ${o.window.zoom} is outside 1…64`,\n 'zoom into the shot with window: { x, y, zoom } and 1 ≤ zoom ≤ 64',\n );\n return v;\n}\n\n/** Parse a `WxH` size flag (\"1600x900\"). */\nexport function parseSize(text: string): { width: number; height: number } {\n const m = /^(\\d+)[x×](\\d+)$/i.exec(text.trim());\n need(m !== null, `size \"${text}\" is not WIDTHxHEIGHT`, 'pass --size 1600x900');\n const width = Number(m?.[1]);\n const height = Number(m?.[2]);\n checkBeautyOptions({ width, height });\n return { width, height };\n}\n",
|
|
12
12
|
"// Resolve the supersampled visibility buffer to output pixels, MSAA-style: samples in a pixel\n// that hit the same triangle are shaded ONCE at their mean barycentrics and weighted by count, so\n// edges get ss² coverage samples while interiors cost one shade. Background samples show the\n// studio backdrop × the floor's shadow light. Also yields the coverage mask and a detail grid.\n\nimport type { FloorGrid } from './ground.ts';\nimport { floorLight } from './ground.ts';\nimport { fromSrgb, tone, toSrgb8 } from './lighting.ts';\nimport { type ShadeContext, shadeSample } from './shade.ts';\nimport type { VisBuffer } from './vis-buffer.ts';\n\nexport interface Resolved {\n readonly width: number;\n readonly height: number;\n readonly rgba: Uint8Array;\n readonly mask: Uint8Array;\n readonly detail: Uint32Array;\n}\n\n/** Backdrop colour (linear) at normalised screen (nx, ny): soft radial falloff below centre. */\nfunction backdrop(nx: number, ny: number, out: Float32Array): void {\n const dx = (nx - 0.5) * 1.1;\n const dy = ny - 0.62;\n const fall = Math.min(1, dx * dx + dy * dy * 1.6);\n out[0] = fromSrgb(0.93 - 0.17 * fall);\n out[1] = fromSrgb(0.935 - 0.15 * fall);\n out[2] = fromSrgb(0.94 - 0.12 * fall);\n}\n\nexport function resolve(\n ctx: ShadeContext,\n vis: VisBuffer,\n floor: FloorGrid,\n width: number,\n height: number,\n ss: number,\n): Resolved {\n const rgba = new Uint8Array(width * height * 4);\n const mask = new Uint8Array(width * height);\n // Last detail cell each triangle was counted in: ≈ distinct triangles per cell, no hash set.\n const counted = new Int32Array(ctx.scene.triangles).fill(-1);\n const detail = new Uint32Array(16 * 9);\n const lin = new Float32Array(3);\n const bg = new Float32Array(3);\n const n = ss * ss;\n const ids = new Int32Array(n);\n const cnt = new Int32Array(n);\n const sb1 = new Float64Array(n);\n const sb2 = new Float64Array(n);\n const W = vis.width;\n const inv = 1 / n;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n backdrop(x / width, y / height, bg);\n let r = 0;\n let g = 0;\n let b = 0;\n let groups = 0;\n let hits = 0;\n for (let sy = 0; sy < ss; sy++)\n for (let sx = 0; sx < ss; sx++) {\n const X = x * ss + sx;\n const Y = y * ss + sy;\n const i = Y * W + X;\n const t = vis.tri[i] ?? -1;\n if (t < 0) {\n const l = floorLight(floor, ctx.cam, X + 0.5, Y + 0.5);\n r += (bg[0] ?? 0) * l;\n g += (bg[1] ?? 0) * l;\n b += (bg[2] ?? 0) * l;\n continue;\n }\n hits++;\n let k = 0;\n while (k < groups && ids[k] !== t) k++;\n if (k === groups) {\n ids[k] = t;\n cnt[k] = 0;\n sb1[k] = 0;\n sb2[k] = 0;\n groups++;\n }\n cnt[k] = (cnt[k] ?? 0) + 1;\n sb1[k] = (sb1[k] ?? 0) + (vis.b1[i] ?? 0);\n sb2[k] = (sb2[k] ?? 0) + (vis.b2[i] ?? 0);\n }\n const cell = Math.floor((y * 9) / height) * 16 + Math.floor((x * 16) / width);\n for (let k = 0; k < groups; k++) {\n const t = ids[k] ?? 0;\n const c = cnt[k] ?? 1;\n if (counted[t] !== cell) {\n counted[t] = cell;\n detail[cell] = (detail[cell] ?? 0) + 1;\n }\n shadeSample(ctx, t, (sb1[k] ?? 0) / c, (sb2[k] ?? 0) / c, vis.mip[t] ?? 0, x + y * 2, lin);\n r += tone(lin[0] ?? 0) * c;\n g += tone(lin[1] ?? 0) * c;\n b += tone(lin[2] ?? 0) * c;\n }\n const o = (y * width + x) * 4;\n rgba[o] = toSrgb8(r * inv);\n rgba[o + 1] = toSrgb8(g * inv);\n rgba[o + 2] = toSrgb8(b * inv);\n rgba[o + 3] = 255;\n mask[y * width + x] = Math.round(hits * inv * 255);\n }\n }\n return { width, height, rgba, mask, detail };\n}\n",
|
|
13
13
|
"// Flatten a compiled asset into one packed, world-space triangle soup for the beauty renderer:\n// positions, normals, UVs, colours per vertex; surface code + tangent frame per triangle.\n// Packed typed arrays keep the per-pixel loops monomorphic and allocation-free.\n\nimport { type CompiledAsset, type Surface, worldMeshes } from '../core/index.ts';\n\nexport const SURFACE_CODE: Readonly<Record<Surface, number>> = {\n opaque: 0,\n cutout: 1,\n glass: 2,\n translucent: 3,\n};\n\nexport interface Scene {\n readonly positions: Float32Array;\n readonly normals: Float32Array;\n readonly uvs: Float32Array;\n readonly colors: Float32Array;\n /** Three global vertex indices per triangle. */\n readonly indices: Uint32Array;\n /** SURFACE_CODE per triangle. */\n readonly surface: Uint8Array;\n /** Per-triangle tangent frame for the normal map, 6 floats: T = dP/dU, B = −dP/dV (glTF +Y). */\n readonly tangents: Float32Array;\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n readonly triangles: number;\n}\n\nexport function sceneOf(asset: CompiledAsset): Scene {\n const meshes = worldMeshes(asset.parts);\n const surfOf = new Map(asset.parts.map((p) => [p.name, SURFACE_CODE[p.surface ?? 'opaque']]));\n let nv = 0;\n let nt = 0;\n for (const m of meshes.values()) {\n nv += m.positions.length / 3;\n nt += m.indices.length / 3;\n }\n const positions = new Float32Array(nv * 3);\n const normals = new Float32Array(nv * 3);\n const uvs = new Float32Array(nv * 2);\n const colors = new Float32Array(nv * 3);\n const indices = new Uint32Array(nt * 3);\n const surface = new Uint8Array(nt);\n let vo = 0;\n let to = 0;\n for (const [name, m] of meshes) {\n positions.set(m.positions, vo * 3);\n normals.set(m.normals, vo * 3);\n uvs.set(m.uvs, vo * 2);\n colors.set(m.colors, vo * 3);\n for (let i = 0; i < m.indices.length; i++) indices[to * 3 + i] = (m.indices[i] ?? 0) + vo;\n surface.fill(surfOf.get(name) ?? 0, to, to + m.indices.length / 3);\n vo += m.positions.length / 3;\n to += m.indices.length / 3;\n }\n const min: [number, number, number] = [Infinity, Infinity, Infinity];\n const max: [number, number, number] = [-Infinity, -Infinity, -Infinity];\n for (let i = 0; i < positions.length; i++) {\n const v = positions[i] ?? 0;\n const k = i % 3;\n if (v < (min[k] ?? 0)) min[k] = v;\n if (v > (max[k] ?? 0)) max[k] = v;\n }\n if (nv === 0) {\n min.fill(-0.5);\n max.fill(0.5);\n }\n return {\n positions,\n normals,\n uvs,\n colors,\n indices,\n surface,\n tangents: tangentsOf(positions, uvs, indices),\n min,\n max,\n triangles: nt,\n };\n}\n\n/** Per-triangle dP/dU and −dP/dV from the UV parameterisation; zero frame when UVs degenerate. */\nfunction tangentsOf(p: Float32Array, uv: Float32Array, idx: Uint32Array): Float32Array {\n const out = new Float32Array(idx.length * 2);\n for (let t = 0; t < idx.length; t += 3) {\n const a = idx[t] ?? 0;\n const b = idx[t + 1] ?? 0;\n const c = idx[t + 2] ?? 0;\n const e1x = (p[b * 3] ?? 0) - (p[a * 3] ?? 0);\n const e1y = (p[b * 3 + 1] ?? 0) - (p[a * 3 + 1] ?? 0);\n const e1z = (p[b * 3 + 2] ?? 0) - (p[a * 3 + 2] ?? 0);\n const e2x = (p[c * 3] ?? 0) - (p[a * 3] ?? 0);\n const e2y = (p[c * 3 + 1] ?? 0) - (p[a * 3 + 1] ?? 0);\n const e2z = (p[c * 3 + 2] ?? 0) - (p[a * 3 + 2] ?? 0);\n const du1 = (uv[b * 2] ?? 0) - (uv[a * 2] ?? 0);\n const dv1 = (uv[b * 2 + 1] ?? 0) - (uv[a * 2 + 1] ?? 0);\n const du2 = (uv[c * 2] ?? 0) - (uv[a * 2] ?? 0);\n const dv2 = (uv[c * 2 + 1] ?? 0) - (uv[a * 2 + 1] ?? 0);\n const det = du1 * dv2 - du2 * dv1;\n if (Math.abs(det) < 1e-12) continue;\n const tx = (e1x * dv2 - e2x * dv1) / det;\n const ty = (e1y * dv2 - e2y * dv1) / det;\n const tz = (e1z * dv2 - e2z * dv1) / det;\n const bx = (e2x * du1 - e1x * du2) / det;\n const by = (e2y * du1 - e1y * du2) / det;\n const bz = (e2z * du1 - e1z * du2) / det;\n const lt = Math.hypot(tx, ty, tz) || 1;\n const lb = -(Math.hypot(bx, by, bz) || 1);\n const o = t * 2;\n out[o] = tx / lt;\n out[o + 1] = ty / lt;\n out[o + 2] = tz / lt;\n out[o + 3] = bx / lb;\n out[o + 4] = by / lb;\n out[o + 5] = bz / lb;\n }\n return out;\n}\n",
|
|
14
14
|
"// Visibility buffer: perspective-rasterise every triangle once, keeping only the nearest triangle\n// id and its perspective-correct barycentrics per pixel. Shading then runs exactly once per pixel\n// (deferred), so overdraw on an 88k-triangle tank costs a depth compare, not a lighting model.\n\nimport type { PerspectiveCamera } from './camera.ts';\nimport type { Scene } from './scene.ts';\n\nexport interface VisBuffer {\n readonly width: number;\n readonly height: number;\n /** Triangle id per pixel, −1 = background. */\n readonly tri: Int32Array;\n /** Perspective-correct barycentrics of vertices 1 and 2 (vertex 0 = 1 − b1 − b2). */\n readonly b1: Float32Array;\n readonly b2: Float32Array;\n /** 1 / view depth (larger = nearer). */\n readonly invw: Float32Array;\n /** Per-triangle texture mip level from its texel : pixel footprint. */\n readonly mip: Uint8Array;\n}\n\n/** Return false to discard a fragment (alpha-tested cutouts). */\nexport type AlphaTest = (tri: number, b1: number, b2: number, mip: number) => boolean;\n\nexport function rasteriseVis(\n s: Scene,\n cam: PerspectiveCamera,\n texSize: number,\n alpha?: AlphaTest,\n): VisBuffer {\n const W = cam.width;\n const H = cam.height;\n const n = W * H;\n const tri = new Int32Array(n).fill(-1);\n const b1 = new Float32Array(n);\n const b2 = new Float32Array(n);\n const invw = new Float32Array(n);\n const nv = s.positions.length / 3;\n const sx = new Float32Array(nv);\n const sy = new Float32Array(nv);\n const iw = new Float32Array(nv);\n const P = s.positions;\n const [ex, ey, ez] = cam.eye;\n for (let v = 0; v < nv; v++) {\n const dx = (P[v * 3] ?? 0) - ex;\n const dy = (P[v * 3 + 1] ?? 0) - ey;\n const dz = (P[v * 3 + 2] ?? 0) - ez;\n const w = dx * cam.f[0] + dy * cam.f[1] + dz * cam.f[2];\n const q = w > 1e-4 ? 1 / w : -1;\n iw[v] = q;\n sx[v] = cam.cx + (dx * cam.r[0] + dy * cam.r[1] + dz * cam.r[2]) * q * cam.focal;\n sy[v] = cam.cy - (dx * cam.u[0] + dy * cam.u[1] + dz * cam.u[2]) * q * cam.focal;\n }\n const mip = new Uint8Array(s.triangles);\n const I = s.indices;\n const UV = s.uvs;\n for (let t = 0; t < s.triangles; t++) {\n const a = I[t * 3] ?? 0;\n const b = I[t * 3 + 1] ?? 0;\n const c = I[t * 3 + 2] ?? 0;\n const qa = iw[a] ?? -1;\n const qb = iw[b] ?? -1;\n const qc = iw[c] ?? -1;\n if (qa < 0 || qb < 0 || qc < 0) continue;\n const ax = sx[a] ?? 0;\n const ay = sy[a] ?? 0;\n const bx = sx[b] ?? 0;\n const by = sy[b] ?? 0;\n const cx = sx[c] ?? 0;\n const cy = sy[c] ?? 0;\n const area = (bx - ax) * (cy - ay) - (by - ay) * (cx - ax);\n if (Math.abs(area) < 1e-12) continue;\n const uvArea = Math.abs(\n ((UV[b * 2] ?? 0) - (UV[a * 2] ?? 0)) * ((UV[c * 2 + 1] ?? 0) - (UV[a * 2 + 1] ?? 0)) -\n ((UV[b * 2 + 1] ?? 0) - (UV[a * 2 + 1] ?? 0)) * ((UV[c * 2] ?? 0) - (UV[a * 2] ?? 0)),\n );\n const lod = 0.5 * Math.log2((uvArea * texSize * texSize) / Math.abs(area) + 1e-12);\n const m = Math.max(0, Math.min(10, Math.floor(lod + 0.25)));\n mip[t] = m;\n const lx = ax < bx ? Math.min(ax, cx) : Math.min(bx, cx);\n const hx = ax > bx ? Math.max(ax, cx) : Math.max(bx, cx);\n const ly = ay < by ? Math.min(ay, cy) : Math.min(by, cy);\n const hy = ay > by ? Math.max(ay, cy) : Math.max(by, cy);\n const minX = lx < 0 ? 0 : Math.floor(lx);\n const maxX = hx > W - 1 ? W - 1 : Math.ceil(hx);\n const minY = ly < 0 ? 0 : Math.floor(ly);\n const maxY = hy > H - 1 ? H - 1 : Math.ceil(hy);\n if (minX > maxX || minY > maxY) continue;\n const inv = 1 / area;\n const cut = alpha !== undefined && s.surface[t] === 1;\n // Affine edge functions, stepped per pixel.\n const A0 = (by - cy) * inv;\n const B0 = (cx - bx) * inv;\n const A1 = (cy - ay) * inv;\n const B1 = (ax - cx) * inv;\n const C0 = (bx * cy - by * cx) * inv;\n const C1 = (cx * ay - cy * ax) * inv;\n for (let y = minY; y <= maxY; y++) {\n const py = y + 0.5;\n let w0 = C0 + A0 * (minX + 0.5) + B0 * py;\n let w1 = C1 + A1 * (minX + 0.5) + B1 * py;\n for (let x = minX; x <= maxX; x++, w0 += A0, w1 += A1) {\n const w2 = 1 - w0 - w1;\n if (w0 < 0 || w1 < 0 || w2 < 0) continue;\n const z = w0 * qa + w1 * qb + w2 * qc;\n const i = y * W + x;\n if (z <= (invw[i] ?? 0)) continue;\n const pb = (w1 * qb) / z;\n const pc = (w2 * qc) / z;\n if (cut && alpha && !alpha(t, pb, pc, m)) continue;\n invw[i] = z;\n tri[i] = t;\n b1[i] = pb;\n b2[i] = pc;\n }\n }\n }\n return { width: W, height: H, tri, b1, b2, invw, mip };\n}\n",
|
|
15
|
-
"// Beauty render: the zero-GPU product shot for READMEs, gallery cards and the review pack.\n// Perspective 3/4 hero camera, trim-sheet textures × vertex colour with normal + ORM maps, a key\n// sun with soft PCF shadows, sky fill with multi-direction ambient occlusion, a seamless studio\n// floor that only shows the shadows, 2× supersampling. Deterministic: same asset → same bytes.\n\nimport { type CompiledAsset, encodePng } from '../core/index.ts';\nimport type { PaintedSheet } from '../material/index.ts';\nimport { DEFAULT_SHEET, paintTrimSheet } from '../material/index.ts';\nimport { frameOrbit, type PerspectiveCamera, scaled, zoomWindow } from './camera.ts';\nimport { depthMap } from './depth-map.ts';\nimport { floorGrid } from './ground.ts';\nimport { pcfTaps, studioRig } from './lighting.ts';\nimport { checkBeautyOptions } from './options.ts';\nimport { resolve } from './resolve.ts';\nimport { sceneOf } from './scene.ts';\nimport type { ShadeContext } from './shade.ts';\nimport { sample, sheetTextures } from './texture.ts';\nimport { rasteriseVis } from './vis-buffer.ts';\n\nexport interface BeautyOptions {\n /** Output size in pixels. Default 1600 × 900. */\n readonly width?: number;\n readonly height?: number;\n /** Camera orbit, degrees: azimuth about Z from the front (+X), −35 = front-left 3/4. */\n readonly azDeg?: number;\n /** Elevation above the horizon, degrees (−10…89). Default 18. */\n readonly elDeg?: number;\n /** Vertical field of view, degrees. Default 30. */\n readonly fovDeg?: number;\n /** Samples per pixel edge (1–4). Default 2 (4 samples per pixel). */\n readonly supersample?: number;\n /** The painted trim sheet; default paints `DEFAULT_SHEET` at
|
|
15
|
+
"// Beauty render: the zero-GPU product shot for READMEs, gallery cards and the review pack.\n// Perspective 3/4 hero camera, trim-sheet textures × vertex colour with normal + ORM maps, a key\n// sun with soft PCF shadows, sky fill with multi-direction ambient occlusion, a seamless studio\n// floor that only shows the shadows, 2× supersampling. Deterministic: same asset → same bytes.\n\nimport { type CompiledAsset, encodePng } from '../core/index.ts';\nimport type { PaintedSheet } from '../material/index.ts';\nimport { DEFAULT_SHEET, paintTrimSheet } from '../material/index.ts';\nimport { frameOrbit, type PerspectiveCamera, scaled, zoomWindow } from './camera.ts';\nimport { depthMap } from './depth-map.ts';\nimport { floorGrid } from './ground.ts';\nimport { pcfTaps, studioRig } from './lighting.ts';\nimport { checkBeautyOptions } from './options.ts';\nimport { resolve } from './resolve.ts';\nimport { sceneOf } from './scene.ts';\nimport type { ShadeContext } from './shade.ts';\nimport { sample, sheetTextures } from './texture.ts';\nimport { rasteriseVis } from './vis-buffer.ts';\n\nexport interface BeautyOptions {\n /** Output size in pixels. Default 1600 × 900. */\n readonly width?: number;\n readonly height?: number;\n /** Camera orbit, degrees: azimuth about Z from the front (+X), −35 = front-left 3/4. */\n readonly azDeg?: number;\n /** Elevation above the horizon, degrees (−10…89). Default 18. */\n readonly elDeg?: number;\n /** Vertical field of view, degrees. Default 30. */\n readonly fovDeg?: number;\n /** Samples per pixel edge (1–4). Default 2 (4 samples per pixel). */\n readonly supersample?: number;\n /** The painted trim sheet; default paints `DEFAULT_SHEET` at 1024² once per process. */\n readonly sheet?: PaintedSheet;\n /** Zoom into the default framing: window centre (0–1, 0–1) of the full shot and a zoom ≥ 1. */\n readonly window?: { readonly x: number; readonly y: number; readonly zoom: number };\n /** Frame with this asset instead (e.g. LOD0's framing for a LOD2 render, so they line up). */\n readonly frameFrom?: CompiledAsset;\n}\n\nexport interface BeautyRender {\n readonly width: number;\n readonly height: number;\n /** RGBA8, sRGB, opaque. */\n readonly rgba: Uint8Array;\n /** Asset coverage per pixel, 0–255 (the silhouette, antialiased). */\n readonly mask: Uint8Array;\n /** Distinct triangles visible per cell of a 16 × 9 grid — where the detail is. */\n readonly detail: Uint32Array;\n}\n\nlet defaultSheet: PaintedSheet | undefined;\nconst sheetOf = (o: BeautyOptions): PaintedSheet => {\n if (o.sheet) return o.sheet;\n defaultSheet ??= paintTrimSheet({ ...DEFAULT_SHEET, size: 1024 });\n return defaultSheet;\n};\n\nexport function cameraFor(asset: CompiledAsset, o: BeautyOptions = {}): PerspectiveCamera {\n const v = checkBeautyOptions(o);\n const cam = frameOrbit(\n sceneOf(o.frameFrom ?? asset).positions,\n { azDeg: v.azDeg, elDeg: v.elDeg, fovDeg: v.fovDeg, fill: 0.8 },\n v.width,\n v.height,\n );\n return o.window ? zoomWindow(cam, o.window.x, o.window.y, o.window.zoom) : cam;\n}\n\nexport function renderBeauty(asset: CompiledAsset, o: BeautyOptions = {}): BeautyRender {\n const v = checkBeautyOptions(o);\n const ss = v.supersample;\n const scene = sceneOf(asset);\n const tex = sheetTextures(sheetOf(o));\n const rig = studioRig(v.azDeg);\n const texel = new Float32Array(4);\n const alpha = (t: number, b1: number, b2: number, mip = 2): boolean => {\n const I = scene.indices;\n const U = scene.uvs;\n const b0 = 1 - b1 - b2;\n const a = (I[t * 3] ?? 0) * 2;\n const b = (I[t * 3 + 1] ?? 0) * 2;\n const c = (I[t * 3 + 2] ?? 0) * 2;\n const u = (U[a] ?? 0) * b0 + (U[b] ?? 0) * b1 + (U[c] ?? 0) * b2;\n const w = (U[a + 1] ?? 0) * b0 + (U[b + 1] ?? 0) * b1 + (U[c + 1] ?? 0) * b2;\n sample(tex.albedo, mip, u, w, texel);\n return (texel[3] ?? 1) >= 0.5;\n };\n const cam = scaled(cameraFor(asset, o), ss);\n const vis = rasteriseVis(scene, cam, tex.size, alpha);\n const extent = Math.max(...scene.max.map((m, k) => m - (scene.min[k] ?? 0)));\n // Map resolutions follow the output: full quality at hero sizes, cheap for thumbnails/tests.\n const px = Math.max(v.width, v.height) * ss;\n const res = (lo: number, hi: number, f: number): number =>\n Math.max(lo, Math.min(hi, Math.round(px * f)));\n const sunMap = depthMap(scene, rig.sun, res(256, 2048, 1), undefined, alpha);\n const ctx: ShadeContext = {\n scene,\n cam,\n tex,\n rig,\n sunMap,\n aoMaps: rig.skyDirs.map((d) => depthMap(scene, d, res(96, 384, 0.25), undefined, alpha)),\n // Penumbra ~0.4% of the asset's size: soft enough to read as a studio key, never mushy.\n pcf: pcfTaps(Math.max(1.2, 0.004 * extent * sunMap.k)),\n reach: 0.12 * extent,\n };\n const floor = floorGrid(ctx, res(96, 512, 0.25));\n return resolve(ctx, vis, floor, v.width, v.height, ss);\n}\n\n/** The beauty render as PNG bytes. */\nexport function beauty(asset: CompiledAsset, o: BeautyOptions = {}): Uint8Array {\n const r = renderBeauty(asset, o);\n return encodePng(r.width, r.height, r.rgba);\n}\n",
|
|
16
16
|
"// A 3×5 bitmap font for view labels on contact sheets, so an agent reading the PNG knows which\n// view is which and what the grid step is. Uppercase, digits and a few marks only.\n\nconst GLYPHS: Readonly<Record<string, string>> = {\n A: '010101111101101',\n B: '110101110101110',\n C: '011100100100011',\n D: '110101101101110',\n E: '111100110100111',\n F: '111100110100100',\n G: '011100101101011',\n H: '101101111101101',\n I: '111010010010111',\n J: '001001001101010',\n K: '101101110101101',\n L: '100100100100111',\n M: '101111111101101',\n N: '110101101101101',\n O: '010101101101010',\n P: '110101110100100',\n Q: '010101101110011',\n R: '110101110101101',\n S: '011100010001110',\n T: '111010010010010',\n U: '101101101101111',\n V: '101101101101010',\n W: '101101111111101',\n X: '101101010101101',\n Y: '101101010010010',\n Z: '111001010100111',\n '0': '111101101101111',\n '1': '010110010010111',\n '2': '110001010100111',\n '3': '110001010001110',\n '4': '101101111001001',\n '5': '111100110001110',\n '6': '011100111101111',\n '7': '111001010010010',\n '8': '111101111101111',\n '9': '111101111001110',\n '.': '000000000000010',\n '/': '001001010100100',\n '-': '000000111000000',\n ':': '000010000010000',\n ' ': '000000000000000',\n '+': '000010111010000',\n _: '000000000000111',\n '=': '000111000111000',\n};\n\nexport function drawText(\n px: Uint8Array,\n width: number,\n x: number,\n y: number,\n text: string,\n scale: number,\n rgb: readonly [number, number, number],\n): void {\n let cx = x;\n for (const ch of text.toUpperCase()) {\n const g = GLYPHS[ch] ?? GLYPHS[' '] ?? '';\n for (let i = 0; i < 15; i++) {\n if (g[i] !== '1') continue;\n const gx = cx + (i % 3) * scale;\n const gy = y + Math.floor(i / 3) * scale;\n for (let dy = 0; dy < scale; dy++) {\n for (let dx = 0; dx < scale; dx++) {\n const o = ((gy + dy) * width + gx + dx) * 4;\n if (o >= 0 && o + 3 < px.length) px.set([...rgb, 255], o);\n }\n }\n }\n cx += 4 * scale;\n }\n}\n",
|
|
17
17
|
"// LOD strip: LOD0 · LOD1 · LOD2 beauty renders side by side from ONE camera (framed on LOD0), so\n// popping — a silhouette that jumps, a part that vanishes, a colour that shifts — reads at a glance.\n\nimport { type CompiledAsset, encodePng } from '../core/index.ts';\nimport { type BeautyOptions, renderBeauty } from './beauty.ts';\nimport { drawText } from './font.ts';\n\nexport interface LodStripOptions extends Omit<BeautyOptions, 'frameFrom' | 'window'> {}\n\nconst tris = (a: CompiledAsset): number =>\n a.parts.reduce((s, p) => s + (p.mesh ? p.mesh.indices.length / 3 : 0), 0);\n\nexport function lodStrip(lods: readonly CompiledAsset[], o: LodStripOptions = {}): Uint8Array {\n const w = o.width ?? 640;\n const h = o.height ?? 480;\n const first = lods[0];\n const n = lods.length;\n const out = new Uint8Array(w * n * h * 4);\n lods.forEach((a, k) => {\n const r = renderBeauty(a, {\n ...o,\n width: w,\n height: h,\n ...(first ? { frameFrom: first } : {}),\n });\n for (let y = 0; y < h; y++)\n out.set(r.rgba.subarray(y * w * 4, (y + 1) * w * 4), (y * w * n + k * w) * 4);\n if (k > 0)\n for (let y = 0; y < h; y++)\n out.fill(255, (y * w * n + k * w) * 4, (y * w * n + k * w + 2) * 4);\n drawText(out, w * n, k * w + 12, 12, `LOD${a.lod} ${tris(a)} TRIS`, 3, [40, 44, 52]);\n });\n return encodePng(w * n, h, out);\n}\n",
|
|
18
18
|
"// Image metrics an agent gets without any model: orthographic silhouette masks per contact-sheet\n// view, coverage and bounding-box fill, silhouette IoU (LOD0 ↔ LOD2 = LOD popping; model ↔ photo\n// mask = photo match), and the hero's exposure — mean, contrast, crushed blacks, blown whites.\n\nimport { type CompiledAsset, Ts23dError } from '../core/index.ts';\nimport { depthMap, fitFrame, type MapFrame } from './depth-map.ts';\nimport type { View } from './raster.ts';\nimport { sceneOf } from './scene.ts';\n\nexport interface Silhouette {\n readonly size: number;\n /** 1 = asset, 0 = empty. */\n readonly mask: Uint8Array;\n}\n\nexport interface MaskStats {\n /** Fraction of the image the silhouette covers. */\n readonly coverage: number;\n /** Fraction of the silhouette's own bounding box it fills (low = spindly or scattered). */\n readonly bboxFill: number;\n}\n\nconst towardCamera = (v: View): [number, number, number] => {\n const l = Math.hypot(v.dir[0], v.dir[1], v.dir[2]) || 1;\n return [-v.dir[0] / l, -v.dir[1] / l, -v.dir[2] / l];\n};\n\n/** The frame that fits `asset` seen along `view` — pass it to silhouettes of other LODs. */\nexport function viewFrame(asset: CompiledAsset, view: View): MapFrame {\n return fitFrame(sceneOf(asset), towardCamera(view));\n}\n\nexport function silhouette(\n asset: CompiledAsset,\n view: View,\n size = 256,\n frame: MapFrame = viewFrame(asset, view),\n): Silhouette {\n const m = depthMap(sceneOf(asset), towardCamera(view), size, frame);\n const mask = new Uint8Array(size * size);\n for (let i = 0; i < mask.length; i++) mask[i] = (m.data[i] ?? -Infinity) > -Infinity ? 1 : 0;\n return { size, mask };\n}\n\n/** Intersection over union of two same-sized masks (nonzero = inside). Two empty masks → 1. */\nexport function maskIoU(a: Uint8Array, b: Uint8Array): number {\n if (a.length !== b.length)\n throw new Ts23dError('T3D_RENDER_OPTIONS', {\n cause: `masks differ in size (${a.length} vs ${b.length} pixels)`,\n fix: 'render both silhouettes at the same size and frame (pass the LOD0 frame to both)',\n });\n let inter = 0;\n let union = 0;\n for (let i = 0; i < a.length; i++) {\n const x = (a[i] ?? 0) !== 0;\n const y = (b[i] ?? 0) !== 0;\n if (x && y) inter++;\n if (x || y) union++;\n }\n return union === 0 ? 1 : inter / union;\n}\n\n/** Max-pool a mask by `f` (any covered texel covers the block): the silhouette as seen from afar,\n * where lattice gaps and leaf holes close up — what LOD2 has to match. */\nexport function poolMask(s: Silhouette, f: number): Silhouette {\n const size = Math.floor(s.size / f);\n const mask = new Uint8Array(size * size);\n for (let y = 0; y < s.size; y++)\n for (let x = 0; x < s.size; x++)\n if (s.mask[y * s.size + x]) {\n const i = Math.floor(y / f) * size + Math.floor(x / f);\n if (i < mask.length) mask[i] = 1;\n }\n return { size, mask };\n}\n\nexport function maskStats(s: Silhouette): MaskStats {\n let n = 0;\n let x0 = s.size;\n let y0 = s.size;\n let x1 = -1;\n let y1 = -1;\n for (let y = 0; y < s.size; y++)\n for (let x = 0; x < s.size; x++) {\n if (!s.mask[y * s.size + x]) continue;\n n++;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n const box = x1 < 0 ? 0 : (x1 - x0 + 1) * (y1 - y0 + 1);\n return { coverage: n / (s.size * s.size), bboxFill: box ? n / box : 0 };\n}\n\nexport interface ExposureStats {\n /** Fraction of the frame the asset covers. */\n readonly coverage: number;\n /** The asset's screen bounding box as a fraction of the frame, larger axis (≈ 0.8 when framed). */\n readonly span: number;\n /** Mean relative luminance (0–1, sRGB-encoded values) over asset pixels. */\n readonly mean: number;\n /** Standard deviation of that luminance — low = flat, unreadable shading. */\n readonly contrast: number;\n readonly nearBlack: number;\n readonly nearWhite: number;\n}\n\n/** Exposure of a rendered RGBA image (`width` px wide) over the pixels where `mask` ≥ 128. */\nexport function exposure(rgba: Uint8Array, mask: Uint8Array, width: number): ExposureStats {\n const height = Math.max(1, Math.floor(mask.length / Math.max(1, width)));\n let x0 = width;\n let x1 = -1;\n let y0 = height;\n let y1 = -1;\n let n = 0;\n let sum = 0;\n let sq = 0;\n let black = 0;\n let white = 0;\n for (let i = 0; i < mask.length; i++) {\n if ((mask[i] ?? 0) < 128) continue;\n const x = i % width;\n const y = Math.floor(i / width);\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n const o = i * 4;\n const l =\n (0.2126 * (rgba[o] ?? 0) + 0.7152 * (rgba[o + 1] ?? 0) + 0.0722 * (rgba[o + 2] ?? 0)) / 255;\n n++;\n sum += l;\n sq += l * l;\n if (l < 0.06) black++;\n if (l > 0.97) white++;\n }\n const mean = n ? sum / n : 0;\n return {\n coverage: n / Math.max(1, mask.length),\n span: x1 < 0 ? 0 : Math.max((x1 - x0 + 1) / width, (y1 - y0 + 1) / height),\n mean,\n contrast: n ? Math.sqrt(Math.max(0, sq / n - mean * mean)) : 0,\n nearBlack: n ? black / n : 0,\n nearWhite: n ? white / n : 0,\n };\n}\n",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"// AI review pack: everything a vision-capable agent needs to judge an asset in one folder — hero,\n// contact sheet, two detail close-ups (where the triangles are), the LOD strip, review.md (the\n// checklist prompt) and review.json (model-free image metrics with threshold warnings).\n\nimport { type Asset, type CompiledAsset, compile, encodePng, type Lod } from '../core/index.ts';\nimport type { PaintedSheet } from '../material/index.ts';\nimport { type BeautyOptions, renderBeauty } from './beauty.ts';\nimport { lodStrip } from './lod-strip.ts';\nimport { exposure, maskIoU, maskStats, poolMask, silhouette, viewFrame } from './metrics.ts';\nimport { reviewPrompt } from './review-prompt.ts';\nimport { type ReviewMetrics, warningsOf } from './review-warnings.ts';\nimport { contactSheet, VIEWS } from './sheet.ts';\n\nexport interface ReviewOptions {\n readonly sheet?: PaintedSheet;\n readonly width?: number;\n readonly height?: number;\n readonly azDeg?: number;\n readonly elDeg?: number;\n readonly fovDeg?: number;\n /** Path of the reference dossier (recipes/<name>/README.md) the prompt points the reviewer at. */\n readonly refs?: string;\n}\n\nexport interface ReviewPack {\n /** File name (inside the review folder) → contents. */\n readonly files: ReadonlyMap<string, Uint8Array | string>;\n readonly metrics: ReviewMetrics;\n}\n\nconst tris = (a: CompiledAsset): number =>\n a.parts.reduce((s, p) => s + (p.mesh ? p.mesh.indices.length / 3 : 0), 0);\n\n/** Two zoom windows centred on the densest cells of the hero's 16 × 9 detail grid, ≥ 4 cells apart. */\nexport function detailWindows(detail: Uint32Array): { x: number; y: number }[] {\n const order = [...detail.keys()].sort((a, b) => (detail[b] ?? 0) - (detail[a] ?? 0) || a - b);\n const picked: number[] = [];\n for (const c of order) {\n if ((detail[c] ?? 0) === 0 || picked.length === 2) break;\n if (\n picked.every(\n (p) => Math.hypot((p % 16) - (c % 16), Math.floor(p / 16) - Math.floor(c / 16)) >= 4,\n )\n )\n picked.push(c);\n }\n const clamp = (v: number): number => Math.min(5 / 6, Math.max(1 / 6, v));\n return picked.map((c) => ({\n x: clamp(((c % 16) + 0.5) / 16),\n y: clamp((Math.floor(c / 16) + 0.5) / 9),\n }));\n}\n\nexport function reviewPack(asset: Asset, o: ReviewOptions = {}): ReviewPack {\n const lods = ([0, 1, 2] as Lod[]).map((lod) => compile(asset, { lod }));\n const lod0 = lods[0] ?? compile(asset);\n const lod2 = lods[2] ?? lod0;\n const base: BeautyOptions = {\n ...(o.sheet ? { sheet: o.sheet } : {}),\n ...(o.width ? { width: o.width } : {}),\n ...(o.height ? { height: o.height } : {}),\n ...(o.azDeg !== undefined ? { azDeg: o.azDeg } : {}),\n ...(o.elDeg !== undefined ? { elDeg: o.elDeg } : {}),\n ...(o.fovDeg !== undefined ? { fovDeg: o.fovDeg } : {}),\n };\n const files = new Map<string, Uint8Array | string>();\n const hero = renderBeauty(lod0, base);\n files.set('hero.png', encodePng(hero.width, hero.height, hero.rgba));\n files.set('sheet.png', contactSheet(lod0, { far: lod2 }));\n detailWindows(hero.detail).forEach((w, i) => {\n const r = renderBeauty(lod0, { ...base, window: { ...w, zoom: 3 } });\n files.set(`detail_${i + 1}.png`, encodePng(r.width, r.height, r.rgba));\n });\n // Each LOD panel at most 640 × 480 (smaller when the pack itself is rendered small).\n const k = Math.min(1, (o.width ?? 1600) / 640);\n const panel = {\n width: Math.max(16, Math.round(640 * k)),\n height: Math.max(16, Math.round(480 * k)),\n };\n files.set('lods.png', lodStrip(lods, { ...base, ...panel }));\n const views = VIEWS.slice(0, 5).map((view) => {\n const frame = viewFrame(lod0, view);\n const a = silhouette(lod0, view, 256, frame);\n const b = silhouette(lod2, view, 256, frame);\n return {\n view: view.label,\n lod0: maskStats(a),\n lod2: maskStats(b),\n lodIoU: maskIoU(poolMask(a, 4).mask, poolMask(b, 4).mask),\n lodIoUExact: maskIoU(a.mask, b.mask),\n };\n });\n const partial = {\n asset: asset.name,\n triangles: lods.map(tris),\n hero: exposure(hero.rgba, hero.mask, hero.width),\n views,\n };\n const metrics: ReviewMetrics = { ...partial, warnings: warningsOf(partial) };\n files.set('review.json', `${JSON.stringify(metrics, null, 2)}\\n`);\n files.set('review.md', reviewPrompt(metrics, [...files.keys()], o.refs));\n return { files, metrics };\n}\n",
|
|
25
25
|
"// Thumbnail: ONE hero view (3/4 front, slightly from above) on a transparent background, for\n// gallery cards and asset browsers. Rendered at 3×, cropped to the asset, filtered down: smooth edges.\n// Same zero-GPU rasteriser as the contact sheet — deterministic bytes, runs in CI.\n\nimport { type CompiledAsset, encodePng } from '../core/index.ts';\nimport { drawAsset, orthoCamera, type Target, type View } from './raster.ts';\nimport { bounds } from './sheet.ts';\n\nexport interface ThumbnailOptions {\n /** Output edge in pixels (square). Default 512. */\n readonly size?: number;\n readonly view?: View;\n}\n\nconst HERO: View = { label: 'HERO', dir: [-1, 0.75, -0.45], up: [0, 0, 1] };\n\nexport function thumbnail(asset: CompiledAsset, o: ThumbnailOptions = {}): Uint8Array {\n const size = o.size ?? 512;\n const big = size * 3;\n const t: Target = {\n px: new Uint8Array(big * big * 4),\n depth: new Float32Array(big * big).fill(Infinity),\n width: big,\n height: big,\n };\n const b = bounds(asset);\n drawAsset(t, orthoCamera(o.view ?? HERO, b.centre, b.extent * 0.92, big), asset);\n // Crop to the drawn pixels (square, 6% margin) so every card is filled the same way.\n let x0 = big;\n let y0 = big;\n let x1 = -1;\n let y1 = -1;\n for (let y = 0; y < big; y++)\n for (let x = 0; x < big; x++)\n if ((t.px[(y * big + x) * 4 + 3] ?? 0) > 0) {\n x0 = Math.min(x0, x);\n y0 = Math.min(y0, y);\n x1 = Math.max(x1, x);\n y1 = Math.max(y1, y);\n }\n const side = x1 < 0 ? big : Math.max(x1 - x0, y1 - y0) * 1.12 + 1;\n const ox = x1 < 0 ? 0 : (x0 + x1) / 2 - side / 2;\n const oy = x1 < 0 ? 0 : (y0 + y1) / 2 - side / 2;\n const step = side / size;\n // Supersampled box filter over each output pixel's footprint; alpha-weighted colour so\n // silhouettes stay clean against any page background.\n const out = new Uint8Array(size * size * 4);\n const taps = [0.25, 0.75];\n for (let y = 0; y < size; y++) {\n for (let x = 0; x < size; x++) {\n let r = 0;\n let g = 0;\n let bl = 0;\n let a = 0;\n for (const fy of taps)\n for (const fx of taps) {\n const sx = Math.floor(ox + (x + fx) * step);\n const sy = Math.floor(oy + (y + fy) * step);\n if (sx < 0 || sy < 0 || sx >= big || sy >= big) continue;\n const i = (sy * big + sx) * 4;\n const w = t.px[i + 3] ?? 0;\n r += (t.px[i] ?? 0) * w;\n g += (t.px[i + 1] ?? 0) * w;\n bl += (t.px[i + 2] ?? 0) * w;\n a += w;\n }\n if (a > 0)\n out.set(\n [Math.round(r / a), Math.round(g / a), Math.round(bl / a), Math.round(a / 4)],\n (y * size + x) * 4,\n );\n }\n }\n return encodePng(size, size, out);\n}\n"
|
|
26
26
|
],
|
|
27
|
-
"mappings": "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",
|
|
28
|
-
"debugId": "
|
|
27
|
+
"mappings": "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",
|
|
28
|
+
"debugId": "276D71BEBA755B0464756E2164756E21",
|
|
29
29
|
"names": []
|
|
30
30
|
}
|
|
@@ -168,7 +168,8 @@ function compile2(asset, options = {}) {
|
|
|
168
168
|
checks: asset.checks ?? [],
|
|
169
169
|
parts: [...parts.values()],
|
|
170
170
|
...metaOf(asset),
|
|
171
|
-
...asset.glow?.length ? { glow: asset.glow } : {}
|
|
171
|
+
...asset.glow?.length ? { glow: asset.glow } : {},
|
|
172
|
+
...asset.lodCoverage ? { lodCoverage: asset.lodCoverage } : {}
|
|
172
173
|
};
|
|
173
174
|
}
|
|
174
175
|
function metaOf(a) {
|
|
@@ -460,5 +461,5 @@ function computeWorldMeshes(parts) {
|
|
|
460
461
|
}
|
|
461
462
|
export { Ts23dError2, notImplemented2, createRng2, BUDGETS2, defineAsset2, isAsset2, compile2, defineFamily2, MeshBuilder2, triangleCount2, boundsOf2, translate2, merge2, encodePng2, affine2, frame2, applyAffine2, place2, add2, sub2, scale2, dot2, cross2, length2, normalize2, quatFromAxisAngle2, worldTransforms2, toWorld2, rotateZ2, worldMesh2, worldMeshes2 };
|
|
462
463
|
|
|
463
|
-
//# debugId=
|
|
464
|
-
//# sourceMappingURL=chunk-
|
|
464
|
+
//# debugId=288573E03E7A25C964756E2164756E21
|
|
465
|
+
//# sourceMappingURL=chunk-hg7pf34j.js.map
|