@openmockup-studio/player 0.1.0 → 0.2.0
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 -5
- package/dist/{device-laptop-abUqnCPB.js → device-laptop-DlKLhrO9.js} +1 -1
- package/dist/{device-monitor-DRfsMb1A.js → device-monitor-BkXp8a-n.js} +1 -1
- package/dist/{device-phone-D__ngcPt.js → device-phone-DxWL5LkW.js} +337 -328
- package/dist/{device-tablet-C89f1GUw.js → device-tablet-B1JOR7Rf.js} +1 -1
- package/dist/{device-watch-PwEcwA3q.js → device-watch-9Y7wuyPn.js} +1 -1
- package/dist/embed.iife.js +56 -56
- package/dist/embed.js +7 -4
- package/dist/{runtime-D-Di0bkW.js → runtime-RiyRiexX.js} +224 -215
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-CGnMp29N.js";
|
|
2
2
|
import { A as t, B as n, D as r, E as i, F as a, G as o, J as s, K as c, N as l, O as u, P as d, Q as f, R as p, S as m, T as h, V as g, X as _, Y as v, Z as y, _ as b, a as x, b as S, c as C, g as w, j as T, l as E, m as D, o as O, q as k, s as A, t as j, u as M, w as N, x as P, y as F, z as I } from "./three-o_76Nw0r.js";
|
|
3
|
-
import { C as L, S as R,
|
|
3
|
+
import { C as L, S as R, T as z, _ as B, b as V, g as H, h as U, v as W, w as G, x as K, y as q } from "./device-phone-DxWL5LkW.js";
|
|
4
4
|
// ../engine/src/backdrop-math.ts
|
|
5
|
-
var
|
|
5
|
+
var ee = "#f6f6f4";
|
|
6
6
|
function te(e, t) {
|
|
7
|
-
let n = e.color ?? e.inner ?? e.outer ??
|
|
7
|
+
let n = e.color ?? e.inner ?? e.outer ?? ee;
|
|
8
8
|
if (e.kind === "image") return t ? {
|
|
9
9
|
kind: "image",
|
|
10
10
|
fallback: n
|
|
@@ -25,7 +25,7 @@ function te(e, t) {
|
|
|
25
25
|
outer: n
|
|
26
26
|
} : {
|
|
27
27
|
kind: "flat",
|
|
28
|
-
color: t ?? n ?? e.color ??
|
|
28
|
+
color: t ?? n ?? e.color ?? ee
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
return {
|
|
@@ -42,7 +42,7 @@ function ne(e, t) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function re(e, t) {
|
|
45
|
-
return
|
|
45
|
+
return G(e, t, "cover");
|
|
46
46
|
}
|
|
47
47
|
// ../engine/src/backdrop.ts
|
|
48
48
|
function ie() {
|
|
@@ -100,7 +100,7 @@ function ce(e, t) {
|
|
|
100
100
|
e.position.set(t.position[0], t.position[1], t.position[2]), oe.set(t.target[0], t.target[1], t.target[2]).sub(e.position).normalize(), se.set(0, 1, 0).applyAxisAngle(oe, t.roll * ae), e.up.copy(se), e.lookAt(t.target[0], t.target[1], t.target[2]), e.fov !== t.fov && (e.fov = t.fov, e.updateProjectionMatrix());
|
|
101
101
|
}
|
|
102
102
|
// ../engine/src/environment/recipes.ts
|
|
103
|
-
var
|
|
103
|
+
var le = {
|
|
104
104
|
studio: {
|
|
105
105
|
room: [
|
|
106
106
|
[0, "#55555a"],
|
|
@@ -202,17 +202,17 @@ var q = {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
};
|
|
205
|
-
function
|
|
206
|
-
return e !== void 0 && Object.hasOwn(
|
|
205
|
+
function ue(e) {
|
|
206
|
+
return e !== void 0 && Object.hasOwn(le, e) ? e : "studio";
|
|
207
207
|
}
|
|
208
208
|
// ../engine/src/environment/studio.ts
|
|
209
|
-
function
|
|
210
|
-
let n =
|
|
209
|
+
function de(e, t = "studio") {
|
|
210
|
+
let n = le[t], i = new I(), a = [], s = pe(1, 256, n.room), c = new o(60, 48, 24), l = new u({
|
|
211
211
|
map: s,
|
|
212
212
|
side: 1
|
|
213
213
|
});
|
|
214
214
|
i.add(new r(c, l)), a.push(s, c, l);
|
|
215
|
-
let f =
|
|
215
|
+
let f = me("none", n.feather), p = me("top", n.feather), m = me("left", n.feather);
|
|
216
216
|
a.push(f, p, m);
|
|
217
217
|
let h = (e, t, o, s, c, l) => {
|
|
218
218
|
let f = new d(t, o), p = new u({
|
|
@@ -264,12 +264,12 @@ function ue(e, t = "studio") {
|
|
|
264
264
|
for (let e of a) e.dispose();
|
|
265
265
|
return _;
|
|
266
266
|
}
|
|
267
|
-
function
|
|
267
|
+
function fe(e, t) {
|
|
268
268
|
let n = document.createElement("canvas");
|
|
269
269
|
return n.width = e, n.height = t, [n, n.getContext("2d")];
|
|
270
270
|
}
|
|
271
|
-
function
|
|
272
|
-
let [r, i] =
|
|
271
|
+
function pe(e, t, n) {
|
|
272
|
+
let [r, i] = fe(e, t);
|
|
273
273
|
if (i) {
|
|
274
274
|
let r = i.createLinearGradient(0, 0, 0, t);
|
|
275
275
|
for (let [e, t] of n) r.addColorStop(e, t);
|
|
@@ -278,8 +278,8 @@ function fe(e, t, n) {
|
|
|
278
278
|
let a = new M(r);
|
|
279
279
|
return a.colorSpace = p, a;
|
|
280
280
|
}
|
|
281
|
-
function
|
|
282
|
-
let [n, r] =
|
|
281
|
+
function me(e, t) {
|
|
282
|
+
let [n, r] = fe(128, 128);
|
|
283
283
|
if (r) {
|
|
284
284
|
let n = r.createImageData(128, 128), i = (e, t, n) => {
|
|
285
285
|
let r = Math.min(1, Math.max(0, (n - e) / (t - e)));
|
|
@@ -296,7 +296,7 @@ function pe(e, t) {
|
|
|
296
296
|
return new M(n);
|
|
297
297
|
}
|
|
298
298
|
// ../engine/src/floor.ts
|
|
299
|
-
function
|
|
299
|
+
function he(e, t) {
|
|
300
300
|
let n = new b(16777215, .6);
|
|
301
301
|
n.position.set(.6, 30, 1.2), n.castShadow = !0, n.shadow.mapSize.set(512, 512), Object.assign(n.shadow.camera, {
|
|
302
302
|
left: -12,
|
|
@@ -336,7 +336,7 @@ function me(e, t) {
|
|
|
336
336
|
}
|
|
337
337
|
// ../engine/src/glow.ts
|
|
338
338
|
var J = 4;
|
|
339
|
-
function
|
|
339
|
+
function ge(e) {
|
|
340
340
|
let t = /* @__PURE__ */ new Map(), i = new f(J, J, { type: s }), a = /* @__PURE__ */ new Uint8Array(64), o = new n({
|
|
341
341
|
uniforms: { map: { value: null } },
|
|
342
342
|
vertexShader: "\n varying vec2 vUv;\n void main() { vUv = uv; gl_Position = vec4(position.xy, 0.0, 1.0); }\n ",
|
|
@@ -407,12 +407,12 @@ function he(e) {
|
|
|
407
407
|
}
|
|
408
408
|
};
|
|
409
409
|
}
|
|
410
|
-
var
|
|
411
|
-
function
|
|
410
|
+
var _e = Math.PI / 180, ve = .25, ye = .012, be = .016, xe = .7, Se = .3, Ce = .9, we = 5, Te = 24, Ee = 12, De = 24, Y = (e) => typeof e == "number" && e > 0 ? e : 0;
|
|
411
|
+
function Oe(e) {
|
|
412
412
|
return Y(e.fisheye) > 0 || Y(e.chromatic) > 0 || Y(e.vignette) > 0 || Y(e.bloom) > 0 || Y(e.grain) > 0 || Y(e.blur) > 0 || Y(e.fade) > 0;
|
|
413
413
|
}
|
|
414
|
-
var X = "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n",
|
|
415
|
-
function
|
|
414
|
+
var X = "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n", ke = "\n uniform float camNear;\n uniform float camFar;\n uniform float focus;\n uniform float maxCoc; // blur * MAX_COC * frame height, in pixels\n\n float viewZ(float d) {\n if (d >= 0.99999) return camFar;\n float z = d * 2.0 - 1.0;\n return 2.0 * camNear * camFar / (camFar + camNear - z * (camFar - camNear));\n }\n float cocOf(float d) {\n return maxCoc * clamp(abs(1.0 - focus / viewZ(d)), 0.0, 1.0);\n }\n";
|
|
415
|
+
function Ae(e, t = 4) {
|
|
416
416
|
let i = 1, a = 1, o = 1, c = new w(1, 1, F), l = new f(1, 1, {
|
|
417
417
|
type: m,
|
|
418
418
|
colorSpace: N,
|
|
@@ -429,7 +429,7 @@ function ke(e, t = 4) {
|
|
|
429
429
|
depthBuffer: !1,
|
|
430
430
|
count: 2
|
|
431
431
|
}), y = [];
|
|
432
|
-
for (let e = 0; e <
|
|
432
|
+
for (let e = 0; e < we; e++) y.push(new f(1, 1, {
|
|
433
433
|
type: m,
|
|
434
434
|
colorSpace: N,
|
|
435
435
|
depthBuffer: !1
|
|
@@ -455,7 +455,7 @@ function ke(e, t = 4) {
|
|
|
455
455
|
uniform sampler2D tMask;
|
|
456
456
|
uniform sampler2D tDepth;
|
|
457
457
|
uniform vec2 texel; // 1 / full-resolution size
|
|
458
|
-
${
|
|
458
|
+
${ke}
|
|
459
459
|
varying vec2 vUv;
|
|
460
460
|
layout(location = 0) out highp vec4 outColor;
|
|
461
461
|
layout(location = 1) out highp vec4 outMask;
|
|
@@ -480,8 +480,8 @@ function ke(e, t = 4) {
|
|
|
480
480
|
vec2 macc = m0;
|
|
481
481
|
float wsum = 1.0;
|
|
482
482
|
// Small blurs need few taps; only wide ones pay for the full disc.
|
|
483
|
-
float taps = clamp(8.0 + c0 * 0.7, 8.0, float(${
|
|
484
|
-
const int N = ${
|
|
483
|
+
float taps = clamp(8.0 + c0 * 0.7, 8.0, float(${Te}));
|
|
484
|
+
const int N = ${Te};
|
|
485
485
|
for (int i = 0; i < N; i++) {
|
|
486
486
|
if (float(i) >= taps) break;
|
|
487
487
|
float r = sqrt((float(i) + 0.5) / taps);
|
|
@@ -509,8 +509,8 @@ function ke(e, t = 4) {
|
|
|
509
509
|
tSrc: { value: l.texture },
|
|
510
510
|
tSrcMask: { value: p.texture },
|
|
511
511
|
texel: { value: new v(1, 1) },
|
|
512
|
-
threshold: { value:
|
|
513
|
-
knee: { value:
|
|
512
|
+
threshold: { value: xe },
|
|
513
|
+
knee: { value: Se }
|
|
514
514
|
},
|
|
515
515
|
vertexShader: X,
|
|
516
516
|
fragmentShader: "\n uniform sampler2D tSrc;\n uniform sampler2D tSrcMask; // r: exact pixel, g: display\n uniform vec2 texel; // of the source\n uniform float threshold;\n uniform float knee;\n varying vec2 vUv;\n\n vec3 bright(vec2 uv) {\n vec3 c = min(texture2D(tSrc, uv).rgb, vec3(8.0));\n vec2 m = texture2D(tSrcMask, uv).rg;\n float geometry = 1.0 - m.r * (1.0 - m.g); // 0 on the bare backdrop\n float l = dot(c, vec3(0.2126, 0.7152, 0.0722));\n float rq = clamp(l - threshold + knee, 0.0, 2.0 * knee);\n rq = rq * rq / (4.0 * knee + 1e-4);\n float w = max(rq, l - threshold) / max(l, 1e-4);\n return c * w * geometry;\n }\n\n void main() {\n vec3 s = bright(vUv + texel * vec2(-1.0, -1.0))\n + bright(vUv + texel * vec2( 1.0, -1.0))\n + bright(vUv + texel * vec2(-1.0, 1.0))\n + bright(vUv + texel * vec2( 1.0, 1.0));\n gl_FragColor = vec4(s * 0.25, 1.0);\n }\n "
|
|
@@ -584,7 +584,7 @@ function ke(e, t = 4) {
|
|
|
584
584
|
uniform float grain;
|
|
585
585
|
uniform float frame;
|
|
586
586
|
uniform float fade;
|
|
587
|
-
${
|
|
587
|
+
${ke}
|
|
588
588
|
varying vec2 vUv;
|
|
589
589
|
|
|
590
590
|
// Normalised so r = 1 at the frame corners.
|
|
@@ -683,10 +683,10 @@ function ke(e, t = 4) {
|
|
|
683
683
|
i = e, a = t, L(o);
|
|
684
684
|
},
|
|
685
685
|
render(t, n, r, s, c, u = [], d = 0) {
|
|
686
|
-
let f = Y(c.fisheye), m = Y(c.chromatic), v = Y(c.vignette), S = Math.min(1, Y(c.bloom)), w = Math.min(1, Y(c.grain)), T = Math.min(1, Y(c.blur)), O = Math.min(1, Y(c.fade)), k = Y(c.focus), A = T > 0 && k > 0, N =
|
|
687
|
-
L(1 + N +
|
|
686
|
+
let f = Y(c.fisheye), m = Y(c.chromatic), v = Y(c.vignette), S = Math.min(1, Y(c.bloom)), w = Math.min(1, Y(c.grain)), T = Math.min(1, Y(c.blur)), O = Math.min(1, Y(c.fade)), k = Y(c.focus), A = T > 0 && k > 0, N = ve * f;
|
|
687
|
+
L(1 + N + ye * m + .005);
|
|
688
688
|
let F = n.fov;
|
|
689
|
-
n.fov = 2 * Math.atan(Math.tan(F *
|
|
689
|
+
n.fov = 2 * Math.atan(Math.tan(F * _e / 2) * o) / _e, n.updateProjectionMatrix(), l.resolveDepthBuffer = A, e.setRenderTarget(l), e.clear(), r.render(e, s), e.render(t, n);
|
|
690
690
|
let I = e.shadowMap.autoUpdate;
|
|
691
691
|
e.shadowMap.autoUpdate = !1, e.setRenderTarget(p), e.setClearColor(16711680, 1), e.clear();
|
|
692
692
|
let z = u.filter((e) => e.visible);
|
|
@@ -694,9 +694,9 @@ function ke(e, t = 4) {
|
|
|
694
694
|
t.overrideMaterial = h, e.render(t, n), n.layers.set(1), t.overrideMaterial = g, e.render(t, n), n.layers.set(0), t.overrideMaterial = null;
|
|
695
695
|
for (let e of z) e.visible = !0;
|
|
696
696
|
e.setClearColor(0, 0), e.shadowMap.autoUpdate = I, n.fov = F, n.updateProjectionMatrix();
|
|
697
|
-
let B = T *
|
|
697
|
+
let B = T * be * a;
|
|
698
698
|
if (A) {
|
|
699
|
-
let e = B >=
|
|
699
|
+
let e = B >= Ee ? 4 : 2;
|
|
700
700
|
e !== M && (M = e, P());
|
|
701
701
|
let t = b.uniforms;
|
|
702
702
|
R.set(1 / l.width, 1 / l.height), t.texel.value.copy(R), t.camNear.value = n.near, t.camFar.value = n.far, t.focus.value = k, t.maxCoc.value = B, j(b, _);
|
|
@@ -706,7 +706,7 @@ function ke(e, t = 4) {
|
|
|
706
706
|
e.tSrc.value = A ? _.textures[0] : l.texture, e.tSrcMask.value = A ? _.textures[1] : p.texture;
|
|
707
707
|
let t = A ? _ : l;
|
|
708
708
|
e.texel.value.set(1 / t.width, 1 / t.height), j(x, y[0]);
|
|
709
|
-
for (let e = 1; e <
|
|
709
|
+
for (let e = 1; e < we; e++) {
|
|
710
710
|
let t = y[e - 1];
|
|
711
711
|
C.uniforms.tSrc.value = t.texture, C.uniforms.texel.value.set(1 / t.width, 1 / t.height), j(C, y[e]);
|
|
712
712
|
}
|
|
@@ -716,7 +716,7 @@ function ke(e, t = 4) {
|
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
718
|
let V = D.uniforms;
|
|
719
|
-
V.overscan.value = o, V.aspect.value = i / a, V.barrel.value = N, V.chromatic.value =
|
|
719
|
+
V.overscan.value = o, V.aspect.value = i / a, V.barrel.value = N, V.chromatic.value = ye * m, V.vignette.value = v, V.dofOn.value = +!!A, V.camNear.value = n.near, V.camFar.value = n.far, V.focus.value = k, V.maxCoc.value = B, V.bloomAmount.value = S * Ce, V.grain.value = w, V.frame.value = Math.floor(Math.max(0, d) * De + 1e-6), V.fade.value = O, e.setRenderTarget(null), e.clear(), j(D, null);
|
|
720
720
|
},
|
|
721
721
|
dispose() {
|
|
722
722
|
l.dispose(), c.dispose(), p.dispose(), _.dispose();
|
|
@@ -726,7 +726,7 @@ function ke(e, t = 4) {
|
|
|
726
726
|
};
|
|
727
727
|
}
|
|
728
728
|
// ../engine/src/set/stone.ts
|
|
729
|
-
function
|
|
729
|
+
function je(e) {
|
|
730
730
|
let n = new t({
|
|
731
731
|
color: e,
|
|
732
732
|
roughness: .72,
|
|
@@ -736,7 +736,7 @@ function Ae(e) {
|
|
|
736
736
|
e.vertexShader = e.vertexShader.replace("#include <common>", "#include <common>\n attribute float aCavity;\n varying float vCavity;\n varying vec3 vStonePos;").replace("#include <begin_vertex>", "#include <begin_vertex>\n vCavity = aCavity;\n vStonePos = position;"), e.fragmentShader = e.fragmentShader.replace("#include <common>", `#include <common>
|
|
737
737
|
varying float vCavity;
|
|
738
738
|
varying vec3 vStonePos;
|
|
739
|
-
${
|
|
739
|
+
${Me}
|
|
740
740
|
vec3 hash3(vec3 p) {
|
|
741
741
|
p = vec3(dot(p, vec3(127.1, 311.7, 74.7)), dot(p, vec3(269.5, 183.3, 246.1)), dot(p, vec3(113.5, 271.9, 124.6)));
|
|
742
742
|
return fract(sin(p) * 43758.5453123);
|
|
@@ -805,9 +805,9 @@ function Ae(e) {
|
|
|
805
805
|
}`).replace("#include <color_fragment>", "#include <color_fragment>\n float stoneFootprint = length(fwidth(vStonePos));\n vec3 stoneD = stoneDetail(vStonePos, stoneFootprint);\n float stoneH = stoneD.x;\n float mottle = snoise(vStonePos * 0.04 + 3.0) * 0.6 + snoise(vStonePos * 0.17) * 0.3;\n // Mineral speckle: scattered dark grains (light ones bloom into droplets).\n float speck = snoise(vStonePos * 1.7 + 21.0) * lod(0.6, stoneFootprint);\n mottle -= smoothstep(0.55, 0.85, -speck) * 0.3;\n float wear = smoothstep(0.42, 0.15, vCavity);\n float crease = smoothstep(0.55, 0.9, vCavity);\n diffuseColor.rgb *= (0.82 + 0.22 * mottle) * (1.0 + 0.35 * wear) * (1.0 - 0.45 * crease);\n // Millimetre grain in the colour, as any photographed stone has; it is what makes\n // a surface read sharp at a glance.\n float grain = snoise(vStonePos * 3.6 + 40.0) * 0.6 + snoise(vStonePos * 7.5 - 13.0) * 0.4;\n diffuseColor.rgb *= 1.0 + 0.22 * grain * lod(0.3, stoneFootprint);\n // Small-scale contrast: dark hollows and cracks, lighter crowns.\n diffuseColor.rgb *= (1.0 - 0.4 * stoneD.y) * (0.92 + 0.18 * stoneD.z);").replace("#include <roughnessmap_fragment>", "#include <roughnessmap_fragment>\n // Crowns are polished a little by weather; cracks and creases hold dust.\n roughnessFactor = clamp(roughnessFactor - 0.17 * stoneD.z + 0.12 * max(crease, stoneD.y), 0.45, 1.0);").replace("#include <normal_fragment_maps>", "#include <normal_fragment_maps>\n // Height in cm-ish units; the gain sets how deep the grain reads.\n normal = stonePerturb(-vViewPosition, normal, stoneH * 0.5, faceDirection);").replace("#include <aomap_fragment>", "#include <aomap_fragment>\n float stoneAO = mix(1.0, 0.35, crease) * (1.0 - 0.4 * stoneD.y);\n reflectedLight.indirectDiffuse *= stoneAO;\n reflectedLight.indirectSpecular *= stoneAO;");
|
|
806
806
|
}, n.customProgramCacheKey = () => "openmockup-stone-13", n;
|
|
807
807
|
}
|
|
808
|
-
var
|
|
808
|
+
var Me = "\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x * 34.0) + 10.0) * x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat snoise(vec3 v) {\n const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n vec3 i = floor(v + dot(v, C.yyy));\n vec3 x0 = v - i + dot(i, C.xxx);\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min(g.xyz, l.zxy);\n vec3 i2 = max(g.xyz, l.zxy);\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy;\n vec3 x3 = x0 - D.yyy;\n i = mod289(i);\n vec4 p = permute(permute(permute(i.z + vec4(0.0, i1.z, i2.z, 1.0)) + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + i.x + vec4(0.0, i1.x, i2.x, 1.0));\n float n_ = 0.142857142857;\n vec3 ns = n_ * D.wyz - D.xzx;\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_);\n vec4 x = x_ * ns.x + ns.yyyy;\n vec4 y = y_ * ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n vec4 b0 = vec4(x.xy, y.xy);\n vec4 b1 = vec4(x.zw, y.zw);\n vec4 s0 = floor(b0) * 2.0 + 1.0;\n vec4 s1 = floor(b1) * 2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\n vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\n vec3 p0 = vec3(a0.xy, h.x);\n vec3 p1 = vec3(a0.zw, h.y);\n vec3 p2 = vec3(a1.xy, h.z);\n vec3 p3 = vec3(a1.zw, h.w);\n vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n vec4 m = max(0.5 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);\n m = m * m;\n return 105.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));\n}\n";
|
|
809
809
|
// ../engine/src/set/concrete.ts
|
|
810
|
-
function
|
|
810
|
+
function Ne(e) {
|
|
811
811
|
let n = new t({
|
|
812
812
|
color: e,
|
|
813
813
|
roughness: .9,
|
|
@@ -816,7 +816,7 @@ function Me(e) {
|
|
|
816
816
|
return n.onBeforeCompile = (e) => {
|
|
817
817
|
e.vertexShader = e.vertexShader.replace("#include <common>", "#include <common>\n varying vec3 vConcretePos;").replace("#include <begin_vertex>", "#include <begin_vertex>\n vConcretePos = position;"), e.fragmentShader = e.fragmentShader.replace("#include <common>", `#include <common>
|
|
818
818
|
varying vec3 vConcretePos;
|
|
819
|
-
${
|
|
819
|
+
${Me}
|
|
820
820
|
float lod(float wavelength, float footprint) {
|
|
821
821
|
return 1.0 - smoothstep(wavelength * 0.12, wavelength * 0.45, footprint);
|
|
822
822
|
}
|
|
@@ -839,10 +839,10 @@ function Me(e) {
|
|
|
839
839
|
}, n.customProgramCacheKey = () => "openmockup-concrete-4", n;
|
|
840
840
|
}
|
|
841
841
|
// ../engine/src/set/block.ts
|
|
842
|
-
function
|
|
842
|
+
function Pe({ color: e, subject: t }) {
|
|
843
843
|
let n = new P();
|
|
844
844
|
n.name = "set:block";
|
|
845
|
-
let i =
|
|
845
|
+
let i = Ne(e), a = t.getCenter(new _()), o = t.getSize(new _()), s = Math.max(o.x * 3, 90), l = Math.max(o.z * 2.4, 60), u = Math.max(o.y * 6, s), d = t.min.x + o.x * .3, f = t.max.z + .6, p = t.min.y, m = new j(s, u, l, 3, .35), h = new r(m, i);
|
|
846
846
|
h.position.set(d + s / 2, p - u / 2, f - l / 2), h.castShadow = !1, h.receiveShadow = !0, n.add(h);
|
|
847
847
|
let g = Math.max(o.length() * 3.2, 110), v = new c(16184818, 1, g * 4, .62, .85, 2);
|
|
848
848
|
v.position.set(a.x - g, a.y + g * .25, f - g * .12), v.target.position.set(d, p - o.y, f), v.castShadow = !0, v.shadow.mapSize.set(2048, 2048), v.shadow.camera.near = g * .3, v.shadow.camera.far = g * 3, v.shadow.radius = 6, v.shadow.blurSamples = 16, v.shadow.bias = -2e-4, v.shadow.normalBias = .3;
|
|
@@ -860,7 +860,7 @@ function Ne({ color: e, subject: t }) {
|
|
|
860
860
|
};
|
|
861
861
|
}
|
|
862
862
|
// ../engine/src/set/noise.ts
|
|
863
|
-
function
|
|
863
|
+
function Fe(e) {
|
|
864
864
|
let t = e * 2654435761 >>> 0 || 1;
|
|
865
865
|
return () => {
|
|
866
866
|
t = t + 1831565813 >>> 0;
|
|
@@ -868,7 +868,7 @@ function Pe(e) {
|
|
|
868
868
|
return e = Math.imul(e ^ e >>> 15, e | 1), e ^= e + Math.imul(e ^ e >>> 7, e | 61), ((e ^ e >>> 14) >>> 0) / 4294967296;
|
|
869
869
|
};
|
|
870
870
|
}
|
|
871
|
-
var
|
|
871
|
+
var Ie = new Float32Array([
|
|
872
872
|
1,
|
|
873
873
|
1,
|
|
874
874
|
0,
|
|
@@ -905,9 +905,9 @@ var Fe = new Float32Array([
|
|
|
905
905
|
0,
|
|
906
906
|
-1,
|
|
907
907
|
-1
|
|
908
|
-
]),
|
|
909
|
-
function
|
|
910
|
-
let t =
|
|
908
|
+
]), Le = 1 / 3, Z = 1 / 6;
|
|
909
|
+
function Re(e) {
|
|
910
|
+
let t = Fe(e), n = /* @__PURE__ */ new Uint8Array(256);
|
|
911
911
|
for (let e = 0; e < 256; e++) n[e] = e;
|
|
912
912
|
for (let e = 255; e > 0; e--) {
|
|
913
913
|
let r = Math.floor(t() * (e + 1)), i = n[e];
|
|
@@ -916,27 +916,27 @@ function Le(e) {
|
|
|
916
916
|
let r = /* @__PURE__ */ new Uint8Array(512), i = /* @__PURE__ */ new Uint8Array(512);
|
|
917
917
|
for (let e = 0; e < 512; e++) r[e] = n[e & 255], i[e] = r[e] % 12;
|
|
918
918
|
return (e, t, n) => {
|
|
919
|
-
let a = (e + t + n) *
|
|
919
|
+
let a = (e + t + n) * Le, o = Math.floor(e + a), s = Math.floor(t + a), c = Math.floor(n + a), l = (o + s + c) * Z, u = e - (o - l), d = t - (s - l), f = n - (c - l), p = 0, m = 0, h = 0, g = 0, _ = 0, v = 0;
|
|
920
920
|
u >= d ? d >= f ? (p = 1, g = 1, _ = 1) : u >= f ? (p = 1, g = 1, v = 1) : (h = 1, g = 1, v = 1) : d < f ? (h = 1, _ = 1, v = 1) : u < f ? (m = 1, _ = 1, v = 1) : (m = 1, g = 1, _ = 1);
|
|
921
|
-
let y = u - p + Z, b = d - m + Z, x = f - h + Z, S = u - g + 2 * Z, C = d - _ + 2 * Z, w = f - v + 2 * Z, T = u - 1 + 3 * Z, E = d - 1 + 3 * Z, D = f - 1 + 3 * Z, O = o & 255, k = s & 255, A = c & 255, j =
|
|
921
|
+
let y = u - p + Z, b = d - m + Z, x = f - h + Z, S = u - g + 2 * Z, C = d - _ + 2 * Z, w = f - v + 2 * Z, T = u - 1 + 3 * Z, E = d - 1 + 3 * Z, D = f - 1 + 3 * Z, O = o & 255, k = s & 255, A = c & 255, j = ze(i[O + r[k + r[A]]], u, d, f), M = ze(i[O + p + r[k + m + r[A + h]]], y, b, x), N = ze(i[O + g + r[k + _ + r[A + v]]], S, C, w), P = ze(i[O + 1 + r[k + 1 + r[A + 1]]], T, E, D);
|
|
922
922
|
return 32 * (j + M + N + P);
|
|
923
923
|
};
|
|
924
924
|
}
|
|
925
|
-
function
|
|
925
|
+
function ze(e, t, n, r) {
|
|
926
926
|
let i = .6 - t * t - n * n - r * r;
|
|
927
927
|
if (i < 0) return 0;
|
|
928
928
|
i *= i;
|
|
929
929
|
let a = e * 3;
|
|
930
|
-
return i * i * (
|
|
930
|
+
return i * i * (Ie[a] * t + Ie[a + 1] * n + Ie[a + 2] * r);
|
|
931
931
|
}
|
|
932
|
-
function
|
|
932
|
+
function Be(e, t, n, r, i, a = .5) {
|
|
933
933
|
let o = 0, s = 1, c = 1, l = 0;
|
|
934
934
|
for (let u = 0; u < i; u++) o += s * e(t * c, n * c, r * c), l += s, s *= a, c *= 2;
|
|
935
935
|
return o / l;
|
|
936
936
|
}
|
|
937
937
|
// ../engine/src/set/rock.ts
|
|
938
|
-
function
|
|
939
|
-
let l =
|
|
938
|
+
function Ve({ seed: e, size: t, detail: n = 5, sides: i = 6, notches: a, relief: o = 1, shape: s = "pillar", color: c }) {
|
|
939
|
+
let l = Fe(e), u = Re(e), d = new _(t[0] / 2, t[1] / 2, t[2] / 2), f = Math.hypot(...t), p = Math.min(d.x, d.z) * .03 + .12, m = [], h = l() * Math.PI * 2;
|
|
940
940
|
for (let e = 0; e < i; e++) {
|
|
941
941
|
let t = h + (e + (l() - .5) * .5) / i * Math.PI * 2, n = s === "boulder" ? (l() - .5) * 1.6 : (l() - .5) * .08, r = new _(Math.cos(t), n, Math.sin(t)).normalize(), a = Math.hypot(r.x * d.x, r.z * d.z);
|
|
942
942
|
m.push({
|
|
@@ -998,8 +998,8 @@ function Be({ seed: e, size: t, detail: n = 5, sides: i = 6, notches: a, relief:
|
|
|
998
998
|
e.half.z
|
|
999
999
|
], t * 8));
|
|
1000
1000
|
let P = new Float64Array(g.length), F = b.x, I = b.z, L = (e, t, n) => {
|
|
1001
|
-
let r =
|
|
1002
|
-
for (let e = 0; e < g.length; e++) P[e] =
|
|
1001
|
+
let r = He(-p * .4, p * .4, e * F + n * I - x);
|
|
1002
|
+
for (let e = 0; e < g.length; e++) P[e] = He(-p * .3, p * .3, t - g[e]);
|
|
1003
1003
|
let i = -Infinity;
|
|
1004
1004
|
for (let a = 0; a < m.length; a++) {
|
|
1005
1005
|
let o = a * 4, s = 0;
|
|
@@ -1007,18 +1007,18 @@ function Be({ seed: e, size: t, detail: n = 5, sides: i = 6, notches: a, relief:
|
|
|
1007
1007
|
for (let e = 0; e < g.length; e++) s += j[a * g.length + e] * P[e];
|
|
1008
1008
|
s += M[a] * r;
|
|
1009
1009
|
}
|
|
1010
|
-
i =
|
|
1010
|
+
i = Ue(i, e * A[o] + t * A[o + 1] + n * A[o + 2] - (A[o + 3] + s), p);
|
|
1011
1011
|
}
|
|
1012
1012
|
for (let r = 0; r < O.length; r++) {
|
|
1013
1013
|
let a = r * 8, o = e - N[a], s = t - N[a + 1], c = n - N[a + 2], l = N[a + 3], u = N[a + 4], d = Math.abs(o * l + c * u) - N[a + 5], f = Math.abs(s) - N[a + 6], m = Math.abs(-o * u + c * l) - N[a + 7], h = d > 0 ? d : 0, g = f > 0 ? f : 0, _ = m > 0 ? m : 0, v = Math.min(Math.max(d, f, m), 0) + Math.sqrt(h * h + g * g + _ * _);
|
|
1014
|
-
i =
|
|
1014
|
+
i = Ue(i, -v, p * .6);
|
|
1015
1015
|
}
|
|
1016
1016
|
let a = e / f, s = t / f, c = n / f;
|
|
1017
|
-
return i -=
|
|
1018
|
-
}, R = (e) => L(e.x, e.y, e.z), { positions: z, indices: B } =
|
|
1017
|
+
return i -= Be(u, a * 2.2, s * 2.2, c * 2.2, 3, .5) * f * .007 * o, i -= Be(u, a * 9 + 7.1, s * 9 + 3.3, c * 9 - 2.2, 2, .5) * f * .004 * o, i;
|
|
1018
|
+
}, R = (e) => L(e.x, e.y, e.z), { positions: z, indices: B } = Ge(n), V = z.length / 3, H = new _(), U = new _(), W = d.length() * 1.5;
|
|
1019
1019
|
for (let e = 0; e < V; e++) {
|
|
1020
1020
|
H.fromArray(z, e * 3).multiply(d).normalize();
|
|
1021
|
-
let t =
|
|
1021
|
+
let t = W, n = W;
|
|
1022
1022
|
for (let e = 0; e < 200 && t > 0; e++) {
|
|
1023
1023
|
let e = R(U.copy(H).multiplyScalar(t));
|
|
1024
1024
|
if (e < 0) break;
|
|
@@ -1031,27 +1031,27 @@ function Be({ seed: e, size: t, detail: n = 5, sides: i = 6, notches: a, relief:
|
|
|
1031
1031
|
}
|
|
1032
1032
|
U.copy(H).multiplyScalar((r + i) / 2).toArray(z, e * 3);
|
|
1033
1033
|
}
|
|
1034
|
-
|
|
1035
|
-
let
|
|
1036
|
-
|
|
1037
|
-
let
|
|
1038
|
-
return
|
|
1039
|
-
mesh:
|
|
1034
|
+
We(z, B, R, 4);
|
|
1035
|
+
let G = new E();
|
|
1036
|
+
G.setAttribute("position", new C(z, 3)), G.setIndex(new C(B, 1)), G.computeVertexNormals(), G.setAttribute("aCavity", new C(Ke(G), 1)), G.computeBoundingBox(), G.computeBoundingSphere();
|
|
1037
|
+
let K = c === void 0 ? null : je(c), q = new r(G, K ?? void 0);
|
|
1038
|
+
return q.castShadow = !0, q.receiveShadow = !0, {
|
|
1039
|
+
mesh: q,
|
|
1040
1040
|
dispose() {
|
|
1041
|
-
|
|
1041
|
+
G.dispose(), K?.dispose();
|
|
1042
1042
|
}
|
|
1043
1043
|
};
|
|
1044
1044
|
}
|
|
1045
|
-
function
|
|
1045
|
+
function He(e, t, n) {
|
|
1046
1046
|
let r = Math.min(1, Math.max(0, (n - e) / (t - e)));
|
|
1047
1047
|
return r * r * (3 - 2 * r);
|
|
1048
1048
|
}
|
|
1049
|
-
function
|
|
1049
|
+
function Ue(e, t, n) {
|
|
1050
1050
|
if (e === -Infinity) return t;
|
|
1051
1051
|
let r = Math.min(1, Math.max(0, .5 - .5 * (t - e) / n));
|
|
1052
1052
|
return t + (e - t) * r + n * r * (1 - r);
|
|
1053
1053
|
}
|
|
1054
|
-
function
|
|
1054
|
+
function We(e, t, n, r) {
|
|
1055
1055
|
let i = e.length / 3, a = Array.from({ length: i }, () => []);
|
|
1056
1056
|
for (let e = 0; e < t.length; e += 3) for (let n = 0; n < 3; n++) {
|
|
1057
1057
|
let r = t[e + n], i = t[e + (n + 1) % 3];
|
|
@@ -1076,7 +1076,7 @@ function Ue(e, t, n, r) {
|
|
|
1076
1076
|
e.set(u);
|
|
1077
1077
|
}
|
|
1078
1078
|
}
|
|
1079
|
-
function
|
|
1079
|
+
function Ge(e) {
|
|
1080
1080
|
let t = (1 + Math.sqrt(5)) / 2, n = [
|
|
1081
1081
|
-1,
|
|
1082
1082
|
t,
|
|
@@ -1200,7 +1200,7 @@ function We(e) {
|
|
|
1200
1200
|
indices: new Uint32Array(r)
|
|
1201
1201
|
};
|
|
1202
1202
|
}
|
|
1203
|
-
function
|
|
1203
|
+
function Ke(e) {
|
|
1204
1204
|
let t = e.getAttribute("position"), n = e.getAttribute("normal"), r = e.getIndex(), i = t.count, a = Array.from({ length: i }, () => /* @__PURE__ */ new Set());
|
|
1205
1205
|
for (let e = 0; e < r.count; e += 3) {
|
|
1206
1206
|
let t = r.getX(e), n = r.getX(e + 1), i = r.getX(e + 2);
|
|
@@ -1226,12 +1226,12 @@ function Ge(e) {
|
|
|
1226
1226
|
return o;
|
|
1227
1227
|
}
|
|
1228
1228
|
// ../engine/src/set/crevice.ts
|
|
1229
|
-
function
|
|
1230
|
-
let r =
|
|
1229
|
+
function qe({ seed: e, color: t, subject: n }) {
|
|
1230
|
+
let r = Fe(e * 7919 + 13), i = new P();
|
|
1231
1231
|
i.name = "set:crevice";
|
|
1232
|
-
let a =
|
|
1232
|
+
let a = je(t), o = [], s = n.getCenter(new _()), l = n.getSize(new _()), u = l.x + Math.max(1.2, l.x * .18) * 2, d = Math.max(l.y * 4.2, u * 6.3), f = u * 3.1, p = Math.max(u * 3, l.z * 6), m = s.y - d * .3;
|
|
1233
1233
|
for (let t of [-1, 1]) {
|
|
1234
|
-
let n =
|
|
1234
|
+
let n = Ve({
|
|
1235
1235
|
seed: e * 31 + (t < 0 ? 1 : 2),
|
|
1236
1236
|
size: [
|
|
1237
1237
|
f * (.9 + r() * .2),
|
|
@@ -1242,12 +1242,12 @@ function Ke({ seed: e, color: t, subject: n }) {
|
|
|
1242
1242
|
n.mesh.material = a;
|
|
1243
1243
|
let c = n.mesh;
|
|
1244
1244
|
c.rotation.set((r() - .5) * .06, (r() - .5) * .5, -t * (.05 + r() * .04)), c.position.set(s.x + t * (u / 2 + f / 2), m + d / 2, s.z - p * .28), c.updateMatrixWorld(!0);
|
|
1245
|
-
let h =
|
|
1245
|
+
let h = Je(c, t, s, l);
|
|
1246
1246
|
h !== null && (c.position.x += s.x + u / 2 * t - h), i.add(c), o.push(n);
|
|
1247
1247
|
}
|
|
1248
1248
|
let h = u * .9;
|
|
1249
1249
|
for (let [t, c] of [[-1, -.3], [1, .35]]) {
|
|
1250
|
-
let d =
|
|
1250
|
+
let d = Ve({
|
|
1251
1251
|
seed: e * 31 + (t < 0 ? 4 : 5),
|
|
1252
1252
|
size: [
|
|
1253
1253
|
u * 1.5,
|
|
@@ -1260,10 +1260,10 @@ function Ke({ seed: e, color: t, subject: n }) {
|
|
|
1260
1260
|
detail: 4
|
|
1261
1261
|
});
|
|
1262
1262
|
d.mesh.material = a, d.mesh.rotation.set((r() - .5) * .1, (r() - .5) * .5, -t * (.04 + r() * .06)), d.mesh.position.set(s.x + t * (l.x / 2 + u * .75 - .5), s.y + c * l.y, n.max.z + h * .5 + .8), d.mesh.updateMatrixWorld(!0);
|
|
1263
|
-
let f =
|
|
1263
|
+
let f = Ye(d.mesh);
|
|
1264
1264
|
f !== null && f < n.max.z + .4 && (d.mesh.position.z += n.max.z + .4 - f), i.add(d.mesh), o.push(d);
|
|
1265
1265
|
}
|
|
1266
|
-
let g =
|
|
1266
|
+
let g = Ve({
|
|
1267
1267
|
seed: e * 31 + 3,
|
|
1268
1268
|
size: [
|
|
1269
1269
|
u * 2.2,
|
|
@@ -1277,7 +1277,7 @@ function Ke({ seed: e, color: t, subject: n }) {
|
|
|
1277
1277
|
detail: 4
|
|
1278
1278
|
});
|
|
1279
1279
|
g.mesh.material = a, g.mesh.rotation.set(0, (r() - .5) * .6, (r() - .5) * .15), g.mesh.position.set(s.x, n.min.y, s.z - p * .08), g.mesh.updateMatrixWorld(!0);
|
|
1280
|
-
let v =
|
|
1280
|
+
let v = Xe(g.mesh, s, l);
|
|
1281
1281
|
v !== null && (g.mesh.position.y += n.min.y - .15 - v), i.add(g.mesh), o.push(g);
|
|
1282
1282
|
let y = d, b = new c(15001584, 1, y * 4, .36, .95, 2);
|
|
1283
1283
|
b.position.set(s.x - y * .7, s.y + y * 1.15, s.z + y * .4), b.target.position.copy(s), b.castShadow = !0, b.shadow.mapSize.set(2048, 2048), b.shadow.camera.near = y * .3, b.shadow.camera.far = y * 3, b.shadow.radius = 3, b.shadow.blurSamples = 12, b.shadow.bias = -2e-4, b.shadow.normalBias = .6;
|
|
@@ -1298,37 +1298,37 @@ function Ke({ seed: e, color: t, subject: n }) {
|
|
|
1298
1298
|
};
|
|
1299
1299
|
}
|
|
1300
1300
|
var Q = new _();
|
|
1301
|
-
function
|
|
1301
|
+
function Je(e, t, n, r) {
|
|
1302
1302
|
let i = e.geometry.getAttribute("position"), a = null;
|
|
1303
1303
|
for (let o = 0; o < i.count; o++) Q.fromBufferAttribute(i, o).applyMatrix4(e.matrixWorld), !(Math.abs(Q.y - n.y) > r.y * .6 || Math.abs(Q.z - n.z) > Math.max(r.z * 2, 3)) && (a === null || (t < 0 ? Q.x > a : Q.x < a)) && (a = Q.x);
|
|
1304
1304
|
return a;
|
|
1305
1305
|
}
|
|
1306
|
-
function
|
|
1306
|
+
function Ye(e) {
|
|
1307
1307
|
let t = e.geometry.getAttribute("position"), n = null;
|
|
1308
1308
|
for (let r = 0; r < t.count; r++) Q.fromBufferAttribute(t, r).applyMatrix4(e.matrixWorld), (n === null || Q.z < n) && (n = Q.z);
|
|
1309
1309
|
return n;
|
|
1310
1310
|
}
|
|
1311
|
-
function
|
|
1311
|
+
function Xe(e, t, n) {
|
|
1312
1312
|
let r = e.geometry.getAttribute("position"), i = null;
|
|
1313
1313
|
for (let a = 0; a < r.count; a++) Q.fromBufferAttribute(r, a).applyMatrix4(e.matrixWorld), !(Math.abs(Q.x - t.x) > n.x * .5 || Math.abs(Q.z - t.z) > Math.max(n.z, 1)) && (i === null || Q.y > i) && (i = Q.y);
|
|
1314
1314
|
return i;
|
|
1315
1315
|
}
|
|
1316
1316
|
// ../engine/src/set/index.ts
|
|
1317
|
-
var
|
|
1318
|
-
crevice:
|
|
1319
|
-
block:
|
|
1317
|
+
var Ze = {
|
|
1318
|
+
crevice: qe,
|
|
1319
|
+
block: Pe
|
|
1320
1320
|
};
|
|
1321
|
-
function
|
|
1322
|
-
let n =
|
|
1321
|
+
function Qe(e, t) {
|
|
1322
|
+
let n = Ze[e];
|
|
1323
1323
|
return n ? n(t) : null;
|
|
1324
1324
|
}
|
|
1325
1325
|
// ../engine/src/engine.ts
|
|
1326
|
-
var
|
|
1326
|
+
var $e = 2.35, et = Math.PI / 180, tt = {
|
|
1327
1327
|
kind: "gradient",
|
|
1328
1328
|
inner: "#f6f6f4",
|
|
1329
1329
|
outer: "#d5d5d1",
|
|
1330
1330
|
tone: "light"
|
|
1331
|
-
},
|
|
1331
|
+
}, nt = {
|
|
1332
1332
|
fisheye: 0,
|
|
1333
1333
|
chromatic: 0,
|
|
1334
1334
|
vignette: 0,
|
|
@@ -1338,27 +1338,27 @@ var Qe = 2.35, $e = Math.PI / 180, et = {
|
|
|
1338
1338
|
focus: 0,
|
|
1339
1339
|
fade: 0
|
|
1340
1340
|
};
|
|
1341
|
-
function
|
|
1341
|
+
function rt(e) {
|
|
1342
1342
|
return e.kind === "image" && e.image ? JSON.stringify(e.image) : null;
|
|
1343
1343
|
}
|
|
1344
|
-
function
|
|
1344
|
+
function it({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
1345
1345
|
let r = new O({
|
|
1346
1346
|
canvas: e,
|
|
1347
1347
|
antialias: !0,
|
|
1348
1348
|
alpha: t
|
|
1349
1349
|
}), o = typeof window < "u" ? window.devicePixelRatio : 1;
|
|
1350
1350
|
r.setPixelRatio(n === "export" ? 1 : Math.min(o, 2)), r.setClearColor(0, 0), r.autoClear = !1, r.toneMapping = 7, r.shadowMap.enabled = !0, r.shadowMap.type = 3;
|
|
1351
|
-
let s = new I(), c = "studio", u =
|
|
1351
|
+
let s = new I(), c = "studio", u = de(r, c);
|
|
1352
1352
|
s.environment = u;
|
|
1353
1353
|
let d = new l(28, 1, 5, 300);
|
|
1354
1354
|
d.position.set(0, 1.5, 48);
|
|
1355
|
-
let f =
|
|
1355
|
+
let f = he(s, -10.5), p = ie(), m = Ae(r, n === "export" ? 8 : 4), h = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), y = 0, b = tt, x = nt, S = null, C = null, w = 0, T = new v(), E = 0, D = null, k = "", j = new _(), M = new _(), N = ge(r), F = [], L = new _();
|
|
1356
1356
|
function R(e) {
|
|
1357
1357
|
let t = u;
|
|
1358
|
-
c = e, u =
|
|
1358
|
+
c = e, u = de(r, e), s.environment = u, t.dispose(), f.light.shadow.radius = le[e].shadow.radius;
|
|
1359
1359
|
}
|
|
1360
|
-
async function
|
|
1361
|
-
let n =
|
|
1360
|
+
async function B(e, t) {
|
|
1361
|
+
let n = rt(e);
|
|
1362
1362
|
if (n === S) return null;
|
|
1363
1363
|
let i = ++w, a = null;
|
|
1364
1364
|
return e.image && n && t.resolveBackdrop && (a = await Promise.resolve(t.resolveBackdrop(e.image, { maxAnisotropy: r.capabilities.getMaxAnisotropy() })).catch(() => null)), () => {
|
|
@@ -1366,16 +1366,16 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1366
1366
|
C?.dispose(), C = a, S = n, p.setImage(a?.texture ?? null, a?.aspect);
|
|
1367
1367
|
};
|
|
1368
1368
|
}
|
|
1369
|
-
function
|
|
1369
|
+
function V() {
|
|
1370
1370
|
let e = Infinity;
|
|
1371
1371
|
for (let { build: t, root: n } of h.values()) {
|
|
1372
1372
|
let r = t.bounds.min.y * n.scale.y + n.position.y;
|
|
1373
|
-
e = Math.min(e, r - (t.restsOnFloor ? 0 :
|
|
1373
|
+
e = Math.min(e, r - (t.restsOnFloor ? 0 : $e));
|
|
1374
1374
|
}
|
|
1375
1375
|
return Number.isFinite(e) ? e : null;
|
|
1376
1376
|
}
|
|
1377
|
-
function
|
|
1378
|
-
let e =
|
|
1377
|
+
function H() {
|
|
1378
|
+
let e = V();
|
|
1379
1379
|
e !== null && f.setY(e);
|
|
1380
1380
|
let t = 0;
|
|
1381
1381
|
for (let { build: e, root: n } of h.values()) {
|
|
@@ -1384,10 +1384,10 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1384
1384
|
}
|
|
1385
1385
|
t > 0 && f.fit(t);
|
|
1386
1386
|
}
|
|
1387
|
-
function
|
|
1388
|
-
|
|
1387
|
+
function U() {
|
|
1388
|
+
te.forceLensPath || Oe(x) ? m.render(s, d, p, b, x, [f.ground], E) : (r.setRenderTarget(null), r.clear(), p.render(r, b), r.render(s, d));
|
|
1389
1389
|
}
|
|
1390
|
-
function
|
|
1390
|
+
function W(e, t = `device-${++y}`) {
|
|
1391
1391
|
let n = new P(), r = new P();
|
|
1392
1392
|
n.add(r), r.add(e.group);
|
|
1393
1393
|
for (let t of e.screens) t.mesh.layers.enable(1);
|
|
@@ -1398,34 +1398,34 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1398
1398
|
offset: r,
|
|
1399
1399
|
build: e
|
|
1400
1400
|
};
|
|
1401
|
-
return h.set(t, i),
|
|
1401
|
+
return h.set(t, i), H(), i;
|
|
1402
1402
|
}
|
|
1403
|
-
function
|
|
1403
|
+
function G(e) {
|
|
1404
1404
|
let t = h.get(e);
|
|
1405
|
-
t && (s.remove(t.root), t.build.dispose(), h.delete(e),
|
|
1405
|
+
t && (s.remove(t.root), t.build.dispose(), h.delete(e), H());
|
|
1406
1406
|
}
|
|
1407
|
-
function
|
|
1407
|
+
function K() {
|
|
1408
1408
|
let e = new A();
|
|
1409
1409
|
for (let { build: t, root: n } of h.values()) n.visible && e.union(t.bounds.clone().applyMatrix4(new i().compose(n.position, new a(), n.scale)));
|
|
1410
1410
|
return e.isEmpty() ? null : e;
|
|
1411
1411
|
}
|
|
1412
|
-
function
|
|
1413
|
-
let t = e.set?.kind ?? "none", n = t === "none" ? null :
|
|
1412
|
+
function q(e) {
|
|
1413
|
+
let t = e.set?.kind ?? "none", n = t === "none" ? null : K();
|
|
1414
1414
|
if (t !== "none" && !n) return;
|
|
1415
1415
|
let r = n ? n.getSize(M).toArray().map((e) => e.toFixed(1)).join(",") : "", i = `${t}:${e.set?.seed}:${r}`;
|
|
1416
|
-
i === k ? D && n && D.group.position.copy(n.getCenter(M)).sub(j) : (k = i, D && (s.remove(D.group), D.dispose()), D = n ?
|
|
1416
|
+
i === k ? D && n && D.group.position.copy(n.getCenter(M)).sub(j) : (k = i, D && (s.remove(D.group), D.dispose()), D = n ? Qe(t, {
|
|
1417
1417
|
seed: e.set.seed,
|
|
1418
1418
|
color: e.set.color,
|
|
1419
1419
|
subject: n
|
|
1420
1420
|
}) : null, n && n.getCenter(j), D && s.add(D.group));
|
|
1421
1421
|
}
|
|
1422
|
-
function
|
|
1422
|
+
function ee(e, { skipCamera: t = !1 } = {}) {
|
|
1423
1423
|
E = e.time;
|
|
1424
1424
|
for (let [t, n] of h) {
|
|
1425
1425
|
let r = e.devices[t];
|
|
1426
1426
|
if (!r) n.root.visible = !1;
|
|
1427
1427
|
else {
|
|
1428
|
-
n.root.visible = r.visible, n.root.position.set(r.position[0], r.position[1], r.position[2]), n.root.rotation.set(r.rotation[0] *
|
|
1428
|
+
n.root.visible = r.visible, n.root.position.set(r.position[0], r.position[1], r.position[2]), n.root.rotation.set(r.rotation[0] * et, r.rotation[1] * et, r.rotation[2] * et), n.root.scale.setScalar(r.scale);
|
|
1429
1429
|
for (let [e, t] of Object.entries(r.params)) n.build.setParam(e, t);
|
|
1430
1430
|
n.build.setGlare(r.glare, r.screenFinish);
|
|
1431
1431
|
}
|
|
@@ -1438,12 +1438,12 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1438
1438
|
};
|
|
1439
1439
|
}
|
|
1440
1440
|
b = e.backdrop;
|
|
1441
|
-
let n =
|
|
1442
|
-
n !== c && R(n), s.environmentIntensity = e.environment.intensity, s.environmentRotation.y = e.environment.rotation *
|
|
1443
|
-
let r = Math.min(1, e.floor.shadow *
|
|
1444
|
-
f.setOpacity(r), f.setY(e.floor.y ??
|
|
1441
|
+
let n = ue(e.environment.preset);
|
|
1442
|
+
n !== c && R(n), s.environmentIntensity = e.environment.intensity, s.environmentRotation.y = e.environment.rotation * et;
|
|
1443
|
+
let r = Math.min(1, e.floor.shadow * le[c].shadow.opacity);
|
|
1444
|
+
f.setOpacity(r), f.setY(e.floor.y ?? V() ?? f.ground.position.y), q(e), f.setVisible(!D && r > 0), D?.update(e.set, e.environment.intensity), N.update(F, e.environment.glow ?? 0);
|
|
1445
1445
|
}
|
|
1446
|
-
let
|
|
1446
|
+
let te = {
|
|
1447
1447
|
renderer: r,
|
|
1448
1448
|
scene: s,
|
|
1449
1449
|
camera: d,
|
|
@@ -1452,8 +1452,8 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1452
1452
|
screenSources: g,
|
|
1453
1453
|
maxAnisotropy: r.capabilities.getMaxAnisotropy(),
|
|
1454
1454
|
forceLensPath: !1,
|
|
1455
|
-
addDevice:
|
|
1456
|
-
removeDevice:
|
|
1455
|
+
addDevice: W,
|
|
1456
|
+
removeDevice: G,
|
|
1457
1457
|
async loadScene(e, t) {
|
|
1458
1458
|
let n = new Map(e.screens.map((e) => [e.id, e])), i = [];
|
|
1459
1459
|
for (let a of e.devices) {
|
|
@@ -1470,7 +1470,7 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1470
1470
|
source: u,
|
|
1471
1471
|
surface: s,
|
|
1472
1472
|
fit: l.fit,
|
|
1473
|
-
pan:
|
|
1473
|
+
pan: z(l.offset)
|
|
1474
1474
|
});
|
|
1475
1475
|
}
|
|
1476
1476
|
i.push({
|
|
@@ -1479,12 +1479,12 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1479
1479
|
sources: o
|
|
1480
1480
|
});
|
|
1481
1481
|
}
|
|
1482
|
-
let a = await
|
|
1483
|
-
for (let e of [...h.keys()])
|
|
1482
|
+
let a = await B(e.backdrop, t);
|
|
1483
|
+
for (let e of [...h.keys()]) G(e);
|
|
1484
1484
|
for (let e of g.values()) e.dispose();
|
|
1485
1485
|
g.clear(), F = [];
|
|
1486
1486
|
for (let { deviceDoc: e, build: t, sources: n } of i) {
|
|
1487
|
-
|
|
1487
|
+
W(t, e.id);
|
|
1488
1488
|
for (let { screenId: e, source: t, surface: r, fit: i, pan: a } of n) g.set(e, t), r.setTexture(t.texture, t.aspect, i, a);
|
|
1489
1489
|
for (let e of t.screens) F.push({
|
|
1490
1490
|
surface: e,
|
|
@@ -1494,12 +1494,12 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1494
1494
|
a?.();
|
|
1495
1495
|
},
|
|
1496
1496
|
async loadBackdrop(e, t) {
|
|
1497
|
-
(await
|
|
1497
|
+
(await B(e, t))?.();
|
|
1498
1498
|
},
|
|
1499
1499
|
setSize(e, t) {
|
|
1500
1500
|
r.setSize(e, t, !1), r.getDrawingBufferSize(T), m.setSize(T.x, T.y), d.aspect = e / t, d.updateProjectionMatrix();
|
|
1501
1501
|
},
|
|
1502
|
-
applyState:
|
|
1502
|
+
applyState: ee,
|
|
1503
1503
|
async prepareFrame(e) {
|
|
1504
1504
|
let t = [];
|
|
1505
1505
|
for (let [n, r] of g) {
|
|
@@ -1508,15 +1508,15 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1508
1508
|
}
|
|
1509
1509
|
await Promise.all(t);
|
|
1510
1510
|
},
|
|
1511
|
-
render:
|
|
1511
|
+
render: U,
|
|
1512
1512
|
renderFrame(e, t) {
|
|
1513
|
-
|
|
1513
|
+
ee(e, t), U();
|
|
1514
1514
|
},
|
|
1515
1515
|
start(e) {
|
|
1516
1516
|
let t = performance.now();
|
|
1517
1517
|
r.setAnimationLoop((n) => {
|
|
1518
1518
|
let r = Math.min((n - t) / 1e3, .05);
|
|
1519
|
-
t = n, e?.(n, r),
|
|
1519
|
+
t = n, e?.(n, r), U();
|
|
1520
1520
|
});
|
|
1521
1521
|
},
|
|
1522
1522
|
stop() {
|
|
@@ -1524,38 +1524,38 @@ function rt({ canvas: e, alpha: t = !0, quality: n = "preview" }) {
|
|
|
1524
1524
|
},
|
|
1525
1525
|
renderToCanvas(e) {
|
|
1526
1526
|
let t = r.getPixelRatio();
|
|
1527
|
-
r.setPixelRatio(t * e), r.getDrawingBufferSize(T), m.setSize(T.x, T.y),
|
|
1527
|
+
r.setPixelRatio(t * e), r.getDrawingBufferSize(T), m.setSize(T.x, T.y), U();
|
|
1528
1528
|
let n = document.createElement("canvas");
|
|
1529
|
-
return n.width = r.domElement.width, n.height = r.domElement.height, n.getContext("2d")?.drawImage(r.domElement, 0, 0), r.setPixelRatio(t), r.getDrawingBufferSize(T), m.setSize(T.x, T.y),
|
|
1529
|
+
return n.width = r.domElement.width, n.height = r.domElement.height, n.getContext("2d")?.drawImage(r.domElement, 0, 0), r.setPixelRatio(t), r.getDrawingBufferSize(T), m.setSize(T.x, T.y), U(), n;
|
|
1530
1530
|
},
|
|
1531
1531
|
dispose() {
|
|
1532
1532
|
r.setAnimationLoop(null);
|
|
1533
|
-
for (let e of [...h.keys()])
|
|
1533
|
+
for (let e of [...h.keys()]) G(e);
|
|
1534
1534
|
for (let e of g.values()) e.dispose();
|
|
1535
1535
|
g.clear(), C?.dispose(), D?.dispose(), N.dispose(), f.dispose(), p.dispose(), m.dispose(), u.dispose(), r.dispose();
|
|
1536
1536
|
}
|
|
1537
1537
|
};
|
|
1538
|
-
return
|
|
1538
|
+
return te;
|
|
1539
1539
|
}
|
|
1540
1540
|
// ../engine/src/media/video.ts
|
|
1541
|
-
var
|
|
1542
|
-
function
|
|
1541
|
+
var at = .0625, ot = 16;
|
|
1542
|
+
function st(e) {
|
|
1543
1543
|
return {
|
|
1544
1544
|
start: e?.start,
|
|
1545
1545
|
playbackRate: e?.playbackRate,
|
|
1546
1546
|
loop: e?.loop
|
|
1547
1547
|
};
|
|
1548
1548
|
}
|
|
1549
|
-
function
|
|
1550
|
-
let r = Number.isFinite(t) && t > 0 ? Math.min(
|
|
1549
|
+
function ct({ start: e = 0, playbackRate: t = 1, loop: n = !0 } = {}) {
|
|
1550
|
+
let r = Number.isFinite(t) && t > 0 ? Math.min(ot, Math.max(at, t)) : 1;
|
|
1551
1551
|
return {
|
|
1552
1552
|
delayMs: Number.isFinite(e) && e > 0 ? e * 1e3 : 0,
|
|
1553
1553
|
rate: r,
|
|
1554
1554
|
loop: n
|
|
1555
1555
|
};
|
|
1556
1556
|
}
|
|
1557
|
-
function
|
|
1558
|
-
let { delayMs: n, rate: r, loop: i } =
|
|
1557
|
+
function lt(e, t = {}) {
|
|
1558
|
+
let { delayMs: n, rate: r, loop: i } = ct(t);
|
|
1559
1559
|
e.loop = i, e.defaultPlaybackRate = r, e.playbackRate = r;
|
|
1560
1560
|
let a, o, s = () => {
|
|
1561
1561
|
a = void 0, e.play().catch(() => {
|
|
@@ -1567,23 +1567,23 @@ function ct(e, t = {}) {
|
|
|
1567
1567
|
};
|
|
1568
1568
|
}
|
|
1569
1569
|
// ../engine/src/media/file.ts
|
|
1570
|
-
function
|
|
1570
|
+
function ut(e, t) {
|
|
1571
1571
|
return e.colorSpace = p, e.anisotropy = t, e;
|
|
1572
1572
|
}
|
|
1573
1573
|
// ../engine/src/media/sample.ts
|
|
1574
|
-
function
|
|
1574
|
+
function dt(e, t) {
|
|
1575
1575
|
let n = e > 1, r = n ? 2048 : 1179, i = Math.round(r / e), a = document.createElement("canvas");
|
|
1576
1576
|
a.width = r, a.height = i;
|
|
1577
1577
|
let o = a.getContext("2d");
|
|
1578
|
-
o && (n ?
|
|
1579
|
-
let s =
|
|
1578
|
+
o && (n ? ft : pt)(o, r, i);
|
|
1579
|
+
let s = ut(new M(a), t);
|
|
1580
1580
|
return {
|
|
1581
1581
|
texture: s,
|
|
1582
1582
|
aspect: r / i,
|
|
1583
1583
|
dispose: () => s.dispose()
|
|
1584
1584
|
};
|
|
1585
1585
|
}
|
|
1586
|
-
function
|
|
1586
|
+
function ft(e, t, n) {
|
|
1587
1587
|
let r = (e, t) => `${e} ${t}px ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`;
|
|
1588
1588
|
e.textBaseline = "middle";
|
|
1589
1589
|
let i = e.createLinearGradient(0, 0, t, n);
|
|
@@ -1652,7 +1652,7 @@ function dt(e, t, n) {
|
|
|
1652
1652
|
e.lineWidth = f * .32, e.lineCap = "round", e.strokeStyle = "rgba(255,255,255,0.1)", e.beginPath(), e.arc(u, d, f, 0, Math.PI * 2), e.stroke(), e.strokeStyle = a, e.beginPath(), e.arc(u, d, f, -Math.PI / 2, -Math.PI / 2 + Math.PI * 2 * i), e.stroke();
|
|
1653
1653
|
});
|
|
1654
1654
|
}
|
|
1655
|
-
function
|
|
1655
|
+
function pt(e, t, n) {
|
|
1656
1656
|
let r = (e, t) => `${e} ${t}px ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`;
|
|
1657
1657
|
e.textBaseline = "middle";
|
|
1658
1658
|
let i = e.createLinearGradient(0, 0, 0, n);
|
|
@@ -1724,8 +1724,8 @@ function ft(e, t, n) {
|
|
|
1724
1724
|
e.fillStyle = "rgba(255, 255, 255, 0.85)", e.beginPath(), e.roundRect(t / 2 - 140, n - 46, 280, 12, 6), e.fill();
|
|
1725
1725
|
}
|
|
1726
1726
|
// ../engine/src/interaction.ts
|
|
1727
|
-
function
|
|
1728
|
-
let a = 0, o = 0, s = 0, c = !1, l = 1, u = !1, d = 0, f = 0, p =
|
|
1727
|
+
function mt({ engine: e, element: t, getDoc: n, overrides: r, onTime: i }) {
|
|
1728
|
+
let a = 0, o = 0, s = 0, c = !1, l = 1, u = !1, d = 0, f = 0, p = B, m = B, h = null, g = null, _ = null, v = () => ({
|
|
1729
1729
|
...n().interaction,
|
|
1730
1730
|
...r,
|
|
1731
1731
|
cursor: {
|
|
@@ -1736,7 +1736,7 @@ function pt({ engine: e, element: t, getDoc: n, overrides: r, onTime: i }) {
|
|
|
1736
1736
|
function y(e) {
|
|
1737
1737
|
return g && g.timeline === e.timeline || (g = {
|
|
1738
1738
|
timeline: e.timeline,
|
|
1739
|
-
compiled:
|
|
1739
|
+
compiled: L(e.timeline)
|
|
1740
1740
|
}), g.compiled;
|
|
1741
1741
|
}
|
|
1742
1742
|
function b(e, t, n) {
|
|
@@ -1768,19 +1768,19 @@ function pt({ engine: e, element: t, getDoc: n, overrides: r, onTime: i }) {
|
|
|
1768
1768
|
}
|
|
1769
1769
|
function C(t) {
|
|
1770
1770
|
a = requestAnimationFrame(C);
|
|
1771
|
-
let
|
|
1771
|
+
let s = Math.min((t - o) / 1e3, .05) || 0;
|
|
1772
1772
|
o = t;
|
|
1773
|
-
let
|
|
1774
|
-
m =
|
|
1773
|
+
let c = n(), l = v();
|
|
1774
|
+
m = V(m, p, s, l.cursor.smoothing), p = {
|
|
1775
1775
|
...p,
|
|
1776
|
-
speed: p.speed * Math.exp(-
|
|
1776
|
+
speed: p.speed * Math.exp(-s * 6)
|
|
1777
1777
|
};
|
|
1778
|
-
let
|
|
1779
|
-
i?.(
|
|
1780
|
-
let
|
|
1781
|
-
|
|
1782
|
-
let
|
|
1783
|
-
|
|
1778
|
+
let u = x(s, c, l);
|
|
1779
|
+
i?.(u);
|
|
1780
|
+
let d = c.scene.devices.map((e) => e.id), f = [];
|
|
1781
|
+
c.interaction.idle.float > 0 && f.push(K(t / 1e3, c.interaction.idle.float, d));
|
|
1782
|
+
let h = R(c, u, [], y(c));
|
|
1783
|
+
f.push(q(m, l.cursor, t / 1e3, d, h.camera)), r?.cameraZoom && f.push(W(r.cameraZoom, h.camera)), e.renderFrame(R(c, u, f, y(c)));
|
|
1784
1784
|
}
|
|
1785
1785
|
let w = (e) => {
|
|
1786
1786
|
let n = t.getBoundingClientRect(), r = (e.clientX - n.left) / n.width * 2 - 1, i = -((e.clientY - n.top) / n.height * 2 - 1), a = performance.now(), o = p.speed;
|
|
@@ -1798,7 +1798,7 @@ function pt({ engine: e, element: t, getDoc: n, overrides: r, onTime: i }) {
|
|
|
1798
1798
|
speed: o
|
|
1799
1799
|
};
|
|
1800
1800
|
}, T = () => {
|
|
1801
|
-
p =
|
|
1801
|
+
p = B, h = null, u = !1;
|
|
1802
1802
|
let e = v();
|
|
1803
1803
|
e.trigger === "hover" && (e.hover?.reverseOnLeave ?? !0 ? (l = -1, c = !0) : c = !1);
|
|
1804
1804
|
}, E = () => {
|
|
@@ -1826,35 +1826,35 @@ function pt({ engine: e, element: t, getDoc: n, overrides: r, onTime: i }) {
|
|
|
1826
1826
|
};
|
|
1827
1827
|
}
|
|
1828
1828
|
// ../devices/src/registry.ts
|
|
1829
|
-
var
|
|
1830
|
-
phone: () => import("./device-phone-
|
|
1831
|
-
tablet: () => import("./device-tablet-
|
|
1832
|
-
laptop: () => import("./device-laptop-
|
|
1833
|
-
monitor: () => import("./device-monitor-
|
|
1834
|
-
watch: () => import("./device-watch-
|
|
1835
|
-
},
|
|
1836
|
-
function gt(e) {
|
|
1837
|
-
let t = ht.get(e);
|
|
1838
|
-
return t || (t = mt[e](), ht.set(e, t)), t;
|
|
1839
|
-
}
|
|
1829
|
+
var ht = {
|
|
1830
|
+
phone: () => import("./device-phone-DxWL5LkW.js").then((e) => e.t).then((e) => e.phone),
|
|
1831
|
+
tablet: () => import("./device-tablet-B1JOR7Rf.js").then((e) => e.t).then((e) => e.tablet),
|
|
1832
|
+
laptop: () => import("./device-laptop-DlKLhrO9.js").then((e) => e.t).then((e) => e.laptop),
|
|
1833
|
+
monitor: () => import("./device-monitor-BkXp8a-n.js").then((e) => e.t).then((e) => e.monitor),
|
|
1834
|
+
watch: () => import("./device-watch-9Y7wuyPn.js").then((e) => e.t).then((e) => e.watch)
|
|
1835
|
+
}, gt = /* @__PURE__ */ new Map();
|
|
1840
1836
|
function _t(e) {
|
|
1837
|
+
let t = gt.get(e);
|
|
1838
|
+
return t || (t = ht[e](), gt.set(e, t)), t;
|
|
1839
|
+
}
|
|
1840
|
+
function vt(e) {
|
|
1841
1841
|
let t = e.split(".")[0];
|
|
1842
|
-
if (!(t in
|
|
1842
|
+
if (!(t in ht)) throw Error(`Unknown device spec '${e}'`);
|
|
1843
1843
|
return t;
|
|
1844
1844
|
}
|
|
1845
|
-
function
|
|
1845
|
+
function yt(e, t, n) {
|
|
1846
1846
|
if (typeof n != "string") return n;
|
|
1847
1847
|
let r = e.finishes[n] ?? e.finishes[t.finishes[0] ?? ""];
|
|
1848
1848
|
if (!r) throw Error(`Device '${t.id}' has no finishes`);
|
|
1849
1849
|
return r;
|
|
1850
1850
|
}
|
|
1851
|
-
async function
|
|
1852
|
-
let r = await
|
|
1851
|
+
async function bt(e, t, n = "high") {
|
|
1852
|
+
let r = await _t(vt(e)), i = r.specs[e];
|
|
1853
1853
|
if (!i) throw Error(`Unknown device spec '${e}'`);
|
|
1854
|
-
return
|
|
1854
|
+
return U(r.build(i, yt(r, i, t), n));
|
|
1855
1855
|
}
|
|
1856
1856
|
// src/media.ts
|
|
1857
|
-
function
|
|
1857
|
+
function xt(e, t) {
|
|
1858
1858
|
try {
|
|
1859
1859
|
return new URL(e, t).href;
|
|
1860
1860
|
} catch {
|
|
@@ -1864,19 +1864,19 @@ function bt(e, t) {
|
|
|
1864
1864
|
async function $(e, t) {
|
|
1865
1865
|
let n = new Image();
|
|
1866
1866
|
n.crossOrigin = "anonymous", n.src = e, await n.decode();
|
|
1867
|
-
let r =
|
|
1867
|
+
let r = ut(new k(n), t);
|
|
1868
1868
|
return r.needsUpdate = !0, {
|
|
1869
1869
|
texture: r,
|
|
1870
1870
|
aspect: n.naturalWidth / n.naturalHeight,
|
|
1871
1871
|
dispose: () => r.dispose()
|
|
1872
1872
|
};
|
|
1873
1873
|
}
|
|
1874
|
-
async function
|
|
1874
|
+
async function St(e, t, n) {
|
|
1875
1875
|
let r = document.createElement("video");
|
|
1876
1876
|
r.crossOrigin = "anonymous", r.muted = !0, r.playsInline = !0, r.preload = "auto", r.src = e, await new Promise((t, n) => {
|
|
1877
1877
|
r.addEventListener("loadedmetadata", () => t(), { once: !0 }), r.addEventListener("error", () => n(/* @__PURE__ */ Error(`Video failed: ${e}`)), { once: !0 });
|
|
1878
1878
|
});
|
|
1879
|
-
let i =
|
|
1879
|
+
let i = lt(r, st(n.video)), a = ut(new y(r), t);
|
|
1880
1880
|
return {
|
|
1881
1881
|
texture: a,
|
|
1882
1882
|
aspect: r.videoWidth / r.videoHeight,
|
|
@@ -1886,62 +1886,71 @@ async function xt(e, t, n) {
|
|
|
1886
1886
|
}
|
|
1887
1887
|
};
|
|
1888
1888
|
}
|
|
1889
|
-
function
|
|
1889
|
+
function Ct(e, t, n) {
|
|
1890
1890
|
return {
|
|
1891
|
-
buildDevice: (e) =>
|
|
1891
|
+
buildDevice: (e) => bt(e.spec, e.finish, t),
|
|
1892
1892
|
async resolveScreen(t, r, { maxAnisotropy: i, screenAspect: a }) {
|
|
1893
1893
|
let o = t.media;
|
|
1894
|
-
if (n) return t.poster ? $(t.poster, i).catch(() =>
|
|
1895
|
-
if (!o) return
|
|
1894
|
+
if (n) return t.poster ? $(t.poster, i).catch(() => dt(a, i)) : o?.source === "url" && o.kind === "image" ? $(xt(o.url, e), i).catch(() => null) : dt(a, i);
|
|
1895
|
+
if (!o) return dt(a, i);
|
|
1896
1896
|
if (o.source === "data") return $(o.dataUrl, i);
|
|
1897
1897
|
if (o.source === "url") {
|
|
1898
|
-
let n =
|
|
1899
|
-
return o.kind === "video" ?
|
|
1898
|
+
let n = xt(o.url, e);
|
|
1899
|
+
return o.kind === "video" ? St(n, i, t) : $(n, i);
|
|
1900
1900
|
}
|
|
1901
|
-
return
|
|
1901
|
+
return dt(a, i);
|
|
1902
1902
|
},
|
|
1903
1903
|
async resolveBackdrop(t, { maxAnisotropy: r }) {
|
|
1904
|
-
return n || t.kind !== "image" || t.source === "idb" ? null : $(t.source === "data" ? t.dataUrl :
|
|
1904
|
+
return n || t.kind !== "image" || t.source === "idb" ? null : $(t.source === "data" ? t.dataUrl : xt(t.url, e), r);
|
|
1905
1905
|
}
|
|
1906
1906
|
};
|
|
1907
1907
|
}
|
|
1908
1908
|
// src/runtime.ts
|
|
1909
|
-
var
|
|
1909
|
+
var wt = /* @__PURE__ */ e({ mount: () => Dt }), Tt = (e) => {
|
|
1910
1910
|
let t = window;
|
|
1911
1911
|
t.requestIdleCallback ? t.requestIdleCallback(e, { timeout: 2e3 }) : setTimeout(e, 300);
|
|
1912
1912
|
};
|
|
1913
|
-
function
|
|
1914
|
-
let
|
|
1915
|
-
return
|
|
1913
|
+
function Et(e, t) {
|
|
1914
|
+
let n = document.createElement("div"), r = e === "dark" ? "#f1f1f3" : "#17181b";
|
|
1915
|
+
return n.style.cssText = `position:absolute;inset:0;display:grid;place-items:center;background:${t && t !== "transparent" ? t : e === "dark" ? "#0d0e11" : "#f4f4f2"};transition:opacity .3s`, n.innerHTML = `<div style="width:28px;height:28px;border-radius:50%;border:2px solid ${r}33;border-top-color:${r};animation:om-spin .8s linear infinite"></div><style>@keyframes om-spin{to{transform:rotate(360deg)}}</style>`, n;
|
|
1916
1916
|
}
|
|
1917
|
-
async function
|
|
1917
|
+
async function Dt(e, t, n) {
|
|
1918
1918
|
let r = await fetch(n, { credentials: "omit" });
|
|
1919
1919
|
if (!r.ok) throw Error(`Could not load ${n} (${r.status})`);
|
|
1920
|
-
let i =
|
|
1921
|
-
a.
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1920
|
+
let i = H(await r.json()), a = t.backgroundColor;
|
|
1921
|
+
a && (i.scene.backdrop = a === "transparent" ? {
|
|
1922
|
+
...i.scene.backdrop,
|
|
1923
|
+
kind: "transparent"
|
|
1924
|
+
} : {
|
|
1925
|
+
...i.scene.backdrop,
|
|
1926
|
+
kind: "solid",
|
|
1927
|
+
color: a
|
|
1928
|
+
});
|
|
1929
|
+
let o = document.createElement("div");
|
|
1930
|
+
o.style.cssText = "position:absolute;inset:0;";
|
|
1931
|
+
let s = document.createElement("canvas");
|
|
1932
|
+
s.style.cssText = "display:block;width:100%;height:100%;", s.setAttribute("aria-label", i.name), o.append(s), e.append(o);
|
|
1933
|
+
let c = t.loader ? Et(t.theme, a) : null;
|
|
1934
|
+
c && e.append(c);
|
|
1935
|
+
let l = it({
|
|
1936
|
+
canvas: s,
|
|
1928
1937
|
quality: "embed"
|
|
1929
|
-
}),
|
|
1930
|
-
|
|
1931
|
-
let
|
|
1932
|
-
await
|
|
1933
|
-
let
|
|
1934
|
-
engine:
|
|
1938
|
+
}), u = () => l.setSize(e.clientWidth || 1, e.clientHeight || 1), d = new ResizeObserver(u);
|
|
1939
|
+
d.observe(e);
|
|
1940
|
+
let f = t.progressive ? Ct(n, "low", !0) : Ct(n, "high", !1);
|
|
1941
|
+
await l.loadScene(i.scene, f), u();
|
|
1942
|
+
let p = mt({
|
|
1943
|
+
engine: l,
|
|
1935
1944
|
element: e,
|
|
1936
1945
|
getDoc: () => i,
|
|
1937
1946
|
overrides: t.overrides
|
|
1938
1947
|
});
|
|
1939
|
-
|
|
1940
|
-
let
|
|
1941
|
-
return t.progressive &&
|
|
1942
|
-
|
|
1948
|
+
p.start(), c && (c.style.opacity = "0", setTimeout(() => c.remove(), 350));
|
|
1949
|
+
let m = !1;
|
|
1950
|
+
return t.progressive && Tt(() => {
|
|
1951
|
+
m || l.loadScene(i.scene, Ct(n, "high", !1));
|
|
1943
1952
|
}), { dispose() {
|
|
1944
|
-
|
|
1953
|
+
m = !0, d.disconnect(), p.dispose(), l.dispose(), o.remove(), c?.remove();
|
|
1945
1954
|
} };
|
|
1946
1955
|
}
|
|
1947
|
-
export {
|
|
1956
|
+
export { wt as t };
|