@graphty/graphty-element 1.0.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/README.md +9 -0
- package/dist/basisTextureLoader-BqIvxvNl.js +312 -0
- package/dist/basisTextureLoader-BqIvxvNl.js.map +1 -0
- package/dist/custom-elements.json +1 -0
- package/dist/dds-BlAaKjyJ.js +357 -0
- package/dist/dds-BlAaKjyJ.js.map +1 -0
- package/dist/ddsTextureLoader-D7Jh83wc.js +44 -0
- package/dist/ddsTextureLoader-D7Jh83wc.js.map +1 -0
- package/dist/default.fragment-BNc4beoN.js +452 -0
- package/dist/default.fragment-BNc4beoN.js.map +1 -0
- package/dist/default.fragment-CSeCDRwv.js +512 -0
- package/dist/default.fragment-CSeCDRwv.js.map +1 -0
- package/dist/default.vertex-9pBFrn06.js +202 -0
- package/dist/default.vertex-9pBFrn06.js.map +1 -0
- package/dist/default.vertex-DDjK1DRv.js +185 -0
- package/dist/default.vertex-DDjK1DRv.js.map +1 -0
- package/dist/defaultUboDeclaration-CG47IDRY.js +9 -0
- package/dist/defaultUboDeclaration-CG47IDRY.js.map +1 -0
- package/dist/defaultUboDeclaration-Ct5CiQ-w.js +11 -0
- package/dist/defaultUboDeclaration-Ct5CiQ-w.js.map +1 -0
- package/dist/dumpTools-DA1xMSIZ.js +103 -0
- package/dist/dumpTools-DA1xMSIZ.js.map +1 -0
- package/dist/envTextureLoader-DdCLpySN.js +238 -0
- package/dist/envTextureLoader-DdCLpySN.js.map +1 -0
- package/dist/exrTextureLoader-CnJSRQ9w.js +741 -0
- package/dist/exrTextureLoader-CnJSRQ9w.js.map +1 -0
- package/dist/graphty.js +12 -0
- package/dist/graphty.js.map +1 -0
- package/dist/graphty.umd.cjs +12657 -0
- package/dist/graphty.umd.cjs.map +1 -0
- package/dist/greasedLine.fragment-BZnGGe-r.js +30 -0
- package/dist/greasedLine.fragment-BZnGGe-r.js.map +1 -0
- package/dist/greasedLine.fragment-DixuqXus.js +12 -0
- package/dist/greasedLine.fragment-DixuqXus.js.map +1 -0
- package/dist/greasedLine.vertex-BhhwFKPy.js +33 -0
- package/dist/greasedLine.vertex-BhhwFKPy.js.map +1 -0
- package/dist/greasedLine.vertex-DIhgGSOi.js +49 -0
- package/dist/greasedLine.vertex-DIhgGSOi.js.map +1 -0
- package/dist/harmonicsFunctions-B9jTNKTF.js +197 -0
- package/dist/harmonicsFunctions-B9jTNKTF.js.map +1 -0
- package/dist/harmonicsFunctions-D9ZL5yLA.js +194 -0
- package/dist/harmonicsFunctions-D9ZL5yLA.js.map +1 -0
- package/dist/hdrTextureLoader-DreWCvHD.js +112 -0
- package/dist/hdrTextureLoader-DreWCvHD.js.map +1 -0
- package/dist/helperFunctions-Dh1WD8YN.js +106 -0
- package/dist/helperFunctions-Dh1WD8YN.js.map +1 -0
- package/dist/helperFunctions-ZBnqb-in.js +79 -0
- package/dist/helperFunctions-ZBnqb-in.js.map +1 -0
- package/dist/iesTextureLoader-JdfAyRK-.js +94 -0
- package/dist/iesTextureLoader-JdfAyRK-.js.map +1 -0
- package/dist/index-ChGTkj2q.js +62191 -0
- package/dist/index-ChGTkj2q.js.map +1 -0
- package/dist/instancesVertex-BrWNnWxF.js +46 -0
- package/dist/instancesVertex-BrWNnWxF.js.map +1 -0
- package/dist/instancesVertex-evcSIvCA.js +55 -0
- package/dist/instancesVertex-evcSIvCA.js.map +1 -0
- package/dist/ktxTextureLoader-Dg1h0a-4.js +520 -0
- package/dist/ktxTextureLoader-Dg1h0a-4.js.map +1 -0
- package/dist/logDepthDeclaration-BHUUDd5l.js +12 -0
- package/dist/logDepthDeclaration-BHUUDd5l.js.map +1 -0
- package/dist/logDepthDeclaration-Bou5AJOP.js +28 -0
- package/dist/logDepthDeclaration-Bou5AJOP.js.map +1 -0
- package/dist/logDepthVertex-CCFGLExi.js +496 -0
- package/dist/logDepthVertex-CCFGLExi.js.map +1 -0
- package/dist/logDepthVertex-r_niddz9.js +496 -0
- package/dist/logDepthVertex-r_niddz9.js.map +1 -0
- package/dist/mesh.vertexData.functions-Bc9lJlrU.js +75 -0
- package/dist/mesh.vertexData.functions-Bc9lJlrU.js.map +1 -0
- package/dist/meshUboDeclaration-Dg__Mhmj.js +18 -0
- package/dist/meshUboDeclaration-Dg__Mhmj.js.map +1 -0
- package/dist/oitFragment-Bn29Ggvj.js +1191 -0
- package/dist/oitFragment-Bn29Ggvj.js.map +1 -0
- package/dist/oitFragment-D6JBEGk0.js +1328 -0
- package/dist/oitFragment-D6JBEGk0.js.map +1 -0
- package/dist/pass.fragment-C9O4ZLJL.js +11 -0
- package/dist/pass.fragment-C9O4ZLJL.js.map +1 -0
- package/dist/pass.fragment-Cf0ob1Y3.js +11 -0
- package/dist/pass.fragment-Cf0ob1Y3.js.map +1 -0
- package/dist/passCube.fragment-Mg8Qj5T9.js +30 -0
- package/dist/passCube.fragment-Mg8Qj5T9.js.map +1 -0
- package/dist/passCube.fragment-uM4B7TOI.js +30 -0
- package/dist/passCube.fragment-uM4B7TOI.js.map +1 -0
- package/dist/pbr.fragment-C8Lm3cwF.js +3176 -0
- package/dist/pbr.fragment-C8Lm3cwF.js.map +1 -0
- package/dist/pbr.fragment-siOdCYqI.js +3219 -0
- package/dist/pbr.fragment-siOdCYqI.js.map +1 -0
- package/dist/pbr.vertex-Bw_TrGQv.js +229 -0
- package/dist/pbr.vertex-Bw_TrGQv.js.map +1 -0
- package/dist/pbr.vertex-CmEPCcBW.js +365 -0
- package/dist/pbr.vertex-CmEPCcBW.js.map +1 -0
- package/dist/postprocess.vertex-B086G8mM.js +16 -0
- package/dist/postprocess.vertex-B086G8mM.js.map +1 -0
- package/dist/rgbdDecode.fragment-bNaGtQ-x.js +9 -0
- package/dist/rgbdDecode.fragment-bNaGtQ-x.js.map +1 -0
- package/dist/rgbdDecode.fragment-koAcppx0.js +9 -0
- package/dist/rgbdDecode.fragment-koAcppx0.js.map +1 -0
- package/dist/rgbdEncode.fragment-BDHL2P_i.js +9 -0
- package/dist/rgbdEncode.fragment-BDHL2P_i.js.map +1 -0
- package/dist/rgbdEncode.fragment-Dw0FS9aH.js +9 -0
- package/dist/rgbdEncode.fragment-Dw0FS9aH.js.map +1 -0
- package/dist/tgaTextureLoader-DIfkfgQh.js +199 -0
- package/dist/tgaTextureLoader-DIfkfgQh.js.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { A as D, R as At, b as yt, I as pt, _ as Ft, c as T, F as w, T as H, C as L, d as Ct } from "./index-ChGTkj2q.js";
|
|
2
|
+
function dt(C) {
|
|
3
|
+
const n = C.split("?")[0], e = n.lastIndexOf(".");
|
|
4
|
+
return e > -1 ? n.substring(e).toLowerCase() : "";
|
|
5
|
+
}
|
|
6
|
+
D.prototype._partialLoadFile = function(C, n, e, r, o = null) {
|
|
7
|
+
const c = (t) => {
|
|
8
|
+
e[n] = t, e._internalCount++, e._internalCount === 6 && r(e);
|
|
9
|
+
}, A = (t, i) => {
|
|
10
|
+
o && t && o(t.status + " " + t.statusText, i);
|
|
11
|
+
};
|
|
12
|
+
this._loadFile(C, c, void 0, void 0, !0, A);
|
|
13
|
+
};
|
|
14
|
+
D.prototype._cascadeLoadFiles = function(C, n, e, r = null) {
|
|
15
|
+
const o = [];
|
|
16
|
+
o._internalCount = 0;
|
|
17
|
+
for (let c = 0; c < 6; c++)
|
|
18
|
+
this._partialLoadFile(e[c], c, o, n, r);
|
|
19
|
+
};
|
|
20
|
+
D.prototype._cascadeLoadImgs = function(C, n, e, r, o = null, c) {
|
|
21
|
+
const A = [];
|
|
22
|
+
A._internalCount = 0;
|
|
23
|
+
for (let t = 0; t < 6; t++)
|
|
24
|
+
this._partialLoadImg(r[t], t, A, C, n, e, o, c);
|
|
25
|
+
};
|
|
26
|
+
D.prototype._partialLoadImg = function(C, n, e, r, o, c, A = null, t) {
|
|
27
|
+
const i = At();
|
|
28
|
+
yt(C, (l) => {
|
|
29
|
+
e[n] = l, e._internalCount++, r && r.removePendingData(i), e._internalCount === 6 && c && c(o, e);
|
|
30
|
+
}, (l, f) => {
|
|
31
|
+
r && r.removePendingData(i), A && A(l, f);
|
|
32
|
+
}, r ? r.offlineProvider : null, t), r && r.addPendingData(i);
|
|
33
|
+
};
|
|
34
|
+
D.prototype.createCubeTextureBase = function(C, n, e, r, o = null, c = null, A, t = null, i = !1, a = 0, s = 0, l = null, f = null, h = null, y = !1, p = null) {
|
|
35
|
+
const u = l || new pt(
|
|
36
|
+
this,
|
|
37
|
+
7
|
|
38
|
+
/* InternalTextureSource.Cube */
|
|
39
|
+
);
|
|
40
|
+
u.isCube = !0, u.url = C, u.generateMipMaps = !r, u._lodGenerationScale = a, u._lodGenerationOffset = s, u._useSRGBBuffer = !!y && this._caps.supportSRGBBuffers && (this.version > 1 || this.isWebGPU || !!r), u !== l && (u.label = C.substring(0, 60)), this._doNotHandleContextLost || (u._extension = t, u._files = e, u._buffer = p);
|
|
41
|
+
const _ = C;
|
|
42
|
+
this._transformTextureUrl && !l && (C = this._transformTextureUrl(C));
|
|
43
|
+
const R = t ?? dt(C), P = Ft(R), b = (G, d) => {
|
|
44
|
+
u.dispose(), c ? c(G, d) : G && T.Warn(G);
|
|
45
|
+
}, I = (G, d) => {
|
|
46
|
+
C === _ ? G && b(G.status + " " + G.statusText, d) : (T.Warn(`Failed to load ${C}, falling back to the ${_}`), this.createCubeTextureBase(_, n, e, !!r, o, b, A, t, i, a, s, u, f, h, y, p));
|
|
47
|
+
};
|
|
48
|
+
if (P)
|
|
49
|
+
P.then((G) => {
|
|
50
|
+
const d = (x) => {
|
|
51
|
+
f && f(u, x), G.loadCubeData(x, u, i, o, (k, E) => {
|
|
52
|
+
b(k, E);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
p ? d(p) : e && e.length === 6 ? G.supportCascades ? this._cascadeLoadFiles(n, (x) => d(x.map((k) => new Uint8Array(k))), e, b) : b("Textures type does not support cascades.") : this._loadFile(C, (x) => d(new Uint8Array(x)), void 0, void 0, !0, I);
|
|
56
|
+
});
|
|
57
|
+
else {
|
|
58
|
+
if (!e || e.length === 0)
|
|
59
|
+
throw new Error("Cannot load cubemap because files were not defined, or the correct loader was not found.");
|
|
60
|
+
this._cascadeLoadImgs(n, u, (G, d) => {
|
|
61
|
+
h && h(G, d);
|
|
62
|
+
}, e, b);
|
|
63
|
+
}
|
|
64
|
+
return this._internalTexturesCache.push(u), u;
|
|
65
|
+
};
|
|
66
|
+
const _t = 542327876, Q = 131072, V = 512, Y = 4, Z = 64, S = 131072;
|
|
67
|
+
function W(C) {
|
|
68
|
+
return C.charCodeAt(0) + (C.charCodeAt(1) << 8) + (C.charCodeAt(2) << 16) + (C.charCodeAt(3) << 24);
|
|
69
|
+
}
|
|
70
|
+
function Gt(C) {
|
|
71
|
+
return String.fromCharCode(C & 255, C >> 8 & 255, C >> 16 & 255, C >> 24 & 255);
|
|
72
|
+
}
|
|
73
|
+
const q = W("DXT1"), tt = W("DXT3"), et = W("DXT5"), $ = W("DX10"), rt = 113, at = 116, nt = 2, st = 10, ht = 88, j = 31, mt = 0, bt = 1, ot = 2, ft = 3, v = 4, it = 7, J = 20, lt = 21, xt = 22, Bt = 23, Rt = 24, Ot = 25, Ut = 26, wt = 28, Lt = 32;
|
|
74
|
+
class F {
|
|
75
|
+
/**
|
|
76
|
+
* Gets DDS information from an array buffer
|
|
77
|
+
* @param data defines the array buffer view to read data from
|
|
78
|
+
* @returns the DDS information
|
|
79
|
+
*/
|
|
80
|
+
static GetDDSInfo(n) {
|
|
81
|
+
const e = new Int32Array(n.buffer, n.byteOffset, j), r = new Int32Array(n.buffer, n.byteOffset, j + 4);
|
|
82
|
+
let o = 1;
|
|
83
|
+
e[ot] & Q && (o = Math.max(1, e[it]));
|
|
84
|
+
const c = e[lt], A = c === $ ? r[Lt] : 0;
|
|
85
|
+
let t = 0;
|
|
86
|
+
switch (c) {
|
|
87
|
+
case rt:
|
|
88
|
+
t = 2;
|
|
89
|
+
break;
|
|
90
|
+
case at:
|
|
91
|
+
t = 1;
|
|
92
|
+
break;
|
|
93
|
+
case $:
|
|
94
|
+
if (A === st) {
|
|
95
|
+
t = 2;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
if (A === nt) {
|
|
99
|
+
t = 1;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
width: e[v],
|
|
105
|
+
height: e[ft],
|
|
106
|
+
mipmapCount: o,
|
|
107
|
+
isFourCC: (e[J] & Y) === Y,
|
|
108
|
+
isRGB: (e[J] & Z) === Z,
|
|
109
|
+
isLuminance: (e[J] & S) === S,
|
|
110
|
+
isCube: (e[wt] & V) === V,
|
|
111
|
+
isCompressed: c === q || c === tt || c === et,
|
|
112
|
+
dxgiFormat: A,
|
|
113
|
+
textureType: t
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
static _GetHalfFloatAsFloatRGBAArrayBuffer(n, e, r, o, c, A) {
|
|
117
|
+
const t = new Float32Array(o), i = new Uint16Array(c, r);
|
|
118
|
+
let a = 0;
|
|
119
|
+
for (let s = 0; s < e; s++)
|
|
120
|
+
for (let l = 0; l < n; l++) {
|
|
121
|
+
const f = (l + s * n) * 4;
|
|
122
|
+
t[a] = w(i[f]), t[a + 1] = w(i[f + 1]), t[a + 2] = w(i[f + 2]), F.StoreLODInAlphaChannel ? t[a + 3] = A : t[a + 3] = w(i[f + 3]), a += 4;
|
|
123
|
+
}
|
|
124
|
+
return t;
|
|
125
|
+
}
|
|
126
|
+
static _GetHalfFloatRGBAArrayBuffer(n, e, r, o, c, A) {
|
|
127
|
+
if (F.StoreLODInAlphaChannel) {
|
|
128
|
+
const t = new Uint16Array(o), i = new Uint16Array(c, r);
|
|
129
|
+
let a = 0;
|
|
130
|
+
for (let s = 0; s < e; s++)
|
|
131
|
+
for (let l = 0; l < n; l++) {
|
|
132
|
+
const f = (l + s * n) * 4;
|
|
133
|
+
t[a] = i[f], t[a + 1] = i[f + 1], t[a + 2] = i[f + 2], t[a + 3] = H(A), a += 4;
|
|
134
|
+
}
|
|
135
|
+
return t;
|
|
136
|
+
}
|
|
137
|
+
return new Uint16Array(c, r, o);
|
|
138
|
+
}
|
|
139
|
+
static _GetFloatRGBAArrayBuffer(n, e, r, o, c, A) {
|
|
140
|
+
if (F.StoreLODInAlphaChannel) {
|
|
141
|
+
const t = new Float32Array(o), i = new Float32Array(c, r);
|
|
142
|
+
let a = 0;
|
|
143
|
+
for (let s = 0; s < e; s++)
|
|
144
|
+
for (let l = 0; l < n; l++) {
|
|
145
|
+
const f = (l + s * n) * 4;
|
|
146
|
+
t[a] = i[f], t[a + 1] = i[f + 1], t[a + 2] = i[f + 2], t[a + 3] = A, a += 4;
|
|
147
|
+
}
|
|
148
|
+
return t;
|
|
149
|
+
}
|
|
150
|
+
return new Float32Array(c, r, o);
|
|
151
|
+
}
|
|
152
|
+
static _GetFloatAsHalfFloatRGBAArrayBuffer(n, e, r, o, c, A) {
|
|
153
|
+
const t = new Uint16Array(o), i = new Float32Array(c, r);
|
|
154
|
+
let a = 0;
|
|
155
|
+
for (let s = 0; s < e; s++)
|
|
156
|
+
for (let l = 0; l < n; l++)
|
|
157
|
+
t[a] = H(i[a]), t[a + 1] = H(i[a + 1]), t[a + 2] = H(i[a + 2]), F.StoreLODInAlphaChannel ? t[a + 3] = H(A) : t[a + 3] = H(i[a + 3]), a += 4;
|
|
158
|
+
return t;
|
|
159
|
+
}
|
|
160
|
+
static _GetFloatAsUIntRGBAArrayBuffer(n, e, r, o, c, A) {
|
|
161
|
+
const t = new Uint8Array(o), i = new Float32Array(c, r);
|
|
162
|
+
let a = 0;
|
|
163
|
+
for (let s = 0; s < e; s++)
|
|
164
|
+
for (let l = 0; l < n; l++) {
|
|
165
|
+
const f = (l + s * n) * 4;
|
|
166
|
+
t[a] = L(i[f]) * 255, t[a + 1] = L(i[f + 1]) * 255, t[a + 2] = L(i[f + 2]) * 255, F.StoreLODInAlphaChannel ? t[a + 3] = A : t[a + 3] = L(i[f + 3]) * 255, a += 4;
|
|
167
|
+
}
|
|
168
|
+
return t;
|
|
169
|
+
}
|
|
170
|
+
static _GetHalfFloatAsUIntRGBAArrayBuffer(n, e, r, o, c, A) {
|
|
171
|
+
const t = new Uint8Array(o), i = new Uint16Array(c, r);
|
|
172
|
+
let a = 0;
|
|
173
|
+
for (let s = 0; s < e; s++)
|
|
174
|
+
for (let l = 0; l < n; l++) {
|
|
175
|
+
const f = (l + s * n) * 4;
|
|
176
|
+
t[a] = L(w(i[f])) * 255, t[a + 1] = L(w(i[f + 1])) * 255, t[a + 2] = L(w(i[f + 2])) * 255, F.StoreLODInAlphaChannel ? t[a + 3] = A : t[a + 3] = L(w(i[f + 3])) * 255, a += 4;
|
|
177
|
+
}
|
|
178
|
+
return t;
|
|
179
|
+
}
|
|
180
|
+
static _GetRGBAArrayBuffer(n, e, r, o, c, A, t, i, a) {
|
|
181
|
+
const s = new Uint8Array(o), l = new Uint8Array(c, r);
|
|
182
|
+
let f = 0;
|
|
183
|
+
for (let h = 0; h < e; h++)
|
|
184
|
+
for (let y = 0; y < n; y++) {
|
|
185
|
+
const p = (y + h * n) * 4;
|
|
186
|
+
s[f] = l[p + A], s[f + 1] = l[p + t], s[f + 2] = l[p + i], s[f + 3] = l[p + a], f += 4;
|
|
187
|
+
}
|
|
188
|
+
return s;
|
|
189
|
+
}
|
|
190
|
+
static _ExtractLongWordOrder(n) {
|
|
191
|
+
return n === 0 || n === 255 || n === -16777216 ? 0 : 1 + F._ExtractLongWordOrder(n >> 8);
|
|
192
|
+
}
|
|
193
|
+
static _GetRGBArrayBuffer(n, e, r, o, c, A, t, i) {
|
|
194
|
+
const a = new Uint8Array(o), s = new Uint8Array(c, r);
|
|
195
|
+
let l = 0;
|
|
196
|
+
for (let f = 0; f < e; f++)
|
|
197
|
+
for (let h = 0; h < n; h++) {
|
|
198
|
+
const y = (h + f * n) * 3;
|
|
199
|
+
a[l] = s[y + A], a[l + 1] = s[y + t], a[l + 2] = s[y + i], l += 3;
|
|
200
|
+
}
|
|
201
|
+
return a;
|
|
202
|
+
}
|
|
203
|
+
static _GetLuminanceArrayBuffer(n, e, r, o, c) {
|
|
204
|
+
const A = new Uint8Array(o), t = new Uint8Array(c, r);
|
|
205
|
+
let i = 0;
|
|
206
|
+
for (let a = 0; a < e; a++)
|
|
207
|
+
for (let s = 0; s < n; s++) {
|
|
208
|
+
const l = s + a * n;
|
|
209
|
+
A[i] = t[l], i++;
|
|
210
|
+
}
|
|
211
|
+
return A;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Uploads DDS Levels to a Babylon Texture
|
|
215
|
+
* @internal
|
|
216
|
+
*/
|
|
217
|
+
static UploadDDSLevels(n, e, r, o, c, A, t = -1, i, a = !0) {
|
|
218
|
+
let s = null;
|
|
219
|
+
o.sphericalPolynomial && (s = []);
|
|
220
|
+
const l = !!n.getCaps().s3tc;
|
|
221
|
+
e.generateMipMaps = c;
|
|
222
|
+
const f = new Int32Array(r.buffer, r.byteOffset, j);
|
|
223
|
+
let h, y, p, u = 0, _, R, P, b, I = 0, G = 1;
|
|
224
|
+
if (f[mt] !== _t) {
|
|
225
|
+
T.Error("Invalid magic number in DDS header");
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
if (!o.isFourCC && !o.isRGB && !o.isLuminance) {
|
|
229
|
+
T.Error("Unsupported format, must contain a FourCC, RGB or LUMINANCE code");
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (o.isCompressed && !l) {
|
|
233
|
+
T.Error("Compressed textures are not supported on this platform.");
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
let d = f[xt];
|
|
237
|
+
_ = f[bt] + 4;
|
|
238
|
+
let x = !1;
|
|
239
|
+
if (o.isFourCC)
|
|
240
|
+
switch (h = f[lt], h) {
|
|
241
|
+
case q:
|
|
242
|
+
G = 8, I = 33777;
|
|
243
|
+
break;
|
|
244
|
+
case tt:
|
|
245
|
+
G = 16, I = 33778;
|
|
246
|
+
break;
|
|
247
|
+
case et:
|
|
248
|
+
G = 16, I = 33779;
|
|
249
|
+
break;
|
|
250
|
+
case rt:
|
|
251
|
+
x = !0, d = 64;
|
|
252
|
+
break;
|
|
253
|
+
case at:
|
|
254
|
+
x = !0, d = 128;
|
|
255
|
+
break;
|
|
256
|
+
case $: {
|
|
257
|
+
_ += 5 * 4;
|
|
258
|
+
let B = !1;
|
|
259
|
+
switch (o.dxgiFormat) {
|
|
260
|
+
case st:
|
|
261
|
+
x = !0, d = 64, B = !0;
|
|
262
|
+
break;
|
|
263
|
+
case nt:
|
|
264
|
+
x = !0, d = 128, B = !0;
|
|
265
|
+
break;
|
|
266
|
+
case ht:
|
|
267
|
+
o.isRGB = !0, o.isFourCC = !1, d = 32, B = !0;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
if (B)
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
// eslint-disable-next-line no-fallthrough
|
|
274
|
+
default:
|
|
275
|
+
T.Error(["Unsupported FourCC code:", Gt(h)]);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const k = F._ExtractLongWordOrder(f[Bt]), E = F._ExtractLongWordOrder(f[Rt]), K = F._ExtractLongWordOrder(f[Ot]), ct = F._ExtractLongWordOrder(f[Ut]);
|
|
279
|
+
x && (I = n._getRGBABufferInternalSizedFormat(o.textureType)), P = 1, f[ot] & Q && c !== !1 && (P = Math.max(1, f[it]));
|
|
280
|
+
const ut = i || 0, M = n.getCaps();
|
|
281
|
+
for (let B = ut; B < A; B++) {
|
|
282
|
+
for (y = f[v], p = f[ft], b = 0; b < P; ++b) {
|
|
283
|
+
if (t === -1 || t === b) {
|
|
284
|
+
const m = t === -1 ? b : 0;
|
|
285
|
+
if (!o.isCompressed && o.isFourCC) {
|
|
286
|
+
e.format = 5, u = y * p * 4;
|
|
287
|
+
let O = null;
|
|
288
|
+
if (n._badOS || n._badDesktopOS || !M.textureHalfFloat && !M.textureFloat)
|
|
289
|
+
d === 128 ? (O = F._GetFloatAsUIntRGBAArrayBuffer(y, p, r.byteOffset + _, u, r.buffer, m), s && m == 0 && s.push(F._GetFloatRGBAArrayBuffer(y, p, r.byteOffset + _, u, r.buffer, m))) : d === 64 && (O = F._GetHalfFloatAsUIntRGBAArrayBuffer(y, p, r.byteOffset + _, u, r.buffer, m), s && m == 0 && s.push(F._GetHalfFloatAsFloatRGBAArrayBuffer(y, p, r.byteOffset + _, u, r.buffer, m))), e.type = 0;
|
|
290
|
+
else {
|
|
291
|
+
const X = M.textureFloat && (a && M.textureFloatLinearFiltering || !a), N = M.textureHalfFloat && (a && M.textureHalfFloatLinearFiltering || !a), z = (d === 128 || d === 64 && !N) && X ? 1 : (d === 64 || d === 128 && !X) && N ? 2 : 0;
|
|
292
|
+
let g, U = null;
|
|
293
|
+
switch (d) {
|
|
294
|
+
case 128: {
|
|
295
|
+
switch (z) {
|
|
296
|
+
case 1:
|
|
297
|
+
g = F._GetFloatRGBAArrayBuffer, U = null;
|
|
298
|
+
break;
|
|
299
|
+
case 2:
|
|
300
|
+
g = F._GetFloatAsHalfFloatRGBAArrayBuffer, U = F._GetFloatRGBAArrayBuffer;
|
|
301
|
+
break;
|
|
302
|
+
case 0:
|
|
303
|
+
g = F._GetFloatAsUIntRGBAArrayBuffer, U = F._GetFloatRGBAArrayBuffer;
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
default: {
|
|
309
|
+
switch (z) {
|
|
310
|
+
case 1:
|
|
311
|
+
g = F._GetHalfFloatAsFloatRGBAArrayBuffer, U = null;
|
|
312
|
+
break;
|
|
313
|
+
case 2:
|
|
314
|
+
g = F._GetHalfFloatRGBAArrayBuffer, U = F._GetHalfFloatAsFloatRGBAArrayBuffer;
|
|
315
|
+
break;
|
|
316
|
+
case 0:
|
|
317
|
+
g = F._GetHalfFloatAsUIntRGBAArrayBuffer, U = F._GetHalfFloatAsFloatRGBAArrayBuffer;
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
e.type = z, O = g(y, p, r.byteOffset + _, u, r.buffer, m), s && m == 0 && s.push(U ? U(y, p, r.byteOffset + _, u, r.buffer, m) : O);
|
|
324
|
+
}
|
|
325
|
+
O && n._uploadDataToTextureDirectly(e, O, B, m);
|
|
326
|
+
} else if (o.isRGB)
|
|
327
|
+
e.type = 0, d === 24 ? (e.format = 4, u = y * p * 3, R = F._GetRGBArrayBuffer(y, p, r.byteOffset + _, u, r.buffer, k, E, K), n._uploadDataToTextureDirectly(e, R, B, m)) : (e.format = 5, u = y * p * 4, R = F._GetRGBAArrayBuffer(y, p, r.byteOffset + _, u, r.buffer, k, E, K, ct), n._uploadDataToTextureDirectly(e, R, B, m));
|
|
328
|
+
else if (o.isLuminance) {
|
|
329
|
+
const O = n._getUnpackAlignement(), X = y;
|
|
330
|
+
u = Math.floor((y + O - 1) / O) * O * (p - 1) + X, R = F._GetLuminanceArrayBuffer(y, p, r.byteOffset + _, u, r.buffer), e.format = 1, e.type = 0, n._uploadDataToTextureDirectly(e, R, B, m);
|
|
331
|
+
} else
|
|
332
|
+
u = Math.max(4, y) / 4 * Math.max(4, p) / 4 * G, R = new Uint8Array(r.buffer, r.byteOffset + _, u), e.type = 0, n._uploadCompressedDataToTextureDirectly(e, I, y, p, R, B, m);
|
|
333
|
+
}
|
|
334
|
+
_ += d ? y * p * (d / 8) : u, y *= 0.5, p *= 0.5, y = Math.max(1, y), p = Math.max(1, p);
|
|
335
|
+
}
|
|
336
|
+
if (i !== void 0)
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
s && s.length > 0 ? o.sphericalPolynomial = Ct.ConvertCubeMapToSphericalPolynomial({
|
|
340
|
+
size: f[v],
|
|
341
|
+
right: s[0],
|
|
342
|
+
left: s[1],
|
|
343
|
+
up: s[2],
|
|
344
|
+
down: s[3],
|
|
345
|
+
front: s[4],
|
|
346
|
+
back: s[5],
|
|
347
|
+
format: 5,
|
|
348
|
+
type: 1,
|
|
349
|
+
gammaSpace: !1
|
|
350
|
+
}) : o.sphericalPolynomial = void 0;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
F.StoreLODInAlphaChannel = !1;
|
|
354
|
+
export {
|
|
355
|
+
F as DDSTools
|
|
356
|
+
};
|
|
357
|
+
//# sourceMappingURL=dds-BlAaKjyJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dds-BlAaKjyJ.js","sources":["../node_modules/@babylonjs/core/Misc/urlTools.js","../node_modules/@babylonjs/core/Engines/AbstractEngine/abstractEngine.cubeTexture.js","../node_modules/@babylonjs/core/Misc/dds.js"],"sourcesContent":["/**\n * Gets the file extension from a URL.\n * @param url The URL to get the file extension from.\n * @returns The file extension, or an empty string if no extension is found.\n */\nexport function GetExtensionFromUrl(url) {\n const urlWithoutUriParams = url.split(\"?\")[0];\n const lastDot = urlWithoutUriParams.lastIndexOf(\".\");\n const extension = lastDot > -1 ? urlWithoutUriParams.substring(lastDot).toLowerCase() : \"\";\n return extension;\n}\n//# sourceMappingURL=urlTools.js.map","import { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { LoadImage } from \"../../Misc/fileTools.js\";\nimport { RandomGUID } from \"../../Misc/guid.js\";\nimport { AbstractEngine } from \"../abstractEngine.js\";\nimport { _GetCompatibleTextureLoader } from \"../../Materials/Textures/Loaders/textureLoaderManager.js\";\nimport { GetExtensionFromUrl } from \"../../Misc/urlTools.js\";\nAbstractEngine.prototype._partialLoadFile = function (url, index, loadedFiles, onfinish, onErrorCallBack = null) {\n const onload = (data) => {\n loadedFiles[index] = data;\n loadedFiles._internalCount++;\n if (loadedFiles._internalCount === 6) {\n onfinish(loadedFiles);\n }\n };\n const onerror = (request, exception) => {\n if (onErrorCallBack && request) {\n onErrorCallBack(request.status + \" \" + request.statusText, exception);\n }\n };\n this._loadFile(url, onload, undefined, undefined, true, onerror);\n};\nAbstractEngine.prototype._cascadeLoadFiles = function (scene, onfinish, files, onError = null) {\n const loadedFiles = [];\n loadedFiles._internalCount = 0;\n for (let index = 0; index < 6; index++) {\n this._partialLoadFile(files[index], index, loadedFiles, onfinish, onError);\n }\n};\nAbstractEngine.prototype._cascadeLoadImgs = function (scene, texture, onfinish, files, onError = null, mimeType) {\n const loadedImages = [];\n loadedImages._internalCount = 0;\n for (let index = 0; index < 6; index++) {\n this._partialLoadImg(files[index], index, loadedImages, scene, texture, onfinish, onError, mimeType);\n }\n};\nAbstractEngine.prototype._partialLoadImg = function (url, index, loadedImages, scene, texture, onfinish, onErrorCallBack = null, mimeType) {\n const tokenPendingData = RandomGUID();\n const onload = (img) => {\n loadedImages[index] = img;\n loadedImages._internalCount++;\n if (scene) {\n scene.removePendingData(tokenPendingData);\n }\n if (loadedImages._internalCount === 6 && onfinish) {\n onfinish(texture, loadedImages);\n }\n };\n const onerror = (message, exception) => {\n if (scene) {\n scene.removePendingData(tokenPendingData);\n }\n if (onErrorCallBack) {\n onErrorCallBack(message, exception);\n }\n };\n LoadImage(url, onload, onerror, scene ? scene.offlineProvider : null, mimeType);\n if (scene) {\n scene.addPendingData(tokenPendingData);\n }\n};\nAbstractEngine.prototype.createCubeTextureBase = function (rootUrl, scene, files, noMipmap, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = false, lodScale = 0, lodOffset = 0, fallback = null, beforeLoadCubeDataCallback = null, imageHandler = null, useSRGBBuffer = false, buffer = null) {\n const texture = fallback ? fallback : new InternalTexture(this, 7 /* InternalTextureSource.Cube */);\n texture.isCube = true;\n texture.url = rootUrl;\n texture.generateMipMaps = !noMipmap;\n texture._lodGenerationScale = lodScale;\n texture._lodGenerationOffset = lodOffset;\n texture._useSRGBBuffer = !!useSRGBBuffer && this._caps.supportSRGBBuffers && (this.version > 1 || this.isWebGPU || !!noMipmap);\n if (texture !== fallback) {\n texture.label = rootUrl.substring(0, 60); // default label, can be overriden by the caller\n }\n if (!this._doNotHandleContextLost) {\n texture._extension = forcedExtension;\n texture._files = files;\n texture._buffer = buffer;\n }\n const originalRootUrl = rootUrl;\n if (this._transformTextureUrl && !fallback) {\n rootUrl = this._transformTextureUrl(rootUrl);\n }\n const extension = forcedExtension ?? GetExtensionFromUrl(rootUrl);\n const loaderPromise = _GetCompatibleTextureLoader(extension);\n const localOnError = (message, exception) => {\n // if an error was thrown during load, dispose the texture, otherwise it will stay in the cache\n texture.dispose();\n if (onError) {\n onError(message, exception);\n }\n else if (message) {\n Logger.Warn(message);\n }\n };\n const onInternalError = (request, exception) => {\n if (rootUrl === originalRootUrl) {\n if (request) {\n localOnError(request.status + \" \" + request.statusText, exception);\n }\n }\n else {\n // fall back to the original url if the transformed url fails to load\n Logger.Warn(`Failed to load ${rootUrl}, falling back to the ${originalRootUrl}`);\n this.createCubeTextureBase(originalRootUrl, scene, files, !!noMipmap, onLoad, localOnError, format, forcedExtension, createPolynomials, lodScale, lodOffset, texture, beforeLoadCubeDataCallback, imageHandler, useSRGBBuffer, buffer);\n }\n };\n if (loaderPromise) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\n loaderPromise.then((loader) => {\n const onLoadData = (data) => {\n if (beforeLoadCubeDataCallback) {\n beforeLoadCubeDataCallback(texture, data);\n }\n loader.loadCubeData(data, texture, createPolynomials, onLoad, (message, exception) => {\n localOnError(message, exception);\n });\n };\n if (buffer) {\n onLoadData(buffer);\n }\n else if (files && files.length === 6) {\n if (loader.supportCascades) {\n this._cascadeLoadFiles(scene, (images) => onLoadData(images.map((image) => new Uint8Array(image))), files, localOnError);\n }\n else {\n localOnError(\"Textures type does not support cascades.\");\n }\n }\n else {\n this._loadFile(rootUrl, (data) => onLoadData(new Uint8Array(data)), undefined, undefined, true, onInternalError);\n }\n });\n }\n else {\n if (!files || files.length === 0) {\n throw new Error(\"Cannot load cubemap because files were not defined, or the correct loader was not found.\");\n }\n this._cascadeLoadImgs(scene, texture, (texture, imgs) => {\n if (imageHandler) {\n imageHandler(texture, imgs);\n }\n }, files, localOnError);\n }\n this._internalTexturesCache.push(texture);\n return texture;\n};\n//# sourceMappingURL=abstractEngine.cubeTexture.js.map","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Clamp } from \"../Maths/math.scalar.functions.js\";\n\nimport { Logger } from \"../Misc/logger.js\";\nimport { CubeMapToSphericalPolynomialTools } from \"../Misc/HighDynamicRange/cubemapToSphericalPolynomial.js\";\nimport { FromHalfFloat, ToHalfFloat } from \"./textureTools.js\";\nimport \"../Engines/AbstractEngine/abstractEngine.cubeTexture.js\";\n// Based on demo done by Brandon Jones - http://media.tojicode.com/webgl-samples/dds.html\n// All values and structures referenced from:\n// http://msdn.microsoft.com/en-us/library/bb943991.aspx/\nconst DDS_MAGIC = 0x20534444;\nconst //DDSD_CAPS = 0x1,\n//DDSD_HEIGHT = 0x2,\n//DDSD_WIDTH = 0x4,\n//DDSD_PITCH = 0x8,\n//DDSD_PIXELFORMAT = 0x1000,\nDDSD_MIPMAPCOUNT = 0x20000;\n//DDSD_LINEARSIZE = 0x80000,\n//DDSD_DEPTH = 0x800000;\n// var DDSCAPS_COMPLEX = 0x8,\n// DDSCAPS_MIPMAP = 0x400000,\n// DDSCAPS_TEXTURE = 0x1000;\nconst DDSCAPS2_CUBEMAP = 0x200;\n// DDSCAPS2_CUBEMAP_POSITIVEX = 0x400,\n// DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800,\n// DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000,\n// DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000,\n// DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000,\n// DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000,\n// DDSCAPS2_VOLUME = 0x200000;\nconst //DDPF_ALPHAPIXELS = 0x1,\n//DDPF_ALPHA = 0x2,\nDDPF_FOURCC = 0x4, DDPF_RGB = 0x40, \n//DDPF_YUV = 0x200,\nDDPF_LUMINANCE = 0x20000;\nfunction FourCCToInt32(value) {\n return value.charCodeAt(0) + (value.charCodeAt(1) << 8) + (value.charCodeAt(2) << 16) + (value.charCodeAt(3) << 24);\n}\nfunction Int32ToFourCC(value) {\n return String.fromCharCode(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff);\n}\nconst FOURCC_DXT1 = FourCCToInt32(\"DXT1\");\nconst FOURCC_DXT3 = FourCCToInt32(\"DXT3\");\nconst FOURCC_DXT5 = FourCCToInt32(\"DXT5\");\nconst FOURCC_DX10 = FourCCToInt32(\"DX10\");\nconst FOURCC_D3DFMT_R16G16B16A16F = 113;\nconst FOURCC_D3DFMT_R32G32B32A32F = 116;\nconst DXGI_FORMAT_R32G32B32A32_FLOAT = 2;\nconst DXGI_FORMAT_R16G16B16A16_FLOAT = 10;\nconst DXGI_FORMAT_B8G8R8X8_UNORM = 88;\nconst headerLengthInt = 31; // The header length in 32 bit ints\n// Offsets into the header array\nconst off_magic = 0;\nconst off_size = 1;\nconst off_flags = 2;\nconst off_height = 3;\nconst off_width = 4;\nconst off_mipmapCount = 7;\nconst off_pfFlags = 20;\nconst off_pfFourCC = 21;\nconst off_RGBbpp = 22;\nconst off_RMask = 23;\nconst off_GMask = 24;\nconst off_BMask = 25;\nconst off_AMask = 26;\n// var off_caps1 = 27;\nconst off_caps2 = 28;\n// var off_caps3 = 29;\n// var off_caps4 = 30;\nconst off_dxgiFormat = 32;\n/**\n * Class used to provide DDS decompression tools\n */\nexport class DDSTools {\n /**\n * Gets DDS information from an array buffer\n * @param data defines the array buffer view to read data from\n * @returns the DDS information\n */\n static GetDDSInfo(data) {\n const header = new Int32Array(data.buffer, data.byteOffset, headerLengthInt);\n const extendedHeader = new Int32Array(data.buffer, data.byteOffset, headerLengthInt + 4);\n let mipmapCount = 1;\n if (header[off_flags] & DDSD_MIPMAPCOUNT) {\n mipmapCount = Math.max(1, header[off_mipmapCount]);\n }\n const fourCC = header[off_pfFourCC];\n const dxgiFormat = fourCC === FOURCC_DX10 ? extendedHeader[off_dxgiFormat] : 0;\n let textureType = 0;\n switch (fourCC) {\n case FOURCC_D3DFMT_R16G16B16A16F:\n textureType = 2;\n break;\n case FOURCC_D3DFMT_R32G32B32A32F:\n textureType = 1;\n break;\n case FOURCC_DX10:\n if (dxgiFormat === DXGI_FORMAT_R16G16B16A16_FLOAT) {\n textureType = 2;\n break;\n }\n if (dxgiFormat === DXGI_FORMAT_R32G32B32A32_FLOAT) {\n textureType = 1;\n break;\n }\n }\n return {\n width: header[off_width],\n height: header[off_height],\n mipmapCount: mipmapCount,\n isFourCC: (header[off_pfFlags] & DDPF_FOURCC) === DDPF_FOURCC,\n isRGB: (header[off_pfFlags] & DDPF_RGB) === DDPF_RGB,\n isLuminance: (header[off_pfFlags] & DDPF_LUMINANCE) === DDPF_LUMINANCE,\n isCube: (header[off_caps2] & DDSCAPS2_CUBEMAP) === DDSCAPS2_CUBEMAP,\n isCompressed: fourCC === FOURCC_DXT1 || fourCC === FOURCC_DXT3 || fourCC === FOURCC_DXT5,\n dxgiFormat: dxgiFormat,\n textureType: textureType,\n };\n }\n static _GetHalfFloatAsFloatRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, lod) {\n const destArray = new Float32Array(dataLength);\n const srcData = new Uint16Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 4;\n destArray[index] = FromHalfFloat(srcData[srcPos]);\n destArray[index + 1] = FromHalfFloat(srcData[srcPos + 1]);\n destArray[index + 2] = FromHalfFloat(srcData[srcPos + 2]);\n if (DDSTools.StoreLODInAlphaChannel) {\n destArray[index + 3] = lod;\n }\n else {\n destArray[index + 3] = FromHalfFloat(srcData[srcPos + 3]);\n }\n index += 4;\n }\n }\n return destArray;\n }\n static _GetHalfFloatRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, lod) {\n if (DDSTools.StoreLODInAlphaChannel) {\n const destArray = new Uint16Array(dataLength);\n const srcData = new Uint16Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 4;\n destArray[index] = srcData[srcPos];\n destArray[index + 1] = srcData[srcPos + 1];\n destArray[index + 2] = srcData[srcPos + 2];\n destArray[index + 3] = ToHalfFloat(lod);\n index += 4;\n }\n }\n return destArray;\n }\n return new Uint16Array(arrayBuffer, dataOffset, dataLength);\n }\n static _GetFloatRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, lod) {\n if (DDSTools.StoreLODInAlphaChannel) {\n const destArray = new Float32Array(dataLength);\n const srcData = new Float32Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 4;\n destArray[index] = srcData[srcPos];\n destArray[index + 1] = srcData[srcPos + 1];\n destArray[index + 2] = srcData[srcPos + 2];\n destArray[index + 3] = lod;\n index += 4;\n }\n }\n return destArray;\n }\n return new Float32Array(arrayBuffer, dataOffset, dataLength);\n }\n static _GetFloatAsHalfFloatRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, lod) {\n const destArray = new Uint16Array(dataLength);\n const srcData = new Float32Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n destArray[index] = ToHalfFloat(srcData[index]);\n destArray[index + 1] = ToHalfFloat(srcData[index + 1]);\n destArray[index + 2] = ToHalfFloat(srcData[index + 2]);\n if (DDSTools.StoreLODInAlphaChannel) {\n destArray[index + 3] = ToHalfFloat(lod);\n }\n else {\n destArray[index + 3] = ToHalfFloat(srcData[index + 3]);\n }\n index += 4;\n }\n }\n return destArray;\n }\n static _GetFloatAsUIntRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, lod) {\n const destArray = new Uint8Array(dataLength);\n const srcData = new Float32Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 4;\n destArray[index] = Clamp(srcData[srcPos]) * 255;\n destArray[index + 1] = Clamp(srcData[srcPos + 1]) * 255;\n destArray[index + 2] = Clamp(srcData[srcPos + 2]) * 255;\n if (DDSTools.StoreLODInAlphaChannel) {\n destArray[index + 3] = lod;\n }\n else {\n destArray[index + 3] = Clamp(srcData[srcPos + 3]) * 255;\n }\n index += 4;\n }\n }\n return destArray;\n }\n static _GetHalfFloatAsUIntRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, lod) {\n const destArray = new Uint8Array(dataLength);\n const srcData = new Uint16Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 4;\n destArray[index] = Clamp(FromHalfFloat(srcData[srcPos])) * 255;\n destArray[index + 1] = Clamp(FromHalfFloat(srcData[srcPos + 1])) * 255;\n destArray[index + 2] = Clamp(FromHalfFloat(srcData[srcPos + 2])) * 255;\n if (DDSTools.StoreLODInAlphaChannel) {\n destArray[index + 3] = lod;\n }\n else {\n destArray[index + 3] = Clamp(FromHalfFloat(srcData[srcPos + 3])) * 255;\n }\n index += 4;\n }\n }\n return destArray;\n }\n static _GetRGBAArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, rOffset, gOffset, bOffset, aOffset) {\n const byteArray = new Uint8Array(dataLength);\n const srcData = new Uint8Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 4;\n byteArray[index] = srcData[srcPos + rOffset];\n byteArray[index + 1] = srcData[srcPos + gOffset];\n byteArray[index + 2] = srcData[srcPos + bOffset];\n byteArray[index + 3] = srcData[srcPos + aOffset];\n index += 4;\n }\n }\n return byteArray;\n }\n static _ExtractLongWordOrder(value) {\n if (value === 0 || value === 255 || value === -16777216) {\n return 0;\n }\n return 1 + DDSTools._ExtractLongWordOrder(value >> 8);\n }\n static _GetRGBArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer, rOffset, gOffset, bOffset) {\n const byteArray = new Uint8Array(dataLength);\n const srcData = new Uint8Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = (x + y * width) * 3;\n byteArray[index] = srcData[srcPos + rOffset];\n byteArray[index + 1] = srcData[srcPos + gOffset];\n byteArray[index + 2] = srcData[srcPos + bOffset];\n index += 3;\n }\n }\n return byteArray;\n }\n static _GetLuminanceArrayBuffer(width, height, dataOffset, dataLength, arrayBuffer) {\n const byteArray = new Uint8Array(dataLength);\n const srcData = new Uint8Array(arrayBuffer, dataOffset);\n let index = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const srcPos = x + y * width;\n byteArray[index] = srcData[srcPos];\n index++;\n }\n }\n return byteArray;\n }\n /**\n * Uploads DDS Levels to a Babylon Texture\n * @internal\n */\n static UploadDDSLevels(engine, texture, data, info, loadMipmaps, faces, lodIndex = -1, currentFace, destTypeMustBeFilterable = true) {\n let sphericalPolynomialFaces = null;\n if (info.sphericalPolynomial) {\n sphericalPolynomialFaces = [];\n }\n const ext = !!engine.getCaps().s3tc;\n // TODO WEBGPU Once generateMipMaps is split into generateMipMaps + hasMipMaps in InternalTexture this line can be removed\n texture.generateMipMaps = loadMipmaps;\n const header = new Int32Array(data.buffer, data.byteOffset, headerLengthInt);\n let fourCC, width, height, dataLength = 0, dataOffset;\n let byteArray, mipmapCount, mip;\n let internalCompressedFormat = 0;\n let blockBytes = 1;\n if (header[off_magic] !== DDS_MAGIC) {\n Logger.Error(\"Invalid magic number in DDS header\");\n return;\n }\n if (!info.isFourCC && !info.isRGB && !info.isLuminance) {\n Logger.Error(\"Unsupported format, must contain a FourCC, RGB or LUMINANCE code\");\n return;\n }\n if (info.isCompressed && !ext) {\n Logger.Error(\"Compressed textures are not supported on this platform.\");\n return;\n }\n let bpp = header[off_RGBbpp];\n dataOffset = header[off_size] + 4;\n let computeFormats = false;\n if (info.isFourCC) {\n fourCC = header[off_pfFourCC];\n switch (fourCC) {\n case FOURCC_DXT1:\n blockBytes = 8;\n internalCompressedFormat = 33777;\n break;\n case FOURCC_DXT3:\n blockBytes = 16;\n internalCompressedFormat = 33778;\n break;\n case FOURCC_DXT5:\n blockBytes = 16;\n internalCompressedFormat = 33779;\n break;\n case FOURCC_D3DFMT_R16G16B16A16F:\n computeFormats = true;\n bpp = 64;\n break;\n case FOURCC_D3DFMT_R32G32B32A32F:\n computeFormats = true;\n bpp = 128;\n break;\n case FOURCC_DX10: {\n // There is an additionnal header so dataOffset need to be changed\n dataOffset += 5 * 4; // 5 uints\n let supported = false;\n switch (info.dxgiFormat) {\n case DXGI_FORMAT_R16G16B16A16_FLOAT:\n computeFormats = true;\n bpp = 64;\n supported = true;\n break;\n case DXGI_FORMAT_R32G32B32A32_FLOAT:\n computeFormats = true;\n bpp = 128;\n supported = true;\n break;\n case DXGI_FORMAT_B8G8R8X8_UNORM:\n info.isRGB = true;\n info.isFourCC = false;\n bpp = 32;\n supported = true;\n break;\n }\n if (supported) {\n break;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default:\n Logger.Error([\"Unsupported FourCC code:\", Int32ToFourCC(fourCC)]);\n return;\n }\n }\n const rOffset = DDSTools._ExtractLongWordOrder(header[off_RMask]);\n const gOffset = DDSTools._ExtractLongWordOrder(header[off_GMask]);\n const bOffset = DDSTools._ExtractLongWordOrder(header[off_BMask]);\n const aOffset = DDSTools._ExtractLongWordOrder(header[off_AMask]);\n if (computeFormats) {\n internalCompressedFormat = engine._getRGBABufferInternalSizedFormat(info.textureType);\n }\n mipmapCount = 1;\n if (header[off_flags] & DDSD_MIPMAPCOUNT && loadMipmaps !== false) {\n mipmapCount = Math.max(1, header[off_mipmapCount]);\n }\n const startFace = currentFace || 0;\n const caps = engine.getCaps();\n for (let face = startFace; face < faces; face++) {\n width = header[off_width];\n height = header[off_height];\n for (mip = 0; mip < mipmapCount; ++mip) {\n if (lodIndex === -1 || lodIndex === mip) {\n // In case of fixed LOD, if the lod has just been uploaded, early exit.\n const i = lodIndex === -1 ? mip : 0;\n if (!info.isCompressed && info.isFourCC) {\n texture.format = 5;\n dataLength = width * height * 4;\n let floatArray = null;\n if (engine._badOS || engine._badDesktopOS || (!caps.textureHalfFloat && !caps.textureFloat)) {\n // Required because iOS has many issues with float and half float generation\n if (bpp === 128) {\n floatArray = DDSTools._GetFloatAsUIntRGBAArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, i);\n if (sphericalPolynomialFaces && i == 0) {\n sphericalPolynomialFaces.push(DDSTools._GetFloatRGBAArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, i));\n }\n }\n else if (bpp === 64) {\n floatArray = DDSTools._GetHalfFloatAsUIntRGBAArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, i);\n if (sphericalPolynomialFaces && i == 0) {\n sphericalPolynomialFaces.push(DDSTools._GetHalfFloatAsFloatRGBAArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, i));\n }\n }\n texture.type = 0;\n }\n else {\n const floatAvailable = caps.textureFloat && ((destTypeMustBeFilterable && caps.textureFloatLinearFiltering) || !destTypeMustBeFilterable);\n const halfFloatAvailable = caps.textureHalfFloat && ((destTypeMustBeFilterable && caps.textureHalfFloatLinearFiltering) || !destTypeMustBeFilterable);\n const destType = (bpp === 128 || (bpp === 64 && !halfFloatAvailable)) && floatAvailable\n ? 1\n : (bpp === 64 || (bpp === 128 && !floatAvailable)) && halfFloatAvailable\n ? 2\n : 0;\n let dataGetter;\n let dataGetterPolynomial = null;\n switch (bpp) {\n case 128: {\n switch (destType) {\n case 1:\n dataGetter = DDSTools._GetFloatRGBAArrayBuffer;\n dataGetterPolynomial = null;\n break;\n case 2:\n dataGetter = DDSTools._GetFloatAsHalfFloatRGBAArrayBuffer;\n dataGetterPolynomial = DDSTools._GetFloatRGBAArrayBuffer;\n break;\n case 0:\n dataGetter = DDSTools._GetFloatAsUIntRGBAArrayBuffer;\n dataGetterPolynomial = DDSTools._GetFloatRGBAArrayBuffer;\n break;\n }\n break;\n }\n default: {\n // 64 bpp\n switch (destType) {\n case 1:\n dataGetter = DDSTools._GetHalfFloatAsFloatRGBAArrayBuffer;\n dataGetterPolynomial = null;\n break;\n case 2:\n dataGetter = DDSTools._GetHalfFloatRGBAArrayBuffer;\n dataGetterPolynomial = DDSTools._GetHalfFloatAsFloatRGBAArrayBuffer;\n break;\n case 0:\n dataGetter = DDSTools._GetHalfFloatAsUIntRGBAArrayBuffer;\n dataGetterPolynomial = DDSTools._GetHalfFloatAsFloatRGBAArrayBuffer;\n break;\n }\n break;\n }\n }\n texture.type = destType;\n floatArray = dataGetter(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, i);\n if (sphericalPolynomialFaces && i == 0) {\n sphericalPolynomialFaces.push(dataGetterPolynomial ? dataGetterPolynomial(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, i) : floatArray);\n }\n }\n if (floatArray) {\n engine._uploadDataToTextureDirectly(texture, floatArray, face, i);\n }\n }\n else if (info.isRGB) {\n texture.type = 0;\n if (bpp === 24) {\n texture.format = 4;\n dataLength = width * height * 3;\n byteArray = DDSTools._GetRGBArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, rOffset, gOffset, bOffset);\n engine._uploadDataToTextureDirectly(texture, byteArray, face, i);\n }\n else {\n // 32\n texture.format = 5;\n dataLength = width * height * 4;\n byteArray = DDSTools._GetRGBAArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer, rOffset, gOffset, bOffset, aOffset);\n engine._uploadDataToTextureDirectly(texture, byteArray, face, i);\n }\n }\n else if (info.isLuminance) {\n const unpackAlignment = engine._getUnpackAlignement();\n const unpaddedRowSize = width;\n const paddedRowSize = Math.floor((width + unpackAlignment - 1) / unpackAlignment) * unpackAlignment;\n dataLength = paddedRowSize * (height - 1) + unpaddedRowSize;\n byteArray = DDSTools._GetLuminanceArrayBuffer(width, height, data.byteOffset + dataOffset, dataLength, data.buffer);\n texture.format = 1;\n texture.type = 0;\n engine._uploadDataToTextureDirectly(texture, byteArray, face, i);\n }\n else {\n dataLength = (((Math.max(4, width) / 4) * Math.max(4, height)) / 4) * blockBytes;\n byteArray = new Uint8Array(data.buffer, data.byteOffset + dataOffset, dataLength);\n texture.type = 0;\n engine._uploadCompressedDataToTextureDirectly(texture, internalCompressedFormat, width, height, byteArray, face, i);\n }\n }\n dataOffset += bpp ? width * height * (bpp / 8) : dataLength;\n width *= 0.5;\n height *= 0.5;\n width = Math.max(1.0, width);\n height = Math.max(1.0, height);\n }\n if (currentFace !== undefined) {\n // Loading a single face\n break;\n }\n }\n if (sphericalPolynomialFaces && sphericalPolynomialFaces.length > 0) {\n info.sphericalPolynomial = CubeMapToSphericalPolynomialTools.ConvertCubeMapToSphericalPolynomial({\n size: header[off_width],\n right: sphericalPolynomialFaces[0],\n left: sphericalPolynomialFaces[1],\n up: sphericalPolynomialFaces[2],\n down: sphericalPolynomialFaces[3],\n front: sphericalPolynomialFaces[4],\n back: sphericalPolynomialFaces[5],\n format: 5,\n type: 1,\n gammaSpace: false,\n });\n }\n else {\n info.sphericalPolynomial = undefined;\n }\n }\n}\n/**\n * Gets or sets a boolean indicating that LOD info is stored in alpha channel (false by default)\n */\nDDSTools.StoreLODInAlphaChannel = false;\n//# sourceMappingURL=dds.js.map"],"names":["GetExtensionFromUrl","url","urlWithoutUriParams","lastDot","AbstractEngine","index","loadedFiles","onfinish","onErrorCallBack","onload","data","onerror","request","exception","scene","files","onError","texture","mimeType","loadedImages","tokenPendingData","RandomGUID","LoadImage","img","message","rootUrl","noMipmap","onLoad","format","forcedExtension","createPolynomials","lodScale","lodOffset","fallback","beforeLoadCubeDataCallback","imageHandler","useSRGBBuffer","buffer","InternalTexture","originalRootUrl","extension","loaderPromise","_GetCompatibleTextureLoader","localOnError","Logger","onInternalError","loader","onLoadData","images","image","imgs","DDS_MAGIC","DDSD_MIPMAPCOUNT","DDSCAPS2_CUBEMAP","DDPF_FOURCC","DDPF_RGB","DDPF_LUMINANCE","FourCCToInt32","value","Int32ToFourCC","FOURCC_DXT1","FOURCC_DXT3","FOURCC_DXT5","FOURCC_DX10","FOURCC_D3DFMT_R16G16B16A16F","FOURCC_D3DFMT_R32G32B32A32F","DXGI_FORMAT_R32G32B32A32_FLOAT","DXGI_FORMAT_R16G16B16A16_FLOAT","DXGI_FORMAT_B8G8R8X8_UNORM","headerLengthInt","off_magic","off_size","off_flags","off_height","off_width","off_mipmapCount","off_pfFlags","off_pfFourCC","off_RGBbpp","off_RMask","off_GMask","off_BMask","off_AMask","off_caps2","off_dxgiFormat","DDSTools","header","extendedHeader","mipmapCount","fourCC","dxgiFormat","textureType","width","height","dataOffset","dataLength","arrayBuffer","lod","destArray","srcData","y","x","srcPos","FromHalfFloat","ToHalfFloat","Clamp","rOffset","gOffset","bOffset","aOffset","byteArray","engine","info","loadMipmaps","faces","lodIndex","currentFace","destTypeMustBeFilterable","sphericalPolynomialFaces","ext","mip","internalCompressedFormat","blockBytes","bpp","computeFormats","supported","startFace","caps","face","i","floatArray","floatAvailable","halfFloatAvailable","destType","dataGetter","dataGetterPolynomial","unpackAlignment","unpaddedRowSize","CubeMapToSphericalPolynomialTools"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { a as t } from "./index-ChGTkj2q.js";
|
|
2
|
+
import { DDSTools as n } from "./dds-BlAaKjyJ.js";
|
|
3
|
+
class c {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.supportCascades = !0;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Uploads the cube texture data to the WebGL texture. It has already been bound.
|
|
9
|
+
* @param imgs contains the cube maps
|
|
10
|
+
* @param texture defines the BabylonJS internal texture
|
|
11
|
+
* @param createPolynomials will be true if polynomials have been requested
|
|
12
|
+
* @param onLoad defines the callback to trigger once the texture is ready
|
|
13
|
+
*/
|
|
14
|
+
loadCubeData(p, i, m, o) {
|
|
15
|
+
const e = i.getEngine();
|
|
16
|
+
let a, l = !1, d = 1e3;
|
|
17
|
+
if (Array.isArray(p))
|
|
18
|
+
for (let s = 0; s < p.length; s++) {
|
|
19
|
+
const h = p[s];
|
|
20
|
+
a = n.GetDDSInfo(h), i.width = a.width, i.height = a.height, l = (a.isRGB || a.isLuminance || a.mipmapCount > 1) && i.generateMipMaps, e._unpackFlipY(a.isCompressed), n.UploadDDSLevels(e, i, h, a, l, 6, -1, s), !a.isFourCC && a.mipmapCount === 1 ? e.generateMipMapsForCubemap(i) : d = a.mipmapCount - 1;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const s = p;
|
|
24
|
+
a = n.GetDDSInfo(s), i.width = a.width, i.height = a.height, m && (a.sphericalPolynomial = new t()), l = (a.isRGB || a.isLuminance || a.mipmapCount > 1) && i.generateMipMaps, e._unpackFlipY(a.isCompressed), n.UploadDDSLevels(e, i, s, a, l, 6), !a.isFourCC && a.mipmapCount === 1 ? e.generateMipMapsForCubemap(i, !1) : d = a.mipmapCount - 1;
|
|
25
|
+
}
|
|
26
|
+
e._setCubeMapTextureParams(i, l, d), i.isReady = !0, i.onLoadedObservable.notifyObservers(i), i.onLoadedObservable.clear(), o && o({ isDDS: !0, width: i.width, info: a, data: p, texture: i });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.
|
|
30
|
+
* @param data contains the texture data
|
|
31
|
+
* @param texture defines the BabylonJS internal texture
|
|
32
|
+
* @param callback defines the method to call once ready to upload
|
|
33
|
+
*/
|
|
34
|
+
loadData(p, i, m) {
|
|
35
|
+
const o = n.GetDDSInfo(p), e = (o.isRGB || o.isLuminance || o.mipmapCount > 1) && i.generateMipMaps && Math.max(o.width, o.height) >> o.mipmapCount - 1 === 1;
|
|
36
|
+
m(o.width, o.height, e, o.isFourCC, () => {
|
|
37
|
+
n.UploadDDSLevels(i.getEngine(), i, p, o, e, 1);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
c as _DDSTextureLoader
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=ddsTextureLoader-D7Jh83wc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddsTextureLoader-D7Jh83wc.js","sources":["../node_modules/@babylonjs/core/Materials/Textures/Loaders/ddsTextureLoader.js"],"sourcesContent":["import { SphericalPolynomial } from \"../../../Maths/sphericalPolynomial.js\";\nimport { DDSTools } from \"../../../Misc/dds.js\";\n/**\n * Implementation of the DDS Texture Loader.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _DDSTextureLoader {\n constructor() {\n /**\n * Defines whether the loader supports cascade loading the different faces.\n */\n this.supportCascades = true;\n }\n /**\n * Uploads the cube texture data to the WebGL texture. It has already been bound.\n * @param imgs contains the cube maps\n * @param texture defines the BabylonJS internal texture\n * @param createPolynomials will be true if polynomials have been requested\n * @param onLoad defines the callback to trigger once the texture is ready\n */\n loadCubeData(imgs, texture, createPolynomials, onLoad) {\n const engine = texture.getEngine();\n let info;\n let loadMipmap = false;\n let maxLevel = 1000;\n if (Array.isArray(imgs)) {\n for (let index = 0; index < imgs.length; index++) {\n const data = imgs[index];\n info = DDSTools.GetDDSInfo(data);\n texture.width = info.width;\n texture.height = info.height;\n loadMipmap = (info.isRGB || info.isLuminance || info.mipmapCount > 1) && texture.generateMipMaps;\n engine._unpackFlipY(info.isCompressed);\n DDSTools.UploadDDSLevels(engine, texture, data, info, loadMipmap, 6, -1, index);\n if (!info.isFourCC && info.mipmapCount === 1) {\n engine.generateMipMapsForCubemap(texture);\n }\n else {\n maxLevel = info.mipmapCount - 1;\n }\n }\n }\n else {\n const data = imgs;\n info = DDSTools.GetDDSInfo(data);\n texture.width = info.width;\n texture.height = info.height;\n if (createPolynomials) {\n info.sphericalPolynomial = new SphericalPolynomial();\n }\n loadMipmap = (info.isRGB || info.isLuminance || info.mipmapCount > 1) && texture.generateMipMaps;\n engine._unpackFlipY(info.isCompressed);\n DDSTools.UploadDDSLevels(engine, texture, data, info, loadMipmap, 6);\n if (!info.isFourCC && info.mipmapCount === 1) {\n // Do not unbind as we still need to set the parameters.\n engine.generateMipMapsForCubemap(texture, false);\n }\n else {\n maxLevel = info.mipmapCount - 1;\n }\n }\n engine._setCubeMapTextureParams(texture, loadMipmap, maxLevel);\n texture.isReady = true;\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n if (onLoad) {\n onLoad({ isDDS: true, width: texture.width, info, data: imgs, texture });\n }\n }\n /**\n * Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.\n * @param data contains the texture data\n * @param texture defines the BabylonJS internal texture\n * @param callback defines the method to call once ready to upload\n */\n loadData(data, texture, callback) {\n const info = DDSTools.GetDDSInfo(data);\n const loadMipmap = (info.isRGB || info.isLuminance || info.mipmapCount > 1) && texture.generateMipMaps && Math.max(info.width, info.height) >> (info.mipmapCount - 1) === 1;\n callback(info.width, info.height, loadMipmap, info.isFourCC, () => {\n DDSTools.UploadDDSLevels(texture.getEngine(), texture, data, info, loadMipmap, 1);\n });\n }\n}\n//# sourceMappingURL=ddsTextureLoader.js.map"],"names":["_DDSTextureLoader","imgs","texture","createPolynomials","onLoad","engine","info","loadMipmap","maxLevel","index","data","DDSTools","SphericalPolynomial","callback"],"mappings":";;AAOO,MAAMA,EAAkB;AAAA,EAC3B,cAAc;AAIV,SAAK,kBAAkB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,aAAaC,GAAMC,GAASC,GAAmBC,GAAQ;AACnD,UAAMC,IAASH,EAAQ,UAAS;AAChC,QAAII,GACAC,IAAa,IACbC,IAAW;AACf,QAAI,MAAM,QAAQP,CAAI;AAClB,eAASQ,IAAQ,GAAGA,IAAQR,EAAK,QAAQQ,KAAS;AAC9C,cAAMC,IAAOT,EAAKQ,CAAK;AACvB,QAAAH,IAAOK,EAAS,WAAWD,CAAI,GAC/BR,EAAQ,QAAQI,EAAK,OACrBJ,EAAQ,SAASI,EAAK,QACtBC,KAAcD,EAAK,SAASA,EAAK,eAAeA,EAAK,cAAc,MAAMJ,EAAQ,iBACjFG,EAAO,aAAaC,EAAK,YAAY,GACrCK,EAAS,gBAAgBN,GAAQH,GAASQ,GAAMJ,GAAMC,GAAY,GAAG,IAAIE,CAAK,GAC1E,CAACH,EAAK,YAAYA,EAAK,gBAAgB,IACvCD,EAAO,0BAA0BH,CAAO,IAGxCM,IAAWF,EAAK,cAAc;AAAA,MAElD;AAAA,SAEa;AACD,YAAMI,IAAOT;AACb,MAAAK,IAAOK,EAAS,WAAWD,CAAI,GAC/BR,EAAQ,QAAQI,EAAK,OACrBJ,EAAQ,SAASI,EAAK,QAClBH,MACAG,EAAK,sBAAsB,IAAIM,EAAmB,IAEtDL,KAAcD,EAAK,SAASA,EAAK,eAAeA,EAAK,cAAc,MAAMJ,EAAQ,iBACjFG,EAAO,aAAaC,EAAK,YAAY,GACrCK,EAAS,gBAAgBN,GAAQH,GAASQ,GAAMJ,GAAMC,GAAY,CAAC,GAC/D,CAACD,EAAK,YAAYA,EAAK,gBAAgB,IAEvCD,EAAO,0BAA0BH,GAAS,EAAK,IAG/CM,IAAWF,EAAK,cAAc;AAAA,IAE9C;AACQ,IAAAD,EAAO,yBAAyBH,GAASK,GAAYC,CAAQ,GAC7DN,EAAQ,UAAU,IAClBA,EAAQ,mBAAmB,gBAAgBA,CAAO,GAClDA,EAAQ,mBAAmB,MAAK,GAC5BE,KACAA,EAAO,EAAE,OAAO,IAAM,OAAOF,EAAQ,OAAO,MAAAI,GAAM,MAAML,GAAM,SAAAC,EAAO,CAAE;AAAA,EAEnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,SAASQ,GAAMR,GAASW,GAAU;AAC9B,UAAMP,IAAOK,EAAS,WAAWD,CAAI,GAC/BH,KAAcD,EAAK,SAASA,EAAK,eAAeA,EAAK,cAAc,MAAMJ,EAAQ,mBAAmB,KAAK,IAAII,EAAK,OAAOA,EAAK,MAAM,KAAMA,EAAK,cAAc,MAAO;AAC1K,IAAAO,EAASP,EAAK,OAAOA,EAAK,QAAQC,GAAYD,EAAK,UAAU,MAAM;AAC/D,MAAAK,EAAS,gBAAgBT,EAAQ,UAAS,GAAIA,GAASQ,GAAMJ,GAAMC,GAAY,CAAC;AAAA,IAC5F,CAAS;AAAA,EACT;AACA;","x_google_ignoreList":[0]}
|