@skenora/procedural 0.1.2

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/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # @skenora/procedural
2
+
3
+ Pure, renderer-independent compilers for versioned Skenora procedural programs.
4
+
5
+ > This package is not currently published to npm; the install command below is
6
+ > intended release syntax. Procedural V1 is current repository source and is
7
+ > not covered by the 2026-08-28 package/browser evidence.
8
+
9
+ ```bash
10
+ pnpm add @skenora/procedural
11
+ ```
12
+
13
+ - `compileProceduralGeometry()` validates and compiles a bounded geometry graph
14
+ into positions, indices, normals, UVs, bounds, statistics, and a deterministic
15
+ signature.
16
+ - `compileMaterialProgram()` validates and lowers a typed material graph into a
17
+ deterministic intermediate representation with parameter uniforms,
18
+ requirements, topology signature, and content signature.
19
+ - `compileTextureProgram()` produces deterministic bounded generated texture
20
+ bytes and WGSL reflection metadata.
21
+ - `compileRenderGraph()` lowers trusted capture/blur/transmission passes to
22
+ ordered target IR with memory estimates.
23
+ - `compileSimulationProgram()` expands fixed-step fluid, staged inverse FFT,
24
+ or radiance/JFA declarations into stable ping-pong pass IR.
25
+ - Schema, validation, capability-description, limit, and program types are
26
+ re-exported from `@skenora/contracts`.
27
+
28
+ ```ts
29
+ import {
30
+ compileMaterialProgram,
31
+ compileProceduralGeometry,
32
+ validateProceduralGeometryProgram,
33
+ } from "@skenora/procedural";
34
+
35
+ const validation = validateProceduralGeometryProgram(geometryProgram);
36
+ if (!validation.valid) throw new Error(validation.issues[0]?.message);
37
+
38
+ const mesh = compileProceduralGeometry(geometryProgram);
39
+ const material = compileMaterialProgram(materialProgram);
40
+
41
+ console.log(mesh.stats, mesh.signature, material.topologySignature);
42
+ ```
43
+
44
+ Geometry V1 limits nodes, segments, array counts, vertices, triangles, and
45
+ convex extrusion profiles. Material V1 limits nodes and parameters and can
46
+ write only PBR base color and emission. Changing parameter values preserves a
47
+ material topology signature; changing graph structure or literals does not.
48
+
49
+ The package never evaluates authored JavaScript or shader source and owns no
50
+ Canvas, Babylon, GPU, workspace, Editor, or network resources. See the
51
+ [repository](https://github.com/zhangjiadi225/skenora); the current working-tree
52
+ guide and resource-free example are `docs/PROCEDURAL_AI.md` and
53
+ `examples/procedural-ai/procedural-material.blueprint.json`.
54
+
55
+ The explicit `@skenora/procedural/emitters` subpath contains versioned trusted
56
+ GLSL and WGSL emitters over compiled MaterialProgram IR. It is an
57
+ internal-style backend seam: callers cannot provide shader text. Runtime
58
+ consumes the GLSL artifact; isolated tooling may inspect the WGSL artifact
59
+ without making WebGPU part of the default Babylon Runtime. Physical WebGPU
60
+ execution lives only in the explicit `@skenora/runtime/simulation` subpath.
@@ -0,0 +1,3 @@
1
+ /** Trusted package-owned backend emitters; authored code is never accepted. */
2
+ export * from "./material-program-emitters.js";
3
+ //# sourceMappingURL=emitters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../src/emitters.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Trusted package-owned backend emitters; authored code is never accepted. */
2
+ export * from "./material-program-emitters.js";
3
+ //# sourceMappingURL=emitters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitters.js","sourceRoot":"","sources":["../src/emitters.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type ProceduralGeometryProgram, type ProceduralProgramIssue, type Vector3Value } from "@skenora/contracts";
2
+ export interface ProceduralGeometryCompileLimits {
3
+ readonly maxVertices: number;
4
+ readonly maxTriangles: number;
5
+ }
6
+ export interface CompiledProceduralMesh {
7
+ readonly positions: readonly number[];
8
+ readonly indices: readonly number[];
9
+ readonly normals: readonly number[];
10
+ readonly uvs: readonly number[];
11
+ readonly bounds: Readonly<{
12
+ minimum: Readonly<Vector3Value>;
13
+ maximum: Readonly<Vector3Value>;
14
+ }>;
15
+ readonly stats: Readonly<{
16
+ vertices: number;
17
+ triangles: number;
18
+ }>;
19
+ readonly signature: string;
20
+ }
21
+ export declare class ProceduralGeometryCompilationError extends Error {
22
+ readonly issues: readonly ProceduralProgramIssue[];
23
+ constructor(issues: readonly ProceduralProgramIssue[]);
24
+ }
25
+ /** Compile only data reachable from output. The function has no renderer or global state. */
26
+ export declare function compileProceduralGeometry(program: Readonly<ProceduralGeometryProgram>, limits?: Partial<ProceduralGeometryCompileLimits>): CompiledProceduralMesh;
27
+ //# sourceMappingURL=geometry-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-compiler.d.ts","sourceRoot":"","sources":["../src/geometry-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxB,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QAChC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;gBAEvC,MAAM,EAAE,SAAS,sBAAsB,EAAE;CAStD;AAQD,6FAA6F;AAC7F,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EAC5C,MAAM,GAAE,OAAO,CAAC,+BAA+B,CAAM,GACpD,sBAAsB,CAoDxB"}
@@ -0,0 +1,355 @@
1
+ import { PROCEDURAL_GEOMETRY_LIMITS, validateProceduralGeometryProgram, } from "@skenora/contracts";
2
+ export class ProceduralGeometryCompilationError extends Error {
3
+ issues;
4
+ constructor(issues) {
5
+ super(issues
6
+ .map((issue) => `${formatPath(issue.path)}: ${issue.message}`)
7
+ .join("; "));
8
+ this.name = "ProceduralGeometryCompilationError";
9
+ this.issues = issues.map((issue) => ({ ...issue, path: [...issue.path] }));
10
+ }
11
+ }
12
+ /** Compile only data reachable from output. The function has no renderer or global state. */
13
+ export function compileProceduralGeometry(program, limits = {}) {
14
+ const validation = validateProceduralGeometryProgram(program);
15
+ if (!validation.valid)
16
+ throw new ProceduralGeometryCompilationError(validation.issues);
17
+ const budget = {
18
+ maxVertices: limits.maxVertices ?? PROCEDURAL_GEOMETRY_LIMITS.maxVertices,
19
+ maxTriangles: limits.maxTriangles ?? PROCEDURAL_GEOMETRY_LIMITS.maxTriangles,
20
+ };
21
+ if (!Number.isInteger(budget.maxVertices) ||
22
+ budget.maxVertices <= 0 ||
23
+ !Number.isInteger(budget.maxTriangles) ||
24
+ budget.maxTriangles <= 0)
25
+ throw new Error("Procedural geometry compile limits must be positive integers");
26
+ const byId = new Map(program.nodes.map((node) => [node.id, node]));
27
+ const memo = new Map();
28
+ const compile = (id) => {
29
+ const cached = memo.get(id);
30
+ if (cached)
31
+ return cached;
32
+ const node = byId.get(id);
33
+ if (!node)
34
+ throw new ProceduralGeometryCompilationError([
35
+ {
36
+ code: "missing-node",
37
+ path: ["output"],
38
+ message: `Node not found: ${id}`,
39
+ },
40
+ ]);
41
+ const mesh = compileNode(node, compile);
42
+ enforceBudget(mesh, budget, node.id);
43
+ memo.set(id, mesh);
44
+ return mesh;
45
+ };
46
+ const output = compile(program.output);
47
+ const positions = [...output.positions];
48
+ const indices = [...output.indices];
49
+ const uvs = [...output.uvs];
50
+ const normals = calculateNormals(positions, indices);
51
+ return {
52
+ positions,
53
+ indices,
54
+ normals,
55
+ uvs,
56
+ bounds: calculateBounds(positions),
57
+ stats: { vertices: positions.length / 3, triangles: indices.length / 3 },
58
+ signature: fnv1a(stableStringify(program)),
59
+ };
60
+ }
61
+ function compileNode(node, compile) {
62
+ switch (node.type) {
63
+ case "geometry.box":
64
+ return createBox(node.size);
65
+ case "geometry.plane":
66
+ return createPlane(node.width, node.depth);
67
+ case "geometry.sphere":
68
+ return createSphere(node.diameter, node.segments);
69
+ case "geometry.cylinder":
70
+ return createCylinder(node.height, node.diameterTop, node.diameterBottom, node.segments);
71
+ case "geometry.extrude":
72
+ return createExtrude(node.profile, node.depth);
73
+ case "modifier.transform":
74
+ return transformMesh(compile(node.input), node.translation ?? { x: 0, y: 0, z: 0 }, node.rotation ?? { x: 0, y: 0, z: 0 }, node.scaling ?? { x: 1, y: 1, z: 1 });
75
+ case "modifier.array-linear":
76
+ return mergeMeshes(Array.from({ length: node.count }, (_, index) => transformMesh(compile(node.input), {
77
+ x: node.offset.x * index,
78
+ y: node.offset.y * index,
79
+ z: node.offset.z * index,
80
+ }, { x: 0, y: 0, z: 0 }, { x: 1, y: 1, z: 1 })));
81
+ case "modifier.array-radial": {
82
+ const start = node.startAngle ?? 0;
83
+ return mergeMeshes(Array.from({ length: node.count }, (_, index) => {
84
+ const angle = start + (index / node.count) * Math.PI * 2;
85
+ return transformMesh(compile(node.input), {
86
+ x: Math.cos(angle) * node.radius,
87
+ y: 0,
88
+ z: Math.sin(angle) * node.radius,
89
+ }, { x: 0, y: -angle, z: 0 }, { x: 1, y: 1, z: 1 });
90
+ }));
91
+ }
92
+ case "combine.merge":
93
+ return mergeMeshes(node.inputs.map(compile));
94
+ }
95
+ }
96
+ function createBox(size) {
97
+ const x = size.x / 2, y = size.y / 2, z = size.z / 2;
98
+ const mesh = { positions: [], indices: [], uvs: [] };
99
+ const quad = (...values) => {
100
+ const start = mesh.positions.length / 3;
101
+ mesh.positions.push(...values);
102
+ mesh.indices.push(start, start + 1, start + 2, start, start + 2, start + 3);
103
+ mesh.uvs.push(0, 0, 0, 1, 1, 1, 1, 0);
104
+ };
105
+ quad(-x, -y, -z, -x, y, -z, x, y, -z, x, -y, -z);
106
+ quad(-x, -y, z, x, -y, z, x, y, z, -x, y, z);
107
+ quad(-x, -y, z, -x, y, z, -x, y, -z, -x, -y, -z);
108
+ quad(x, -y, -z, x, y, -z, x, y, z, x, -y, z);
109
+ quad(-x, y, -z, -x, y, z, x, y, z, x, y, -z);
110
+ quad(-x, -y, z, -x, -y, -z, x, -y, -z, x, -y, z);
111
+ return mesh;
112
+ }
113
+ function createPlane(width, depth) {
114
+ const x = width / 2, z = depth / 2;
115
+ return {
116
+ positions: [-x, 0, -z, x, 0, -z, x, 0, z, -x, 0, z],
117
+ indices: [0, 2, 1, 0, 3, 2],
118
+ uvs: [0, 0, 1, 0, 1, 1, 0, 1],
119
+ };
120
+ }
121
+ function createSphere(diameter, segments) {
122
+ const positions = [];
123
+ const indices = [];
124
+ const uvs = [];
125
+ const radius = diameter / 2;
126
+ for (let row = 0; row <= segments; row += 1) {
127
+ const v = row / segments;
128
+ const phi = v * Math.PI;
129
+ for (let column = 0; column <= segments; column += 1) {
130
+ const u = column / segments;
131
+ const theta = u * Math.PI * 2;
132
+ positions.push(Math.sin(phi) * Math.cos(theta) * radius, Math.cos(phi) * radius, Math.sin(phi) * Math.sin(theta) * radius);
133
+ uvs.push(u, v);
134
+ }
135
+ }
136
+ const stride = segments + 1;
137
+ for (let row = 0; row < segments; row += 1)
138
+ for (let column = 0; column < segments; column += 1) {
139
+ const a = row * stride + column;
140
+ const b = a + stride;
141
+ indices.push(a, a + 1, b + 1, a, b + 1, b);
142
+ }
143
+ return { positions, indices, uvs };
144
+ }
145
+ function createCylinder(height, diameterTop, diameterBottom, segments) {
146
+ const positions = [];
147
+ const indices = [];
148
+ const uvs = [];
149
+ const half = height / 2;
150
+ for (let index = 0; index <= segments; index += 1) {
151
+ const u = index / segments;
152
+ const angle = u * Math.PI * 2;
153
+ const x = Math.cos(angle), z = Math.sin(angle);
154
+ positions.push(x * diameterBottom * 0.5, -half, z * diameterBottom * 0.5);
155
+ positions.push(x * diameterTop * 0.5, half, z * diameterTop * 0.5);
156
+ uvs.push(u, 0, u, 1);
157
+ }
158
+ for (let index = 0; index < segments; index += 1) {
159
+ const base = index * 2;
160
+ indices.push(base, base + 1, base + 3, base, base + 3, base + 2);
161
+ }
162
+ const addCap = (top, radius) => {
163
+ if (radius === 0)
164
+ return;
165
+ const center = positions.length / 3;
166
+ positions.push(0, top ? half : -half, 0);
167
+ uvs.push(0.5, 0.5);
168
+ const ring = positions.length / 3;
169
+ for (let index = 0; index < segments; index += 1) {
170
+ const angle = (index / segments) * Math.PI * 2;
171
+ const x = Math.cos(angle), z = Math.sin(angle);
172
+ positions.push(x * radius, top ? half : -half, z * radius);
173
+ uvs.push(x * 0.5 + 0.5, z * 0.5 + 0.5);
174
+ }
175
+ for (let index = 0; index < segments; index += 1) {
176
+ const current = ring + index;
177
+ const next = ring + ((index + 1) % segments);
178
+ if (top)
179
+ indices.push(center, next, current);
180
+ else
181
+ indices.push(center, current, next);
182
+ }
183
+ };
184
+ addCap(true, diameterTop / 2);
185
+ addCap(false, diameterBottom / 2);
186
+ return { positions, indices, uvs };
187
+ }
188
+ function createExtrude(profile, depth) {
189
+ const points = signedArea(profile) < 0 ? [...profile].reverse() : [...profile];
190
+ const positions = [];
191
+ const indices = [];
192
+ const uvs = [];
193
+ const half = depth / 2;
194
+ const bounds = profileBounds(points);
195
+ const appendCap = (z, front) => {
196
+ const start = positions.length / 3;
197
+ for (const point of points) {
198
+ positions.push(point.x, point.y, z);
199
+ uvs.push((point.x - bounds.minimum.x) /
200
+ Math.max(bounds.maximum.x - bounds.minimum.x, 1e-9), (point.y - bounds.minimum.y) /
201
+ Math.max(bounds.maximum.y - bounds.minimum.y, 1e-9));
202
+ }
203
+ for (let index = 1; index < points.length - 1; index += 1)
204
+ if (front)
205
+ indices.push(start, start + index, start + index + 1);
206
+ else
207
+ indices.push(start, start + index + 1, start + index);
208
+ return start;
209
+ };
210
+ appendCap(half, true);
211
+ appendCap(-half, false);
212
+ for (let index = 0; index < points.length; index += 1) {
213
+ const a = points[index];
214
+ const b = points[(index + 1) % points.length];
215
+ const start = positions.length / 3;
216
+ positions.push(a.x, a.y, half, a.x, a.y, -half, b.x, b.y, -half, b.x, b.y, half);
217
+ uvs.push(0, 1, 0, 0, 1, 0, 1, 1);
218
+ indices.push(start, start + 1, start + 2, start, start + 2, start + 3);
219
+ }
220
+ return { positions, indices, uvs };
221
+ }
222
+ function transformMesh(source, translation, rotation, scaling) {
223
+ const positions = [];
224
+ for (let index = 0; index < source.positions.length; index += 3) {
225
+ let x = source.positions[index] * scaling.x;
226
+ let y = source.positions[index + 1] * scaling.y;
227
+ let z = source.positions[index + 2] * scaling.z;
228
+ [y, z] = rotatePair(y, z, rotation.x);
229
+ [z, x] = rotatePair(z, x, rotation.y);
230
+ [x, y] = rotatePair(x, y, rotation.z);
231
+ positions.push(x + translation.x, y + translation.y, z + translation.z);
232
+ }
233
+ const indices = scaling.x * scaling.y * scaling.z < 0
234
+ ? reverseTriangles(source.indices)
235
+ : [...source.indices];
236
+ return { positions, indices, uvs: [...source.uvs] };
237
+ }
238
+ function rotatePair(a, b, angle) {
239
+ const cosine = Math.cos(angle), sine = Math.sin(angle);
240
+ return [a * cosine - b * sine, a * sine + b * cosine];
241
+ }
242
+ function mergeMeshes(meshes) {
243
+ const result = { positions: [], indices: [], uvs: [] };
244
+ for (const mesh of meshes) {
245
+ const offset = result.positions.length / 3;
246
+ result.positions.push(...mesh.positions);
247
+ result.uvs.push(...mesh.uvs);
248
+ result.indices.push(...mesh.indices.map((index) => index + offset));
249
+ }
250
+ return result;
251
+ }
252
+ function reverseTriangles(indices) {
253
+ const result = [...indices];
254
+ for (let index = 0; index < result.length; index += 3)
255
+ [result[index + 1], result[index + 2]] = [
256
+ result[index + 2],
257
+ result[index + 1],
258
+ ];
259
+ return result;
260
+ }
261
+ function calculateNormals(positions, indices) {
262
+ const normals = Array(positions.length).fill(0);
263
+ for (let index = 0; index < indices.length; index += 3) {
264
+ const ia = indices[index] * 3, ib = indices[index + 1] * 3, ic = indices[index + 2] * 3;
265
+ const abx = positions[ib] - positions[ia], aby = positions[ib + 1] - positions[ia + 1], abz = positions[ib + 2] - positions[ia + 2];
266
+ const acx = positions[ic] - positions[ia], acy = positions[ic + 1] - positions[ia + 1], acz = positions[ic + 2] - positions[ia + 2];
267
+ const nx = aby * acz - abz * acy, ny = abz * acx - abx * acz, nz = abx * acy - aby * acx;
268
+ for (const offset of [ia, ib, ic]) {
269
+ normals[offset] += nx;
270
+ normals[offset + 1] += ny;
271
+ normals[offset + 2] += nz;
272
+ }
273
+ }
274
+ for (let index = 0; index < normals.length; index += 3) {
275
+ const length = Math.hypot(normals[index], normals[index + 1], normals[index + 2]) ||
276
+ 1;
277
+ normals[index] = normals[index] / length;
278
+ normals[index + 1] = normals[index + 1] / length;
279
+ normals[index + 2] = normals[index + 2] / length;
280
+ }
281
+ return normals;
282
+ }
283
+ function calculateBounds(positions) {
284
+ const minimum = { x: Infinity, y: Infinity, z: Infinity };
285
+ const maximum = { x: -Infinity, y: -Infinity, z: -Infinity };
286
+ for (let index = 0; index < positions.length; index += 3) {
287
+ minimum.x = Math.min(minimum.x, positions[index]);
288
+ minimum.y = Math.min(minimum.y, positions[index + 1]);
289
+ minimum.z = Math.min(minimum.z, positions[index + 2]);
290
+ maximum.x = Math.max(maximum.x, positions[index]);
291
+ maximum.y = Math.max(maximum.y, positions[index + 1]);
292
+ maximum.z = Math.max(maximum.z, positions[index + 2]);
293
+ }
294
+ return { minimum, maximum };
295
+ }
296
+ function enforceBudget(mesh, limits, nodeId) {
297
+ const vertices = mesh.positions.length / 3;
298
+ const triangles = mesh.indices.length / 3;
299
+ if (vertices <= limits.maxVertices && triangles <= limits.maxTriangles)
300
+ return;
301
+ throw new ProceduralGeometryCompilationError([
302
+ {
303
+ code: "budget-exceeded",
304
+ path: ["nodes", nodeId],
305
+ message: `Compiled mesh has ${vertices} vertices and ${triangles} triangles; limits are ${limits.maxVertices} and ${limits.maxTriangles}`,
306
+ },
307
+ ]);
308
+ }
309
+ function signedArea(points) {
310
+ return (points.reduce((area, point, index) => {
311
+ const next = points[(index + 1) % points.length];
312
+ return area + point.x * next.y - next.x * point.y;
313
+ }, 0) / 2);
314
+ }
315
+ function profileBounds(points) {
316
+ return points.reduce((bounds, point) => ({
317
+ minimum: {
318
+ x: Math.min(bounds.minimum.x, point.x),
319
+ y: Math.min(bounds.minimum.y, point.y),
320
+ },
321
+ maximum: {
322
+ x: Math.max(bounds.maximum.x, point.x),
323
+ y: Math.max(bounds.maximum.y, point.y),
324
+ },
325
+ }), {
326
+ minimum: { x: Infinity, y: Infinity },
327
+ maximum: { x: -Infinity, y: -Infinity },
328
+ });
329
+ }
330
+ function stableStringify(value) {
331
+ if (Array.isArray(value))
332
+ return `[${value.map(stableStringify).join(",")}]`;
333
+ if (value && typeof value === "object")
334
+ return `{${Object.entries(value)
335
+ .sort(([left], [right]) => left.localeCompare(right))
336
+ .map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`)
337
+ .join(",")}}`;
338
+ return JSON.stringify(value) ?? "null";
339
+ }
340
+ function fnv1a(value) {
341
+ let hash = 0x811c9dc5;
342
+ for (let index = 0; index < value.length; index += 1) {
343
+ hash ^= value.charCodeAt(index);
344
+ hash = Math.imul(hash, 0x01000193);
345
+ }
346
+ return `fnv1a:${(hash >>> 0).toString(16).padStart(8, "0")}`;
347
+ }
348
+ function formatPath(path) {
349
+ return path.reduce((result, part) => typeof part === "number"
350
+ ? `${result}[${part}]`
351
+ : result
352
+ ? `${result}.${part}`
353
+ : part, "");
354
+ }
355
+ //# sourceMappingURL=geometry-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-compiler.js","sourceRoot":"","sources":["../src/geometry-compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from "./geometry-compiler.js";
2
+ export * from "./material-compiler.js";
3
+ export * from "./texture-compiler.js";
4
+ export * from "./render-graph-compiler.js";
5
+ export * from "./simulation-compiler.js";
6
+ export { MATERIAL_PROGRAM_CAPABILITY_ID, MATERIAL_PROGRAM_CAPABILITY_VERSION, MATERIAL_PROGRAM_LIMITS, MATERIAL_PROGRAM_SCHEMA, MATERIAL_PROGRAM_VERSION, MATERIAL_PROGRAM_V2_VERSION, MATERIAL_PROGRAM_V2_CAPABILITY_ID, MATERIAL_PROGRAM_V2_CAPABILITY_VERSION, TEXTURE_PROGRAM_CAPABILITY_ID, TEXTURE_PROGRAM_CAPABILITY_VERSION, TEXTURE_PROGRAM_LIMITS, TEXTURE_PROGRAM_SCHEMA, TEXTURE_PROGRAM_VERSION, RENDER_GRAPH_CAPABILITY_ID, RENDER_GRAPH_CAPABILITY_VERSION, RENDER_GRAPH_LIMITS, RENDER_GRAPH_SCHEMA, RENDER_GRAPH_VERSION, SIMULATION_PROGRAM_CAPABILITY_ID, SIMULATION_PROGRAM_CAPABILITY_VERSION, SIMULATION_PROGRAM_LIMITS, SIMULATION_PROGRAM_SCHEMA, SIMULATION_PROGRAM_VERSION, PROCEDURAL_GEOMETRY_CAPABILITY_ID, PROCEDURAL_GEOMETRY_CAPABILITY_VERSION, PROCEDURAL_GEOMETRY_LIMITS, PROCEDURAL_GEOMETRY_SCHEMA, PROCEDURAL_GEOMETRY_VERSION, describeMaterialProgramCapability, describeMaterialProgramV2Capability, describeTextureProgramCapability, describeRenderGraphCapability, describeSimulationProgramCapability, describeProceduralGeometryCapability, getMaterialProgramJsonSchema, getTextureProgramJsonSchema, getRenderGraphJsonSchema, getSimulationProgramJsonSchema, getProceduralGeometryProgramJsonSchema, validateMaterialProgram, validateTextureProgram, validateRenderGraph, validateSimulationProgram, validateProceduralGeometryProgram, type MaterialProgram, type MaterialProgramIssue, type MaterialProgramNode, type MaterialProgramOutputs, type MaterialProgramParameter, type MaterialProgramValidationResult, type MaterialProgramValueType, type TextureProgram, type TextureProgramIssue, type TextureProgramKind, type TextureProgramValidationResult, type RenderGraphIssue, type RenderGraphPass, type RenderGraphProgram, type RenderGraphTarget, type RenderGraphValidationResult, type SimulationKernel, type SimulationProgram, type SimulationProgramIssue, type SimulationProgramValidationResult, type SimulationStorageResource, type ProceduralEntityProperties, type ProceduralGeometryNode, type ProceduralGeometryProgram, type ProceduralProgramIssue, type ProceduralProgramValidationResult, } from "@skenora/contracts";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,iCAAiC,EACjC,sCAAsC,EACtC,6BAA6B,EAC7B,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,qCAAqC,EACrC,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,iCAAiC,EACjC,sCAAsC,EACtC,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,mCAAmC,EACnC,gCAAgC,EAChC,6BAA6B,EAC7B,mCAAmC,EACnC,oCAAoC,EACpC,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,8BAA8B,EAC9B,sCAAsC,EACtC,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,iCAAiC,EACjC,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,GACvC,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./geometry-compiler.js";
2
+ export * from "./material-compiler.js";
3
+ export * from "./texture-compiler.js";
4
+ export * from "./render-graph-compiler.js";
5
+ export * from "./simulation-compiler.js";
6
+ export { MATERIAL_PROGRAM_CAPABILITY_ID, MATERIAL_PROGRAM_CAPABILITY_VERSION, MATERIAL_PROGRAM_LIMITS, MATERIAL_PROGRAM_SCHEMA, MATERIAL_PROGRAM_VERSION, MATERIAL_PROGRAM_V2_VERSION, MATERIAL_PROGRAM_V2_CAPABILITY_ID, MATERIAL_PROGRAM_V2_CAPABILITY_VERSION, TEXTURE_PROGRAM_CAPABILITY_ID, TEXTURE_PROGRAM_CAPABILITY_VERSION, TEXTURE_PROGRAM_LIMITS, TEXTURE_PROGRAM_SCHEMA, TEXTURE_PROGRAM_VERSION, RENDER_GRAPH_CAPABILITY_ID, RENDER_GRAPH_CAPABILITY_VERSION, RENDER_GRAPH_LIMITS, RENDER_GRAPH_SCHEMA, RENDER_GRAPH_VERSION, SIMULATION_PROGRAM_CAPABILITY_ID, SIMULATION_PROGRAM_CAPABILITY_VERSION, SIMULATION_PROGRAM_LIMITS, SIMULATION_PROGRAM_SCHEMA, SIMULATION_PROGRAM_VERSION, PROCEDURAL_GEOMETRY_CAPABILITY_ID, PROCEDURAL_GEOMETRY_CAPABILITY_VERSION, PROCEDURAL_GEOMETRY_LIMITS, PROCEDURAL_GEOMETRY_SCHEMA, PROCEDURAL_GEOMETRY_VERSION, describeMaterialProgramCapability, describeMaterialProgramV2Capability, describeTextureProgramCapability, describeRenderGraphCapability, describeSimulationProgramCapability, describeProceduralGeometryCapability, getMaterialProgramJsonSchema, getTextureProgramJsonSchema, getRenderGraphJsonSchema, getSimulationProgramJsonSchema, getProceduralGeometryProgramJsonSchema, validateMaterialProgram, validateTextureProgram, validateRenderGraph, validateSimulationProgram, validateProceduralGeometryProgram, } from "@skenora/contracts";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,iCAAiC,EACjC,sCAAsC,EACtC,6BAA6B,EAC7B,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,qCAAqC,EACrC,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,iCAAiC,EACjC,sCAAsC,EACtC,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,mCAAmC,EACnC,gCAAgC,EAChC,6BAA6B,EAC7B,mCAAmC,EACnC,oCAAoC,EACpC,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,8BAA8B,EAC9B,sCAAsC,EACtC,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,iCAAiC,GA2BlC,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type MaterialProgram, type MaterialProgramIssue, type MaterialProgramNode, type MaterialProgramParameter, type MaterialProgramValueType } from "@skenora/contracts";
2
+ export interface CompiledMaterialParameter {
3
+ readonly name: string;
4
+ readonly uniform: string;
5
+ readonly definition: Readonly<MaterialProgramParameter>;
6
+ }
7
+ export interface CompiledMaterialInstruction {
8
+ readonly node: Readonly<MaterialProgramNode>;
9
+ readonly valueType: MaterialProgramValueType;
10
+ }
11
+ export interface CompiledMaterialProgram {
12
+ readonly instructions: readonly CompiledMaterialInstruction[];
13
+ readonly parameters: readonly CompiledMaterialParameter[];
14
+ readonly outputs: Readonly<{
15
+ baseColor?: string;
16
+ emissive?: string;
17
+ roughness?: string;
18
+ metallic?: string;
19
+ opacity?: string;
20
+ }>;
21
+ readonly requirements: Readonly<{
22
+ localPosition: boolean;
23
+ worldPosition: boolean;
24
+ fresnel: boolean;
25
+ noise: boolean;
26
+ }>;
27
+ /** Changes only when generated shader structure or literals change. */
28
+ readonly topologySignature: string;
29
+ /** Includes parameter values and is useful for caches or audit logs. */
30
+ readonly contentSignature: string;
31
+ }
32
+ export declare class MaterialProgramCompilationError extends Error {
33
+ readonly issues: readonly MaterialProgramIssue[];
34
+ constructor(issues: readonly MaterialProgramIssue[]);
35
+ }
36
+ /** Validate and lower a material graph into deterministic, renderer-neutral IR. */
37
+ export declare function compileMaterialProgram(program: Readonly<MaterialProgram>): CompiledMaterialProgram;
38
+ //# sourceMappingURL=material-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-compiler.d.ts","sourceRoot":"","sources":["../src/material-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC9B,aAAa,EAAE,OAAO,CAAC;QACvB,aAAa,EAAE,OAAO,CAAC;QACvB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;IACH,uEAAuE;IACvE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;gBAErC,MAAM,EAAE,SAAS,oBAAoB,EAAE;CAYpD;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,GACjC,uBAAuB,CA0DzB"}