stickyflow 0.7.0 → 0.9.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/CHANGELOG.md +23 -0
- package/README.md +1 -1
- package/dist/binding/index.cjs +9 -9
- package/dist/binding/index.d.cts +4 -4
- package/dist/binding/index.d.ts +4 -4
- package/dist/binding/index.js +3 -3
- package/dist/{chunk-OWNVXKXN.cjs → chunk-B3YRZVMR.cjs} +23 -23
- package/dist/chunk-B3YRZVMR.cjs.map +1 -0
- package/dist/{chunk-JCRPLPKV.js → chunk-BUVUJMWT.js} +5 -5
- package/dist/chunk-BUVUJMWT.js.map +1 -0
- package/dist/{chunk-ZNHYW47T.js → chunk-CM35H45Z.js} +3 -3
- package/dist/{chunk-ZNHYW47T.js.map → chunk-CM35H45Z.js.map} +1 -1
- package/dist/{chunk-JQK4IGXJ.js → chunk-D2266VBZ.js} +440 -8
- package/dist/chunk-D2266VBZ.js.map +1 -0
- package/dist/{chunk-SDMQRSRW.js → chunk-FS6L462E.js} +455 -136
- package/dist/chunk-FS6L462E.js.map +1 -0
- package/dist/{chunk-EKAWJFJQ.cjs → chunk-OUWGWDJ2.cjs} +15 -15
- package/dist/{chunk-EKAWJFJQ.cjs.map → chunk-OUWGWDJ2.cjs.map} +1 -1
- package/dist/{chunk-KXYSO6GC.cjs → chunk-QL7MNEMT.cjs} +444 -7
- package/dist/chunk-QL7MNEMT.cjs.map +1 -0
- package/dist/{chunk-BUOWM3LC.cjs → chunk-SQBF2BKT.cjs} +382 -73
- package/dist/chunk-SQBF2BKT.cjs.map +1 -0
- package/dist/{chunk-A73UJ5AQ.cjs → chunk-YSXD5IVZ.cjs} +1074 -755
- package/dist/chunk-YSXD5IVZ.cjs.map +1 -0
- package/dist/{chunk-MUKIGLR5.js → chunk-ZCGZJBAT.js} +353 -44
- package/dist/chunk-ZCGZJBAT.js.map +1 -0
- package/dist/index.cjs +36 -36
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +5 -5
- package/dist/interaction/index.cjs +268 -235
- package/dist/interaction/index.cjs.map +1 -1
- package/dist/interaction/index.d.cts +2 -2
- package/dist/interaction/index.d.ts +2 -2
- package/dist/interaction/index.js +44 -11
- package/dist/interaction/index.js.map +1 -1
- package/dist/{render-BU2uYzjG.d.cts → render-DU4lYbRl.d.cts} +29 -11
- package/dist/{render-BU2uYzjG.d.ts → render-DU4lYbRl.d.ts} +29 -11
- package/dist/{runtime-B7KiTmn8.d.cts → runtime-DG8X3Fwf.d.cts} +2 -2
- package/dist/{runtime-BPzyD-Nd.d.ts → runtime-kqD1RS17.d.ts} +2 -2
- package/dist/{runtimeTypes-DalvhScn.d.ts → runtimeTypes-CvjlBZds.d.cts} +7 -3
- package/dist/{runtimeTypes-BIP70z72.d.cts → runtimeTypes-vRaHOIHi.d.ts} +7 -3
- package/dist/stickyflow-diagram.global.js +294 -39
- package/dist/stickyflow-diagram.global.js.map +1 -1
- package/dist/{types-D_2NZ6lL.d.cts → types-B5jrEEcF.d.cts} +1 -1
- package/dist/{types-DMWs27Hn.d.ts → types-B7IkZ0w4.d.ts} +1 -1
- package/dist/viewer/index.cjs +9 -9
- package/dist/viewer/index.d.cts +4 -4
- package/dist/viewer/index.d.ts +4 -4
- package/dist/viewer/index.js +4 -4
- package/dist/web-component/index.cjs +6 -6
- package/dist/web-component/index.d.cts +2 -2
- package/dist/web-component/index.d.ts +2 -2
- package/dist/web-component/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-A73UJ5AQ.cjs.map +0 -1
- package/dist/chunk-BUOWM3LC.cjs.map +0 -1
- package/dist/chunk-JCRPLPKV.js.map +0 -1
- package/dist/chunk-JQK4IGXJ.js.map +0 -1
- package/dist/chunk-KXYSO6GC.cjs.map +0 -1
- package/dist/chunk-MUKIGLR5.js.map +0 -1
- package/dist/chunk-OWNVXKXN.cjs.map +0 -1
- package/dist/chunk-SDMQRSRW.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { render } from './chunk-
|
|
2
|
-
import { parseContractVersion, isContractCompatible, Emitter, resolveOwner, CHANGE_COLOR, findOwnerNode, isPrimary, linkSelectionOverlay, pathSelectionOverlay, isometricSelectionOverlay, shapeSelectionOverlay, DERIVED_HEIGHT_ROLES, quickDuplicateBubbles, isCameraGesture, linkChangeOverlay, shapeChangeOverlay, startChangeFade, REDUCED_MOTION_DURATION_MS, FLASH_DURATION_MS } from './chunk-
|
|
3
|
-
import { getComponentDescriptor, formatRollingNumber, DEFAULT_ROLLING_NUMBER_STYLE } from './chunk-
|
|
1
|
+
import { render } from './chunk-FS6L462E.js';
|
|
2
|
+
import { parseContractVersion, isContractCompatible, Emitter, resolveOwner, CHANGE_COLOR, findOwnerNode, isPrimary, linkSelectionOverlay, pathSelectionOverlay, isometricSelectionOverlay, shapeSelectionOverlay, DERIVED_HEIGHT_ROLES, quickDuplicateBubbles, isCameraGesture, linkChangeOverlay, shapeChangeOverlay, startChangeFade, REDUCED_MOTION_DURATION_MS, FLASH_DURATION_MS } from './chunk-CM35H45Z.js';
|
|
3
|
+
import { getComponentDescriptor, formatRollingNumber, DEFAULT_ROLLING_NUMBER_STYLE } from './chunk-D2266VBZ.js';
|
|
4
4
|
|
|
5
5
|
// src/runtime/viewer/components/rollingNumberDom.ts
|
|
6
6
|
var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
|
|
@@ -1655,10 +1655,191 @@ var emberSlitsProgram = {
|
|
|
1655
1655
|
fragmentSource: fragmentSource6
|
|
1656
1656
|
};
|
|
1657
1657
|
|
|
1658
|
-
// src/runtime/viewer/shaders/builtins/
|
|
1658
|
+
// src/runtime/viewer/shaders/builtins/glassDots.ts
|
|
1659
1659
|
var fragmentSource7 = `
|
|
1660
1660
|
precision highp float;
|
|
1661
1661
|
|
|
1662
|
+
uniform vec2 uResolution;
|
|
1663
|
+
uniform float uTime;
|
|
1664
|
+
uniform float uSpeed;
|
|
1665
|
+
uniform float uIntensity;
|
|
1666
|
+
uniform float uDots;
|
|
1667
|
+
uniform float uDotSize;
|
|
1668
|
+
uniform float uStagger;
|
|
1669
|
+
uniform float uSphere;
|
|
1670
|
+
uniform float uAngle;
|
|
1671
|
+
uniform float uSpread;
|
|
1672
|
+
uniform float uWarp;
|
|
1673
|
+
uniform float uGlow;
|
|
1674
|
+
uniform float uRound;
|
|
1675
|
+
uniform float uScatter;
|
|
1676
|
+
uniform float uLens;
|
|
1677
|
+
uniform float uGrain;
|
|
1678
|
+
uniform vec3 uBaseColor;
|
|
1679
|
+
uniform vec3 uColorA;
|
|
1680
|
+
uniform vec3 uColorB;
|
|
1681
|
+
uniform vec3 uColorC;
|
|
1682
|
+
uniform vec3 uColorD;
|
|
1683
|
+
uniform vec3 uRimColor;
|
|
1684
|
+
varying vec2 vUv;
|
|
1685
|
+
|
|
1686
|
+
float hash(vec2 p) {
|
|
1687
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
float noise(vec2 p) {
|
|
1691
|
+
vec2 i = floor(p);
|
|
1692
|
+
vec2 f = fract(p);
|
|
1693
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
1694
|
+
return mix(mix(hash(i), hash(i + vec2(1.0, 0.0)), u.x), mix(hash(i + vec2(0.0, 1.0)), hash(i + vec2(1.0, 1.0)), u.x), u.y);
|
|
1695
|
+
}
|
|
1696
|
+
|
|
1697
|
+
float fbm(vec2 p) {
|
|
1698
|
+
return 0.5 * noise(p) + 0.25 * noise(p * 2.03 + 3.1) + 0.125 * noise(p * 4.01 + 7.7);
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
vec2 turn(vec2 point, float angle) {
|
|
1702
|
+
float c = cos(angle);
|
|
1703
|
+
float s = sin(angle);
|
|
1704
|
+
return vec2(c * point.x - s * point.y, s * point.x + c * point.y);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
// How far the grid is stretched at a distance r from the middle; with sphere the dots follow the surface of a ball.
|
|
1708
|
+
float stretch(float r, float sphere) {
|
|
1709
|
+
float rr = clamp(r, 0.0001, 0.9999);
|
|
1710
|
+
return mix(1.0, asin(rr) / rr, sphere);
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
// The color under the dots: an uneven cloud of color whose edge bleeds out into the dark, with a red glow around it.
|
|
1714
|
+
// body is how much of the cloud is there, from 1 inside to 0 far outside.
|
|
1715
|
+
vec3 field(vec2 q, float angle, float t, out float body, out float distance) {
|
|
1716
|
+
vec2 p = turn(q, -angle);
|
|
1717
|
+
vec2 bend = vec2(fbm(p * 2.2 + vec2(t * 0.3, 1.7)), fbm(p * 2.2 + vec2(8.3, -t * 0.25))) - 0.35;
|
|
1718
|
+
vec2 w = p + bend * max(uWarp, 0.0) * 0.4;
|
|
1719
|
+
float rr = length(w) / max(uSpread, 0.2);
|
|
1720
|
+
distance = rr;
|
|
1721
|
+
body = 1.0 - smoothstep(0.78, 1.22, rr);
|
|
1722
|
+
|
|
1723
|
+
vec3 c = uColorB;
|
|
1724
|
+
c = mix(c, uColorA, smoothstep(-0.1, 0.95, dot(w, normalize(vec2(-0.6, 0.7)))) * 0.95);
|
|
1725
|
+
c = mix(c, uColorC, smoothstep(-0.05, 0.6, dot(w, normalize(vec2(0.7, -0.45)))) * 0.9);
|
|
1726
|
+
c = mix(c, uColorD, smoothstep(0.18, 0.85, dot(w, normalize(vec2(0.85, -0.55)))) * 0.97);
|
|
1727
|
+
float ring = smoothstep(0.8, 1.05, rr) * max(uGlow, 0.0);
|
|
1728
|
+
c = mix(c, uRimColor, clamp(ring, 0.0, 1.0));
|
|
1729
|
+
return mix(uBaseColor, c, body);
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
void main() {
|
|
1733
|
+
float side = min(uResolution.x, uResolution.y);
|
|
1734
|
+
vec2 q = (vUv * uResolution - uResolution * 0.5) / (side * 0.5);
|
|
1735
|
+
float r = length(q);
|
|
1736
|
+
// On a circle the picture ends at its edge; on a rectangle the dots run on over the whole surface and may lie beyond the cloud.
|
|
1737
|
+
float edge = uRound > 0.5 ? 1.0 - smoothstep(0.985, 1.0, r) : 1.0;
|
|
1738
|
+
if (edge <= 0.0) discard;
|
|
1739
|
+
|
|
1740
|
+
float t = uTime * max(uSpeed, 0.0);
|
|
1741
|
+
float angle = radians(uAngle);
|
|
1742
|
+
float cells = max(uDots, 2.0) * 0.5;
|
|
1743
|
+
vec2 g = q * stretch(r, uSphere) * cells;
|
|
1744
|
+
|
|
1745
|
+
// The dot that is nearest wins, so dots that lie close cut each other along a straight line.
|
|
1746
|
+
float stagger = clamp(uStagger, 0.0, 1.0);
|
|
1747
|
+
vec2 cell = floor(g);
|
|
1748
|
+
float best = 1e9;
|
|
1749
|
+
vec2 centre = vec2(0.0);
|
|
1750
|
+
for (int j = -1; j <= 1; j++) {
|
|
1751
|
+
for (int i = -1; i <= 1; i++) {
|
|
1752
|
+
vec2 c = cell + vec2(float(i), float(j));
|
|
1753
|
+
float shift = stagger * 0.5 * mod(c.y, 2.0);
|
|
1754
|
+
vec2 mid = vec2(c.x + 0.5 + shift, c.y + 0.5);
|
|
1755
|
+
float d = length(g - mid);
|
|
1756
|
+
if (d < best) {
|
|
1757
|
+
best = d;
|
|
1758
|
+
centre = mid;
|
|
1759
|
+
}
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
// Where the middle of that dot lies on the screen, found by running the stretch backwards.
|
|
1764
|
+
vec2 gc = centre / cells;
|
|
1765
|
+
float gl = length(gc);
|
|
1766
|
+
float rc = gl;
|
|
1767
|
+
for (int k = 0; k < 5; k++) {
|
|
1768
|
+
rc = gl / stretch(rc, uSphere);
|
|
1769
|
+
}
|
|
1770
|
+
rc = clamp(rc, 0.0, 1.0);
|
|
1771
|
+
vec2 qc = gl > 0.0001 ? gc / gl * rc : vec2(0.0);
|
|
1772
|
+
|
|
1773
|
+
float radius = clamp(uDotSize, 0.2, 0.9);
|
|
1774
|
+
float aa = 1.6 / side * cells * 2.0;
|
|
1775
|
+
float inside = 1.0 - smoothstep(radius - aa, radius + aa, best);
|
|
1776
|
+
|
|
1777
|
+
float bodyHere;
|
|
1778
|
+
float bodyDot;
|
|
1779
|
+
float farHere;
|
|
1780
|
+
float farDot;
|
|
1781
|
+
vec3 colorHere = field(q, angle, t, bodyHere, farHere);
|
|
1782
|
+
field(qc, angle, t, bodyDot, farDot);
|
|
1783
|
+
|
|
1784
|
+
// Between the dots the cloud is darker, so the dots read as glass lying on it.
|
|
1785
|
+
vec3 gap = colorHere * mix(0.3, 0.9, bodyHere);
|
|
1786
|
+
|
|
1787
|
+
// Every dot is a lens with a gradient of its own: lighter on the side that faces the middle, dark on the side that faces out.
|
|
1788
|
+
// The darker side grows toward the edge of the cloud, until the dots there are nearly black.
|
|
1789
|
+
vec2 e = (g - centre) / max(radius, 0.001);
|
|
1790
|
+
vec2 outward = length(qc) > 0.0001 ? normalize(qc) : vec2(0.0, 1.0);
|
|
1791
|
+
vec2 outwardGrid = outward;
|
|
1792
|
+
float along = clamp(dot(e, outwardGrid), -1.0, 1.0);
|
|
1793
|
+
float edgeness = 1.0 - smoothstep(0.1, 0.9, bodyDot);
|
|
1794
|
+
float lens = clamp(uLens, 0.0, 1.5);
|
|
1795
|
+
float darken = lens * (0.1 + 0.9 * edgeness) * smoothstep(-0.55, 1.0, along);
|
|
1796
|
+
float lift = lens * 0.09 * (1.0 - edgeness) * (-along);
|
|
1797
|
+
vec3 glass = colorHere * (1.0 + lift) * (1.0 - clamp(darken, 0.0, 0.96));
|
|
1798
|
+
|
|
1799
|
+
// A dot beyond the cloud is drawn in the dark glow color when the dice fall that way, more of them close to the cloud than far from it.
|
|
1800
|
+
float luck = hash(centre + 17.0);
|
|
1801
|
+
float shown = step(luck, clamp(uScatter, 0.0, 1.0) * (1.0 - smoothstep(1.0, 2.0, farDot))) * (1.0 - bodyDot);
|
|
1802
|
+
vec3 outer = mix(uRimColor, mix(uColorD, uColorC, hash(centre + 5.0)), 0.35 * hash(centre + 9.0)) * (0.25 + 0.4 * hash(centre + 3.0));
|
|
1803
|
+
outer *= 1.0 - 0.8 * smoothstep(-0.55, 1.0, along);
|
|
1804
|
+
glass = mix(glass, outer, shown);
|
|
1805
|
+
|
|
1806
|
+
vec3 color = mix(gap, glass, inside);
|
|
1807
|
+
color *= max(uIntensity, 0.0);
|
|
1808
|
+
color += (hash(gl_FragCoord.xy + t) - 0.5) * max(uGrain, 0.0);
|
|
1809
|
+
gl_FragColor = vec4(clamp(color, 0.0, 1.0), edge);
|
|
1810
|
+
}
|
|
1811
|
+
`;
|
|
1812
|
+
var glassDotsProgram = {
|
|
1813
|
+
name: "glassDots",
|
|
1814
|
+
fragmentSource: fragmentSource7,
|
|
1815
|
+
defaultParameters: {
|
|
1816
|
+
speed: 0,
|
|
1817
|
+
intensity: 1,
|
|
1818
|
+
dots: 13,
|
|
1819
|
+
dotSize: 0.5,
|
|
1820
|
+
stagger: 0,
|
|
1821
|
+
sphere: 0,
|
|
1822
|
+
angle: 0,
|
|
1823
|
+
spread: 0.86,
|
|
1824
|
+
warp: 1,
|
|
1825
|
+
glow: 0.75,
|
|
1826
|
+
round: 0,
|
|
1827
|
+
scatter: 0.45,
|
|
1828
|
+
lens: 0.75,
|
|
1829
|
+
grain: 0.06,
|
|
1830
|
+
baseColor: "#121212",
|
|
1831
|
+
colorA: "#f4b49c",
|
|
1832
|
+
colorB: "#4a9c93",
|
|
1833
|
+
colorC: "#34559c",
|
|
1834
|
+
colorD: "#ec3f93",
|
|
1835
|
+
rimColor: "#d93a24"
|
|
1836
|
+
}
|
|
1837
|
+
};
|
|
1838
|
+
|
|
1839
|
+
// src/runtime/viewer/shaders/builtins/glassRefraction.ts
|
|
1840
|
+
var fragmentSource8 = `
|
|
1841
|
+
precision highp float;
|
|
1842
|
+
|
|
1662
1843
|
uniform sampler2D uBackdrop;
|
|
1663
1844
|
uniform vec2 uBackdropOrigin;
|
|
1664
1845
|
uniform vec2 uBackdropScale;
|
|
@@ -1761,12 +1942,138 @@ void main() {
|
|
|
1761
1942
|
`;
|
|
1762
1943
|
var glassRefractionProgram = {
|
|
1763
1944
|
name: "glassRefraction",
|
|
1764
|
-
fragmentSource:
|
|
1945
|
+
fragmentSource: fragmentSource8,
|
|
1765
1946
|
usesBackdrop: true
|
|
1766
1947
|
};
|
|
1767
1948
|
|
|
1949
|
+
// src/runtime/viewer/shaders/builtins/glowCard.ts
|
|
1950
|
+
var fragmentSource9 = `
|
|
1951
|
+
precision highp float;
|
|
1952
|
+
|
|
1953
|
+
uniform vec2 uResolution;
|
|
1954
|
+
uniform float uTime;
|
|
1955
|
+
uniform float uSpeed;
|
|
1956
|
+
uniform float uIntensity;
|
|
1957
|
+
uniform float uGlowHeight;
|
|
1958
|
+
uniform float uGlowSpread;
|
|
1959
|
+
uniform float uCore;
|
|
1960
|
+
uniform float uRim;
|
|
1961
|
+
uniform float uGrain;
|
|
1962
|
+
uniform float uWarp;
|
|
1963
|
+
uniform float uAngle;
|
|
1964
|
+
uniform float uCornerRadius;
|
|
1965
|
+
uniform vec3 uBaseColor;
|
|
1966
|
+
uniform vec3 uColorA;
|
|
1967
|
+
uniform vec3 uColorB;
|
|
1968
|
+
uniform vec3 uColorC;
|
|
1969
|
+
varying vec2 vUv;
|
|
1970
|
+
|
|
1971
|
+
float hash(vec2 p) {
|
|
1972
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
float blob(vec2 p, vec2 center, vec2 size) {
|
|
1976
|
+
vec2 d = (p - center) / size;
|
|
1977
|
+
return exp(-dot(d, d));
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
float noise(vec2 p) {
|
|
1981
|
+
vec2 i = floor(p);
|
|
1982
|
+
vec2 f = fract(p);
|
|
1983
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
1984
|
+
return mix(mix(hash(i), hash(i + vec2(1.0, 0.0)), u.x), mix(hash(i + vec2(0.0, 1.0)), hash(i + vec2(1.0, 1.0)), u.x), u.y);
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
float fbm(vec2 p) {
|
|
1988
|
+
return 0.5 * noise(p) + 0.25 * noise(p * 2.03 + 3.1) + 0.125 * noise(p * 4.01 + 7.7);
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
void main() {
|
|
1992
|
+
vec2 size = max(uResolution, vec2(1.0));
|
|
1993
|
+
float radius = uCornerRadius * min(size.x, size.y);
|
|
1994
|
+
vec2 q = abs(vUv * size - size * 0.5) - size * 0.5 + radius;
|
|
1995
|
+
float distance = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - radius;
|
|
1996
|
+
float shape = 1.0 - smoothstep(-1.0, 1.0, distance);
|
|
1997
|
+
if (shape <= 0.0) discard;
|
|
1998
|
+
|
|
1999
|
+
// The light comes from one side. Angle 0 is the bottom edge, and it turns clockwise: 90 is the left, 180 the top, 270 the right.
|
|
2000
|
+
// depth is 0 at the edge the light comes from and 1 at the far side, side runs along that edge.
|
|
2001
|
+
float turn = radians(uAngle);
|
|
2002
|
+
vec2 toward = vec2(-sin(turn), -cos(turn));
|
|
2003
|
+
vec2 across = vec2(-toward.y, toward.x);
|
|
2004
|
+
vec2 offset = (vUv - 0.5) * size;
|
|
2005
|
+
float reachAlong = 0.5 * (abs(toward.x) * size.x + abs(toward.y) * size.y);
|
|
2006
|
+
float reachAcross = 0.5 * (abs(across.x) * size.x + abs(across.y) * size.y);
|
|
2007
|
+
float depth = clamp(0.5 - dot(offset, toward) / (2.0 * reachAlong), 0.0, 1.0);
|
|
2008
|
+
float side = clamp(0.5 + dot(offset, across) / (2.0 * reachAcross), 0.0, 1.0);
|
|
2009
|
+
float aspect = reachAcross / reachAlong;
|
|
2010
|
+
|
|
2011
|
+
float t = uTime * max(uSpeed, 0.0);
|
|
2012
|
+
float height = clamp(uGlowHeight, 0.05, 1.0);
|
|
2013
|
+
float spread = max(uGlowSpread, 0.05);
|
|
2014
|
+
// The body is the base color with a faint lift toward the far side, like glass that catches the light.
|
|
2015
|
+
vec3 color = uBaseColor + vec3(0.035) * smoothstep(0.55, 1.0, 1.0 - depth);
|
|
2016
|
+
|
|
2017
|
+
// Three soft lights sit low in the card and drift slowly; the middle one is the broadest.
|
|
2018
|
+
vec2 p = vec2(side * aspect, depth);
|
|
2019
|
+
// The lights are bent by slow noise, so their edges curl like smoke instead of staying round.
|
|
2020
|
+
vec2 bend = vec2(fbm(p * 2.6 + vec2(t * 0.6, 0.0)), fbm(p * 2.6 + vec2(5.2, -t * 0.5))) - 0.35;
|
|
2021
|
+
p += bend * max(uWarp, 0.0) * 0.45;
|
|
2022
|
+
float wander = 0.05 * sin(t);
|
|
2023
|
+
float a = blob(p, vec2((0.18 + wander) * aspect, 0.0), vec2(0.5 * spread * aspect, 0.42 * height));
|
|
2024
|
+
float b = blob(p, vec2((0.52 - wander) * aspect, -0.04), vec2(0.62 * spread * aspect, 0.5 * height));
|
|
2025
|
+
float c = blob(p, vec2((0.86 + wander * 0.6) * aspect, 0.02), vec2(0.5 * spread * aspect, 0.44 * height));
|
|
2026
|
+
// Each light is thicker in some places than in others, so the colors mix unevenly.
|
|
2027
|
+
float patchy = fbm(p * 4.0 + 11.0);
|
|
2028
|
+
a *= 0.55 + 0.9 * patchy;
|
|
2029
|
+
b *= 0.55 + 0.9 * (1.0 - patchy);
|
|
2030
|
+
c *= 0.55 + 0.9 * fbm(p * 4.0 + 23.0);
|
|
2031
|
+
vec3 glow = uColorA * a + uColorB * b + uColorC * c;
|
|
2032
|
+
|
|
2033
|
+
// A haze reaches higher than the lights, so the color fades out into the body.
|
|
2034
|
+
float haze = smoothstep(height, 0.0, depth);
|
|
2035
|
+
glow += mix(uColorB, uColorA, side) * haze * haze * 0.35;
|
|
2036
|
+
color += glow * max(uIntensity, 0.0);
|
|
2037
|
+
|
|
2038
|
+
// Near the exit edge the lights are so strong that they turn white.
|
|
2039
|
+
float hot = smoothstep(height * 0.38, 0.0, depth) * (a + b + c) * clamp(uCore, 0.0, 1.0);
|
|
2040
|
+
color = mix(color, vec3(0.93, 0.95, 1.0), clamp(hot, 0.0, 1.0));
|
|
2041
|
+
|
|
2042
|
+
// A thin rim along the edge, strongest on the side away from the light.
|
|
2043
|
+
float rim = (1.0 - smoothstep(0.0, 1.6, -distance)) * smoothstep(0.0, 1.0, -distance + 1.0);
|
|
2044
|
+
color += vec3(0.62, 0.66, 0.78) * rim * max(uRim, 0.0) * (0.35 + 0.65 * smoothstep(0.2, 1.0, 1.0 - depth));
|
|
2045
|
+
|
|
2046
|
+
// The grit sits in the lit parts and fades in the dark body, as on film.
|
|
2047
|
+
float lit = clamp(dot(glow, vec3(0.45)) * max(uIntensity, 0.0) + hot, 0.0, 1.0);
|
|
2048
|
+
float grit = hash(gl_FragCoord.xy) - 0.5;
|
|
2049
|
+
grit += 0.5 * (hash(floor(gl_FragCoord.xy * 0.5) + 17.0) - 0.5);
|
|
2050
|
+
color += grit * max(uGrain, 0.0) * (0.3 + 2.2 * lit * (1.0 - 0.5 * lit));
|
|
2051
|
+
gl_FragColor = vec4(clamp(color, 0.0, 1.0), shape);
|
|
2052
|
+
}
|
|
2053
|
+
`;
|
|
2054
|
+
var glowCardProgram = {
|
|
2055
|
+
name: "glowCard",
|
|
2056
|
+
fragmentSource: fragmentSource9,
|
|
2057
|
+
defaultParameters: {
|
|
2058
|
+
speed: 0.12,
|
|
2059
|
+
intensity: 1,
|
|
2060
|
+
glowHeight: 0.55,
|
|
2061
|
+
glowSpread: 1,
|
|
2062
|
+
core: 0.7,
|
|
2063
|
+
rim: 0.55,
|
|
2064
|
+
grain: 0.12,
|
|
2065
|
+
warp: 1,
|
|
2066
|
+
angle: 0,
|
|
2067
|
+
cornerRadius: 0.08,
|
|
2068
|
+
baseColor: "#0b0b12",
|
|
2069
|
+
colorA: "#2f6bff",
|
|
2070
|
+
colorB: "#9d5cff",
|
|
2071
|
+
colorC: "#34d3c4"
|
|
2072
|
+
}
|
|
2073
|
+
};
|
|
2074
|
+
|
|
1768
2075
|
// src/runtime/viewer/shaders/builtins/halftoneHalo.ts
|
|
1769
|
-
var
|
|
2076
|
+
var fragmentSource10 = `
|
|
1770
2077
|
precision highp float;
|
|
1771
2078
|
|
|
1772
2079
|
uniform vec2 uResolution;
|
|
@@ -1845,11 +2152,11 @@ void main() {
|
|
|
1845
2152
|
`;
|
|
1846
2153
|
var halftoneHaloProgram = {
|
|
1847
2154
|
name: "halftoneHalo",
|
|
1848
|
-
fragmentSource:
|
|
2155
|
+
fragmentSource: fragmentSource10
|
|
1849
2156
|
};
|
|
1850
2157
|
|
|
1851
2158
|
// src/runtime/viewer/shaders/builtins/halo.ts
|
|
1852
|
-
var
|
|
2159
|
+
var fragmentSource11 = `
|
|
1853
2160
|
precision highp float;
|
|
1854
2161
|
|
|
1855
2162
|
uniform vec2 uResolution;
|
|
@@ -1924,11 +2231,11 @@ void main() {
|
|
|
1924
2231
|
`;
|
|
1925
2232
|
var haloProgram = {
|
|
1926
2233
|
name: "halo",
|
|
1927
|
-
fragmentSource:
|
|
2234
|
+
fragmentSource: fragmentSource11
|
|
1928
2235
|
};
|
|
1929
2236
|
|
|
1930
2237
|
// src/runtime/viewer/shaders/builtins/ledMatrix.ts
|
|
1931
|
-
var
|
|
2238
|
+
var fragmentSource12 = `
|
|
1932
2239
|
precision highp float;
|
|
1933
2240
|
|
|
1934
2241
|
uniform vec2 uResolution;
|
|
@@ -2044,7 +2351,7 @@ void main() {
|
|
|
2044
2351
|
`;
|
|
2045
2352
|
var ledMatrixProgram = {
|
|
2046
2353
|
name: "ledMatrix",
|
|
2047
|
-
fragmentSource:
|
|
2354
|
+
fragmentSource: fragmentSource12,
|
|
2048
2355
|
defaultParameters: {
|
|
2049
2356
|
speed: 0.25,
|
|
2050
2357
|
intensity: 1,
|
|
@@ -2075,7 +2382,7 @@ var ledMatrixProgram = {
|
|
|
2075
2382
|
};
|
|
2076
2383
|
|
|
2077
2384
|
// src/runtime/viewer/shaders/builtins/lightBand.ts
|
|
2078
|
-
var
|
|
2385
|
+
var fragmentSource13 = `
|
|
2079
2386
|
precision highp float;
|
|
2080
2387
|
|
|
2081
2388
|
uniform vec2 uResolution;
|
|
@@ -2135,7 +2442,7 @@ void main() {
|
|
|
2135
2442
|
`;
|
|
2136
2443
|
var lightBandProgram = {
|
|
2137
2444
|
name: "lightBand",
|
|
2138
|
-
fragmentSource:
|
|
2445
|
+
fragmentSource: fragmentSource13,
|
|
2139
2446
|
defaultParameters: {
|
|
2140
2447
|
speed: 0.3,
|
|
2141
2448
|
intensity: 1,
|
|
@@ -2152,7 +2459,7 @@ var lightBandProgram = {
|
|
|
2152
2459
|
};
|
|
2153
2460
|
|
|
2154
2461
|
// src/runtime/viewer/shaders/builtins/lumenPortal.ts
|
|
2155
|
-
var
|
|
2462
|
+
var fragmentSource14 = `
|
|
2156
2463
|
precision highp float;
|
|
2157
2464
|
|
|
2158
2465
|
uniform float uTime;
|
|
@@ -2210,11 +2517,11 @@ void main() {
|
|
|
2210
2517
|
`;
|
|
2211
2518
|
var lumenPortalProgram = {
|
|
2212
2519
|
name: "lumenPortal",
|
|
2213
|
-
fragmentSource:
|
|
2520
|
+
fragmentSource: fragmentSource14
|
|
2214
2521
|
};
|
|
2215
2522
|
|
|
2216
2523
|
// src/runtime/viewer/shaders/builtins/lumenPortalLight.ts
|
|
2217
|
-
var
|
|
2524
|
+
var fragmentSource15 = `
|
|
2218
2525
|
precision highp float;
|
|
2219
2526
|
|
|
2220
2527
|
uniform float uTime;
|
|
@@ -2273,11 +2580,11 @@ void main() {
|
|
|
2273
2580
|
`;
|
|
2274
2581
|
var lumenPortalLightProgram = {
|
|
2275
2582
|
name: "lumenPortalLight",
|
|
2276
|
-
fragmentSource:
|
|
2583
|
+
fragmentSource: fragmentSource15
|
|
2277
2584
|
};
|
|
2278
2585
|
|
|
2279
2586
|
// src/runtime/viewer/shaders/builtins/orb.ts
|
|
2280
|
-
var
|
|
2587
|
+
var fragmentSource16 = `
|
|
2281
2588
|
precision highp float;
|
|
2282
2589
|
|
|
2283
2590
|
uniform vec2 uResolution;
|
|
@@ -2313,11 +2620,11 @@ void main() {
|
|
|
2313
2620
|
`;
|
|
2314
2621
|
var orbProgram = {
|
|
2315
2622
|
name: "orb",
|
|
2316
|
-
fragmentSource:
|
|
2623
|
+
fragmentSource: fragmentSource16
|
|
2317
2624
|
};
|
|
2318
2625
|
|
|
2319
2626
|
// src/runtime/viewer/shaders/builtins/pixelConstellation.ts
|
|
2320
|
-
var
|
|
2627
|
+
var fragmentSource17 = `
|
|
2321
2628
|
precision highp float;
|
|
2322
2629
|
|
|
2323
2630
|
uniform float uTime;
|
|
@@ -2417,11 +2724,11 @@ void main() {
|
|
|
2417
2724
|
`;
|
|
2418
2725
|
var pixelConstellationProgram = {
|
|
2419
2726
|
name: "pixelConstellation",
|
|
2420
|
-
fragmentSource:
|
|
2727
|
+
fragmentSource: fragmentSource17
|
|
2421
2728
|
};
|
|
2422
2729
|
|
|
2423
2730
|
// src/runtime/viewer/shaders/builtins/plasmaGauge.ts
|
|
2424
|
-
var
|
|
2731
|
+
var fragmentSource18 = `
|
|
2425
2732
|
precision highp float;
|
|
2426
2733
|
|
|
2427
2734
|
uniform vec2 uResolution;
|
|
@@ -2523,12 +2830,12 @@ void main() {
|
|
|
2523
2830
|
`;
|
|
2524
2831
|
var plasmaGaugeProgram = {
|
|
2525
2832
|
name: "plasmaGauge",
|
|
2526
|
-
fragmentSource:
|
|
2833
|
+
fragmentSource: fragmentSource18,
|
|
2527
2834
|
replacesBaseFill: true
|
|
2528
2835
|
};
|
|
2529
2836
|
|
|
2530
2837
|
// src/runtime/viewer/shaders/builtins/prismSlats.ts
|
|
2531
|
-
var
|
|
2838
|
+
var fragmentSource19 = `
|
|
2532
2839
|
precision highp float;
|
|
2533
2840
|
|
|
2534
2841
|
uniform vec2 uResolution;
|
|
@@ -2603,11 +2910,11 @@ void main() {
|
|
|
2603
2910
|
`;
|
|
2604
2911
|
var prismSlatsProgram = {
|
|
2605
2912
|
name: "prismSlats",
|
|
2606
|
-
fragmentSource:
|
|
2913
|
+
fragmentSource: fragmentSource19
|
|
2607
2914
|
};
|
|
2608
2915
|
|
|
2609
2916
|
// src/runtime/viewer/shaders/builtins/reactivePanel.ts
|
|
2610
|
-
var
|
|
2917
|
+
var fragmentSource20 = `
|
|
2611
2918
|
precision highp float;
|
|
2612
2919
|
|
|
2613
2920
|
uniform float uTime;
|
|
@@ -2709,7 +3016,7 @@ void main() {
|
|
|
2709
3016
|
`;
|
|
2710
3017
|
var reactivePanelProgram = {
|
|
2711
3018
|
name: "reactivePanel",
|
|
2712
|
-
fragmentSource:
|
|
3019
|
+
fragmentSource: fragmentSource20,
|
|
2713
3020
|
defaultParameters: {
|
|
2714
3021
|
intensity: 0.5,
|
|
2715
3022
|
speed: 0.18,
|
|
@@ -2732,7 +3039,7 @@ var reactivePanelProgram = {
|
|
|
2732
3039
|
};
|
|
2733
3040
|
|
|
2734
3041
|
// src/runtime/viewer/shaders/builtins/ruler.ts
|
|
2735
|
-
var
|
|
3042
|
+
var fragmentSource21 = `
|
|
2736
3043
|
precision highp float;
|
|
2737
3044
|
|
|
2738
3045
|
uniform vec2 uResolution;
|
|
@@ -2837,12 +3144,12 @@ void main() {
|
|
|
2837
3144
|
`;
|
|
2838
3145
|
var rulerProgram = {
|
|
2839
3146
|
name: "ruler",
|
|
2840
|
-
fragmentSource:
|
|
3147
|
+
fragmentSource: fragmentSource21,
|
|
2841
3148
|
replacesBaseFill: true
|
|
2842
3149
|
};
|
|
2843
3150
|
|
|
2844
3151
|
// src/runtime/viewer/shaders/builtins/silkFolds.ts
|
|
2845
|
-
var
|
|
3152
|
+
var fragmentSource22 = `
|
|
2846
3153
|
precision highp float;
|
|
2847
3154
|
|
|
2848
3155
|
uniform vec2 uResolution;
|
|
@@ -2927,7 +3234,7 @@ void main() {
|
|
|
2927
3234
|
`;
|
|
2928
3235
|
var silkFoldsProgram = {
|
|
2929
3236
|
name: "silkFolds",
|
|
2930
|
-
fragmentSource:
|
|
3237
|
+
fragmentSource: fragmentSource22,
|
|
2931
3238
|
defaultParameters: {
|
|
2932
3239
|
speed: 0.2,
|
|
2933
3240
|
intensity: 1,
|
|
@@ -2950,7 +3257,7 @@ var silkFoldsProgram = {
|
|
|
2950
3257
|
};
|
|
2951
3258
|
|
|
2952
3259
|
// src/runtime/viewer/shaders/builtins/smearOrb.ts
|
|
2953
|
-
var
|
|
3260
|
+
var fragmentSource23 = `
|
|
2954
3261
|
precision highp float;
|
|
2955
3262
|
|
|
2956
3263
|
uniform vec2 uResolution;
|
|
@@ -3026,12 +3333,12 @@ void main() {
|
|
|
3026
3333
|
`;
|
|
3027
3334
|
var smearOrbProgram = {
|
|
3028
3335
|
name: "smearOrb",
|
|
3029
|
-
fragmentSource:
|
|
3336
|
+
fragmentSource: fragmentSource23,
|
|
3030
3337
|
replacesBaseFill: true
|
|
3031
3338
|
};
|
|
3032
3339
|
|
|
3033
3340
|
// src/runtime/viewer/shaders/builtins/tickScale.ts
|
|
3034
|
-
var
|
|
3341
|
+
var fragmentSource24 = `
|
|
3035
3342
|
precision highp float;
|
|
3036
3343
|
|
|
3037
3344
|
uniform vec2 uResolution;
|
|
@@ -3090,12 +3397,12 @@ void main() {
|
|
|
3090
3397
|
`;
|
|
3091
3398
|
var tickScaleProgram = {
|
|
3092
3399
|
name: "tickScale",
|
|
3093
|
-
fragmentSource:
|
|
3400
|
+
fragmentSource: fragmentSource24,
|
|
3094
3401
|
replacesBaseFill: true
|
|
3095
3402
|
};
|
|
3096
3403
|
|
|
3097
3404
|
// src/runtime/viewer/shaders/builtins/violetGlass.ts
|
|
3098
|
-
var
|
|
3405
|
+
var fragmentSource25 = `
|
|
3099
3406
|
precision highp float;
|
|
3100
3407
|
|
|
3101
3408
|
uniform float uTime;
|
|
@@ -3175,11 +3482,11 @@ void main() {
|
|
|
3175
3482
|
`;
|
|
3176
3483
|
var violetGlassProgram = {
|
|
3177
3484
|
name: "violetGlass",
|
|
3178
|
-
fragmentSource:
|
|
3485
|
+
fragmentSource: fragmentSource25
|
|
3179
3486
|
};
|
|
3180
3487
|
|
|
3181
3488
|
// src/runtime/viewer/shaders/builtins/violetGlassLight.ts
|
|
3182
|
-
var
|
|
3489
|
+
var fragmentSource26 = `
|
|
3183
3490
|
precision highp float;
|
|
3184
3491
|
|
|
3185
3492
|
uniform float uTime;
|
|
@@ -3249,7 +3556,7 @@ void main() {
|
|
|
3249
3556
|
`;
|
|
3250
3557
|
var violetGlassLightProgram = {
|
|
3251
3558
|
name: "violetGlassLight",
|
|
3252
|
-
fragmentSource:
|
|
3559
|
+
fragmentSource: fragmentSource26
|
|
3253
3560
|
};
|
|
3254
3561
|
|
|
3255
3562
|
// src/runtime/viewer/shaders/programs.ts
|
|
@@ -3277,7 +3584,9 @@ var builtins = [
|
|
|
3277
3584
|
reactivePanelProgram,
|
|
3278
3585
|
ledMatrixProgram,
|
|
3279
3586
|
lightBandProgram,
|
|
3280
|
-
silkFoldsProgram
|
|
3587
|
+
silkFoldsProgram,
|
|
3588
|
+
glowCardProgram,
|
|
3589
|
+
glassDotsProgram
|
|
3281
3590
|
];
|
|
3282
3591
|
var programs = new Map(builtins.map((program) => [program.name, program]));
|
|
3283
3592
|
function registerShaderProgram(program) {
|
|
@@ -3458,9 +3767,9 @@ function compile(gl, type, source) {
|
|
|
3458
3767
|
}
|
|
3459
3768
|
return shader;
|
|
3460
3769
|
}
|
|
3461
|
-
function linkProgram(gl,
|
|
3770
|
+
function linkProgram(gl, fragmentSource27) {
|
|
3462
3771
|
const vertex = compile(gl, gl.VERTEX_SHADER, VERTEX_SOURCE);
|
|
3463
|
-
const fragment = compile(gl, gl.FRAGMENT_SHADER,
|
|
3772
|
+
const fragment = compile(gl, gl.FRAGMENT_SHADER, fragmentSource27);
|
|
3464
3773
|
if (!vertex || !fragment) {
|
|
3465
3774
|
if (vertex) {
|
|
3466
3775
|
gl.deleteShader(vertex);
|
|
@@ -4404,5 +4713,5 @@ function createViewer(options) {
|
|
|
4404
4713
|
}
|
|
4405
4714
|
|
|
4406
4715
|
export { SHADER_DEFAULTS, connectInteraction, createViewer, registerShaderProgram, shaderProgram };
|
|
4407
|
-
//# sourceMappingURL=chunk-
|
|
4408
|
-
//# sourceMappingURL=chunk-
|
|
4716
|
+
//# sourceMappingURL=chunk-ZCGZJBAT.js.map
|
|
4717
|
+
//# sourceMappingURL=chunk-ZCGZJBAT.js.map
|