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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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 = 8;
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 float uRadii[MAX_SHAPES], uJoin[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 = uRadii[i];
46
+ float own = roundedBox(c, b, r);
47
+ if (uJoin[i] > 0.0) joined = blend(joined, own, uJoin[i]);
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,56 @@
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
  }
10
11
  export declare class GlassSurface {
11
12
  private host;
12
13
  private canvas;
14
+ private options;
15
+ private group;
13
16
  private context;
14
- private motion;
17
+ private shapes;
15
18
  private resize;
16
19
  private visibility;
17
20
  private visible;
18
21
  private forced;
19
22
  private moved;
20
- private signature;
21
23
  private live;
22
- private options;
24
+ private connected;
25
+ private signature;
23
26
  private material;
24
- private interaction;
27
+ private reduced;
28
+ private frame;
29
+ private stack;
25
30
  private tint;
26
- private radius;
27
- constructor(host: HTMLElement, canvas: HTMLCanvasElement, options?: GlassOptions);
31
+ private appear;
32
+ private settle;
33
+ private boxes;
34
+ private radii;
35
+ private joins;
36
+ constructor(host: HTMLElement, canvas: HTMLCanvasElement, options?: GlassOptions, group?: boolean);
28
37
  connect(): void;
29
38
  disconnect(): void;
39
+ track(element: HTMLElement): void;
40
+ untrack(element: HTMLElement): void;
30
41
  set(options: GlassOptions): void;
42
+ show(): Promise<void>;
43
+ hide(): Promise<void>;
44
+ private fade;
31
45
  invalidate(): void;
32
46
  nudge(): void;
33
47
  restyle(): void;
48
+ private get moving();
34
49
  update(dt: number): boolean;
50
+ private layout;
51
+ private active;
52
+ private above;
53
+ private layered;
35
54
  private paint;
36
55
  private fallBack;
37
56
  }
@@ -39,5 +58,7 @@ export declare function placeCanvas(canvas: HTMLCanvasElement): void;
39
58
  export declare function attachGlass(host: HTMLElement, options?: GlassOptions): {
40
59
  set: (next: GlassOptions) => void;
41
60
  invalidate: () => void;
61
+ show: () => Promise<void>;
62
+ hide: () => Promise<void>;
42
63
  destroy: () => void;
43
64
  };
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
+ 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
+ radii = new Float32Array(maxShapes);
84
+ joins = new Float32Array(maxShapes);
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,60 @@ 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.reduced = matchMedia("(prefers-reduced-motion: reduce)").matches;
121
175
  this.tint = resolveTint(this.material.tint);
122
- this.radius = cornerRadius(style.borderTopLeftRadius, this.host.offsetWidth, this.host.offsetHeight);
176
+ const base = resolveMotion(this.options.motion, readMotion(this.host));
177
+ for (const shape of this.shapes.values()) {
178
+ const { element } = shape;
179
+ shape.motion = this.reduced ? still : element === this.host ? base : resolveMotion(base, readMotion(element));
180
+ shape.radius = cornerRadius(getComputedStyle(element).borderTopLeftRadius, element.offsetWidth, element.offsetHeight);
181
+ }
123
182
  this.invalidate();
124
183
  }
184
+ get moving() {
185
+ if (!this.appear.settled)
186
+ return true;
187
+ for (const shape of this.shapes.values())
188
+ if (shape.moving || shape.pressed)
189
+ return true;
190
+ return false;
191
+ }
125
192
  update(dt) {
126
- const { motion, interaction } = this;
127
- const moving = motion.moving;
128
- if (moving)
129
- motion.step(dt, interaction);
130
193
  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)
194
+ return false;
195
+ if (!this.forced && !this.moved && !this.live && !this.moving)
137
196
  return false;
138
197
  const rect = this.host.getBoundingClientRect();
198
+ const grow = this.signature !== "";
199
+ for (const shape of this.shapes.values()) {
200
+ shape.read(shape.element.getBoundingClientRect(), this.moved, grow);
201
+ shape.step(dt);
202
+ }
203
+ if (this.reduced)
204
+ this.appear.snap(this.appear.target);
205
+ else
206
+ this.appear.step(dt);
207
+ this.host.style.setProperty("--glass-appear", this.appear.value.toFixed(3));
208
+ if (this.appear.settled && this.settle) {
209
+ this.settle();
210
+ this.settle = null;
211
+ }
212
+ const list = this.layout();
213
+ if (!list.length)
214
+ return false;
139
215
  const backdrop = resolveBackdrop(this.host, rect, this.options.source ?? "auto", () => this.invalidate());
140
216
  if (!backdrop)
141
- return moving;
217
+ return this.moving;
142
218
  this.live = this.options.live ?? (backdrop.live && backdrop.image instanceof HTMLVideoElement);
219
+ const moving = this.moving;
143
220
  const signature = `${rect.left},${rect.top},${rect.width},${rect.height},${backdrop.map.x},${backdrop.map.y},${backdrop.map.w},${backdrop.map.h}`;
144
221
  const skip = !this.forced && !moving && !this.live && signature === this.signature;
145
222
  this.moved = false;
146
223
  if (skip)
147
224
  return false;
148
225
  try {
149
- this.paint(backdrop, rect, width, height);
226
+ this.paint(backdrop, rect, list);
150
227
  }
151
228
  catch (error) {
152
229
  console.warn("@edinstvo/glass: can't read this backdrop, falling back to CSS.", error);
@@ -155,30 +232,97 @@ export class GlassSurface {
155
232
  }
156
233
  this.forced = false;
157
234
  this.signature = signature;
158
- return moving || motion.moving || this.live;
235
+ return moving || this.live;
236
+ }
237
+ layout() {
238
+ const scale = 0.84 + 0.16 * this.appear.value;
239
+ const list = [];
240
+ for (const shape of this.shapes.values()) {
241
+ const box = shape.box(scale);
242
+ if (box.halfW > 0.5 && box.halfH > 0.5)
243
+ list.push(box);
244
+ }
245
+ return list;
159
246
  }
160
- paint(backdrop, rect, width, height) {
247
+ active() {
248
+ let best = null;
249
+ for (const shape of this.shapes.values()) {
250
+ 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)
251
+ best = shape;
252
+ }
253
+ return best;
254
+ }
255
+ above(other) {
256
+ const position = other.host.compareDocumentPosition(this.host);
257
+ return Boolean(position & Node.DOCUMENT_POSITION_FOLLOWING) && !(position & Node.DOCUMENT_POSITION_CONTAINED_BY);
258
+ }
259
+ layered(backdrop, frame, dpr) {
260
+ const under = [...surfaces].filter((other) => other !== this && other.frame && overlap(other.frame, frame) && this.above(other));
261
+ if (!under.length)
262
+ return backdrop;
263
+ const width = Math.round((frame.right - frame.left) * dpr);
264
+ const height = Math.round((frame.bottom - frame.top) * dpr);
265
+ this.stack ??= document.createElement("canvas");
266
+ this.stack.width = width;
267
+ this.stack.height = height;
268
+ const context = this.stack.getContext("2d");
269
+ context.scale(dpr, dpr);
270
+ const { map } = backdrop;
271
+ context.drawImage(backdrop.image, map.x - frame.left, map.y - frame.top, map.w, map.h);
272
+ for (const other of under) {
273
+ const f = other.frame;
274
+ context.drawImage(other.canvas, f.left - frame.left, f.top - frame.top, f.right - f.left, f.bottom - f.top);
275
+ }
276
+ 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 } };
277
+ }
278
+ paint(source, rect, list) {
161
279
  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);
280
+ const left = Math.floor(Math.min(...list.map((b) => b.x - b.halfW))) - pad;
281
+ const top = Math.floor(Math.min(...list.map((b) => b.y - b.halfH))) - pad;
282
+ const right = Math.ceil(Math.max(...list.map((b) => b.x + b.halfW))) + pad;
283
+ const bottom = Math.ceil(Math.max(...list.map((b) => b.y + b.halfH))) + pad;
284
+ const frame = { left, top, right, bottom };
285
+ const backdrop = this.layered(source, frame, dpr);
286
+ const canvasW = Math.round((right - left) * dpr);
287
+ const canvasH = Math.round((bottom - top) * dpr);
164
288
  if (this.canvas.width !== canvasW || this.canvas.height !== canvasH) {
165
289
  this.canvas.width = canvasW;
166
290
  this.canvas.height = canvasH;
167
291
  }
168
- const { origin, perPixel } = uvTransform(rect, backdrop.map, rect.width / width, rect.height / height, dpr);
292
+ Object.assign(this.canvas.style, {
293
+ left: `${left - rect.left}px`,
294
+ top: `${top - rect.top}px`,
295
+ width: `${right - left}px`,
296
+ height: `${bottom - top}px`,
297
+ });
298
+ let peak = Infinity;
299
+ list.forEach((box, index) => {
300
+ this.boxes.set([(box.x - left) * dpr, (box.y - top) * dpr, box.halfW * dpr, box.halfH * dpr], index * 4);
301
+ this.radii[index] = box.radius * dpr;
302
+ this.joins[index] = box.join * dpr;
303
+ peak = Math.min(peak, softPeak(box.halfW, box.halfH, box.radius) * dpr);
304
+ });
305
+ const shape = this.active();
306
+ const follow = shape?.motion.follow ?? 0;
169
307
  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;
308
+ const x = baseX + (shape?.pointerX.value ?? 0) * follow;
309
+ const y = baseY + (shape?.pointerY.value ?? 0) * follow;
173
310
  const length = Math.hypot(x, y) || 1;
311
+ const strength = (shape?.glow.value ?? 0) * (shape?.motion.glow ?? 0) * 2;
312
+ const { origin, perPixel } = uvTransform({ left, top }, backdrop.map, 1, 1, dpr);
174
313
  Renderer.shared.draw({
175
314
  target: this.context,
176
315
  backdrop,
177
316
  width: canvasW,
178
317
  height: canvasH,
179
318
  pad: pad * dpr,
180
- size: [width * dpr, height * dpr],
181
- radius: this.radius * dpr,
319
+ boxes: this.boxes,
320
+ radii: this.radii,
321
+ count: list.length,
322
+ joins: this.joins,
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.1",
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",