@aura3d/engine 4.0.4 → 4.0.5
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 +2 -2
- package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.js +1 -1
- package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/emit.js +3 -3
- package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.js +3 -1
- package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
- package/dist/create-aura3d/index.js +1 -1
- package/dist/engine/agent-api/compiler/errors.d.ts +1 -1
- package/dist/engine/agent-api/compiler/errors.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/errors.js.map +1 -1
- package/dist/engine/agent-api/index.d.ts +2 -0
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +2 -0
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/nodes/material.d.ts +6 -0
- package/dist/engine/agent-api/nodes/material.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/material.js +6 -0
- package/dist/engine/agent-api/nodes/material.js.map +1 -1
- package/dist/engine/agent-api/nodes/tsl/emit.d.ts +48 -0
- package/dist/engine/agent-api/nodes/tsl/emit.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/emit.js +361 -0
- package/dist/engine/agent-api/nodes/tsl/emit.js.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/index.d.ts +115 -0
- package/dist/engine/agent-api/nodes/tsl/index.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/index.js +175 -0
- package/dist/engine/agent-api/nodes/tsl/index.js.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/interpret.d.ts +21 -0
- package/dist/engine/agent-api/nodes/tsl/interpret.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/interpret.js +113 -0
- package/dist/engine/agent-api/nodes/tsl/interpret.js.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/ir.d.ts +204 -0
- package/dist/engine/agent-api/nodes/tsl/ir.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/tsl/ir.js +501 -0
- package/dist/engine/agent-api/nodes/tsl/ir.js.map +1 -0
- package/dist/engine/public/index.d.ts +2 -2
- package/dist/engine/public/index.d.ts.map +1 -1
- package/dist/engine/public/index.js +1 -1
- package/dist/engine/public/index.js.map +1 -1
- package/package.json +26 -26
- package/templates/cinematic-scene/package.json +2 -2
- package/templates/mini-game/package.json +2 -2
- package/templates/product-viewer/package.json +2 -2
- package/templates/production-asset-inspector/package.json +1 -1
- package/templates/production-material-studio/package.json +1 -1
- package/templates/production-product-configurator/package.json +1 -1
- package/templates/production-product-viewer/package.json +1 -1
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SH-01 / L1-11 — TSL-style node graph subset: IR, type inference, constant
|
|
3
|
+
* folding and the imperative statement recorder (`Fn`, `If`, `Loop`).
|
|
4
|
+
*
|
|
5
|
+
* This is a deliberately small subset of three.js TSL that lowers to GLSL 300 es
|
|
6
|
+
* and feeds `material.custom` (see `emit.ts`). Anything outside the subset fails
|
|
7
|
+
* with a named `AuraRuntimeError`, never silently.
|
|
8
|
+
*/
|
|
9
|
+
import { AuraRuntimeError } from "../../compiler/errors.js";
|
|
10
|
+
export const TSL_BUILTIN_TYPES = {
|
|
11
|
+
positionLocal: "vec3",
|
|
12
|
+
positionWorld: "vec3",
|
|
13
|
+
normalLocal: "vec3",
|
|
14
|
+
normalWorld: "vec3",
|
|
15
|
+
uv: "vec2",
|
|
16
|
+
time: "float",
|
|
17
|
+
cameraPosition: "vec3"
|
|
18
|
+
};
|
|
19
|
+
export function tslError(code, message) {
|
|
20
|
+
throw new AuraRuntimeError(code, message);
|
|
21
|
+
}
|
|
22
|
+
export const dimOf = (type) => (type === "vec2" ? 2 : type === "vec3" ? 3 : type === "vec4" ? 4 : 1);
|
|
23
|
+
export const isVec = (type) => dimOf(type) > 1;
|
|
24
|
+
export const isNumericScalar = (type) => type === "float" || type === "int";
|
|
25
|
+
const vecOf = (n) => (n === 2 ? "vec2" : n === 3 ? "vec3" : n === 4 ? "vec4" : "float");
|
|
26
|
+
let nodeCounter = 0;
|
|
27
|
+
/** A node in the graph. Chainable methods mirror three's TSL (`a.mul(b).add(c)`). */
|
|
28
|
+
export class TslNode {
|
|
29
|
+
type;
|
|
30
|
+
data;
|
|
31
|
+
id;
|
|
32
|
+
constructor(type, data) {
|
|
33
|
+
this.type = type;
|
|
34
|
+
this.data = data;
|
|
35
|
+
this.id = nodeCounter++;
|
|
36
|
+
}
|
|
37
|
+
add(other) { return op("add", this, other); }
|
|
38
|
+
sub(other) { return op("sub", this, other); }
|
|
39
|
+
mul(other) { return op("mul", this, other); }
|
|
40
|
+
div(other) { return op("div", this, other); }
|
|
41
|
+
mod(other) { return op("mod", this, other); }
|
|
42
|
+
pow(other) { return op("pow", this, other); }
|
|
43
|
+
min(other) { return op("min", this, other); }
|
|
44
|
+
max(other) { return op("max", this, other); }
|
|
45
|
+
dot(other) { return op("dot", this, other); }
|
|
46
|
+
cross(other) { return op("cross", this, other); }
|
|
47
|
+
distance(other) { return op("distance", this, other); }
|
|
48
|
+
atan2(other) { return op("atan2", this, other); }
|
|
49
|
+
/** `edge.step(x)` is GLSL `step(edge, x)`: 0 where `x < edge`, else 1. */
|
|
50
|
+
step(x) { return op("step", this, x); }
|
|
51
|
+
lessThan(other) { return op("lessThan", this, other); }
|
|
52
|
+
greaterThan(other) { return op("greaterThan", this, other); }
|
|
53
|
+
lessThanEqual(other) { return op("lessThanEqual", this, other); }
|
|
54
|
+
greaterThanEqual(other) { return op("greaterThanEqual", this, other); }
|
|
55
|
+
equal(other) { return op("equal", this, other); }
|
|
56
|
+
notEqual(other) { return op("notEqual", this, other); }
|
|
57
|
+
and(other) { return op("and", this, other); }
|
|
58
|
+
or(other) { return op("or", this, other); }
|
|
59
|
+
not() { return op("not", this); }
|
|
60
|
+
sin() { return op("sin", this); }
|
|
61
|
+
cos() { return op("cos", this); }
|
|
62
|
+
tan() { return op("tan", this); }
|
|
63
|
+
abs() { return op("abs", this); }
|
|
64
|
+
sign() { return op("sign", this); }
|
|
65
|
+
sqrt() { return op("sqrt", this); }
|
|
66
|
+
exp() { return op("exp", this); }
|
|
67
|
+
log() { return op("log", this); }
|
|
68
|
+
fract() { return op("fract", this); }
|
|
69
|
+
floor() { return op("floor", this); }
|
|
70
|
+
ceil() { return op("ceil", this); }
|
|
71
|
+
normalize() { return op("normalize", this); }
|
|
72
|
+
saturate() { return op("saturate", this); }
|
|
73
|
+
oneMinus() { return op("oneMinus", this); }
|
|
74
|
+
negate() { return op("negate", this); }
|
|
75
|
+
length() { return op("length", this); }
|
|
76
|
+
mix(other, t) { return op("mix", this, other, t); }
|
|
77
|
+
clamp(lo = 0, hi = 1) { return op("clamp", this, lo, hi); }
|
|
78
|
+
smoothstep(edge0, edge1) { return op("smoothstep", edge0, edge1, this); }
|
|
79
|
+
/** Local variable declaration (valid only inside `Fn`). */
|
|
80
|
+
toVar() {
|
|
81
|
+
if (this.type === "sampler2D")
|
|
82
|
+
tslError("tsl-type-mismatch", "a texture sampler cannot be stored in a variable");
|
|
83
|
+
const variable = new TslNode(this.type, { k: "var", init: this });
|
|
84
|
+
record({ s: "decl", node: variable }, "toVar()");
|
|
85
|
+
return variable;
|
|
86
|
+
}
|
|
87
|
+
assign(value) { return assignTo(this, value, undefined); }
|
|
88
|
+
addAssign(value) { return assignTo(this, value, "+"); }
|
|
89
|
+
subAssign(value) { return assignTo(this, value, "-"); }
|
|
90
|
+
mulAssign(value) { return assignTo(this, value, "*"); }
|
|
91
|
+
divAssign(value) { return assignTo(this, value, "/"); }
|
|
92
|
+
/** Static-index convenience for `uniformArray(...).element(i)` results. */
|
|
93
|
+
get isConstant() { return this.data.k === "const"; }
|
|
94
|
+
}
|
|
95
|
+
/** `uniformArray` handle: lowered to N scalar/vector uniforms named `<name>_0 ... <name>_{N-1}`. */
|
|
96
|
+
export class TslUniformArray {
|
|
97
|
+
name;
|
|
98
|
+
elementType;
|
|
99
|
+
values;
|
|
100
|
+
elements;
|
|
101
|
+
constructor(name, elementType, values, elements) {
|
|
102
|
+
this.name = name;
|
|
103
|
+
this.elementType = elementType;
|
|
104
|
+
this.values = values;
|
|
105
|
+
this.elements = elements;
|
|
106
|
+
}
|
|
107
|
+
get length() { return this.elements.length; }
|
|
108
|
+
/** Static index returns the element's uniform node; a node index lowers to a select ladder. */
|
|
109
|
+
element(index) {
|
|
110
|
+
if (typeof index === "number") {
|
|
111
|
+
if (!Number.isInteger(index) || index < 0 || index >= this.elements.length) {
|
|
112
|
+
tslError("invalid-tsl-graph", `uniformArray element index ${index} is outside 0..${this.elements.length - 1}`);
|
|
113
|
+
}
|
|
114
|
+
return this.elements[index];
|
|
115
|
+
}
|
|
116
|
+
return new TslNode(this.elementType, { k: "element", array: this, index: toNode(index) });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/* ------------------------------------------------------------------------- */
|
|
120
|
+
/* Statement recorder */
|
|
121
|
+
/* ------------------------------------------------------------------------- */
|
|
122
|
+
const blockStack = [];
|
|
123
|
+
function record(statement, what) {
|
|
124
|
+
const top = blockStack[blockStack.length - 1];
|
|
125
|
+
if (!top)
|
|
126
|
+
tslError("tsl-statement-outside-fn", `${what} is a statement and is only valid inside Fn(() => { ... }); wrap imperative TSL code in Fn`);
|
|
127
|
+
top.push(statement);
|
|
128
|
+
}
|
|
129
|
+
function withBlock(fn) {
|
|
130
|
+
const block = [];
|
|
131
|
+
blockStack.push(block);
|
|
132
|
+
try {
|
|
133
|
+
const result = fn();
|
|
134
|
+
return { block, result };
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
blockStack.pop();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function assignTo(target, value, compound) {
|
|
141
|
+
if (target.data.k !== "var")
|
|
142
|
+
tslError("tsl-type-mismatch", "assign() target must be a node created with toVar()");
|
|
143
|
+
const rhs = toNode(value);
|
|
144
|
+
const compatible = target.type === rhs.type || (target.type === "float" && rhs.type === "int") || (isVec(target.type) && rhs.type === "float" && compound !== undefined);
|
|
145
|
+
if (!compatible)
|
|
146
|
+
tslError("tsl-type-mismatch", `cannot assign ${rhs.type} to a ${target.type} variable`);
|
|
147
|
+
record({ s: "assign", target, value: rhs, ...(compound ? { op: compound } : {}) }, "assign()");
|
|
148
|
+
return target;
|
|
149
|
+
}
|
|
150
|
+
/** `Fn(callback)`: callback runs once per call site; its statements and return node become an inline block. */
|
|
151
|
+
export function Fn(callback) {
|
|
152
|
+
return (...args) => {
|
|
153
|
+
const argNodes = args.map((arg) => toNode(arg));
|
|
154
|
+
const { block, result } = withBlock(() => callback(...argNodes));
|
|
155
|
+
if (result === undefined)
|
|
156
|
+
tslError("invalid-tsl-graph", "Fn callback must return a node (statement-only Fn blocks have no value to use)");
|
|
157
|
+
const returned = toNode(result);
|
|
158
|
+
return new TslNode(returned.type, { k: "call", block, result: returned, args: argNodes });
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/** `If(cond, () => { ... }).ElseIf(...).Else(...)` — statement form, valid only inside `Fn`. */
|
|
162
|
+
export function If(condition, body) {
|
|
163
|
+
const branches = [];
|
|
164
|
+
const statement = { s: "if", branches };
|
|
165
|
+
record(statement, "If()");
|
|
166
|
+
const addBranch = (cond, fn) => {
|
|
167
|
+
const node = toNode(cond);
|
|
168
|
+
if (node.type !== "bool")
|
|
169
|
+
tslError("tsl-type-mismatch", `If condition must be a bool node (got ${node.type}); build one with lessThan/greaterThan/equal/and/or/not`);
|
|
170
|
+
branches.push({ cond: node, block: withBlock(fn).block });
|
|
171
|
+
};
|
|
172
|
+
addBranch(condition, body);
|
|
173
|
+
const chain = {
|
|
174
|
+
ElseIf(cond, fn) { addBranch(cond, fn); return chain; },
|
|
175
|
+
Else(fn) { statement.otherwise = withBlock(fn).block; }
|
|
176
|
+
};
|
|
177
|
+
return chain;
|
|
178
|
+
}
|
|
179
|
+
export const TSL_MAX_STATIC_LOOP = 1024;
|
|
180
|
+
/** `Loop(count | { start, end }, ({ i }) => { ... })` — statement form, valid only inside `Fn`. */
|
|
181
|
+
export function Loop(range, body) {
|
|
182
|
+
const bounds = typeof range === "number" || range instanceof TslNode ? { start: 0, end: range } : range;
|
|
183
|
+
const start = toIntNode(bounds.start ?? 0, "Loop start");
|
|
184
|
+
const end = toIntNode(bounds.end, "Loop end");
|
|
185
|
+
if (start.data.k === "const" && end.data.k === "const" && end.data.value[0] - start.data.value[0] > TSL_MAX_STATIC_LOOP) {
|
|
186
|
+
tslError("invalid-tsl-graph", `Loop of ${end.data.value[0] - start.data.value[0]} iterations exceeds the ${TSL_MAX_STATIC_LOOP} iteration limit`);
|
|
187
|
+
}
|
|
188
|
+
const index = new TslNode("int", { k: "loopIndex" });
|
|
189
|
+
const statement = { s: "loop", index, start, end, block: withBlock(() => body({ i: index })).block };
|
|
190
|
+
record(statement, "Loop()");
|
|
191
|
+
}
|
|
192
|
+
function toIntNode(value, what) {
|
|
193
|
+
if (typeof value === "number") {
|
|
194
|
+
if (!Number.isInteger(value))
|
|
195
|
+
tslError("tsl-type-mismatch", `${what} must be an integer`);
|
|
196
|
+
return new TslNode("int", { k: "const", value: [value] });
|
|
197
|
+
}
|
|
198
|
+
const node = toNode(value);
|
|
199
|
+
if (node.type !== "int")
|
|
200
|
+
tslError("tsl-type-mismatch", `${what} must be an int node (got ${node.type})`);
|
|
201
|
+
return node;
|
|
202
|
+
}
|
|
203
|
+
/* ------------------------------------------------------------------------- */
|
|
204
|
+
/* Construction helpers */
|
|
205
|
+
/* ------------------------------------------------------------------------- */
|
|
206
|
+
export function constNode(type, value) {
|
|
207
|
+
if (value.length !== dimOf(type))
|
|
208
|
+
tslError("invalid-tsl-graph", `${type} constant needs ${dimOf(type)} component(s), got ${value.length}`);
|
|
209
|
+
for (const component of value) {
|
|
210
|
+
if (!Number.isFinite(component))
|
|
211
|
+
tslError("invalid-tsl-graph", `${type} constant has a non-finite component`);
|
|
212
|
+
}
|
|
213
|
+
return new TslNode(type, { k: "const", value: [...value] });
|
|
214
|
+
}
|
|
215
|
+
export function parseHexColor(value) {
|
|
216
|
+
const match = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(value.trim());
|
|
217
|
+
if (!match)
|
|
218
|
+
tslError("invalid-tsl-graph", `unsupported color "${value}" (use "#rgb" or "#rrggbb")`);
|
|
219
|
+
let hex = match[1];
|
|
220
|
+
if (hex.length === 3)
|
|
221
|
+
hex = hex.split("").map((c) => c + c).join("");
|
|
222
|
+
return [parseInt(hex.slice(0, 2), 16) / 255, parseInt(hex.slice(2, 4), 16) / 255, parseInt(hex.slice(4, 6), 16) / 255];
|
|
223
|
+
}
|
|
224
|
+
export function toNode(value) {
|
|
225
|
+
if (value instanceof TslNode)
|
|
226
|
+
return value;
|
|
227
|
+
if (typeof value === "number")
|
|
228
|
+
return constNode("float", [value]);
|
|
229
|
+
if (typeof value === "boolean")
|
|
230
|
+
return constNode("bool", [value ? 1 : 0]);
|
|
231
|
+
if (typeof value === "string")
|
|
232
|
+
return constNode("vec3", [...parseHexColor(value)]);
|
|
233
|
+
if (Array.isArray(value) && value.length >= 2 && value.length <= 4)
|
|
234
|
+
return constNode(vecOf(value.length), value);
|
|
235
|
+
return tslError("invalid-tsl-graph", `cannot convert ${String(value)} to a node`);
|
|
236
|
+
}
|
|
237
|
+
/** Promote numeric argument types to one generic type (float or vecN). */
|
|
238
|
+
function promoteGen(op, types, allowInt) {
|
|
239
|
+
let dim = 1;
|
|
240
|
+
let sawFloat = false;
|
|
241
|
+
for (const type of types) {
|
|
242
|
+
if (type === "bool" || type === "sampler2D")
|
|
243
|
+
tslError("tsl-type-mismatch", `${op}() cannot take a ${type} operand`);
|
|
244
|
+
const d = dimOf(type);
|
|
245
|
+
if (d > 1) {
|
|
246
|
+
if (dim > 1 && d !== dim)
|
|
247
|
+
tslError("tsl-type-mismatch", `${op}() cannot combine ${vecOf(dim)} with ${type}`);
|
|
248
|
+
dim = d;
|
|
249
|
+
}
|
|
250
|
+
if (type !== "int")
|
|
251
|
+
sawFloat = true;
|
|
252
|
+
}
|
|
253
|
+
if (dim > 1)
|
|
254
|
+
return vecOf(dim);
|
|
255
|
+
return allowInt && !sawFloat ? "int" : "float";
|
|
256
|
+
}
|
|
257
|
+
const COMPARISONS = new Set(["lessThan", "greaterThan", "lessThanEqual", "greaterThanEqual", "equal", "notEqual"]);
|
|
258
|
+
/** Result type (and validation) for an op over already-converted argument nodes. */
|
|
259
|
+
export function opResultType(name, args) {
|
|
260
|
+
const types = args.map((arg) => arg.type);
|
|
261
|
+
switch (name) {
|
|
262
|
+
case "add":
|
|
263
|
+
case "sub":
|
|
264
|
+
case "mul":
|
|
265
|
+
return promoteGen(name, types, true);
|
|
266
|
+
case "div":
|
|
267
|
+
case "mod":
|
|
268
|
+
case "pow":
|
|
269
|
+
case "min":
|
|
270
|
+
case "max":
|
|
271
|
+
case "atan2":
|
|
272
|
+
case "step":
|
|
273
|
+
return promoteGen(name, types, false);
|
|
274
|
+
case "mix":
|
|
275
|
+
case "smoothstep":
|
|
276
|
+
case "clamp":
|
|
277
|
+
return promoteGen(name, types, false);
|
|
278
|
+
case "sin":
|
|
279
|
+
case "cos":
|
|
280
|
+
case "tan":
|
|
281
|
+
case "sqrt":
|
|
282
|
+
case "exp":
|
|
283
|
+
case "log":
|
|
284
|
+
case "fract":
|
|
285
|
+
case "floor":
|
|
286
|
+
case "ceil":
|
|
287
|
+
case "saturate":
|
|
288
|
+
case "toFloat":
|
|
289
|
+
return promoteGen(name, types, false);
|
|
290
|
+
case "abs":
|
|
291
|
+
case "sign":
|
|
292
|
+
case "negate":
|
|
293
|
+
case "oneMinus":
|
|
294
|
+
return promoteGen(name, types, name === "abs" || name === "negate");
|
|
295
|
+
case "normalize": {
|
|
296
|
+
const type = promoteGen(name, types, false);
|
|
297
|
+
if (!isVec(type))
|
|
298
|
+
tslError("tsl-type-mismatch", "normalize() needs a vec2, vec3 or vec4");
|
|
299
|
+
return type;
|
|
300
|
+
}
|
|
301
|
+
case "length":
|
|
302
|
+
case "distance":
|
|
303
|
+
case "dot": {
|
|
304
|
+
promoteGen(name, types, false);
|
|
305
|
+
return "float";
|
|
306
|
+
}
|
|
307
|
+
case "cross":
|
|
308
|
+
if (types[0] !== "vec3" || types[1] !== "vec3")
|
|
309
|
+
tslError("tsl-type-mismatch", "cross() needs two vec3 operands");
|
|
310
|
+
return "vec3";
|
|
311
|
+
case "toInt":
|
|
312
|
+
if (!isNumericScalar(types[0]))
|
|
313
|
+
tslError("tsl-type-mismatch", "int() needs a float or int scalar");
|
|
314
|
+
return "int";
|
|
315
|
+
case "not":
|
|
316
|
+
if (types[0] !== "bool")
|
|
317
|
+
tslError("tsl-type-mismatch", "not() needs a bool operand");
|
|
318
|
+
return "bool";
|
|
319
|
+
case "and":
|
|
320
|
+
case "or":
|
|
321
|
+
if (types[0] !== "bool" || types[1] !== "bool")
|
|
322
|
+
tslError("tsl-type-mismatch", `${name}() needs two bool operands`);
|
|
323
|
+
return "bool";
|
|
324
|
+
case "select": {
|
|
325
|
+
if (types[0] !== "bool")
|
|
326
|
+
tslError("tsl-type-mismatch", "select() condition must be a bool node");
|
|
327
|
+
if (types[1] === "bool" && types[2] === "bool")
|
|
328
|
+
return "bool";
|
|
329
|
+
return promoteGen(name, types.slice(1), true);
|
|
330
|
+
}
|
|
331
|
+
default:
|
|
332
|
+
if (COMPARISONS.has(name)) {
|
|
333
|
+
for (const type of types)
|
|
334
|
+
if (!isNumericScalar(type) && !(name === "equal" || name === "notEqual"))
|
|
335
|
+
tslError("tsl-type-mismatch", `${name}() compares float or int scalars`);
|
|
336
|
+
if (name !== "equal" && name !== "notEqual" && types.length !== 2)
|
|
337
|
+
tslError("invalid-tsl-graph", `${name}() takes two operands`);
|
|
338
|
+
return "bool";
|
|
339
|
+
}
|
|
340
|
+
return tslError("tsl-unsupported-node", `unsupported op ${String(name)}`);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
const ARITY = {
|
|
344
|
+
sin: 1, cos: 1, tan: 1, abs: 1, sign: 1, sqrt: 1, exp: 1, log: 1, fract: 1, floor: 1, ceil: 1, normalize: 1,
|
|
345
|
+
saturate: 1, oneMinus: 1, negate: 1, length: 1, not: 1, toFloat: 1, toInt: 1,
|
|
346
|
+
add: 2, sub: 2, mul: 2, div: 2, mod: 2, pow: 2, min: 2, max: 2, step: 2, dot: 2, cross: 2, distance: 2, atan2: 2,
|
|
347
|
+
lessThan: 2, greaterThan: 2, lessThanEqual: 2, greaterThanEqual: 2, equal: 2, notEqual: 2, and: 2, or: 2,
|
|
348
|
+
mix: 3, smoothstep: 3, clamp: 3, select: 3
|
|
349
|
+
};
|
|
350
|
+
/** Build an op node, folding it to a constant when every argument is a constant. */
|
|
351
|
+
export function op(name, ...inputs) {
|
|
352
|
+
if (inputs.length !== ARITY[name])
|
|
353
|
+
tslError("invalid-tsl-graph", `${name}() takes ${ARITY[name]} argument(s), got ${inputs.length}`);
|
|
354
|
+
const args = inputs.map((input) => toNode(input));
|
|
355
|
+
const type = opResultType(name, args);
|
|
356
|
+
if (args.every((arg) => arg.data.k === "const")) {
|
|
357
|
+
const folded = evalOp(name, args.map((arg) => ({ type: arg.type, value: arg.data.value })), type);
|
|
358
|
+
return constNode(type, folded);
|
|
359
|
+
}
|
|
360
|
+
return new TslNode(type, { k: "op", op: name, args });
|
|
361
|
+
}
|
|
362
|
+
const at = (value, index) => (value.length === 1 ? value[0] : value[index]);
|
|
363
|
+
const glslFract = (x) => x - Math.floor(x);
|
|
364
|
+
const glslSign = (x) => (x > 0 ? 1 : x < 0 ? -1 : 0);
|
|
365
|
+
const glslMod = (x, y) => x - y * Math.floor(x / y);
|
|
366
|
+
const smooth = (e0, e1, x) => {
|
|
367
|
+
const t = Math.min(1, Math.max(0, (x - e0) / (e1 - e0)));
|
|
368
|
+
return t * t * (3 - 2 * t);
|
|
369
|
+
};
|
|
370
|
+
export function evalOp(name, args, resultType) {
|
|
371
|
+
const n = dimOf(resultType);
|
|
372
|
+
const values = args.map((arg) => arg.value);
|
|
373
|
+
const cw = (fn) => Array.from({ length: n }, (_, i) => fn(...values.map((v) => at(v, i))));
|
|
374
|
+
switch (name) {
|
|
375
|
+
case "add": return cw((a, b) => a + b);
|
|
376
|
+
case "sub": return cw((a, b) => a - b);
|
|
377
|
+
case "mul": return cw((a, b) => a * b);
|
|
378
|
+
case "div": return cw((a, b) => a / b);
|
|
379
|
+
case "mod": return cw((a, b) => glslMod(a, b));
|
|
380
|
+
case "pow": return cw((a, b) => Math.pow(a, b));
|
|
381
|
+
case "min": return cw((a, b) => Math.min(a, b));
|
|
382
|
+
case "max": return cw((a, b) => Math.max(a, b));
|
|
383
|
+
case "atan2": return cw((a, b) => Math.atan2(a, b));
|
|
384
|
+
case "step": return cw((edge, x) => (x < edge ? 0 : 1));
|
|
385
|
+
case "sin": return cw((a) => Math.sin(a));
|
|
386
|
+
case "cos": return cw((a) => Math.cos(a));
|
|
387
|
+
case "tan": return cw((a) => Math.tan(a));
|
|
388
|
+
case "abs": return cw((a) => Math.abs(a));
|
|
389
|
+
case "sign": return cw((a) => glslSign(a));
|
|
390
|
+
case "sqrt": return cw((a) => Math.sqrt(a));
|
|
391
|
+
case "exp": return cw((a) => Math.exp(a));
|
|
392
|
+
case "log": return cw((a) => Math.log(a));
|
|
393
|
+
case "fract": return cw((a) => glslFract(a));
|
|
394
|
+
case "floor": return cw((a) => Math.floor(a));
|
|
395
|
+
case "ceil": return cw((a) => Math.ceil(a));
|
|
396
|
+
case "saturate": return cw((a) => Math.min(1, Math.max(0, a)));
|
|
397
|
+
case "oneMinus": return cw((a) => 1 - a);
|
|
398
|
+
case "negate": return cw((a) => -a);
|
|
399
|
+
case "toFloat": return [values[0][0]];
|
|
400
|
+
case "toInt": return [Math.trunc(values[0][0])];
|
|
401
|
+
case "normalize": {
|
|
402
|
+
const v = values[0];
|
|
403
|
+
const len = Math.hypot(...v);
|
|
404
|
+
return v.map((x) => x / len);
|
|
405
|
+
}
|
|
406
|
+
case "length": return [Math.hypot(...values[0])];
|
|
407
|
+
case "dot": {
|
|
408
|
+
const a = values[0];
|
|
409
|
+
const b = values[1];
|
|
410
|
+
const d = Math.max(a.length, b.length);
|
|
411
|
+
let sum = 0;
|
|
412
|
+
for (let i = 0; i < d; i++)
|
|
413
|
+
sum += at(a, i) * at(b, i);
|
|
414
|
+
return [sum];
|
|
415
|
+
}
|
|
416
|
+
case "distance": {
|
|
417
|
+
const a = values[0];
|
|
418
|
+
const b = values[1];
|
|
419
|
+
const d = Math.max(a.length, b.length);
|
|
420
|
+
let sum = 0;
|
|
421
|
+
for (let i = 0; i < d; i++)
|
|
422
|
+
sum += (at(a, i) - at(b, i)) ** 2;
|
|
423
|
+
return [Math.sqrt(sum)];
|
|
424
|
+
}
|
|
425
|
+
case "cross": {
|
|
426
|
+
const [ax, ay, az] = values[0];
|
|
427
|
+
const [bx, by, bz] = values[1];
|
|
428
|
+
return [ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx];
|
|
429
|
+
}
|
|
430
|
+
case "mix": return cw((a, b, t) => a * (1 - t) + b * t);
|
|
431
|
+
case "smoothstep": return cw((e0, e1, x) => smooth(e0, e1, x));
|
|
432
|
+
case "clamp": return cw((x, lo, hi) => Math.min(Math.max(x, lo), hi));
|
|
433
|
+
case "select": return values[0][0] ? [...values[1]] : [...values[2]];
|
|
434
|
+
case "lessThan": return [values[0][0] < values[1][0] ? 1 : 0];
|
|
435
|
+
case "greaterThan": return [values[0][0] > values[1][0] ? 1 : 0];
|
|
436
|
+
case "lessThanEqual": return [values[0][0] <= values[1][0] ? 1 : 0];
|
|
437
|
+
case "greaterThanEqual": return [values[0][0] >= values[1][0] ? 1 : 0];
|
|
438
|
+
case "equal": return [values[0][0] === values[1][0] ? 1 : 0];
|
|
439
|
+
case "notEqual": return [values[0][0] !== values[1][0] ? 1 : 0];
|
|
440
|
+
case "and": return [values[0][0] && values[1][0] ? 1 : 0];
|
|
441
|
+
case "or": return [values[0][0] || values[1][0] ? 1 : 0];
|
|
442
|
+
case "not": return [values[0][0] ? 0 : 1];
|
|
443
|
+
default: return tslError("tsl-unsupported-node", `unsupported op ${String(name)}`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/* ------------------------------------------------------------------------- */
|
|
447
|
+
/* Swizzle + construct */
|
|
448
|
+
/* ------------------------------------------------------------------------- */
|
|
449
|
+
const SWIZZLE_SETS = ["xyzw", "rgba"];
|
|
450
|
+
export function swizzle(src, comps) {
|
|
451
|
+
const set = SWIZZLE_SETS.find((candidate) => [...comps].every((c) => candidate.includes(c)));
|
|
452
|
+
if (!set || comps.length < 1 || comps.length > 4)
|
|
453
|
+
tslError("invalid-tsl-graph", `invalid swizzle ".${comps}"`);
|
|
454
|
+
if (!isVec(src.type))
|
|
455
|
+
tslError("tsl-type-mismatch", `cannot swizzle a ${src.type}`);
|
|
456
|
+
const indices = [...comps].map((c) => set.indexOf(c));
|
|
457
|
+
if (indices.some((i) => i >= dimOf(src.type)))
|
|
458
|
+
tslError("tsl-type-mismatch", `swizzle ".${comps}" is out of range for ${src.type}`);
|
|
459
|
+
const normalized = indices.map((i) => "xyzw"[i]).join("");
|
|
460
|
+
const type = vecOf(indices.length);
|
|
461
|
+
if (src.data.k === "const")
|
|
462
|
+
return constNode(type, indices.map((i) => src.data.value[i]));
|
|
463
|
+
return new TslNode(type, { k: "swizzle", src, comps: normalized });
|
|
464
|
+
}
|
|
465
|
+
export function construct(type, inputs) {
|
|
466
|
+
const args = inputs.map((input) => toNode(input));
|
|
467
|
+
const need = dimOf(type);
|
|
468
|
+
const total = args.reduce((sum, arg) => sum + dimOf(arg.type), 0);
|
|
469
|
+
for (const arg of args)
|
|
470
|
+
if (arg.type === "bool" || arg.type === "sampler2D")
|
|
471
|
+
tslError("tsl-type-mismatch", `${type}() cannot take a ${arg.type}`);
|
|
472
|
+
const broadcast = args.length === 1 && dimOf(args[0].type) === 1;
|
|
473
|
+
if (!broadcast && total !== need)
|
|
474
|
+
tslError("tsl-type-mismatch", `${type}() needs ${need} component(s) in total, got ${total}`);
|
|
475
|
+
if (args.every((arg) => arg.data.k === "const")) {
|
|
476
|
+
const flat = args.flatMap((arg) => [...arg.data.value]);
|
|
477
|
+
return constNode(type, broadcast ? Array.from({ length: need }, () => flat[0]) : flat);
|
|
478
|
+
}
|
|
479
|
+
return new TslNode(type, { k: "construct", args });
|
|
480
|
+
}
|
|
481
|
+
/* Swizzle accessors (x, y, z, w, xy, xyz, rgb, ...) defined once on the prototype. */
|
|
482
|
+
const swizzleKeys = new Set();
|
|
483
|
+
function defineSwizzles(set) {
|
|
484
|
+
const build = (prefix, depth) => {
|
|
485
|
+
for (const ch of set) {
|
|
486
|
+
const key = prefix + ch;
|
|
487
|
+
swizzleKeys.add(key);
|
|
488
|
+
if (depth < 4)
|
|
489
|
+
build(key, depth + 1);
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
build("", 1);
|
|
493
|
+
}
|
|
494
|
+
for (const set of SWIZZLE_SETS)
|
|
495
|
+
defineSwizzles(set);
|
|
496
|
+
for (const key of swizzleKeys) {
|
|
497
|
+
if (key in TslNode.prototype)
|
|
498
|
+
continue;
|
|
499
|
+
Object.defineProperty(TslNode.prototype, key, { configurable: true, get() { return swizzle(this, key); } });
|
|
500
|
+
}
|
|
501
|
+
//# sourceMappingURL=ir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir.js","sourceRoot":"","sources":["../../../../../../../packages/engine/src/agent-api/nodes/tsl/ir.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* `pnpm exec tsx --tsconfig tsconfig.base.json tools/export-surface/scaffold.ts --write`.
|
|
8
8
|
*/
|
|
9
9
|
import "../lanes/index.js";
|
|
10
|
-
export { AnimationController, appExtensionsAll, asRuntimeCompiled, atmosphere, auditArtDirection, AuraColorParseError, AuraSceneBuilder, batched, bindGameTouchControls, bindRuntimeCompiled, blendSkyBandColor, camera, cameras, captionCueAtTime, captureFromUrl, characterAssembly, characters, charts, checkSpatialInvariants, city, clearFocus, Clock, cloneSkinned, combatFrameAdvantage, compilePromptEpisodePlan, compilePromptPlanV2, compilerSlot, compileScene, composeWorldMatrix, compute, computeLineDistances, createAnimationPerformanceCoverage, createAnimationRenderOutputPackageMetadata, createArchitectureKit, createAssetDiagnostics, createAudioStemManifest, createAuraApp, createAuraRouteHealthSnapshot, createAuraText3DGeometry, createAuraVoiceBridgePackage, createAuraVoiceVisemeTrack, createCameraPathFromPreset, createCinematicKit, createCollisionLayers, createCombatAi, createDiagnosticsPanel, createDigitalTwinKit, createEnvironment, createFightingGameKit, createFrameLoop, createGame, createGameApp, createGameArcadeVehicle, createGameAudio, createGlbBlendshapeVisemeCue, createInitialDiagnostics, createMeshSurfaceQuery, createPrimitiveMouthVisemeCues, createProductConfiguratorKit, createProductionRuntimeCollectedLights, createPromptAnimationDeterministicScreenshotFixtureMetadata, createShotPlaybackPlan, createSmartCityKit, createVehicleChassis, createVehicleDriverAi, decomposeMatrix, defineAuraAssets, defineDubMap, definePromptPlan, DIAGNOSTIC_ONLY_FIELDS, DIAGNOSTICS_SECTION_KEYS, diagnosticsSectionsAll, distanceLod, distributeInRegion, effects, enforceFrameBudget, environments, eulerToQuaternion, fat, fitSizeToRegion, focusCameraIntent, focusObject, focusSemanticRegion, game, gameFeel, games, geometry, glbVisemeBlendshapeExample, groundedFittedModelPosition, groundedRenderedAssetPlacement, group, groups, helpers, installShotPlayback, instances, interactions, labels, lights, line, lines, lookLint, looks, loop, material, model, nodeHandleExtensionFor, nodeHandleExtensionsAll, nodeHandlerFor, nodeHandlersAll, normalizeLinePositions, optionCoverageRows, parseAuraColor, parseAuraColorSrgb, particles, physics, placedBounds, placedBoundsFromAsset, planLayeredSceneComposition, planScatterInstances, planSkyBackdrop, platformerCompositionSpec, points, postPresets, prefabs, primitiveMouthVisemeExample, primitives, product, promptPlanToScene, promptRecipes, raycast, raycastFirst, registerAppExtension, registerDiagnosticsSection, registerEnvironmentSource, registerLookLintRule, registerNodeHandleExtension, registerNodeHandler, registerOptionCoverage, renderer, resolveBoundsAnchor, resolveCameraFrame, resolveChaseFraming, resolveEnvironment, resolveQrFlags, resolveSemanticRegion, sampleAuraVoiceBridgeAtTime, sampleCameraPath, sampleShotPlaybackPlan, sampleVisemeTrack, scatterWindOffset, scene, sceneKits, SCREEN_FEEL_BLACKBOARD_KEY, segments, setCompilerImpl, shadows, skyBandCountForRamp, snapshotDiagnostics, solar, solveCombatFrameData, solvePlatformerMotion, sprite, sprites, StubActorAnimationApi, StubAppAtmosphere, StubAppEffects, stubCameraRigFactories, StubFeelBus, StubLightingRuntime, StubModelMaterialHandle, StubPostSurface, StubTimeController, surfaces, text3D, timeline, ui, updateCompiledScene, validateAuraVoiceBridgePackage, validateCombatFrameData, vehicleChassisSpecFromBounds, WIND_CHUNK, workflows, worldQueriesSlot } from "../agent-api/index.js";
|
|
11
|
-
export type { A3DAppLifecycleSnapshot, A3DDisposable, AnyNodeHandler, AppExtension, ArtDirectionViolation, AuraActorAnimationApi, AuraActorAnimationStateSnapshot, AuraAnimationAssetLike, AuraAnimationDiagnostics, AuraAntiAliasMode, AuraApp, AuraAppAtmosphere, AuraAppEffects, AuraAppExtensionMap, AuraAppTarget, AuraAssetBudget, AuraAssetDecodersOption, AuraAssetDefinition, AuraAssetLodLevel, AuraAssetLodOption, AuraAssetMap, AuraAssetRef, AuraAssetRequiredDecoder, AuraAssetsOption, AuraAssetVariants, AuraAutoExposureOptions, AuraBatchedGeometryInput, AuraBatchedMeshHandle, AuraBatchedMeshMode, AuraBatchedMeshOptions, AuraBatchedNode, AuraBiomeId, AuraBiomeRig, AuraBodyHandle, AuraBoneAttachSpec, AuraBoneMaskSpec, AuraBoneSocket, AuraCameraController, AuraCameraLayer, AuraCameraOption, AuraCameraPose, AuraCameraRailOptions, AuraCameraRig, AuraCameraRigContext, AuraCameraRigFactories, AuraCameraSequence, AuraCameraSequencePlayback, AuraCameraShot, AuraCameraSpec, AuraCameraSubject, AuraCompiledFeature, AuraComputeBuffer, AuraComputeBufferSpec, AuraComputeDeviceSource, AuraComputeDispatchInput, AuraComputeDispatchResult, AuraComputePipeline, AuraComputePipelineSpec, AuraComputeSurface, AuraCreateAppAnimationOptions, AuraCustomGeometrySpec, AuraCustomPostPass, AuraDecalOptions, AuraDegradation, AuraDegradationCode, AuraDiagnostics, AuraDiagnosticsSectionKey, AuraDirectionalShadowOptions, AuraEaseName, AuraEffectInstanceHandle, AuraEffectsDiagnostics, AuraEnvironmentSource, AuraEnvironmentSourceKind, AuraEnvironmentSourceResolution, AuraEulerOrder, AuraFatLineOptions, AuraFeelBus, AuraFeelEventSpec, AuraFovKickLayer, AuraHeightFogSpec, AuraHeightQuery, AuraHelperBaseOptions, AuraInstancedBufferView, AuraInstancedGeometryInput, AuraInstancedMeshBoundingSphere, AuraInstancedMeshHandle, AuraLightingDiagnostics, AuraLightingModel, AuraLightingOptions, AuraLightingRuntime, AuraLightsApiAdditions, AuraLineNode, AuraLineOptions, AuraLinePositionsInput, AuraLocalShadowOptions, AuraLookDiagnostics, AuraLookId, AuraLookLintCode, AuraLookLintContext, AuraLookLintFinding, AuraLookLintRule, AuraLookNode, AuraLookOverrides, AuraLoopOptions, AuraMaterialDiagnostics, AuraMaterialSpec, AuraMaterialTextureSlot, AuraModelColliderOption, AuraModelLodOption, AuraModelMaterialHandle, AuraModelMaterialOverride, AuraNamedAnimationClipDefinition, AuraNodeHandleExtensionMap, AuraNodeInput, AuraNodeKindMap, AuraOutputDiagnostics, AuraOutputOptions, AuraOutputOverlay, AuraOutputSurface, AuraPhysicsRuntime, AuraPointsNode, AuraPointsOptions, AuraPostDiagnostics, AuraPostPreset, AuraPostPresetId, AuraPostSurface, AuraPunchLayer, AuraQuat, AuraRendererMaterialOptions, AuraResolvedClipInfo, AuraResolvedMaterialInfo, AuraRootLodLevelSpec, AuraRootMotionSpec, AuraRootVec3, AuraRuntimeNodeHandle, AuraRuntimeNodeRegistryV2, AuraSceneNode, AuraSceneSnapshot, AuraScreenFeelUniforms, AuraShadowOptions, AuraSkyNode, AuraSkySpec, AuraSkySunSpec, AuraSpriteNode, AuraSpriteOptions, AuraStudioLookId, AuraTimeController, AuraToneMappingOperator, AuraTransformSpec, AuraTraumaLayer, AuraVec3, AuraVfxEffectSpec, AuraVfxKind, AuraVolumetricFogSpec, AuraWindSpec, AuraWorldQualityTier, AuraWorldQueries, AuraWorldTransform, CameraPath, CameraPresetId, CaptureContext, CharacterAssemblyPlan, ClonedSkinnedModel, CloneSkinnedModelInput, CloneSkinnedOptions, CombatAi, CombatAiAggression, CombatFrameAdvantage, CombatFrameData, CompiledActor, CompiledScene, CompilerImpl, CreateGameOptions, DiagnosticsSection, DriverRoute, FightingGameSnapshot, FocusResult, FrameLoopCallback, FrameLoopFrame, FrameLoopOptions, FrameLoopSnapshot, FrameLoopSource, Game, GameAcceptance, GameArcadeVehicle, GameArcadeVehicleInput, GameArcadeVehicleState, GameAudio, GameAudioContextLike, GameAudioOptions, GameBeacon, GameBudgets, GameCombatEvent, GameCombatMove, GameCombatWorld, GameCombatWorldSnapshot, GameEffectsController, GameEntryV2, GameFallingBlockAction, GameFallingBlocksEvent, GameFallingBlocksSnapshot, GameFxKind, GameFxLayer, GameGenre, GameInputController, GameInputReplayEvent, GameInputReplayPlan, GameKitRect, GamePlatformerSnapshot, GameRacingKit, GameRacingSnapshot, GameScenario, GameSession, GameSessionState, GameShell, GameShellLayout, GroundRaycaster, Hud, HudMountOptions, HudWidgetSpec, MeshSurfaceQuery, NodeHandleExtension, NodeHandler, OptionCoverageRow, PauseReason, QrFlagInput, RebuildTier, RenderSourceContributions, RouteHealthQualityGate, RuntimeCompiledSceneInternals, RuntimeNodeHandleLike, SceneCompileContext, SceneQueryHit, SceneQueryTarget, SceneRay, SceneRaycastCamera, SceneRaycastInput, SceneRaycastOptions, SemanticRegion, SurfaceSample, TouchControls, TouchPreset, TransitionSpec, VehicleChassis, VehicleDriverAi, VehiclePose, VehicleSurface, VehicleVec3 } from "../agent-api/index.js";
|
|
10
|
+
export { AnimationController, appExtensionsAll, asRuntimeCompiled, atmosphere, auditArtDirection, AuraColorParseError, AuraSceneBuilder, batched, bindGameTouchControls, bindRuntimeCompiled, blendSkyBandColor, camera, cameras, captionCueAtTime, captureFromUrl, characterAssembly, characters, charts, checkSpatialInvariants, city, clearFocus, Clock, cloneSkinned, combatFrameAdvantage, compilePromptEpisodePlan, compilePromptPlanV2, compilerSlot, compileScene, composeWorldMatrix, compute, computeLineDistances, createAnimationPerformanceCoverage, createAnimationRenderOutputPackageMetadata, createArchitectureKit, createAssetDiagnostics, createAudioStemManifest, createAuraApp, createAuraRouteHealthSnapshot, createAuraText3DGeometry, createAuraVoiceBridgePackage, createAuraVoiceVisemeTrack, createCameraPathFromPreset, createCinematicKit, createCollisionLayers, createCombatAi, createDiagnosticsPanel, createDigitalTwinKit, createEnvironment, createFightingGameKit, createFrameLoop, createGame, createGameApp, createGameArcadeVehicle, createGameAudio, createGlbBlendshapeVisemeCue, createInitialDiagnostics, createMeshSurfaceQuery, createPrimitiveMouthVisemeCues, createProductConfiguratorKit, createProductionRuntimeCollectedLights, createPromptAnimationDeterministicScreenshotFixtureMetadata, createShotPlaybackPlan, createSmartCityKit, createVehicleChassis, createVehicleDriverAi, decomposeMatrix, defineAuraAssets, defineDubMap, definePromptPlan, DIAGNOSTIC_ONLY_FIELDS, DIAGNOSTICS_SECTION_KEYS, diagnosticsSectionsAll, distanceLod, distributeInRegion, effects, enforceFrameBudget, environments, eulerToQuaternion, fat, fitSizeToRegion, focusCameraIntent, focusObject, focusSemanticRegion, game, gameFeel, games, geometry, glbVisemeBlendshapeExample, groundedFittedModelPosition, groundedRenderedAssetPlacement, group, groups, helpers, installShotPlayback, instances, interactions, labels, lights, line, lines, lookLint, looks, loop, material, model, nodeHandleExtensionFor, nodeHandleExtensionsAll, nodeHandlerFor, nodeHandlersAll, normalizeLinePositions, optionCoverageRows, parseAuraColor, parseAuraColorSrgb, particles, physics, placedBounds, placedBoundsFromAsset, planLayeredSceneComposition, planScatterInstances, planSkyBackdrop, platformerCompositionSpec, points, postPresets, prefabs, primitiveMouthVisemeExample, primitives, product, promptPlanToScene, promptRecipes, raycast, raycastFirst, registerAppExtension, registerDiagnosticsSection, registerEnvironmentSource, registerLookLintRule, registerNodeHandleExtension, registerNodeHandler, registerOptionCoverage, renderer, resolveBoundsAnchor, resolveCameraFrame, resolveChaseFraming, resolveEnvironment, resolveQrFlags, resolveSemanticRegion, sampleAuraVoiceBridgeAtTime, sampleCameraPath, sampleShotPlaybackPlan, sampleVisemeTrack, scatterWindOffset, scene, sceneKits, SCREEN_FEEL_BLACKBOARD_KEY, segments, setCompilerImpl, shadows, skyBandCountForRamp, snapshotDiagnostics, solar, solveCombatFrameData, solvePlatformerMotion, sprite, sprites, StubActorAnimationApi, StubAppAtmosphere, StubAppEffects, stubCameraRigFactories, StubFeelBus, StubLightingRuntime, StubModelMaterialHandle, StubPostSurface, StubTimeController, surfaces, text3D, timeline, tsl, ui, updateCompiledScene, validateAuraVoiceBridgePackage, validateCombatFrameData, vehicleChassisSpecFromBounds, WIND_CHUNK, workflows, worldQueriesSlot } from "../agent-api/index.js";
|
|
11
|
+
export type { A3DAppLifecycleSnapshot, A3DDisposable, AnyNodeHandler, AppExtension, ArtDirectionViolation, AuraActorAnimationApi, AuraActorAnimationStateSnapshot, AuraAnimationAssetLike, AuraAnimationDiagnostics, AuraAntiAliasMode, AuraApp, AuraAppAtmosphere, AuraAppEffects, AuraAppExtensionMap, AuraAppTarget, AuraAssetBudget, AuraAssetDecodersOption, AuraAssetDefinition, AuraAssetLodLevel, AuraAssetLodOption, AuraAssetMap, AuraAssetRef, AuraAssetRequiredDecoder, AuraAssetsOption, AuraAssetVariants, AuraAutoExposureOptions, AuraBatchedGeometryInput, AuraBatchedMeshHandle, AuraBatchedMeshMode, AuraBatchedMeshOptions, AuraBatchedNode, AuraBiomeId, AuraBiomeRig, AuraBodyHandle, AuraBoneAttachSpec, AuraBoneMaskSpec, AuraBoneSocket, AuraCameraController, AuraCameraLayer, AuraCameraOption, AuraCameraPose, AuraCameraRailOptions, AuraCameraRig, AuraCameraRigContext, AuraCameraRigFactories, AuraCameraSequence, AuraCameraSequencePlayback, AuraCameraShot, AuraCameraSpec, AuraCameraSubject, AuraCompiledFeature, AuraComputeBuffer, TslCompileResult, TslEvalContext, TslInput, TslMaterialNodeOptions, TslType, TslUniformKind, TslUniformOptions, AuraComputeBufferSpec, AuraComputeDeviceSource, AuraComputeDispatchInput, AuraComputeDispatchResult, AuraComputePipeline, AuraComputePipelineSpec, AuraComputeSurface, AuraCreateAppAnimationOptions, AuraCustomGeometrySpec, AuraCustomPostPass, AuraDecalOptions, AuraDegradation, AuraDegradationCode, AuraDiagnostics, AuraDiagnosticsSectionKey, AuraDirectionalShadowOptions, AuraEaseName, AuraEffectInstanceHandle, AuraEffectsDiagnostics, AuraEnvironmentSource, AuraEnvironmentSourceKind, AuraEnvironmentSourceResolution, AuraEulerOrder, AuraFatLineOptions, AuraFeelBus, AuraFeelEventSpec, AuraFovKickLayer, AuraHeightFogSpec, AuraHeightQuery, AuraHelperBaseOptions, AuraInstancedBufferView, AuraInstancedGeometryInput, AuraInstancedMeshBoundingSphere, AuraInstancedMeshHandle, AuraLightingDiagnostics, AuraLightingModel, AuraLightingOptions, AuraLightingRuntime, AuraLightsApiAdditions, AuraLineNode, AuraLineOptions, AuraLinePositionsInput, AuraLocalShadowOptions, AuraLookDiagnostics, AuraLookId, AuraLookLintCode, AuraLookLintContext, AuraLookLintFinding, AuraLookLintRule, AuraLookNode, AuraLookOverrides, AuraLoopOptions, AuraMaterialDiagnostics, AuraMaterialSpec, AuraMaterialTextureSlot, AuraModelColliderOption, AuraModelLodOption, AuraModelMaterialHandle, AuraModelMaterialOverride, AuraNamedAnimationClipDefinition, AuraNodeHandleExtensionMap, AuraNodeInput, AuraNodeKindMap, AuraOutputDiagnostics, AuraOutputOptions, AuraOutputOverlay, AuraOutputSurface, AuraPhysicsRuntime, AuraPointsNode, AuraPointsOptions, AuraPostDiagnostics, AuraPostPreset, AuraPostPresetId, AuraPostSurface, AuraPunchLayer, AuraQuat, AuraRendererMaterialOptions, AuraResolvedClipInfo, AuraResolvedMaterialInfo, AuraRootLodLevelSpec, AuraRootMotionSpec, AuraRootVec3, AuraRuntimeNodeHandle, AuraRuntimeNodeRegistryV2, AuraSceneNode, AuraSceneSnapshot, AuraScreenFeelUniforms, AuraShadowOptions, AuraSkyNode, AuraSkySpec, AuraSkySunSpec, AuraSpriteNode, AuraSpriteOptions, AuraStudioLookId, AuraTimeController, AuraToneMappingOperator, AuraTransformSpec, AuraTraumaLayer, AuraVec3, AuraVfxEffectSpec, AuraVfxKind, AuraVolumetricFogSpec, AuraWindSpec, AuraWorldQualityTier, AuraWorldQueries, AuraWorldTransform, CameraPath, CameraPresetId, CaptureContext, CharacterAssemblyPlan, ClonedSkinnedModel, CloneSkinnedModelInput, CloneSkinnedOptions, CombatAi, CombatAiAggression, CombatFrameAdvantage, CombatFrameData, CompiledActor, CompiledScene, CompilerImpl, CreateGameOptions, DiagnosticsSection, DriverRoute, FightingGameSnapshot, FocusResult, FrameLoopCallback, FrameLoopFrame, FrameLoopOptions, FrameLoopSnapshot, FrameLoopSource, Game, GameAcceptance, GameArcadeVehicle, GameArcadeVehicleInput, GameArcadeVehicleState, GameAudio, GameAudioContextLike, GameAudioOptions, GameBeacon, GameBudgets, GameCombatEvent, GameCombatMove, GameCombatWorld, GameCombatWorldSnapshot, GameEffectsController, GameEntryV2, GameFallingBlockAction, GameFallingBlocksEvent, GameFallingBlocksSnapshot, GameFxKind, GameFxLayer, GameGenre, GameInputController, GameInputReplayEvent, GameInputReplayPlan, GameKitRect, GamePlatformerSnapshot, GameRacingKit, GameRacingSnapshot, GameScenario, GameSession, GameSessionState, GameShell, GameShellLayout, GroundRaycaster, Hud, HudMountOptions, HudWidgetSpec, MeshSurfaceQuery, NodeHandleExtension, NodeHandler, OptionCoverageRow, PauseReason, QrFlagInput, RebuildTier, RenderSourceContributions, RouteHealthQualityGate, RuntimeCompiledSceneInternals, RuntimeNodeHandleLike, SceneCompileContext, SceneQueryHit, SceneQueryTarget, SceneRay, SceneRaycastCamera, SceneRaycastInput, SceneRaycastOptions, SemanticRegion, SurfaceSample, TouchControls, TouchPreset, TransitionSpec, VehicleChassis, VehicleDriverAi, VehiclePose, VehicleSurface, VehicleVec3 } from "../agent-api/index.js";
|
|
12
12
|
/** @deprecated No replacement — removes next minor. Kept at 4.0.0 once its blocking lane's request lands. */
|
|
13
13
|
export type { A3DEnvironment } from "../agent-api/index.js";
|
|
14
14
|
/** @deprecated Use `@aura3d/engine/renderer`. Kept at 4.0.0 — removes in the next minor once its blocking lane's request lands. */
|