@edinstvo/glass 0.1.0-alpha.1 → 0.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/shader.js CHANGED
@@ -6,14 +6,18 @@ void main() {
6
6
  export const fragment = `#version 300 es
7
7
  precision highp float;
8
8
 
9
+ const int MAX_SHAPES = 64;
10
+ const float SOFTNESS = 2.7;
11
+
9
12
  uniform sampler2D uBackdrop, uFrosted;
10
- uniform vec2 uCanvas, uSize, uUvOrigin, uUvPerPx, uTexSize, uLightDir;
11
- uniform vec3 uTint;
12
- uniform float uViewY, uPad, uRadius, uDpr, uLight, uTransparency, uRefraction, uDepth, uDispersion, uFrost, uSplay, uBloom, uGlint, uRim, uLift;
13
+ uniform vec4 uBoxes[MAX_SHAPES];
14
+ uniform vec2 uForms[MAX_SHAPES];
15
+ uniform int uCount;
16
+ uniform vec2 uCanvas, uUvOrigin, uUvPerPx, uTexSize, uLightDir;
17
+ uniform vec3 uTint, uTouch;
18
+ uniform float uViewY, uPad, uDpr, uPeak, uAppear, uLight, uTransparency, uRefraction, uDepth, uDispersion, uFrost, uSplay, uBloom, uGlint, uRim, uLift;
13
19
  out vec4 outColor;
14
20
 
15
- const float SOFTNESS = 2.7;
16
-
17
21
  float roundedBox(vec2 p, vec2 b, float r) {
18
22
  vec2 q = abs(p) - b + r;
19
23
  return length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - r;
@@ -24,6 +28,33 @@ float softMin(float a, float b) {
24
28
  return lo * pow(1.0 + pow(lo / max(a, b), SOFTNESS), -1.0 / SOFTNESS);
25
29
  }
26
30
 
31
+ float blend(float a, float b, float k) {
32
+ float h = max(k - abs(a - b), 0.0) / k;
33
+ return min(a, b) - h * h * k * 0.25;
34
+ }
35
+
36
+ // ── x is the distance to the merged outline, y how deep the point sits inside it, without creases
37
+ vec2 field(vec2 p) {
38
+ float joined = 1e5;
39
+ float apart = 1e5;
40
+ float inset = -1e5;
41
+ for (int i = 0; i < MAX_SHAPES; i++) {
42
+ if (i >= uCount) break;
43
+ vec2 c = p - uBoxes[i].xy;
44
+ vec2 b = uBoxes[i].zw;
45
+ float r = uForms[i].x;
46
+ float own = roundedBox(c, b, r);
47
+ if (uForms[i].y > 0.0) joined = blend(joined, own, uForms[i].y);
48
+ else apart = min(apart, own);
49
+ if (own < 0.0) {
50
+ vec2 edges = max(b - abs(c), 0.0) + r + 0.001;
51
+ inset = max(inset, softMin(edges.x, edges.y) - r);
52
+ }
53
+ }
54
+ float d = min(joined, apart);
55
+ return vec2(d, max(inset, -d));
56
+ }
57
+
27
58
  vec2 toUv(vec2 px) {
28
59
  return uUvOrigin + px * uUvPerPx;
29
60
  }
@@ -33,10 +64,9 @@ vec3 pick(vec2 px, float lod) {
33
64
  }
34
65
 
35
66
  void main() {
36
- vec2 px = vec2(gl_FragCoord.x, uCanvas.y - (gl_FragCoord.y - uViewY)) - uPad;
37
- vec2 half_ = uSize * 0.5;
38
- vec2 c = px - half_;
39
- float d = roundedBox(c, half_, uRadius);
67
+ vec2 px = vec2(gl_FragCoord.x, uCanvas.y - (gl_FragCoord.y - uViewY));
68
+ vec2 f = field(px);
69
+ float d = f.x;
40
70
  float texels = max(uUvPerPx.x * uTexSize.x, uUvPerPx.y * uTexSize.y);
41
71
  float haloLod = log2(max(28.0 * uDpr * texels, 1.0));
42
72
  vec3 halo = textureLod(uBackdrop, toUv(px), haloLod).rgb;
@@ -44,18 +74,22 @@ void main() {
44
74
  float mask = 1.0 - smoothstep(-0.75, 0.75, d);
45
75
  float spill = exp(-max(d, 0.0) / (uPad * 0.3)) * uBloom * 0.4 * uLight;
46
76
  vec3 spillColor = mix(halo, vec3(1.0), 0.6);
47
- // ── a p-norm of the edge distances: smooth everywhere inside, and p = 2.7 lands on the rounded corner
48
- vec2 edges = max(half_ - abs(c), 0.0) + uRadius + 0.001;
49
- float soft = softMin(edges.x, edges.y);
50
- float peak = softMin(half_.x + uRadius, half_.y + uRadius) - uRadius;
51
- float band = min(mix(max(uDepth * uDpr, 1.0), peak, uSplay * uSplay), peak);
52
- float s = 1.0 - clamp((soft - uRadius) / band, 0.0, 1.0);
77
+
78
+ float band = min(mix(max(uDepth * uDpr, 1.0), uPeak, uSplay * uSplay), uPeak);
79
+ float s = 1.0 - clamp(f.y / band, 0.0, 1.0);
53
80
  float height = sqrt(max(1.0 - s * s, 0.0));
54
- vec2 g = normalize(pow(vec2(soft) / edges, vec2(SOFTNESS + 1.0)) * sign(c) + 0.00001);
81
+ float e = uDpr;
82
+ vec2 slope = vec2(field(px - vec2(e, 0.0)).y - field(px + vec2(e, 0.0)).y, field(px - vec2(0.0, e)).y - field(px + vec2(0.0, e)).y);
83
+ vec2 g = slope / max(length(slope), 0.0001);
55
84
  vec3 n = normalize(vec3(g * s * s / sqrt(1.02 - s * s), 1.0));
56
85
 
57
86
  vec3 ray = refract(vec3(0.0, 0.0, -1.0), n, 1.0 / 1.5);
58
- vec2 shift = ray.xy / max(-ray.z, 0.5) * band * (0.35 + height) * uRefraction * 1.2;
87
+ vec2 shift = ray.xy / max(-ray.z, 0.5) * band * (0.35 + height) * uRefraction * 1.2 * uAppear;
88
+
89
+ vec2 fromTouch = px - uTouch.xy;
90
+ float reach = 90.0 * uDpr;
91
+ float touch = exp(-dot(fromTouch, fromTouch) / (reach * reach)) * uTouch.z;
92
+ shift -= fromTouch * touch * 0.12;
59
93
 
60
94
  vec2 at = px + shift;
61
95
  float squeeze = log2(max(max(length(dFdx(at)), length(dFdy(at))) * texels, 1.0));
@@ -72,19 +106,20 @@ void main() {
72
106
  col += halo * uBloom * 0.22 * s;
73
107
 
74
108
  float facing = dot(n.xy, uLightDir);
75
- col += uLight * (max(facing, 0.0) * 0.3 + dot(c / half_, uLightDir) * 0.03);
109
+ vec2 centered = (px - uCanvas * 0.5) / (uCanvas * 0.5);
110
+ col += uLight * (max(facing, 0.0) * 0.3 + dot(centered, uLightDir) * 0.03);
76
111
  col *= 1.0 - uLight * max(-facing, 0.0) * 0.2;
77
112
 
78
113
  float toward = dot(g, uLightDir);
79
114
  col += uGlint * pow(s, 5.0) * (pow(max(toward, 0.0), 6.0) + pow(max(-toward, 0.0), 6.0) * 0.4);
80
115
 
81
- float along = dot(g, uLightDir);
82
116
  float line = smoothstep(-1.6 * uDpr, -0.6 * uDpr, d);
83
- col += uRim * line * (0.18 + 0.82 * along * along);
117
+ col += uRim * line * (0.18 + 0.82 * toward * toward);
118
+ col += touch * (0.16 + halo * 0.3);
84
119
 
85
120
  vec3 inside = clamp(col, 0.0, 1.0) * mask;
86
121
  float rest = (1.0 - mask) * spill;
87
- outColor = vec4(inside + spillColor * rest, mask + rest);
122
+ outColor = vec4(inside + spillColor * rest, mask + rest) * uAppear;
88
123
  }`;
89
124
  export const blurFragment = `#version 300 es
90
125
  precision highp float;
@@ -1 +1 @@
1
- {"version":3,"file":"shader.js","sourceRoot":"","sources":["../src/shader.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;;;;EAIpB,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkFtB,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;EAmB1B,CAAC"}
1
+ {"version":3,"file":"shader.js","sourceRoot":"","sources":["../src/shader.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;;;;EAIpB,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqHtB,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;EAmB1B,CAAC"}
package/dist/surface.d.ts CHANGED
@@ -1,37 +1,57 @@
1
1
  import { type GlassSource } from "./backdrop.js";
2
- import { type Interaction, type InteractionName } from "./interaction.js";
3
- import { type Material, type PresetName } from "./material.js";
2
+ import { type Motion } from "./interaction.js";
3
+ import { type Material } from "./material.js";
4
4
  export interface GlassOptions {
5
- material?: PresetName | Partial<Material>;
6
- interaction?: InteractionName | Interaction;
5
+ material?: Partial<Material>;
6
+ motion?: Partial<Motion>;
7
7
  source?: GlassSource;
8
8
  live?: boolean;
9
+ appear?: boolean;
9
10
  }
11
+ export declare function readMotion(element: HTMLElement): Partial<Motion>;
10
12
  export declare class GlassSurface {
11
13
  private host;
12
14
  private canvas;
15
+ private options;
16
+ private group;
13
17
  private context;
14
- private motion;
18
+ private shapes;
15
19
  private resize;
16
20
  private visibility;
17
21
  private visible;
18
22
  private forced;
19
23
  private moved;
20
- private signature;
21
24
  private live;
22
- private options;
25
+ private connected;
26
+ private signature;
23
27
  private material;
24
- private interaction;
28
+ private reduced;
29
+ private frame;
30
+ private stack;
25
31
  private tint;
26
- private radius;
27
- constructor(host: HTMLElement, canvas: HTMLCanvasElement, options?: GlassOptions);
32
+ private appear;
33
+ private settle;
34
+ private boxes;
35
+ private forms;
36
+ private layer;
37
+ constructor(host: HTMLElement, canvas: HTMLCanvasElement, options?: GlassOptions, group?: boolean);
28
38
  connect(): void;
29
39
  disconnect(): void;
40
+ track(element: HTMLElement): void;
41
+ untrack(element: HTMLElement): void;
30
42
  set(options: GlassOptions): void;
43
+ show(): Promise<void>;
44
+ hide(): Promise<void>;
45
+ private fade;
31
46
  invalidate(): void;
32
47
  nudge(): void;
33
48
  restyle(): void;
49
+ private get moving();
34
50
  update(dt: number): boolean;
51
+ private layout;
52
+ private active;
53
+ private above;
54
+ private layered;
35
55
  private paint;
36
56
  private fallBack;
37
57
  }
@@ -39,5 +59,7 @@ export declare function placeCanvas(canvas: HTMLCanvasElement): void;
39
59
  export declare function attachGlass(host: HTMLElement, options?: GlassOptions): {
40
60
  set: (next: GlassOptions) => void;
41
61
  invalidate: () => void;
62
+ show: () => Promise<void>;
63
+ hide: () => Promise<void>;
42
64
  destroy: () => void;
43
65
  };
package/dist/surface.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { resolveBackdrop } from "./backdrop.js";
2
2
  import { resolveTint } from "./color.js";
3
- import { cornerRadius, lightVector, uvTransform } from "./geometry.js";
4
- import { Motion, interactions } from "./interaction.js";
5
- import { kebab, numericKeys, presets, resolveMaterial } from "./material.js";
6
- import { Renderer } from "./renderer.js";
3
+ import { cornerRadius, lightVector, softPeak, uvTransform } from "./geometry.js";
4
+ import { Shape, Spring, motionKeys, resolveMotion, still } from "./interaction.js";
5
+ import { kebab, numericKeys, resolveMaterial } from "./material.js";
6
+ import { Renderer, maxShapes } from "./renderer.js";
7
7
  const pad = 32;
8
8
  const surfaces = new Set();
9
9
  let pending = 0;
@@ -23,6 +23,17 @@ function tick(now) {
23
23
  if (again)
24
24
  wake();
25
25
  }
26
+ export function readMotion(element) {
27
+ const style = getComputedStyle(element);
28
+ const motion = {};
29
+ for (const key of motionKeys) {
30
+ const value = element.getAttribute(key) ?? style.getPropertyValue(`--glass-${key}`);
31
+ if (value)
32
+ motion[key] = parseFloat(value);
33
+ }
34
+ return motion;
35
+ }
36
+ const overlap = (a, b) => a.left < b.right && b.left < a.right && a.top < b.bottom && b.top < a.bottom;
26
37
  function nudgeAll() {
27
38
  for (const surface of surfaces)
28
39
  surface.nudge();
@@ -45,8 +56,10 @@ function listen() {
45
56
  export class GlassSurface {
46
57
  host;
47
58
  canvas;
59
+ options;
60
+ group;
48
61
  context;
49
- motion;
62
+ shapes = new Map();
50
63
  resize = new ResizeObserver(() => this.restyle());
51
64
  visibility = new IntersectionObserver(([entry]) => {
52
65
  this.visible = entry.isIntersecting;
@@ -56,19 +69,25 @@ export class GlassSurface {
56
69
  visible = true;
57
70
  forced = true;
58
71
  moved = false;
59
- signature = "";
60
72
  live = false;
61
- options;
73
+ connected = false;
74
+ signature = "";
62
75
  material = resolveMaterial();
63
- interaction = interactions.none;
76
+ reduced = false;
77
+ frame = null;
78
+ stack = null;
64
79
  tint = [1, 1, 1];
65
- radius = 0;
66
- constructor(host, canvas, options = {}) {
80
+ appear = new Spring(1, 120, 15);
81
+ settle = null;
82
+ boxes = new Float32Array(maxShapes * 4);
83
+ forms = new Float32Array(maxShapes * 2);
84
+ layer = 0;
85
+ constructor(host, canvas, options = {}, group = false) {
67
86
  this.host = host;
68
87
  this.canvas = canvas;
69
- this.context = canvas.getContext("2d");
70
- this.motion = new Motion(host, wake);
71
88
  this.options = options;
89
+ this.group = group;
90
+ this.context = canvas.getContext("2d");
72
91
  }
73
92
  connect() {
74
93
  listen();
@@ -77,21 +96,60 @@ export class GlassSurface {
77
96
  return;
78
97
  }
79
98
  this.host.dataset.engine = "webgl";
99
+ this.connected = true;
80
100
  surfaces.add(this);
81
- this.resize.observe(this.host);
82
101
  this.visibility.observe(this.host);
83
- this.motion.attach();
102
+ if (!this.group)
103
+ this.track(this.host);
104
+ if (this.options.appear) {
105
+ this.appear.value = 0;
106
+ this.appear.target = 1;
107
+ }
84
108
  this.restyle();
85
109
  }
86
110
  disconnect() {
111
+ this.connected = false;
87
112
  surfaces.delete(this);
88
113
  this.resize.disconnect();
89
114
  this.visibility.disconnect();
90
- this.motion.detach();
115
+ for (const shape of this.shapes.values())
116
+ shape.detach();
117
+ this.shapes.clear();
118
+ }
119
+ track(element) {
120
+ if (this.shapes.has(element) || this.shapes.size >= maxShapes)
121
+ return;
122
+ const shape = new Shape(element, wake);
123
+ shape.attach();
124
+ this.shapes.set(element, shape);
125
+ this.resize.observe(element);
126
+ element.dataset.engine = this.host.dataset.engine ?? "webgl";
127
+ if (this.connected)
128
+ this.restyle();
129
+ }
130
+ untrack(element) {
131
+ this.shapes.get(element)?.detach();
132
+ this.shapes.delete(element);
133
+ this.resize.unobserve(element);
134
+ this.invalidate();
91
135
  }
92
136
  set(options) {
93
137
  this.options = { ...this.options, ...options };
94
- this.restyle();
138
+ if (this.connected)
139
+ this.restyle();
140
+ }
141
+ show() {
142
+ return this.fade(1);
143
+ }
144
+ hide() {
145
+ return this.fade(0);
146
+ }
147
+ fade(target) {
148
+ this.appear.target = target;
149
+ this.invalidate();
150
+ return new Promise((resolve) => {
151
+ this.settle = resolve;
152
+ });
95
153
  }
96
154
  invalidate() {
97
155
  this.forced = true;
@@ -112,41 +170,61 @@ export class GlassSurface {
112
170
  const tint = style.getPropertyValue("--glass-tint").trim();
113
171
  if (tint)
114
172
  tokens.tint = tint;
115
- const { material = "regular", interaction = "none" } = this.options;
116
- this.material = typeof material === "string"
117
- ? resolveMaterial(presets[material] ?? presets.regular, tokens)
118
- : resolveMaterial(tokens, material);
119
- const reduced = matchMedia("(prefers-reduced-motion: reduce)").matches;
120
- this.interaction = reduced ? interactions.none : typeof interaction === "string" ? (interactions[interaction] ?? interactions.none) : interaction;
173
+ this.material = resolveMaterial(tokens, this.options.material);
174
+ this.layer = parseInt(style.zIndex) || 0;
175
+ this.reduced = matchMedia("(prefers-reduced-motion: reduce)").matches;
121
176
  this.tint = resolveTint(this.material.tint);
122
- this.radius = cornerRadius(style.borderTopLeftRadius, this.host.offsetWidth, this.host.offsetHeight);
177
+ const base = resolveMotion(this.options.motion, readMotion(this.host));
178
+ for (const shape of this.shapes.values()) {
179
+ const { element } = shape;
180
+ shape.motion = this.reduced ? still : element === this.host ? base : resolveMotion(base, readMotion(element));
181
+ shape.radius = cornerRadius(getComputedStyle(element).borderTopLeftRadius, element.offsetWidth, element.offsetHeight);
182
+ }
123
183
  this.invalidate();
124
184
  }
185
+ get moving() {
186
+ if (!this.appear.settled)
187
+ return true;
188
+ for (const shape of this.shapes.values())
189
+ if (shape.moving || shape.pressed)
190
+ return true;
191
+ return false;
192
+ }
125
193
  update(dt) {
126
- const { motion, interaction } = this;
127
- const moving = motion.moving;
128
- if (moving)
129
- motion.step(dt, interaction);
130
194
  if (!this.visible)
131
- return moving;
132
- const width = this.host.offsetWidth;
133
- const height = this.host.offsetHeight;
134
- if (!width || !height)
135
- return moving;
136
- if (!this.forced && !this.moved && !moving && !this.live)
195
+ return false;
196
+ if (!this.forced && !this.moved && !this.live && !this.moving)
137
197
  return false;
138
198
  const rect = this.host.getBoundingClientRect();
199
+ const grow = this.signature !== "";
200
+ for (const shape of this.shapes.values()) {
201
+ shape.read(shape.element.getBoundingClientRect(), this.moved, grow);
202
+ shape.step(dt);
203
+ }
204
+ if (this.reduced)
205
+ this.appear.snap(this.appear.target);
206
+ else
207
+ this.appear.step(dt);
208
+ this.host.style.setProperty("--glass-appear", this.appear.value.toFixed(3));
209
+ if (this.appear.settled && this.settle) {
210
+ this.settle();
211
+ this.settle = null;
212
+ }
213
+ const list = this.layout();
214
+ if (!list.length)
215
+ return false;
139
216
  const backdrop = resolveBackdrop(this.host, rect, this.options.source ?? "auto", () => this.invalidate());
140
217
  if (!backdrop)
141
- return moving;
218
+ return this.moving;
142
219
  this.live = this.options.live ?? (backdrop.live && backdrop.image instanceof HTMLVideoElement);
220
+ const moving = this.moving;
143
221
  const signature = `${rect.left},${rect.top},${rect.width},${rect.height},${backdrop.map.x},${backdrop.map.y},${backdrop.map.w},${backdrop.map.h}`;
144
222
  const skip = !this.forced && !moving && !this.live && signature === this.signature;
145
223
  this.moved = false;
146
224
  if (skip)
147
225
  return false;
148
226
  try {
149
- this.paint(backdrop, rect, width, height);
227
+ this.paint(backdrop, rect, list);
150
228
  }
151
229
  catch (error) {
152
230
  console.warn("@edinstvo/glass: can't read this backdrop, falling back to CSS.", error);
@@ -155,30 +233,96 @@ export class GlassSurface {
155
233
  }
156
234
  this.forced = false;
157
235
  this.signature = signature;
158
- return moving || motion.moving || this.live;
236
+ return moving || this.live;
237
+ }
238
+ layout() {
239
+ const scale = 0.84 + 0.16 * this.appear.value;
240
+ const list = [];
241
+ for (const shape of this.shapes.values()) {
242
+ const box = shape.box(scale);
243
+ if (box.halfW > 0.5 && box.halfH > 0.5)
244
+ list.push(box);
245
+ }
246
+ return list;
159
247
  }
160
- paint(backdrop, rect, width, height) {
248
+ active() {
249
+ let best = null;
250
+ for (const shape of this.shapes.values()) {
251
+ if (!best || Math.abs(shape.pointerX.value) + Math.abs(shape.pointerY.value) + shape.glow.value > Math.abs(best.pointerX.value) + Math.abs(best.pointerY.value) + best.glow.value)
252
+ best = shape;
253
+ }
254
+ return best;
255
+ }
256
+ above(other) {
257
+ if (this.layer !== other.layer)
258
+ return this.layer > other.layer;
259
+ return Boolean(other.host.compareDocumentPosition(this.host) & Node.DOCUMENT_POSITION_FOLLOWING);
260
+ }
261
+ layered(backdrop, frame, dpr) {
262
+ const under = [...surfaces].filter((other) => other !== this && other.frame && overlap(other.frame, frame) && this.above(other));
263
+ if (!under.length)
264
+ return backdrop;
265
+ const width = Math.round((frame.right - frame.left) * dpr);
266
+ const height = Math.round((frame.bottom - frame.top) * dpr);
267
+ this.stack ??= document.createElement("canvas");
268
+ this.stack.width = width;
269
+ this.stack.height = height;
270
+ const context = this.stack.getContext("2d");
271
+ context.scale(dpr, dpr);
272
+ const { map } = backdrop;
273
+ context.drawImage(backdrop.image, map.x - frame.left, map.y - frame.top, map.w, map.h);
274
+ for (const other of under) {
275
+ const f = other.frame;
276
+ context.drawImage(other.canvas, f.left - frame.left, f.top - frame.top, f.right - f.left, f.bottom - f.top);
277
+ }
278
+ return { image: this.stack, width, height, live: true, map: { x: frame.left, y: frame.top, w: frame.right - frame.left, h: frame.bottom - frame.top } };
279
+ }
280
+ paint(source, rect, list) {
161
281
  const dpr = Math.min(devicePixelRatio || 1, 2);
162
- const canvasW = Math.round((width + pad * 2) * dpr);
163
- const canvasH = Math.round((height + pad * 2) * dpr);
282
+ const left = Math.floor(Math.min(...list.map((b) => b.x - b.halfW))) - pad;
283
+ const top = Math.floor(Math.min(...list.map((b) => b.y - b.halfH))) - pad;
284
+ const right = Math.ceil(Math.max(...list.map((b) => b.x + b.halfW))) + pad;
285
+ const bottom = Math.ceil(Math.max(...list.map((b) => b.y + b.halfH))) + pad;
286
+ const frame = { left, top, right, bottom };
287
+ const backdrop = this.layered(source, frame, dpr);
288
+ const canvasW = Math.round((right - left) * dpr);
289
+ const canvasH = Math.round((bottom - top) * dpr);
164
290
  if (this.canvas.width !== canvasW || this.canvas.height !== canvasH) {
165
291
  this.canvas.width = canvasW;
166
292
  this.canvas.height = canvasH;
167
293
  }
168
- const { origin, perPixel } = uvTransform(rect, backdrop.map, rect.width / width, rect.height / height, dpr);
294
+ Object.assign(this.canvas.style, {
295
+ left: `${left - rect.left}px`,
296
+ top: `${top - rect.top}px`,
297
+ width: `${right - left}px`,
298
+ height: `${bottom - top}px`,
299
+ });
300
+ let peak = Infinity;
301
+ list.forEach((box, index) => {
302
+ this.boxes.set([(box.x - left) * dpr, (box.y - top) * dpr, box.halfW * dpr, box.halfH * dpr], index * 4);
303
+ this.forms.set([box.radius * dpr, box.join * dpr], index * 2);
304
+ peak = Math.min(peak, softPeak(box.halfW, box.halfH, box.radius) * dpr);
305
+ });
306
+ const shape = this.active();
307
+ const follow = shape?.motion.follow ?? 0;
169
308
  const [baseX, baseY] = lightVector(this.material.lightAngle);
170
- const follow = this.interaction.follow;
171
- const x = baseX + this.motion.x.value * follow;
172
- const y = baseY + this.motion.y.value * follow;
309
+ const x = baseX + (shape?.pointerX.value ?? 0) * follow;
310
+ const y = baseY + (shape?.pointerY.value ?? 0) * follow;
173
311
  const length = Math.hypot(x, y) || 1;
312
+ const strength = (shape?.glow.value ?? 0) * (shape?.motion.glow ?? 0) * 2;
313
+ const { origin, perPixel } = uvTransform({ left, top }, backdrop.map, 1, 1, dpr);
174
314
  Renderer.shared.draw({
175
315
  target: this.context,
176
316
  backdrop,
177
317
  width: canvasW,
178
318
  height: canvasH,
179
319
  pad: pad * dpr,
180
- size: [width * dpr, height * dpr],
181
- radius: this.radius * dpr,
320
+ boxes: this.boxes,
321
+ forms: this.forms,
322
+ count: list.length,
323
+ peak: Math.max(peak, 1),
324
+ appear: Math.max(this.appear.value, 0),
325
+ touch: [((shape?.touchX ?? 0) - left) * dpr, ((shape?.touchY ?? 0) - top) * dpr, strength],
182
326
  dpr,
183
327
  uvOrigin: origin,
184
328
  uvPerPixel: perPixel,
@@ -186,22 +330,22 @@ export class GlassSurface {
186
330
  tint: this.tint,
187
331
  material: this.material,
188
332
  });
333
+ this.frame = frame;
334
+ for (const other of surfaces) {
335
+ if (other !== this && other.frame && overlap(other.frame, frame) && other.above(this))
336
+ other.invalidate();
337
+ }
189
338
  }
190
339
  fallBack() {
191
340
  this.host.dataset.engine = "css";
341
+ for (const element of this.shapes.keys())
342
+ element.dataset.engine = "css";
192
343
  this.canvas.hidden = true;
193
344
  surfaces.delete(this);
194
345
  }
195
346
  }
196
347
  export function placeCanvas(canvas) {
197
- Object.assign(canvas.style, {
198
- position: "absolute",
199
- inset: `-${pad}px`,
200
- width: `calc(100% + ${pad * 2}px)`,
201
- height: `calc(100% + ${pad * 2}px)`,
202
- pointerEvents: "none",
203
- zIndex: "0",
204
- });
348
+ Object.assign(canvas.style, { position: "absolute", pointerEvents: "none", zIndex: "0" });
205
349
  }
206
350
  export function attachGlass(host, options = {}) {
207
351
  const canvas = document.createElement("canvas");
@@ -215,6 +359,8 @@ export function attachGlass(host, options = {}) {
215
359
  return {
216
360
  set: (next) => surface.set(next),
217
361
  invalidate: () => surface.invalidate(),
362
+ show: () => surface.show(),
363
+ hide: () => surface.hide(),
218
364
  destroy: () => {
219
365
  surface.disconnect();
220
366
  canvas.remove();
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edinstvo/glass",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-beta.2",
4
4
  "description": "Liquid glass for the web: one WebGL material that looks the same on macOS and Windows.",
5
5
  "license": "MIT",
6
6
  "type": "module",