@triforge/shader-core 0.3.0 → 0.4.1
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/dist/bundle.js +148 -8
- package/dist/core/CompileContext.d.ts +17 -0
- package/dist/core/CompileContext.d.ts.map +1 -1
- package/dist/core/CompileContext.js +26 -2
- package/dist/core/ShaderNode.d.ts.map +1 -1
- package/dist/core/ShaderNode.js +16 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/nodes/process/AddShader.js +3 -3
- package/dist/nodes/process/Bump.d.ts +25 -2
- package/dist/nodes/process/Bump.d.ts.map +1 -1
- package/dist/nodes/process/Bump.js +114 -32
- package/dist/nodes/process/DiffuseBSDF.js +7 -7
- package/dist/nodes/process/Emission.js +3 -3
- package/dist/nodes/process/GlassBSDF.js +13 -13
- package/dist/nodes/process/GlossyBSDF.js +14 -14
- package/dist/nodes/process/MixShader.js +3 -3
- package/dist/nodes/process/PrincipledBSDF.js +39 -39
- package/dist/nodes/process/PrincipledHair.js +70 -70
- package/dist/nodes/process/PrincipledVolume.js +21 -21
- package/dist/nodes/process/RefractionBSDF.js +7 -7
- package/dist/nodes/process/SheenBSDF.js +12 -12
- package/dist/nodes/process/SpecularBSDF.js +15 -15
- package/dist/nodes/process/SubsurfaceScattering.js +7 -7
- package/dist/nodes/process/ToonBSDF.js +6 -6
- package/dist/nodes/process/TranslucentBSDF.js +5 -5
- package/dist/nodes/process/TransparentBSDF.d.ts +26 -0
- package/dist/nodes/process/TransparentBSDF.d.ts.map +1 -0
- package/dist/nodes/process/TransparentBSDF.js +29 -0
- package/dist/nodes/process/VolumeAbsorption.js +3 -3
- package/dist/nodes/process/VolumeScatter.js +7 -7
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -237,6 +237,18 @@ var ShaderNode = class {
|
|
|
237
237
|
enumerable: true,
|
|
238
238
|
configurable: true
|
|
239
239
|
});
|
|
240
|
+
const AXES = ["x", "y", "z"];
|
|
241
|
+
AXES.forEach((axis, idx) => {
|
|
242
|
+
Object.defineProperty(this.parameters, `${paramName}.${axis}`, {
|
|
243
|
+
get: () => uniforms[uniformName].value[idx],
|
|
244
|
+
set: (v) => {
|
|
245
|
+
const arr = uniforms[uniformName].value;
|
|
246
|
+
arr[idx] = finiteOr(v, 0);
|
|
247
|
+
},
|
|
248
|
+
enumerable: true,
|
|
249
|
+
configurable: true
|
|
250
|
+
});
|
|
251
|
+
});
|
|
240
252
|
} else {
|
|
241
253
|
Object.defineProperty(this.parameters, paramName, {
|
|
242
254
|
get: () => uniforms[uniformName].value,
|
|
@@ -288,6 +300,12 @@ var CompileContext = class _CompileContext {
|
|
|
288
300
|
this.order = [];
|
|
289
301
|
this.emittedDefs = /* @__PURE__ */ new Set();
|
|
290
302
|
this.defs = [];
|
|
303
|
+
/**
|
|
304
|
+
* `#extension` pragmas collected from any node's compileDefs() output.
|
|
305
|
+
* GLSL requires these before any other non-preprocessor token in the
|
|
306
|
+
* shader — see _extractExtensions / buildFragmentShader.
|
|
307
|
+
*/
|
|
308
|
+
this._extensions = /* @__PURE__ */ new Set();
|
|
291
309
|
this.calls = [];
|
|
292
310
|
this.graphPath = [];
|
|
293
311
|
this._uniforms = {};
|
|
@@ -409,16 +427,32 @@ var CompileContext = class _CompileContext {
|
|
|
409
427
|
const fn = node.glslFunction ?? NodeClass.glslFunction;
|
|
410
428
|
const defsSource = node.compileDefs();
|
|
411
429
|
if (isInstanceSpecific) {
|
|
412
|
-
if (defsSource.trim()) this.defs.push(defsSource);
|
|
430
|
+
if (defsSource.trim()) this.defs.push(this._extractExtensions(defsSource));
|
|
413
431
|
} else {
|
|
414
432
|
const key = node.nodeType;
|
|
415
433
|
if (!this.emittedDefs.has(key)) {
|
|
416
434
|
this.emittedDefs.add(key);
|
|
417
435
|
const source = fn ?? defsSource;
|
|
418
|
-
if (source.trim()) this.defs.push(source);
|
|
436
|
+
if (source.trim()) this.defs.push(this._extractExtensions(source));
|
|
419
437
|
}
|
|
420
438
|
}
|
|
421
439
|
}
|
|
440
|
+
/**
|
|
441
|
+
* Strips `#extension` lines out of a node's compileDefs() output and
|
|
442
|
+
* collects them (deduplicated) to be hoisted to the very top of the
|
|
443
|
+
* fragment shader by buildFragmentShader(). WebGL2/ESSL3 requires
|
|
444
|
+
* `#extension` directives to appear before any non-preprocessor token —
|
|
445
|
+
* leaving them in place mid-file (after other nodes' defs/uniforms) throws
|
|
446
|
+
* "extension directive must occur before any non-preprocessor tokens".
|
|
447
|
+
* A node just writes `#extension NAME : enable` anywhere in compileDefs()
|
|
448
|
+
* and gets correct placement automatically — no per-node opt-in needed.
|
|
449
|
+
*/
|
|
450
|
+
_extractExtensions(source) {
|
|
451
|
+
return source.replace(/^[ \t]*#extension[^\n]*$/gm, (line) => {
|
|
452
|
+
this._extensions.add(line.trim());
|
|
453
|
+
return "";
|
|
454
|
+
});
|
|
455
|
+
}
|
|
422
456
|
// ── Validation ────────────────────────────────────────────────────
|
|
423
457
|
validate(root) {
|
|
424
458
|
if (ShaderConfig.errorLevel === "off") return;
|
|
@@ -483,11 +517,13 @@ ${customAssigns}
|
|
|
483
517
|
return Object.entries(this._uniforms).map(([name, { value }]) => Array.isArray(value) ? `uniform vec3 ${name};` : `uniform float ${name};`).join("\n");
|
|
484
518
|
}
|
|
485
519
|
buildFragmentShader() {
|
|
520
|
+
const extensionsBlock = [...this._extensions].join("\n");
|
|
486
521
|
const uniformsBlock = this.buildUniformDeclarations();
|
|
487
522
|
const customVaryings = [...this._vertexInjections.entries()].map(([vName, { attrType }]) => `varying ${attrType} ${vName};`).join("\n");
|
|
488
523
|
const defsBlock = this.defs.join("\n\n");
|
|
489
524
|
const callsBlock = this.calls.map((c) => ` ${c}`).join("\n");
|
|
490
525
|
return `
|
|
526
|
+
${extensionsBlock}
|
|
491
527
|
precision mediump float;
|
|
492
528
|
|
|
493
529
|
varying vec2 vUv;
|
|
@@ -2753,13 +2789,19 @@ var Bump = class _Bump extends ProcessNode {
|
|
|
2753
2789
|
return "Bump";
|
|
2754
2790
|
}
|
|
2755
2791
|
static {
|
|
2756
|
-
|
|
2792
|
+
// Both modes emit their own per-instance defs (a #ifndef-guarded shared function
|
|
2793
|
+
// for 'derivative', a per-instance uniform declaration for 'uv-offset' — see
|
|
2794
|
+
// compileDefs). instanceSpecificDef:true is required so multiple 'uv-offset'
|
|
2795
|
+
// instances each get their own uniform decl instead of being deduped by nodeType.
|
|
2796
|
+
this.instanceSpecificDef = true;
|
|
2757
2797
|
}
|
|
2758
2798
|
get metadata() {
|
|
2759
2799
|
return { label: "Bump", category: "Vector", color: "#4a3a8a", cost: "medium" };
|
|
2760
2800
|
}
|
|
2761
2801
|
static {
|
|
2762
|
-
this.
|
|
2802
|
+
this.derivativeGlslFunction = `
|
|
2803
|
+
#ifndef _ST_BUMP_FN
|
|
2804
|
+
#define _ST_BUMP_FN
|
|
2763
2805
|
vec3 _st_bump(float height, float strength, float distance, vec3 N) {
|
|
2764
2806
|
// Cotangent frame bump \u2014 camera-independent.
|
|
2765
2807
|
// We derive world-space surface tangent T and bitangent B from the UV
|
|
@@ -2786,15 +2828,34 @@ vec3 _st_bump(float height, float strength, float distance, vec3 N) {
|
|
|
2786
2828
|
|
|
2787
2829
|
float scale = strength * distance * 50.0;
|
|
2788
2830
|
return normalize(N - T * dhdu * scale - B * dhdv * scale);
|
|
2789
|
-
}
|
|
2831
|
+
}
|
|
2832
|
+
#endif`;
|
|
2790
2833
|
}
|
|
2791
2834
|
constructor(inputs = {}) {
|
|
2792
2835
|
super("Bump");
|
|
2836
|
+
this._method = inputs.method ?? "derivative";
|
|
2837
|
+
if (this._method === "uv-offset") {
|
|
2838
|
+
if (ShaderConfig.errorLevel !== "off" && !inputs.uniformName) {
|
|
2839
|
+
ShaderNodeError.throw({
|
|
2840
|
+
nodeType: "Bump",
|
|
2841
|
+
nodeId: this.id,
|
|
2842
|
+
problem: 'uniformName is required when method:"uv-offset".',
|
|
2843
|
+
fix: 'new Bump({ method: "uv-offset", uniformName: "uHeightTex" })\n After compile(): mat.material.uniforms.uHeightTex = { value: texture }'
|
|
2844
|
+
});
|
|
2845
|
+
}
|
|
2846
|
+
if (inputs.uniformName) assertGlslIdentifier(inputs.uniformName, "Bump uniformName");
|
|
2847
|
+
this._uniformName = inputs.uniformName ?? null;
|
|
2848
|
+
} else {
|
|
2849
|
+
this._uniformName = null;
|
|
2850
|
+
}
|
|
2793
2851
|
this._inputs = this.createInputs(inputs, {
|
|
2794
2852
|
strength: ["float", inputs.strength ?? 1],
|
|
2795
2853
|
distance: ["float", inputs.distance ?? 1],
|
|
2796
2854
|
height: ["float", 0.5],
|
|
2797
|
-
normal: ["color", null]
|
|
2855
|
+
normal: ["color", null],
|
|
2856
|
+
vector: ["vector", null],
|
|
2857
|
+
texelSize: ["float", inputs.texelSize ?? 1 / 512],
|
|
2858
|
+
lod: ["float", inputs.lod ?? 0]
|
|
2798
2859
|
});
|
|
2799
2860
|
this._outputs = this.createOutputs({ Normal: "color" });
|
|
2800
2861
|
}
|
|
@@ -2805,13 +2866,57 @@ vec3 _st_bump(float height, float strength, float distance, vec3 N) {
|
|
|
2805
2866
|
return this._outputs;
|
|
2806
2867
|
}
|
|
2807
2868
|
compileDefs() {
|
|
2808
|
-
|
|
2869
|
+
if (this._method === "uv-offset") {
|
|
2870
|
+
return [
|
|
2871
|
+
"#extension GL_EXT_shader_texture_lod : enable",
|
|
2872
|
+
`uniform sampler2D ${this._uniformName};`
|
|
2873
|
+
].join("\n");
|
|
2874
|
+
}
|
|
2875
|
+
return _Bump.derivativeGlslFunction;
|
|
2809
2876
|
}
|
|
2810
2877
|
compileCall(ctx) {
|
|
2811
|
-
const height = ctx.resolveInput(this._inputs.height);
|
|
2812
2878
|
const strength = ctx.resolveInput(this._inputs.strength);
|
|
2813
2879
|
const distance = ctx.resolveInput(this._inputs.distance);
|
|
2814
2880
|
const normal = this._inputs.normal.isConnected() ? ctx.outputVar(this._inputs.normal.connection.node, this._inputs.normal.connection.name) : "normalize(vNormal)";
|
|
2881
|
+
if (this._method === "uv-offset") {
|
|
2882
|
+
const uv = this._inputs.vector.isConnected() ? ctx.resolveInput(this._inputs.vector) : "vUv";
|
|
2883
|
+
const texelSize = ctx.resolveInput(this._inputs.texelSize);
|
|
2884
|
+
const lod = ctx.resolveInput(this._inputs.lod);
|
|
2885
|
+
const id = this.id;
|
|
2886
|
+
const hL = `_bmp_${id}_hL`, hR = `_bmp_${id}_hR`;
|
|
2887
|
+
const hD = `_bmp_${id}_hD`, hU = `_bmp_${id}_hU`;
|
|
2888
|
+
const dPdx = `_bmp_${id}_dPdx`, dPdy = `_bmp_${id}_dPdy`;
|
|
2889
|
+
const dUdx = `_bmp_${id}_dUdx`, dUdy = `_bmp_${id}_dUdy`;
|
|
2890
|
+
const det = `_bmp_${id}_det`, sgn = `_bmp_${id}_sgn`, invDet = `_bmp_${id}_invDet`;
|
|
2891
|
+
const T = `_bmp_${id}_T`, B = `_bmp_${id}_B`;
|
|
2892
|
+
const dhdu = `_bmp_${id}_dhdu`, dhdv = `_bmp_${id}_dhdv`;
|
|
2893
|
+
const scale = `_bmp_${id}_scale`;
|
|
2894
|
+
const ts = `_bmp_${id}_ts`;
|
|
2895
|
+
return [
|
|
2896
|
+
`float ${ts} = ${texelSize};`,
|
|
2897
|
+
`float ${hL} = texture2DLodEXT(${this._uniformName}, ${uv} - vec2(${ts}, 0.0), ${lod}).r;`,
|
|
2898
|
+
`float ${hR} = texture2DLodEXT(${this._uniformName}, ${uv} + vec2(${ts}, 0.0), ${lod}).r;`,
|
|
2899
|
+
`float ${hD} = texture2DLodEXT(${this._uniformName}, ${uv} - vec2(0.0, ${ts}), ${lod}).r;`,
|
|
2900
|
+
`float ${hU} = texture2DLodEXT(${this._uniformName}, ${uv} + vec2(0.0, ${ts}), ${lod}).r;`,
|
|
2901
|
+
// Cotangent frame from screen-space derivatives — this builds the tangent
|
|
2902
|
+
// basis (surface-fixed), not the height sample, so it doesn't carry the
|
|
2903
|
+
// camera-distance instability the uv-offset method exists to avoid.
|
|
2904
|
+
`vec3 ${dPdx} = dFdx(vPosition);`,
|
|
2905
|
+
`vec3 ${dPdy} = dFdy(vPosition);`,
|
|
2906
|
+
`vec2 ${dUdx} = dFdx(vUv);`,
|
|
2907
|
+
`vec2 ${dUdy} = dFdy(vUv);`,
|
|
2908
|
+
`float ${det} = ${dUdx}.x * ${dUdy}.y - ${dUdx}.y * ${dUdy}.x;`,
|
|
2909
|
+
`float ${sgn} = sign(${det});`,
|
|
2910
|
+
`float ${invDet} = ${sgn} / max(abs(${det}), 1e-6);`,
|
|
2911
|
+
`vec3 ${T} = normalize((${dUdy}.y * ${dPdx} - ${dUdx}.y * ${dPdy}) * ${invDet});`,
|
|
2912
|
+
`vec3 ${B} = normalize(cross(${normal}, ${T})) * ${sgn};`,
|
|
2913
|
+
`float ${dhdu} = (${hR} - ${hL}) / max(2.0 * ${ts}, 1e-6);`,
|
|
2914
|
+
`float ${dhdv} = (${hU} - ${hD}) / max(2.0 * ${ts}, 1e-6);`,
|
|
2915
|
+
`float ${scale} = ${strength} * ${distance} * 50.0;`,
|
|
2916
|
+
`vec3 ${ctx.outputVar(this, "Normal")} = normalize(${normal} - ${T} * ${dhdu} * ${scale} - ${B} * ${dhdv} * ${scale});`
|
|
2917
|
+
].join("\n ");
|
|
2918
|
+
}
|
|
2919
|
+
const height = ctx.resolveInput(this._inputs.height);
|
|
2815
2920
|
return `vec3 ${ctx.outputVar(this, "Normal")} = _st_bump(${height}, ${strength}, ${distance}, ${normal});`;
|
|
2816
2921
|
}
|
|
2817
2922
|
};
|
|
@@ -4257,6 +4362,40 @@ vec3 _st_translucentBSDF(vec3 color, vec3 N) {
|
|
|
4257
4362
|
}
|
|
4258
4363
|
};
|
|
4259
4364
|
|
|
4365
|
+
// src/nodes/process/TransparentBSDF.ts
|
|
4366
|
+
var TransparentBSDF = class extends ProcessNode {
|
|
4367
|
+
get nodeType() {
|
|
4368
|
+
return "TransparentBSDF";
|
|
4369
|
+
}
|
|
4370
|
+
static {
|
|
4371
|
+
this.instanceSpecificDef = false;
|
|
4372
|
+
}
|
|
4373
|
+
get metadata() {
|
|
4374
|
+
return { label: "Transparent BSDF", category: "Shader", color: "#336699", cost: "low" };
|
|
4375
|
+
}
|
|
4376
|
+
constructor() {
|
|
4377
|
+
super("TransparentBSDF");
|
|
4378
|
+
this._inputs = this.createInputs({}, {});
|
|
4379
|
+
this._outputs = this.createOutputs({ BSDF: "shader" });
|
|
4380
|
+
}
|
|
4381
|
+
getInputSockets() {
|
|
4382
|
+
return this._inputs;
|
|
4383
|
+
}
|
|
4384
|
+
getOutputSockets() {
|
|
4385
|
+
return this._outputs;
|
|
4386
|
+
}
|
|
4387
|
+
compileDefs() {
|
|
4388
|
+
return "";
|
|
4389
|
+
}
|
|
4390
|
+
/** Always fully transparent — a constant, not a dynamic value, so this always requests transparent:true. */
|
|
4391
|
+
wantsTransparency() {
|
|
4392
|
+
return true;
|
|
4393
|
+
}
|
|
4394
|
+
compileCall(ctx) {
|
|
4395
|
+
return `vec4 ${ctx.outputVar(this, "BSDF")} = vec4(0.0, 0.0, 0.0, 0.0);`;
|
|
4396
|
+
}
|
|
4397
|
+
};
|
|
4398
|
+
|
|
4260
4399
|
// src/nodes/process/PrincipledHair.ts
|
|
4261
4400
|
var PrincipledHair = class _PrincipledHair extends ProcessNode {
|
|
4262
4401
|
get nodeType() {
|
|
@@ -5660,6 +5799,7 @@ export {
|
|
|
5660
5799
|
TextureCoordinate,
|
|
5661
5800
|
ToonBSDF,
|
|
5662
5801
|
TranslucentBSDF,
|
|
5802
|
+
TransparentBSDF,
|
|
5663
5803
|
UVMap,
|
|
5664
5804
|
Value,
|
|
5665
5805
|
VectorCurves,
|
|
@@ -27,6 +27,12 @@ export declare class CompileContext {
|
|
|
27
27
|
private order;
|
|
28
28
|
private emittedDefs;
|
|
29
29
|
private defs;
|
|
30
|
+
/**
|
|
31
|
+
* `#extension` pragmas collected from any node's compileDefs() output.
|
|
32
|
+
* GLSL requires these before any other non-preprocessor token in the
|
|
33
|
+
* shader — see _extractExtensions / buildFragmentShader.
|
|
34
|
+
*/
|
|
35
|
+
private _extensions;
|
|
30
36
|
private calls;
|
|
31
37
|
private graphPath;
|
|
32
38
|
private _uniforms;
|
|
@@ -48,6 +54,17 @@ export declare class CompileContext {
|
|
|
48
54
|
private visit;
|
|
49
55
|
private emit;
|
|
50
56
|
private emitDefs;
|
|
57
|
+
/**
|
|
58
|
+
* Strips `#extension` lines out of a node's compileDefs() output and
|
|
59
|
+
* collects them (deduplicated) to be hoisted to the very top of the
|
|
60
|
+
* fragment shader by buildFragmentShader(). WebGL2/ESSL3 requires
|
|
61
|
+
* `#extension` directives to appear before any non-preprocessor token —
|
|
62
|
+
* leaving them in place mid-file (after other nodes' defs/uniforms) throws
|
|
63
|
+
* "extension directive must occur before any non-preprocessor tokens".
|
|
64
|
+
* A node just writes `#extension NAME : enable` anywhere in compileDefs()
|
|
65
|
+
* and gets correct placement automatically — no per-node opt-in needed.
|
|
66
|
+
*/
|
|
67
|
+
private _extractExtensions;
|
|
51
68
|
private validate;
|
|
52
69
|
private validateNode;
|
|
53
70
|
private typesCompatible;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompileContext.d.ts","sourceRoot":"","sources":["../../src/core/CompileContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAO,MAAM,CAAA;IACzB,cAAc,EAAK,MAAM,CAAA;IACzB,QAAQ,EAAW,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACrD,KAAK,EAAc,UAAU,EAAE,CAAA;IAC/B,gHAAgH;IAChH,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAqD;IACpE,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,IAAI,CAAiD;IAC7D,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,SAAS,CAAuD;IACxE,0FAA0F;IAC1F,OAAO,CAAC,iBAAiB,CAAiE;IAI1F,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB;IAejD;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAKvD;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM;IAgDlD,OAAO,CAAC,KAAK;IA8Bb,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"CompileContext.d.ts","sourceRoot":"","sources":["../../src/core/CompileContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAO,MAAM,CAAA;IACzB,cAAc,EAAK,MAAM,CAAA;IACzB,QAAQ,EAAW,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACrD,KAAK,EAAc,UAAU,EAAE,CAAA;IAC/B,gHAAgH;IAChH,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAqD;IACpE,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,IAAI,CAAiD;IAC7D;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,SAAS,CAAuD;IACxE,0FAA0F;IAC1F,OAAO,CAAC,iBAAiB,CAAiE;IAI1F,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB;IAejD;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAKvD;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM;IAgDlD,OAAO,CAAC,KAAK;IA8Bb,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,QAAQ;IAwBhB;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,SAAS;IAwBjB,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAS3D,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQrC,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -18,6 +18,12 @@ export class CompileContext {
|
|
|
18
18
|
this.order = [];
|
|
19
19
|
this.emittedDefs = new Set();
|
|
20
20
|
this.defs = [];
|
|
21
|
+
/**
|
|
22
|
+
* `#extension` pragmas collected from any node's compileDefs() output.
|
|
23
|
+
* GLSL requires these before any other non-preprocessor token in the
|
|
24
|
+
* shader — see _extractExtensions / buildFragmentShader.
|
|
25
|
+
*/
|
|
26
|
+
this._extensions = new Set();
|
|
21
27
|
this.calls = [];
|
|
22
28
|
this.graphPath = [];
|
|
23
29
|
this._uniforms = {};
|
|
@@ -159,7 +165,7 @@ export class CompileContext {
|
|
|
159
165
|
if (isInstanceSpecific) {
|
|
160
166
|
// Each instance emits its own uniquely named function — no dedup
|
|
161
167
|
if (defsSource.trim())
|
|
162
|
-
this.defs.push(defsSource);
|
|
168
|
+
this.defs.push(this._extractExtensions(defsSource));
|
|
163
169
|
}
|
|
164
170
|
else {
|
|
165
171
|
// Shared function — emit once per node type
|
|
@@ -168,10 +174,26 @@ export class CompileContext {
|
|
|
168
174
|
this.emittedDefs.add(key);
|
|
169
175
|
const source = fn ?? defsSource;
|
|
170
176
|
if (source.trim())
|
|
171
|
-
this.defs.push(source);
|
|
177
|
+
this.defs.push(this._extractExtensions(source));
|
|
172
178
|
}
|
|
173
179
|
}
|
|
174
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Strips `#extension` lines out of a node's compileDefs() output and
|
|
183
|
+
* collects them (deduplicated) to be hoisted to the very top of the
|
|
184
|
+
* fragment shader by buildFragmentShader(). WebGL2/ESSL3 requires
|
|
185
|
+
* `#extension` directives to appear before any non-preprocessor token —
|
|
186
|
+
* leaving them in place mid-file (after other nodes' defs/uniforms) throws
|
|
187
|
+
* "extension directive must occur before any non-preprocessor tokens".
|
|
188
|
+
* A node just writes `#extension NAME : enable` anywhere in compileDefs()
|
|
189
|
+
* and gets correct placement automatically — no per-node opt-in needed.
|
|
190
|
+
*/
|
|
191
|
+
_extractExtensions(source) {
|
|
192
|
+
return source.replace(/^[ \t]*#extension[^\n]*$/gm, (line) => {
|
|
193
|
+
this._extensions.add(line.trim());
|
|
194
|
+
return '';
|
|
195
|
+
});
|
|
196
|
+
}
|
|
175
197
|
// ── Validation ────────────────────────────────────────────────────
|
|
176
198
|
validate(root) {
|
|
177
199
|
if (ShaderConfig.errorLevel === 'off')
|
|
@@ -255,6 +277,7 @@ ${customAssigns}
|
|
|
255
277
|
.join('\n');
|
|
256
278
|
}
|
|
257
279
|
buildFragmentShader() {
|
|
280
|
+
const extensionsBlock = [...this._extensions].join('\n');
|
|
258
281
|
const uniformsBlock = this.buildUniformDeclarations();
|
|
259
282
|
const customVaryings = [...this._vertexInjections.entries()]
|
|
260
283
|
.map(([vName, { attrType }]) => `varying ${attrType} ${vName};`)
|
|
@@ -262,6 +285,7 @@ ${customAssigns}
|
|
|
262
285
|
const defsBlock = this.defs.join('\n\n');
|
|
263
286
|
const callsBlock = this.calls.map(c => ` ${c}`).join('\n');
|
|
264
287
|
return `
|
|
288
|
+
${extensionsBlock}
|
|
265
289
|
precision mediump float;
|
|
266
290
|
|
|
267
291
|
varying vec2 vUv;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaderNode.d.ts","sourceRoot":"","sources":["../../src/core/ShaderNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAsBjD,6DAA6D;AAC7D,KAAK,QAAQ,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AAE/C,8CAA8C;AAC9C,KAAK,SAAS,GAAG,UAAU,CAAA;AAE3B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAK,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAK,MAAM,CAAA;IAChB,IAAI,EAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,8BAAsB,UAAU;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;OAKG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEvC;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAK;IAElE,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAmC;IACtD,yDAAyD;IACzD,OAAO,CAAC,YAAY,CAAkC;gBAE1C,QAAQ,EAAE,MAAM;IAI5B,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAA;IAC/B,QAAQ,KAAK,QAAQ,IAAI,YAAY,CAAA;IAErC,QAAQ,CAAC,eAAe,IAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACjE,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAEzD;;;;;;;;;OASG;IACH,gBAAgB,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAIzG;;;;;OAKG;IACH,iBAAiB,IAAI,OAAO;IAE5B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAelC;;;OAGG;IACH,QAAQ,CAAC,WAAW,IAAI,MAAM;IAE9B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,qBAAqB,EAAE,cAAc,GAAG,MAAM;IAE/E;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,UAAQ;IAElC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAkCvC;;;;;OAKG;IACH,SAAS,CAAC,aAAa,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAQ/B;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ShaderNode.d.ts","sourceRoot":"","sources":["../../src/core/ShaderNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAsBjD,6DAA6D;AAC7D,KAAK,QAAQ,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AAE/C,8CAA8C;AAC9C,KAAK,SAAS,GAAG,UAAU,CAAA;AAE3B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAK,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAK,MAAM,CAAA;IAChB,IAAI,EAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,8BAAsB,UAAU;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;OAKG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEvC;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAK;IAElE,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAmC;IACtD,yDAAyD;IACzD,OAAO,CAAC,YAAY,CAAkC;gBAE1C,QAAQ,EAAE,MAAM;IAI5B,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAA;IAC/B,QAAQ,KAAK,QAAQ,IAAI,YAAY,CAAA;IAErC,QAAQ,CAAC,eAAe,IAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACjE,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAEzD;;;;;;;;;OASG;IACH,gBAAgB,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAIzG;;;;;OAKG;IACH,iBAAiB,IAAI,OAAO;IAE5B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAelC;;;OAGG;IACH,QAAQ,CAAC,WAAW,IAAI,MAAM;IAE9B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,qBAAqB,EAAE,cAAc,GAAG,MAAM;IAE/E;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,UAAQ;IAElC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAkCvC;;;;;OAKG;IACH,SAAS,CAAC,aAAa,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAQ/B;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI;CAqCpE"}
|
package/dist/core/ShaderNode.js
CHANGED
|
@@ -151,6 +151,22 @@ export class ShaderNode {
|
|
|
151
151
|
enumerable: true,
|
|
152
152
|
configurable: true,
|
|
153
153
|
});
|
|
154
|
+
// Per-component aliases (e.g. parameters['location.x']) for any vector-typed
|
|
155
|
+
// uniform parameter, so a KeyframeTrack can animate a single axis. Reads/writes
|
|
156
|
+
// go through the same uniforms[uniformName].value array as the whole-vector
|
|
157
|
+
// getter/setter above, so both access styles stay in sync automatically.
|
|
158
|
+
const AXES = ['x', 'y', 'z'];
|
|
159
|
+
AXES.forEach((axis, idx) => {
|
|
160
|
+
Object.defineProperty(this.parameters, `${paramName}.${axis}`, {
|
|
161
|
+
get: () => uniforms[uniformName].value[idx],
|
|
162
|
+
set: (v) => {
|
|
163
|
+
const arr = uniforms[uniformName].value;
|
|
164
|
+
arr[idx] = finiteOr(v, 0);
|
|
165
|
+
},
|
|
166
|
+
enumerable: true,
|
|
167
|
+
configurable: true,
|
|
168
|
+
});
|
|
169
|
+
});
|
|
154
170
|
}
|
|
155
171
|
else {
|
|
156
172
|
Object.defineProperty(this.parameters, paramName, {
|
package/dist/index.d.ts
CHANGED
|
@@ -83,6 +83,7 @@ export { SubsurfaceScattering } from './nodes/process/SubsurfaceScattering.js';
|
|
|
83
83
|
export { ToonBSDF } from './nodes/process/ToonBSDF.js';
|
|
84
84
|
export { SpecularBSDF } from './nodes/process/SpecularBSDF.js';
|
|
85
85
|
export { TranslucentBSDF } from './nodes/process/TranslucentBSDF.js';
|
|
86
|
+
export { TransparentBSDF } from './nodes/process/TransparentBSDF.js';
|
|
86
87
|
export { PrincipledHair } from './nodes/process/PrincipledHair.js';
|
|
87
88
|
export { Math as ShaderMath } from './nodes/process/Math.js';
|
|
88
89
|
export { Clamp } from './nodes/process/Clamp.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -88,6 +88,7 @@ export { SubsurfaceScattering } from './nodes/process/SubsurfaceScattering.js';
|
|
|
88
88
|
export { ToonBSDF } from './nodes/process/ToonBSDF.js';
|
|
89
89
|
export { SpecularBSDF } from './nodes/process/SpecularBSDF.js';
|
|
90
90
|
export { TranslucentBSDF } from './nodes/process/TranslucentBSDF.js';
|
|
91
|
+
export { TransparentBSDF } from './nodes/process/TransparentBSDF.js';
|
|
91
92
|
export { PrincipledHair } from './nodes/process/PrincipledHair.js';
|
|
92
93
|
// ── Process nodes — Converter ─────────────────────────────────────────────────
|
|
93
94
|
export { Math as ShaderMath } from './nodes/process/Math.js';
|
|
@@ -30,7 +30,7 @@ export class AddShader extends ProcessNode {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
AddShader.instanceSpecificDef = false;
|
|
33
|
-
AddShader.glslFunction = `
|
|
34
|
-
vec4 _st_addShader(vec4 a, vec4 b) {
|
|
35
|
-
return vec4(a.rgb + b.rgb, max(a.a, b.a));
|
|
33
|
+
AddShader.glslFunction = `
|
|
34
|
+
vec4 _st_addShader(vec4 a, vec4 b) {
|
|
35
|
+
return vec4(a.rgb + b.rgb, max(a.a, b.a));
|
|
36
36
|
}`;
|
|
@@ -7,19 +7,42 @@ export interface BumpInputs {
|
|
|
7
7
|
distance?: OutputSocket | number;
|
|
8
8
|
height?: OutputSocket;
|
|
9
9
|
normal?: OutputSocket;
|
|
10
|
+
/**
|
|
11
|
+
* 'derivative' (default) — height gradient via dFdx/dFdy of the `height` input.
|
|
12
|
+
* Screen-space, camera/rasterization-dependent: stable for procedural/vertex-fed
|
|
13
|
+
* height but can speckle or seam-flicker across a wide camera-distance range when
|
|
14
|
+
* `height` comes from a sampled texture.
|
|
15
|
+
*
|
|
16
|
+
* 'uv-offset' — explicit texelSize-offset samples of a height texture at a fixed
|
|
17
|
+
* LOD, independent of screen-space derivatives. Stable under camera motion for
|
|
18
|
+
* texture-driven relief (e.g. planetary crater/regolith maps). Requires `uniformName`.
|
|
19
|
+
*/
|
|
20
|
+
method?: 'derivative' | 'uv-offset';
|
|
21
|
+
/** Required when method:'uv-offset'. Name of the sampler2D height-map uniform. */
|
|
22
|
+
uniformName?: string;
|
|
23
|
+
/** UV to sample at, when method:'uv-offset'. Defaults to the surface UV (vUv). */
|
|
24
|
+
vector?: OutputSocket;
|
|
25
|
+
/** Texel size (1 / texture resolution) for the uv-offset samples. Default 1/512. */
|
|
26
|
+
texelSize?: OutputSocket | number;
|
|
27
|
+
/** Explicit mip/LOD level for the uv-offset samples. Default 0. */
|
|
28
|
+
lod?: OutputSocket | number;
|
|
10
29
|
}
|
|
11
30
|
/**
|
|
12
31
|
* Bump — Blender "Bump" node equivalent.
|
|
13
|
-
* Converts a height map into a perturbed surface normal
|
|
32
|
+
* Converts a height map into a perturbed surface normal.
|
|
14
33
|
*
|
|
15
34
|
* Inputs: strength [0-1], distance, height (float), normal (optional override)
|
|
35
|
+
* method ('derivative' | 'uv-offset'), uniformName/vector/texelSize/lod
|
|
36
|
+
* (uv-offset mode only)
|
|
16
37
|
* Outputs: Normal (color/vec3)
|
|
17
38
|
*/
|
|
18
39
|
export declare class Bump extends ProcessNode {
|
|
19
40
|
get nodeType(): string;
|
|
20
41
|
static instanceSpecificDef: boolean;
|
|
21
42
|
get metadata(): NodeMetadata;
|
|
22
|
-
static
|
|
43
|
+
static derivativeGlslFunction: string;
|
|
44
|
+
private readonly _method;
|
|
45
|
+
private readonly _uniformName;
|
|
23
46
|
private readonly _inputs;
|
|
24
47
|
private readonly _outputs;
|
|
25
48
|
constructor(inputs?: BumpInputs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bump.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/Bump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bump.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/Bump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,CAAA;IAChC,MAAM,CAAC,EAAI,YAAY,CAAA;IACvB,MAAM,CAAC,EAAI,YAAY,CAAA;IACvB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAO,YAAY,GAAG,WAAW,CAAA;IACxC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kFAAkF;IAClF,MAAM,CAAC,EAAO,YAAY,CAAA;IAC1B,oFAAoF;IACpF,SAAS,CAAC,EAAI,YAAY,GAAG,MAAM,CAAA;IACnC,mEAAmE;IACnE,GAAG,CAAC,EAAU,YAAY,GAAG,MAAM,CAAA;CACpC;AAED;;;;;;;;GAQG;AACH,qBAAa,IAAK,SAAQ,WAAW;IACnC,IAAI,QAAQ,WAAoB;IAKhC,MAAM,CAAC,mBAAmB,UAAO;IAEjC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,MAAM,CAAC,sBAAsB,SA8BxB;IAEL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,GAAE,UAAe;IA+BnC,eAAe;IACf,gBAAgB;IAEhB,WAAW,IAAI,MAAM;IAcrB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAkDzC"}
|