@firecms/neat 0.9.0 → 0.9.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/dist/NeatGradient.d.ts +8 -0
- package/dist/NeatGradient.js +73 -7
- package/dist/NeatGradient.js.map +1 -1
- package/dist/index.es.js +315 -285
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +31 -29
- package/dist/index.umd.js.map +1 -1
- package/dist/math.d.ts +1 -0
- package/dist/math.js +20 -0
- package/dist/math.js.map +1 -1
- package/dist/shaders.d.ts +2 -2
- package/dist/shaders.js +19 -17
- package/dist/shaders.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +4 -1
- package/src/NeatGradient.ts +77 -6
- package/src/math.ts +8 -0
- package/src/shaders.ts +19 -17
- package/src/types.ts +1 -0
package/dist/math.d.ts
CHANGED
package/dist/math.js
CHANGED
|
@@ -8,6 +8,26 @@ export class Matrix4 {
|
|
|
8
8
|
0, 0, 0, 1
|
|
9
9
|
]);
|
|
10
10
|
}
|
|
11
|
+
identity() {
|
|
12
|
+
const e = this.elements;
|
|
13
|
+
e[0] = 1;
|
|
14
|
+
e[1] = 0;
|
|
15
|
+
e[2] = 0;
|
|
16
|
+
e[3] = 0;
|
|
17
|
+
e[4] = 0;
|
|
18
|
+
e[5] = 1;
|
|
19
|
+
e[6] = 0;
|
|
20
|
+
e[7] = 0;
|
|
21
|
+
e[8] = 0;
|
|
22
|
+
e[9] = 0;
|
|
23
|
+
e[10] = 1;
|
|
24
|
+
e[11] = 0;
|
|
25
|
+
e[12] = 0;
|
|
26
|
+
e[13] = 0;
|
|
27
|
+
e[14] = 0;
|
|
28
|
+
e[15] = 1;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
11
31
|
translate(tx, ty, tz) {
|
|
12
32
|
this.elements[12] += this.elements[0] * tx + this.elements[4] * ty + this.elements[8] * tz;
|
|
13
33
|
this.elements[13] += this.elements[1] * tx + this.elements[5] * ty + this.elements[9] * tz;
|
package/dist/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAChB,QAAQ,CAAe;IACvB;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC7B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SACb,CAAC,CAAC;IACP,CAAC;IACD,SAAS,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU;QACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,KAAa;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,KAAa;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,KAAa;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,MAAM,OAAO,kBAAkB;IAC3B,IAAI,CAAS;IACb,KAAK,CAAS;IACd,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,QAAQ,CAA2B;IACnC,gBAAgB,CAAU;IAC1B,IAAI,CAAS;IAEb,YAAY,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY,EAAE,GAAW;QAC3F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAED,sBAAsB;QAClB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC9C,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACd,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACd,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;SAChB,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B,EAAE,KAAa,EAAE,MAAc,EAAE,aAAqB,EAAE,EAAE,cAAsB,EAAE,EAAE,YAAoB,OAAO,EAAE,OAAe,GAAG;IACtL,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,IAAI,SAAS,KAAK,OAAO,EAAE;QACvB,MAAM,iBAAiB,GAAG,OAAO,CAAC;QAClC,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;QACpC,MAAM,eAAe,GAAG,YAAY,GAAG,iBAAiB,GAAG,UAAU,GAAG,WAAW,GAAG,GAAG,CAAC;QAE1F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,eAAe,GAAG,WAAW,CAAC;QAEnD,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAElE,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,MAAM,eAAe,GAAG,KAAK,CAAC;YAC9B,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC;YAC9B,KAAK,GAAG,KAAK,GAAG,eAAe,CAAC;YAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC;YAC9B,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC;YAC/B,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC;YACjC,GAAG,GAAG,GAAG,GAAG,gBAAgB,CAAC;YAC7B,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;SACtC;QAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;KAC1B;SAAM;QACH,wDAAwD;QACxD,oDAAoD;QACpD,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,8BAA8B;QACnD,IAAI,SAAS,KAAK,QAAQ,EAAE;YACxB,QAAQ,GAAG,IAAI,CAAC;SACnB;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE;YAC9B,QAAQ,GAAG,IAAI,CAAC;SACnB;aAAM,IAAI,SAAS,KAAK,UAAU,EAAE;YACjC,QAAQ,GAAG,IAAI,CAAC;SACnB;QAED,IAAI,KAAK,IAAI,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YAChC,MAAM,CAAC,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;YAChC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC;SAC7B;aAAM;YACH,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC;YACxB,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;YACxB,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YAElC,mDAAmD;YACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC;YAC9B,MAAM,CAAC,IAAI,IAAI,gBAAgB,CAAC;YAChC,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,gBAAgB,CAAC;YAC/B,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC;SACrC;KACJ;IAED,gDAAgD;IAChD,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IACpB,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;IACnB,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IAEtB,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;IACnB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,MAAM,CAAC,sBAAsB,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAc,EAAE,aAAqB,EAAE,cAAsB;IAC9G,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;IAEtC,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC;IAEf,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,WAAW,CAAC;QAC5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE;YAChC,MAAM,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,UAAU,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;SAC9B;KACJ;IAED,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;QAC/B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;KACJ;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;IAE5C,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO;QACH,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QACjC,EAAE,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC;QACpE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC;KAClG,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,aAAqB,EAAE,cAAsB;IAChG,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAEvD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,mBAAmB,EAAE,EAAE,EAAE,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAE1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,kBAAkB,EAAE,EAAE,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC;YAClC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAE5B,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEnD,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,GAAG,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,GAAC,GAAG,CAAC,CAAC;YAElC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACtB;KACJ;IAED,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,mBAAmB,EAAE,EAAE,EAAE,EAAE;QAC7C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,kBAAkB,EAAE,EAAE,EAAE,EAAE;YAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAEnD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;KACJ;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO;QACH,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QACjC,EAAE,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC;QACpE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC;KAClG,CAAC;AACN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,IAAY,EAAE,cAAsB,EAAE,eAAuB;IAC/G,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAEjD,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE7B,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvB,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;YAE3C,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,oBAAoB,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC;SAC/D;KACJ;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,EAAE,EAAE;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE7C,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;KACJ;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO;QACH,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QACjC,EAAE,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC;QACpE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC;KAClG,CAAC;AACN,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,YAAoB,EAAE,MAAc,EAAE,cAAsB,EAAE,cAAsB;IAC5I,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;QAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEjC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACtB;KACJ;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAElD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;KACJ;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO;QACH,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QACjC,EAAE,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC;QACpE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC;KAClG,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,MAAc,EAAE,aAAqB,EAAE,cAAsB,EAAE,IAAY,EAAE,KAAa;IAC5I,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;IAEtC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,WAAW,CAAC;QAC5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE;YAChC,MAAM,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,UAAU,CAAC;YAE1C,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,CAAC;YAEX,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,CAAC;YAEX,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;gBACxB,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;gBACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpB,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAE/B,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACxB;YAED,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;gBACzB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;gBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE7B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;gBACjC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;gBACjC,EAAE,GAAG,EAAE,CAAC;gBACR,EAAE,GAAG,EAAE,CAAC;gBAER,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;gBAClC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;gBAClC,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;aACZ;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;SAC9B;KACJ;IAED,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;QAC/B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;KACJ;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO;QACH,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QACjC,EAAE,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC;QACpE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC;KAClG,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"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"}
|
package/dist/shaders.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const vertexShaderSource = "void main() {\n vUv = uv;\n vPosition = position;\n\n // SCROLLING LOGIC\n // Separate multipliers for wave, color, and flow offsets\n float waveOffset = -u_y_offset * u_y_offset_wave_multiplier;\n float colorOffset = -u_y_offset * u_y_offset_color_multiplier;\n float flowOffset = -u_y_offset * u_y_offset_flow_multiplier;\n\n // 1. DISPLACEMENT (WAVES)\n // We add waveOffset to Y to scroll the wave pattern\n v_displacement_amount = cnoise( vec3(\n u_wave_frequency_x * position.x + u_time,\n u_wave_frequency_y * (position.y + waveOffset) + u_time,\n u_time\n ));\n\n // 2. FLOW FIELD\n // Apply flow offset to scroll the flow field mask\n vec2 baseUv = vUv;\n baseUv.y += flowOffset / u_plane_height; // Scale to match wave speed\n vec2 flowUv = baseUv;\n\n if (u_flow_enabled > 0.5) {\n if (u_flow_ease > 0.0 || u_flow_distortion_a > 0.0) {\n vec2 ppp = -1.0 + 2.0 * baseUv;\n ppp += 0.1 * cos((1.5 * u_flow_scale) * ppp.yx + 1.1 * u_time + vec2(0.1, 1.1));\n ppp += 0.1 * cos((2.3 * u_flow_scale) * ppp.yx + 1.3 * u_time + vec2(3.2, 3.4));\n ppp += 0.1 * cos((2.2 * u_flow_scale) * ppp.yx + 1.7 * u_time + vec2(1.8, 5.2));\n ppp += u_flow_distortion_a * cos((u_flow_distortion_b * u_flow_scale) * ppp.yx + 1.4 * u_time + vec2(6.3, 3.9));\n\n float r = length(ppp);\n flowUv = mix(baseUv, vec2(baseUv.x * (1.0 - u_flow_ease) + r * u_flow_ease, baseUv.y), u_flow_ease);\n }\n }\n\n // Pass the standard flow UV to fragment shader (for texture)\n vFlowUv = flowUv;\n\n // 3. COLOR MIXING\n // We take the computed flow UVs and apply the color offset\n // Scale by plane height to match wave offset speed (world space vs UV space)\n vec3 color = u_colors[0].color;\n\n vec3 distortedPos = position;\n if (
|
|
2
|
-
export declare const fragmentShaderSource = "float random(vec2 p) {\n return fract(sin(dot(p, vec2(12.9898,78.233))) * 43758.5453);\n}\n\nfloat fbm(vec3 x) {\n float value = 0.0;\n float amplitude = 0.5;\n float frequency = 1.0;\n for (int i = 0; i <
|
|
1
|
+
export declare const vertexShaderSource = "void main() {\n vUv = uv;\n vPosition = position;\n\n // SCROLLING LOGIC\n // Separate multipliers for wave, color, and flow offsets\n float waveOffset = -u_y_offset * u_y_offset_wave_multiplier;\n float colorOffset = -u_y_offset * u_y_offset_color_multiplier;\n float flowOffset = -u_y_offset * u_y_offset_flow_multiplier;\n\n // 1. DISPLACEMENT (WAVES)\n // We add waveOffset to Y to scroll the wave pattern\n v_displacement_amount = cnoise( vec3(\n u_wave_frequency_x * position.x + u_time,\n u_wave_frequency_y * (position.y + waveOffset) + u_time,\n u_time\n ));\n\n // 2. FLOW FIELD\n // Apply flow offset to scroll the flow field mask\n vec2 baseUv = vUv;\n baseUv.y += flowOffset / u_plane_height; // Scale to match wave speed\n vec2 flowUv = baseUv;\n\n if (u_flow_enabled > 0.5) {\n if (u_flow_ease > 0.0 || u_flow_distortion_a > 0.0) {\n vec2 ppp = -1.0 + 2.0 * baseUv;\n ppp += 0.1 * cos((1.5 * u_flow_scale) * ppp.yx + 1.1 * u_time + vec2(0.1, 1.1));\n ppp += 0.1 * cos((2.3 * u_flow_scale) * ppp.yx + 1.3 * u_time + vec2(3.2, 3.4));\n ppp += 0.1 * cos((2.2 * u_flow_scale) * ppp.yx + 1.7 * u_time + vec2(1.8, 5.2));\n ppp += u_flow_distortion_a * cos((u_flow_distortion_b * u_flow_scale) * ppp.yx + 1.4 * u_time + vec2(6.3, 3.9));\n\n float r = length(ppp);\n flowUv = mix(baseUv, vec2(baseUv.x * (1.0 - u_flow_ease) + r * u_flow_ease, baseUv.y), u_flow_ease);\n }\n }\n\n // Pass the standard flow UV to fragment shader (for texture)\n vFlowUv = flowUv;\n\n // 3. COLOR MIXING\n // We take the computed flow UVs and apply the color offset\n // Scale by plane height to match wave offset speed (world space vs UV space)\n vec3 color = u_colors[0].color;\n\n vec3 distortedPos = position;\n if (u_flat_shading < 0.5) {\n if (u_flow_enabled > 0.5) {\n if (u_flow_ease > 0.0 || u_flow_distortion_a > 0.0) {\n vec3 ppp = position / 25.0;\n ppp.xyz += 0.1 * cos((1.5 * u_flow_scale) * ppp.yxz + 1.1 * u_time + vec3(0.1, 1.1, 2.1));\n ppp.xyz += 0.1 * cos((2.3 * u_flow_scale) * ppp.zxy + 1.3 * u_time + vec3(3.2, 3.4, 1.2));\n ppp.xyz += 0.1 * cos((2.2 * u_flow_scale) * ppp.yxz + 1.7 * u_time + vec3(1.8, 5.2, 3.1));\n ppp.xyz += u_flow_distortion_a * cos((u_flow_distortion_b * u_flow_scale) * ppp.zxy + 1.4 * u_time + vec3(6.3, 3.9, 4.5));\n\n float r = length(ppp);\n distortedPos = mix(position, vec3(\n position.x * (1.0 - u_flow_ease) + r * u_flow_ease * 25.0,\n position.y,\n position.z * (1.0 - u_flow_ease) + r * u_flow_ease * 25.0\n ), u_flow_ease);\n }\n }\n }\n\n vec3 noise_cord;\n if (u_flat_shading < 0.5) {\n noise_cord = vec3(distortedPos.x / 50.0, (distortedPos.y + colorOffset) / 50.0, distortedPos.z / 50.0);\n } else {\n vec2 adjustedUv = flowUv;\n adjustedUv.y += colorOffset / u_plane_height;\n noise_cord = vec3(adjustedUv, 0.0);\n }\n\n const float minNoise = .0;\n const float maxNoise = .9;\n\n for (int i = 1; i < 6; i++) {\n if (i < u_colors_count) {\n if (u_colors[i].is_active > 0.5) {\n float noiseFlow = (1. + float(i)) / 30.;\n float noiseSpeed = (1. + float(i)) * 0.11;\n float noiseSeed = 13. + float(i) * 7.;\n\n float noise_z = u_time * noiseSpeed;\n if (u_flat_shading < 0.5) {\n noise_z = noise_cord.z * u_color_pressure.x * u_color_pressure.x + u_time * noiseSpeed;\n }\n\n float noise = snoise(\n vec3(\n noise_cord.x * u_color_pressure.x * u_color_pressure.x + u_time * noiseFlow * 2.,\n noise_cord.y * u_color_pressure.y * u_color_pressure.y,\n noise_z\n ) + noiseSeed\n ) - (.1 * float(i)) + (.5 * u_color_blending);\n\n noise = clamp(noise, minNoise, maxNoise + float(i) * 0.02);\n color = mix(color, u_colors[i].color, smoothstep(0.0, u_color_blending, noise));\n }\n }\n }\n\n v_color = color;\n\n // 4. FRESNEL (rim glow)\n // (Calculated in fragment shader using displacement slope approximation)\n\n // 5. VERTEX POSITION\n vec3 newPosition = position + normal * v_displacement_amount * u_wave_amplitude;\n vec4 mvPosition = modelViewMatrix * vec4(newPosition, 1.0);\n vViewPosition = mvPosition.xyz;\n vNormal = normalize((modelViewMatrix * vec4(normal, 0.0)).xyz);\n gl_Position = projectionMatrix * mvPosition;\n v_new_position = gl_Position;\n}\n";
|
|
2
|
+
export declare const fragmentShaderSource = "float random(vec2 p) {\n return fract(sin(dot(p, vec2(12.9898,78.233))) * 43758.5453);\n}\n\nfloat fbm(vec3 x) {\n float value = 0.0;\n float amplitude = 0.5;\n float frequency = 1.0;\n for (int i = 0; i < 2; i++) {\n value += amplitude * snoise(x * frequency);\n frequency *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n}\n\n// Branchless HSL to RGB for iridescence\nvec3 hsl2rgb(float h, float s, float l) {\n vec3 rgb = clamp(abs(mod(h * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return l + s * (rgb - 0.5) * (1.0 - abs(2.0 * l - 1.0));\n}\n\nvoid main() {\n vec2 finalUv = vFlowUv;\n \n vec3 baseColor;\n float texAlpha = 1.0;\n\n if (u_enable_procedural_texture > 0.5) {\n if (u_flat_shading < 0.5) {\n float parallaxFactor = 0.25;\n float scrollOffset = (u_y_offset * u_y_offset_color_multiplier) * parallaxFactor;\n vec3 scrolledPos = vPosition;\n scrolledPos.y -= scrollOffset;\n \n vec3 p = (scrolledPos * 1.5) / 50.0;\n vec2 uvX = p.yz + vec2(0.5);\n vec2 uvY = p.zx + vec2(0.5);\n vec2 uvZ = p.xy + vec2(0.5);\n \n vec4 colX = texture2D(u_procedural_texture, uvX);\n vec4 colY = texture2D(u_procedural_texture, uvY);\n vec4 colZ = texture2D(u_procedural_texture, uvZ);\n \n vec3 n = normalize(vNormal);\n vec3 blendWeights = abs(n);\n blendWeights = blendWeights / (blendWeights.x + blendWeights.y + blendWeights.z + 0.0001);\n \n vec4 texSample = colX * blendWeights.x + colY * blendWeights.y + colZ * blendWeights.z;\n baseColor = texSample.rgb;\n if (u_transparent_texture_void > 0.5) {\n texAlpha = texSample.a;\n }\n } else {\n vec2 ppp = -1.0 + 2.0 * finalUv;\n ppp += 0.1 * cos((1.5 * u_flow_scale) * ppp.yx + 1.1 * u_time + vec2(0.1, 1.1));\n ppp += 0.1 * cos((2.3 * u_flow_scale) * ppp.yx + 1.3 * u_time + vec2(3.2, 3.4));\n ppp += 0.1 * cos((2.2 * u_flow_scale) * ppp.yx + 1.7 * u_time + vec2(1.8, 5.2));\n ppp += u_flow_distortion_a * cos((u_flow_distortion_b * u_flow_scale) * ppp.yx + 1.4 * u_time + vec2(6.3, 3.9));\n float r = length(ppp);\n \n float vx = (finalUv.x * u_texture_ease) + (r * (1.0 - u_texture_ease));\n float vy = (finalUv.y * u_texture_ease) + (0.0 * (1.0 - u_texture_ease));\n vec2 texUv = vec2(vx, vy);\n\n float parallaxFactor = 0.25;\n texUv.y -= (u_y_offset * u_y_offset_color_multiplier / u_plane_height) * parallaxFactor;\n texUv *= 1.5;\n\n vec4 texSample = texture2D(u_procedural_texture, texUv);\n baseColor = texSample.rgb;\n if (u_transparent_texture_void > 0.5) {\n texAlpha = texSample.a;\n }\n }\n } else {\n baseColor = v_color;\n }\n\n vec3 color = baseColor;\n\n // === DOMAIN WARPING (simplified: 3 fbm calls instead of 5) ===\n if (u_domain_warp_enabled > 0.5) {\n vec3 p;\n if (u_flat_shading < 0.5) {\n p = vec3((vPosition / 50.0 + vec3(0.5)) * u_domain_warp_scale);\n p.z += u_time * 0.15;\n } else {\n p = vec3(finalUv * u_domain_warp_scale, u_time * 0.15);\n }\n vec2 q = vec2(fbm(p), fbm(p + vec3(5.2, 1.3, 0.0)));\n float f = fbm(p + vec3(4.0 * q, 0.0));\n vec3 warpColor = color * (1.0 + f * 0.8 * u_domain_warp_intensity);\n float pattern = clamp(f * f * f + 0.6 * f * f + 0.5 * f, 0.0, 1.0);\n color = mix(color, warpColor * (0.6 + pattern * 0.8), u_domain_warp_intensity * 0.7);\n }\n\n // Post-processing\n // Compute dynamic pixel-perfect normal using smooth normal\n vec3 normal = normalize(vNormal);\n vec3 viewDir = vec3(0.0, 0.0, 1.0);\n float ndotv = dot(normal, viewDir);\n \n // Cull back-faces for closed 3D shapes (Sphere=1, Torus=2, Cylinder=3)\n if (u_shape_type > 0.5 && u_shape_type < 3.5) {\n if (ndotv < 0.0) {\n discard;\n }\n } else {\n // Double-sided shapes (Plane, Ribbon): flip normal if back-facing\n if (ndotv < 0.0) {\n normal = -normal;\n ndotv = -ndotv;\n }\n }\n vec3 lightDir = normalize(vec3(1.0, 1.0, 1.0));\n float diffuse = max(dot(normal, lightDir), 0.0);\n vec3 halfDir = normalize(lightDir + viewDir);\n float specular = pow(max(dot(normal, halfDir), 0.0), 32.0);\n\n // Blend smooth 3D shading with smooth height-based wave shading\n if (u_flat_shading > 0.5) {\n // Flat / height-based wave shading (plane style)\n color += v_displacement_amount * u_highlights;\n float heightShadow = 1.0 - v_displacement_amount;\n color -= heightShadow * heightShadow * u_shadows;\n } else {\n // 3D shading\n color += specular * u_highlights;\n color += v_displacement_amount * u_highlights * 0.5;\n float heightShadow = 1.0 - v_displacement_amount;\n color -= heightShadow * heightShadow * u_shadows * 0.5;\n color -= (1.0 - diffuse) * u_shadows * 0.5;\n }\n color = saturation(color, 1.0 + u_saturation);\n color = color * u_brightness;\n\n // === IRIDESCENCE ===\n if (u_iridescence_enabled > 0.5) {\n float hue = fract(v_displacement_amount * 0.5 + 0.5 + u_time * u_iridescence_speed * 0.05);\n vec3 iriColor = hsl2rgb(hue, 0.8, 0.6);\n color = mix(color, iriColor, u_iridescence_intensity * abs(v_displacement_amount) * 0.6);\n }\n\n // === FRESNEL (Rim glow) ===\n if (u_fresnel_enabled > 0.5) {\n float slope = 1.0 - abs(v_displacement_amount);\n float fresnel = pow(max(slope, 0.0), u_fresnel_power);\n color += u_fresnel_color * fresnel * u_fresnel_intensity;\n }\n\n // === VIGNETTE ===\n if (u_vignette_intensity > 0.0) {\n vec2 vigUv = vUv;\n if (u_flat_shading < 0.5) {\n vigUv = (v_new_position.xy / v_new_position.w) * 0.5 + vec2(0.5);\n }\n float dist = length(vigUv - vec2(0.5));\n float vig = smoothstep(u_vignette_radius, u_vignette_radius * 0.3, dist);\n color *= mix(1.0, vig, u_vignette_intensity);\n }\n\n // === FAKE BLOOM ===\n if (u_bloom_intensity > 0.0) {\n float luma = dot(color, vec3(0.2126, 0.7152, 0.0722));\n float bloomMask = smoothstep(u_bloom_threshold, 1.0, luma);\n color += color * bloomMask * u_bloom_intensity;\n }\n\n // === CHROMATIC ABERRATION ===\n if (u_chromatic_aberration > 0.0) {\n float caAmount = u_chromatic_aberration * 0.008;\n vec2 caUv = vUv;\n if (u_flat_shading < 0.5) {\n caUv = (v_new_position.xy / v_new_position.w) * 0.5 + vec2(0.5);\n }\n float dist = length(caUv - vec2(0.5));\n float rShift = v_displacement_amount + caAmount * dist;\n float bShift = v_displacement_amount - caAmount * dist;\n color.r *= 1.0 + rShift * caAmount * 10.0;\n color.b *= 1.0 - bShift * caAmount * 10.0;\n }\n\n // Grain (use cheap hash noise instead of expensive fbm when static)\n float grain = 0.0;\n if (u_grain_intensity > 0.0) {\n vec2 noiseCoords = gl_FragCoord.xy / u_grain_scale;\n if (u_grain_speed != 0.0 || u_flat_shading > 0.5) {\n grain = fbm(vec3(noiseCoords, u_time * u_grain_speed));\n } else {\n // Static grain: use cheap hash instead of fbm\n grain = random(noiseCoords) - 0.5;\n }\n\n grain = grain * 0.5 + 0.5;\n grain -= 0.5;\n grain = (grain > u_grain_sparsity) ? grain : 0.0;\n grain *= u_grain_intensity;\n }\n\n color += vec3(grain);\n\n float edgeAlpha = 1.0;\n \n // Silhouette falloff for 3D shapes (skip when flat shading or fade is zero)\n if (u_silhouette_fade > 0.0 && u_flat_shading < 0.5) {\n edgeAlpha = smoothstep(0.0, u_silhouette_fade, ndotv);\n }\n \n // UV boundary falloff for open shapes\n if (u_shape_type == 3.0) { // Cylinder: fade top/bottom ends\n float vFade = smoothstep(0.0, u_cylinder_fade, vUv.y) * smoothstep(1.0, 1.0 - u_cylinder_fade, vUv.y);\n edgeAlpha *= vFade;\n } else if (u_shape_type == 4.0) { // Ribbon: fade all 4 borders\n float uFade = smoothstep(0.0, u_ribbon_fade, vUv.x) * smoothstep(1.0, 1.0 - u_ribbon_fade, vUv.x);\n float vFade = smoothstep(0.0, u_ribbon_fade, vUv.y) * smoothstep(1.0, 1.0 - u_ribbon_fade, vUv.y);\n edgeAlpha *= uFade * vFade;\n }\n\n edgeAlpha *= texAlpha;\n gl_FragColor = vec4(color, edgeAlpha);\n}\n";
|
|
3
3
|
export declare function buildVertUniforms(): string;
|
|
4
4
|
export declare function buildFragUniforms(): string;
|
|
5
5
|
export declare function buildNoise(): string;
|
package/dist/shaders.js
CHANGED
|
@@ -44,7 +44,7 @@ export const vertexShaderSource = `void main() {
|
|
|
44
44
|
vec3 color = u_colors[0].color;
|
|
45
45
|
|
|
46
46
|
vec3 distortedPos = position;
|
|
47
|
-
if (
|
|
47
|
+
if (u_flat_shading < 0.5) {
|
|
48
48
|
if (u_flow_enabled > 0.5) {
|
|
49
49
|
if (u_flow_ease > 0.0 || u_flow_distortion_a > 0.0) {
|
|
50
50
|
vec3 ppp = position / 25.0;
|
|
@@ -64,7 +64,7 @@ export const vertexShaderSource = `void main() {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
vec3 noise_cord;
|
|
67
|
-
if (
|
|
67
|
+
if (u_flat_shading < 0.5) {
|
|
68
68
|
noise_cord = vec3(distortedPos.x / 50.0, (distortedPos.y + colorOffset) / 50.0, distortedPos.z / 50.0);
|
|
69
69
|
} else {
|
|
70
70
|
vec2 adjustedUv = flowUv;
|
|
@@ -83,7 +83,7 @@ export const vertexShaderSource = `void main() {
|
|
|
83
83
|
float noiseSeed = 13. + float(i) * 7.;
|
|
84
84
|
|
|
85
85
|
float noise_z = u_time * noiseSpeed;
|
|
86
|
-
if (
|
|
86
|
+
if (u_flat_shading < 0.5) {
|
|
87
87
|
noise_z = noise_cord.z * u_color_pressure.x * u_color_pressure.x + u_time * noiseSpeed;
|
|
88
88
|
}
|
|
89
89
|
|
|
@@ -123,7 +123,7 @@ float fbm(vec3 x) {
|
|
|
123
123
|
float value = 0.0;
|
|
124
124
|
float amplitude = 0.5;
|
|
125
125
|
float frequency = 1.0;
|
|
126
|
-
for (int i = 0; i <
|
|
126
|
+
for (int i = 0; i < 2; i++) {
|
|
127
127
|
value += amplitude * snoise(x * frequency);
|
|
128
128
|
frequency *= 2.0;
|
|
129
129
|
amplitude *= 0.5;
|
|
@@ -144,7 +144,7 @@ void main() {
|
|
|
144
144
|
float texAlpha = 1.0;
|
|
145
145
|
|
|
146
146
|
if (u_enable_procedural_texture > 0.5) {
|
|
147
|
-
if (
|
|
147
|
+
if (u_flat_shading < 0.5) {
|
|
148
148
|
float parallaxFactor = 0.25;
|
|
149
149
|
float scrollOffset = (u_y_offset * u_y_offset_color_multiplier) * parallaxFactor;
|
|
150
150
|
vec3 scrolledPos = vPosition;
|
|
@@ -155,9 +155,9 @@ void main() {
|
|
|
155
155
|
vec2 uvY = p.zx + vec2(0.5);
|
|
156
156
|
vec2 uvZ = p.xy + vec2(0.5);
|
|
157
157
|
|
|
158
|
-
vec4 colX = texture2D(u_procedural_texture,
|
|
159
|
-
vec4 colY = texture2D(u_procedural_texture,
|
|
160
|
-
vec4 colZ = texture2D(u_procedural_texture,
|
|
158
|
+
vec4 colX = texture2D(u_procedural_texture, uvX);
|
|
159
|
+
vec4 colY = texture2D(u_procedural_texture, uvY);
|
|
160
|
+
vec4 colZ = texture2D(u_procedural_texture, uvZ);
|
|
161
161
|
|
|
162
162
|
vec3 n = normalize(vNormal);
|
|
163
163
|
vec3 blendWeights = abs(n);
|
|
@@ -184,7 +184,7 @@ void main() {
|
|
|
184
184
|
texUv.y -= (u_y_offset * u_y_offset_color_multiplier / u_plane_height) * parallaxFactor;
|
|
185
185
|
texUv *= 1.5;
|
|
186
186
|
|
|
187
|
-
vec4 texSample = texture2D(u_procedural_texture,
|
|
187
|
+
vec4 texSample = texture2D(u_procedural_texture, texUv);
|
|
188
188
|
baseColor = texSample.rgb;
|
|
189
189
|
if (u_transparent_texture_void > 0.5) {
|
|
190
190
|
texAlpha = texSample.a;
|
|
@@ -199,7 +199,7 @@ void main() {
|
|
|
199
199
|
// === DOMAIN WARPING (simplified: 3 fbm calls instead of 5) ===
|
|
200
200
|
if (u_domain_warp_enabled > 0.5) {
|
|
201
201
|
vec3 p;
|
|
202
|
-
if (
|
|
202
|
+
if (u_flat_shading < 0.5) {
|
|
203
203
|
p = vec3((vPosition / 50.0 + vec3(0.5)) * u_domain_warp_scale);
|
|
204
204
|
p.z += u_time * 0.15;
|
|
205
205
|
} else {
|
|
@@ -236,8 +236,8 @@ void main() {
|
|
|
236
236
|
float specular = pow(max(dot(normal, halfDir), 0.0), 32.0);
|
|
237
237
|
|
|
238
238
|
// Blend smooth 3D shading with smooth height-based wave shading
|
|
239
|
-
if (
|
|
240
|
-
//
|
|
239
|
+
if (u_flat_shading > 0.5) {
|
|
240
|
+
// Flat / height-based wave shading (plane style)
|
|
241
241
|
color += v_displacement_amount * u_highlights;
|
|
242
242
|
float heightShadow = 1.0 - v_displacement_amount;
|
|
243
243
|
color -= heightShadow * heightShadow * u_shadows;
|
|
@@ -269,7 +269,7 @@ void main() {
|
|
|
269
269
|
// === VIGNETTE ===
|
|
270
270
|
if (u_vignette_intensity > 0.0) {
|
|
271
271
|
vec2 vigUv = vUv;
|
|
272
|
-
if (
|
|
272
|
+
if (u_flat_shading < 0.5) {
|
|
273
273
|
vigUv = (v_new_position.xy / v_new_position.w) * 0.5 + vec2(0.5);
|
|
274
274
|
}
|
|
275
275
|
float dist = length(vigUv - vec2(0.5));
|
|
@@ -288,7 +288,7 @@ void main() {
|
|
|
288
288
|
if (u_chromatic_aberration > 0.0) {
|
|
289
289
|
float caAmount = u_chromatic_aberration * 0.008;
|
|
290
290
|
vec2 caUv = vUv;
|
|
291
|
-
if (
|
|
291
|
+
if (u_flat_shading < 0.5) {
|
|
292
292
|
caUv = (v_new_position.xy / v_new_position.w) * 0.5 + vec2(0.5);
|
|
293
293
|
}
|
|
294
294
|
float dist = length(caUv - vec2(0.5));
|
|
@@ -302,7 +302,7 @@ void main() {
|
|
|
302
302
|
float grain = 0.0;
|
|
303
303
|
if (u_grain_intensity > 0.0) {
|
|
304
304
|
vec2 noiseCoords = gl_FragCoord.xy / u_grain_scale;
|
|
305
|
-
if (u_grain_speed != 0.0 ||
|
|
305
|
+
if (u_grain_speed != 0.0 || u_flat_shading > 0.5) {
|
|
306
306
|
grain = fbm(vec3(noiseCoords, u_time * u_grain_speed));
|
|
307
307
|
} else {
|
|
308
308
|
// Static grain: use cheap hash instead of fbm
|
|
@@ -319,8 +319,8 @@ void main() {
|
|
|
319
319
|
|
|
320
320
|
float edgeAlpha = 1.0;
|
|
321
321
|
|
|
322
|
-
// Silhouette falloff for 3D shapes
|
|
323
|
-
if (
|
|
322
|
+
// Silhouette falloff for 3D shapes (skip when flat shading or fade is zero)
|
|
323
|
+
if (u_silhouette_fade > 0.0 && u_flat_shading < 0.5) {
|
|
324
324
|
edgeAlpha = smoothstep(0.0, u_silhouette_fade, ndotv);
|
|
325
325
|
}
|
|
326
326
|
|
|
@@ -394,6 +394,7 @@ uniform float u_fresnel_intensity;
|
|
|
394
394
|
uniform vec3 u_fresnel_color;
|
|
395
395
|
|
|
396
396
|
uniform float u_shape_type;
|
|
397
|
+
uniform float u_flat_shading;
|
|
397
398
|
`;
|
|
398
399
|
}
|
|
399
400
|
export function buildFragUniforms() {
|
|
@@ -467,6 +468,7 @@ uniform float u_transparent_texture_void;
|
|
|
467
468
|
uniform float u_silhouette_fade;
|
|
468
469
|
uniform float u_cylinder_fade;
|
|
469
470
|
uniform float u_ribbon_fade;
|
|
471
|
+
uniform float u_flat_shading;
|
|
470
472
|
`;
|
|
471
473
|
}
|
|
472
474
|
export function buildNoise() {
|
package/dist/shaders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaders.js","sourceRoot":"","sources":["../src/shaders.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHjC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8NnC,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC7B,OAAO
|
|
1
|
+
{"version":3,"file":"shaders.js","sourceRoot":"","sources":["../src/shaders.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHjC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8NnC,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDV,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEV,CAAC;AACF,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwJV,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,OAAO;;;;;;CAMV,CAAC;AACF,CAAC"}
|
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@firecms/neat",
|
|
3
3
|
"description": "Beautiful 3D gradients for your website",
|
|
4
4
|
"access": "public",
|
|
5
|
-
"version": "0.9.
|
|
5
|
+
"version": "0.9.2",
|
|
6
6
|
"main": "./dist/index.umd.js",
|
|
7
7
|
"module": "./dist/index.es.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
"url": "https://github.com/FireCMSco/neat/issues"
|
|
48
48
|
},
|
|
49
49
|
"homepage": "https://github.com/FireCMSco/neat#readme",
|
|
50
|
+
"pnpm": {
|
|
51
|
+
"onlyBuiltDependencies": ["esbuild"]
|
|
52
|
+
},
|
|
50
53
|
"publishConfig": {
|
|
51
54
|
"access": "public"
|
|
52
55
|
}
|
package/src/NeatGradient.ts
CHANGED
|
@@ -114,6 +114,7 @@ export class NeatGradient implements NeatController {
|
|
|
114
114
|
private _silhouetteFade: number = 0.25;
|
|
115
115
|
private _cylinderFade: number = 0.08;
|
|
116
116
|
private _ribbonFade: number = 0.05;
|
|
117
|
+
private _flatShading: boolean = true;
|
|
117
118
|
|
|
118
119
|
// 3D Shapes config
|
|
119
120
|
private _shapeType: 'plane' | 'sphere' | 'torus' | 'cylinder' | 'ribbon' = 'plane';
|
|
@@ -173,6 +174,11 @@ export class NeatGradient implements NeatController {
|
|
|
173
174
|
private _colorsChanged: boolean = true;
|
|
174
175
|
private _uniformsDirty: boolean = true;
|
|
175
176
|
private _textureDirty: boolean = true;
|
|
177
|
+
private _yOffsetDirty: boolean = false;
|
|
178
|
+
private _modelViewMatrix: Matrix4 = new Matrix4();
|
|
179
|
+
private _isVisible: boolean = true;
|
|
180
|
+
private _visibilityObserver: IntersectionObserver | null = null;
|
|
181
|
+
private _visibilityHandler: (() => void) | null = null;
|
|
176
182
|
|
|
177
183
|
constructor(config: NeatConfig & { ref: HTMLCanvasElement, resolution?: number, seed?: number }) {
|
|
178
184
|
|
|
@@ -244,6 +250,7 @@ export class NeatGradient implements NeatController {
|
|
|
244
250
|
silhouetteFade = 0.25,
|
|
245
251
|
cylinderFade = 0.08,
|
|
246
252
|
ribbonFade = 0.05,
|
|
253
|
+
flatShading = true,
|
|
247
254
|
|
|
248
255
|
// Camera configuration
|
|
249
256
|
cameraLock = false,
|
|
@@ -346,6 +353,7 @@ export class NeatGradient implements NeatController {
|
|
|
346
353
|
this.silhouetteFade = silhouetteFade;
|
|
347
354
|
this.cylinderFade = cylinderFade;
|
|
348
355
|
this.ribbonFade = ribbonFade;
|
|
356
|
+
this._flatShading = flatShading;
|
|
349
357
|
|
|
350
358
|
this._cameraLock = cameraLock;
|
|
351
359
|
this._cameraX = cameraX;
|
|
@@ -401,7 +409,8 @@ export class NeatGradient implements NeatController {
|
|
|
401
409
|
|
|
402
410
|
// Update modelViewMatrix in every frame to support dynamic rotation and auto-rotation
|
|
403
411
|
const camera = this.glState.camera;
|
|
404
|
-
const modelViewMatrix =
|
|
412
|
+
const modelViewMatrix = this._modelViewMatrix;
|
|
413
|
+
modelViewMatrix.identity();
|
|
405
414
|
|
|
406
415
|
// 1. Camera translation (default camera distance + displacement)
|
|
407
416
|
modelViewMatrix.translate(
|
|
@@ -438,6 +447,12 @@ export class NeatGradient implements NeatController {
|
|
|
438
447
|
const mvLoc = locations.uniforms["modelViewMatrix"];
|
|
439
448
|
if (mvLoc) gl.uniformMatrix4fv(mvLoc, false, modelViewMatrix.elements);
|
|
440
449
|
|
|
450
|
+
// Fast path: only upload yOffset when it changed (scroll)
|
|
451
|
+
if (this._yOffsetDirty && !this._uniformsDirty) {
|
|
452
|
+
gl.uniform1f(locations.uniforms['u_y_offset'], this._yOffset);
|
|
453
|
+
this._yOffsetDirty = false;
|
|
454
|
+
}
|
|
455
|
+
|
|
441
456
|
// Only upload static uniforms when they've been modified
|
|
442
457
|
if (this._uniformsDirty) {
|
|
443
458
|
gl.uniform2f(locations.uniforms['u_resolution'], this._ref.clientWidth, this._ref.clientHeight);
|
|
@@ -498,8 +513,10 @@ export class NeatGradient implements NeatController {
|
|
|
498
513
|
gl.uniform1f(locations.uniforms['u_silhouette_fade'], this._silhouetteFade);
|
|
499
514
|
gl.uniform1f(locations.uniforms['u_cylinder_fade'], this._cylinderFade);
|
|
500
515
|
gl.uniform1f(locations.uniforms['u_ribbon_fade'], this._ribbonFade);
|
|
516
|
+
gl.uniform1f(locations.uniforms['u_flat_shading'], this._flatShading ? 1.0 : 0.0);
|
|
501
517
|
|
|
502
518
|
this._uniformsDirty = false;
|
|
519
|
+
this._yOffsetDirty = false;
|
|
503
520
|
}
|
|
504
521
|
|
|
505
522
|
// Only regenerate procedural texture when needed
|
|
@@ -558,8 +575,35 @@ export class NeatGradient implements NeatController {
|
|
|
558
575
|
gl.drawElements(gl.TRIANGLES, indexCount, indexType, 0);
|
|
559
576
|
}
|
|
560
577
|
|
|
561
|
-
this.
|
|
578
|
+
if (this._isVisible) {
|
|
579
|
+
this.requestRef = requestAnimationFrame(render);
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
// Visibility optimization: pause rendering when off-screen or tab hidden
|
|
584
|
+
this._visibilityObserver = new IntersectionObserver((entries) => {
|
|
585
|
+
const wasVisible = this._isVisible;
|
|
586
|
+
this._isVisible = entries[0].isIntersecting && document.visibilityState !== 'hidden';
|
|
587
|
+
if (this._isVisible && !wasVisible) {
|
|
588
|
+
lastTime = performance.now(); // Avoid time jump after resume
|
|
589
|
+
this.requestRef = requestAnimationFrame(render);
|
|
590
|
+
}
|
|
591
|
+
}, { threshold: 0 });
|
|
592
|
+
this._visibilityObserver.observe(ref);
|
|
593
|
+
|
|
594
|
+
this._visibilityHandler = () => {
|
|
595
|
+
const wasVisible = this._isVisible;
|
|
596
|
+
if (document.visibilityState === 'hidden') {
|
|
597
|
+
this._isVisible = false;
|
|
598
|
+
} else {
|
|
599
|
+
this._isVisible = true;
|
|
600
|
+
if (!wasVisible) {
|
|
601
|
+
lastTime = performance.now();
|
|
602
|
+
this.requestRef = requestAnimationFrame(render);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
562
605
|
};
|
|
606
|
+
document.addEventListener('visibilitychange', this._visibilityHandler);
|
|
563
607
|
|
|
564
608
|
const setSize = () => {
|
|
565
609
|
|
|
@@ -604,6 +648,16 @@ export class NeatGradient implements NeatController {
|
|
|
604
648
|
cancelAnimationFrame(this.requestRef);
|
|
605
649
|
this.sizeObserver.disconnect();
|
|
606
650
|
|
|
651
|
+
// Cleanup visibility observers
|
|
652
|
+
if (this._visibilityObserver) {
|
|
653
|
+
this._visibilityObserver.disconnect();
|
|
654
|
+
this._visibilityObserver = null;
|
|
655
|
+
}
|
|
656
|
+
if (this._visibilityHandler) {
|
|
657
|
+
document.removeEventListener('visibilitychange', this._visibilityHandler);
|
|
658
|
+
this._visibilityHandler = null;
|
|
659
|
+
}
|
|
660
|
+
|
|
607
661
|
// Clear resize timeout
|
|
608
662
|
if (this._resizeTimeoutId !== null) {
|
|
609
663
|
clearTimeout(this._resizeTimeoutId);
|
|
@@ -973,8 +1027,10 @@ export class NeatGradient implements NeatController {
|
|
|
973
1027
|
return this._yOffset;
|
|
974
1028
|
}
|
|
975
1029
|
set yOffset(yOffset: number) {
|
|
976
|
-
this.
|
|
977
|
-
|
|
1030
|
+
if (this._yOffset !== yOffset) {
|
|
1031
|
+
this._yOffsetDirty = true;
|
|
1032
|
+
this._yOffset = yOffset;
|
|
1033
|
+
}
|
|
978
1034
|
}
|
|
979
1035
|
|
|
980
1036
|
get yOffsetWaveMultiplier(): number {
|
|
@@ -1397,7 +1453,7 @@ export class NeatGradient implements NeatController {
|
|
|
1397
1453
|
"u_fresnel_enabled", "u_fresnel_power", "u_fresnel_intensity", "u_fresnel_color",
|
|
1398
1454
|
"u_iridescence_enabled", "u_iridescence_intensity", "u_iridescence_speed",
|
|
1399
1455
|
"u_bloom_intensity", "u_bloom_threshold", "u_chromatic_aberration",
|
|
1400
|
-
"u_shape_type", "u_silhouette_fade", "u_cylinder_fade", "u_ribbon_fade"
|
|
1456
|
+
"u_shape_type", "u_silhouette_fade", "u_cylinder_fade", "u_ribbon_fade", "u_flat_shading"
|
|
1401
1457
|
];
|
|
1402
1458
|
|
|
1403
1459
|
const locations: WebGLState["locations"] = {
|
|
@@ -1739,6 +1795,16 @@ export class NeatGradient implements NeatController {
|
|
|
1739
1795
|
}
|
|
1740
1796
|
}
|
|
1741
1797
|
|
|
1798
|
+
get flatShading(): boolean {
|
|
1799
|
+
return this._flatShading;
|
|
1800
|
+
}
|
|
1801
|
+
set flatShading(value: boolean) {
|
|
1802
|
+
if (this._flatShading !== value) {
|
|
1803
|
+
this._flatShading = value;
|
|
1804
|
+
this._uniformsDirty = true;
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1742
1808
|
get domainWarpEnabled(): boolean {
|
|
1743
1809
|
return this._domainWarpEnabled;
|
|
1744
1810
|
}
|
|
@@ -2074,7 +2140,12 @@ const setLinkStyles = (link: HTMLAnchorElement) => {
|
|
|
2074
2140
|
}
|
|
2075
2141
|
|
|
2076
2142
|
const addNeatLink = (ref: HTMLCanvasElement): HTMLAnchorElement => {
|
|
2077
|
-
|
|
2143
|
+
let parent = ref.parentElement;
|
|
2144
|
+
// Walk up past display:contents wrappers (e.g. Astro's <astro-island>)
|
|
2145
|
+
// to find the real box-generating parent for positioning the link
|
|
2146
|
+
while (parent && getComputedStyle(parent).display === "contents") {
|
|
2147
|
+
parent = parent.parentElement;
|
|
2148
|
+
}
|
|
2078
2149
|
// Ensure parent has position so absolute link is positioned relative to it
|
|
2079
2150
|
if (parent && getComputedStyle(parent).position === "static") {
|
|
2080
2151
|
parent.style.position = "relative";
|
package/src/math.ts
CHANGED
|
@@ -8,6 +8,14 @@ export class Matrix4 {
|
|
|
8
8
|
0, 0, 0, 1
|
|
9
9
|
]);
|
|
10
10
|
}
|
|
11
|
+
identity() {
|
|
12
|
+
const e = this.elements;
|
|
13
|
+
e[0] = 1; e[1] = 0; e[2] = 0; e[3] = 0;
|
|
14
|
+
e[4] = 0; e[5] = 1; e[6] = 0; e[7] = 0;
|
|
15
|
+
e[8] = 0; e[9] = 0; e[10] = 1; e[11] = 0;
|
|
16
|
+
e[12] = 0; e[13] = 0; e[14] = 0; e[15] = 1;
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
11
19
|
translate(tx: number, ty: number, tz: number) {
|
|
12
20
|
this.elements[12] += this.elements[0] * tx + this.elements[4] * ty + this.elements[8] * tz;
|
|
13
21
|
this.elements[13] += this.elements[1] * tx + this.elements[5] * ty + this.elements[9] * tz;
|