spine-html 0.5.1 → 0.5.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/README.md CHANGED
@@ -247,6 +247,37 @@ it — and calling it twice is a no-op. Load once for the page's lifetime and yo
247
247
  can ignore it; load and unload repeatedly without it and you leak an atlas per
248
248
  cycle.
249
249
 
250
+ ### Pages that ship at another resolution
251
+
252
+ A page image may ship at a resolution its atlas does not declare — a
253
+ half-resolution texture build, or an @2x variant, with the `size:` line left as
254
+ the packer wrote it. Nothing here needs a flag for that. A region's bounds are
255
+ read **relative to the declared page size** and scaled onto the image's natural
256
+ size, which is exactly how `spine-core` derives the UVs the mesh tier samples
257
+ with (`region.u = region.x / page.width`), so both tiers land on the same
258
+ pixels at any resolution:
259
+
260
+ ```
261
+ hero.png
262
+ size: 4096, 4096 # what the packer wrote
263
+ # hero.png itself ships 2048×2048
264
+ ```
265
+
266
+ Each unpacked bitmap comes out at the **native resolution of the pixels it was
267
+ cut from** — half-resolution pages cost a quarter of the cut pixels, and
268
+ nothing is upscaled back — while `RegionImage.width`/`height` stay in **atlas
269
+ units**. Those two numbers are the `<img>` layout box and the denominator of
270
+ its CSS matrix, so the skeleton poses identically and the browser scales the
271
+ smaller bitmap into the same box, the way a GPU samples a smaller texture
272
+ through the same UVs. Ship one atlas and swap the images per device if you
273
+ like.
274
+
275
+ The corollary: a `size:` line that is simply **wrong** is now wrong for the
276
+ whole renderer rather than for the mesh tier alone. Bounds are read against
277
+ what the atlas declares, so a page declared at a size its artwork was not
278
+ packed at reads every region from the wrong place in both tiers — correct the
279
+ `size:` line, which is what every other Spine runtime needs too.
280
+
250
281
  ### What unloading frees
251
282
 
252
283
  `revokeRegions()` — and `assets.dispose()`, which just calls it — frees the blob
@@ -297,12 +328,16 @@ bounds: 0, 0, 640, 480
297
328
  `spine-core` parses this as a normal multi-page atlas and nothing here needs a
298
329
  flag. Two things to know:
299
330
 
300
- - **`size:` must be the PNG's real pixel size.** UVs are derived from it
301
- (`region.x / page.width`), and a wrong value skews the mesh tier while the
302
- rigid tier still looks fine a confusing failure to chase.
331
+ - **`size:` is the frame every coordinate is read in**, so each page's
332
+ `bounds` must be written against the `size:` above them. The two need not be
333
+ the PNG's pixel sizethat is the point of the section above, and a
334
+ half-resolution `head.png` under `size: 512, 512` works — but a `size:` that
335
+ matches neither the bounds nor the artwork reads every region from the wrong
336
+ place, in both tiers.
303
337
  - Regions like these cover their whole page, so `unpackRegions` hands the page
304
- image straight through instead of cutting and re-encoding it. Load cost for
305
- this atlas shape is just the image loads.
338
+ image straight through instead of cutting and re-encoding it at any image
339
+ resolution, since covering the page is a statement about the declared size.
340
+ Load cost for this atlas shape is just the image loads.
306
341
 
307
342
  For a **rigid-only** skeleton you can skip atlas unpacking altogether and hand
308
343
  the renderer a map you build yourself — meshes cannot, because the deform tier
@@ -16,9 +16,18 @@ export interface RegionImage {
16
16
  * whole page, or anything the caller put there in a hand-built map.
17
17
  */
18
18
  url: string;
19
- /** Unpacked width in atlas pixels. */
19
+ /**
20
+ * Unpacked width in **atlas units** — the region's own `width`, not the
21
+ * bitmap's pixel width. The two differ whenever the page image ships at a
22
+ * resolution its atlas `size:` line does not mention (see cutRegion): a
23
+ * half-resolution page yields a bitmap half this wide. This is the layout
24
+ * box the rigid tier writes onto its `<img>` and the denominator of the CSS
25
+ * matrix it builds, so it stays in the frame the skeleton is authored in
26
+ * and the browser scales the bitmap into it — the same thing a GPU does
27
+ * when it samples normalized UVs from a texture of any resolution.
28
+ */
20
29
  width: number;
21
- /** Unpacked height in atlas pixels. */
30
+ /** Unpacked height in atlas units — see `width`. */
22
31
  height: number;
23
32
  }
24
33
  /**
@@ -30,7 +39,23 @@ export interface RegionImage {
30
39
  * rendering is pure DOM (one <img> per slot, one CSS matrix write per frame).
31
40
  *
32
41
  * A region that covers its whole page unrotated skips the cut and reuses the
33
- * page image URL — see the pass-through in cutRegion.
42
+ * page image URL — see the pass-through in planCut.
43
+ *
44
+ * **A page may ship at a resolution its atlas does not declare.** Half-size
45
+ * texture builds and @2x variants are normal, and no option is needed for
46
+ * them: a region's bounds are read relative to the declared page size and
47
+ * scaled onto the image's natural size, which is exactly how spine-core
48
+ * derives the UVs the mesh tier already samples with. Each bitmap comes out at
49
+ * the native resolution of the pixels it was cut from, and the `RegionImage`
50
+ * sizes beside it stay in atlas units, so nothing downstream has to know.
51
+ *
52
+ * *Behaviour change (0.5.1 → next).* An atlas whose `size:` line is simply
53
+ * wrong — bounds written in image pixels under a page declared some other size
54
+ * — used to be cut "as the coordinates say", because the cut read the image
55
+ * directly. It is now read the way every other Spine runtime reads it:
56
+ * relative to the declared size. Such an atlas rendered with a skewed mesh
57
+ * tier and an intact rigid tier before; now both tiers agree, and the fix is
58
+ * to correct the `size:` line.
34
59
  *
35
60
  * **The cuts run concurrently.** PNG encoding is asynchronous and the browser
36
61
  * does it off the main thread, so the encodes are started together and awaited
@@ -1 +1 @@
1
- {"version":3,"file":"DomTexture.d.ts","sourceRoot":"","sources":["../src/DomTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,OAAO;IACrC,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI;IACtE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IACxD,OAAO,IAAI,IAAI;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAsGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACxC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CA0EnC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAEpE"}
1
+ {"version":3,"file":"DomTexture.d.ts","sourceRoot":"","sources":["../src/DomTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,OAAO;IACrC,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI;IACtE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IACxD,OAAO,IAAI,IAAI;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;OASG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB;AAsMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACxC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CA0EnC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAEpE"}
@@ -28,9 +28,12 @@ function revokeOwned(url) {
28
28
  * Backing pixels the cuts still waiting for their PNG encode may hold at once.
29
29
  *
30
30
  * A started cut keeps its canvas alive until `toBlob` calls back, so starting
31
- * every region at once peaks at Σ(region area) of canvas backing — on top of
32
- * the decoded pages, which stay resident throughout. Measured by counting the
33
- * simultaneously-alive cut canvases and their backing at `toBlob` (chromium):
31
+ * every region at once peaks at Σ(cut area) of canvas backing — on top of the
32
+ * decoded pages, which stay resident throughout. A cut is allocated at the
33
+ * page image's own resolution, so what is charged here is that area, not the
34
+ * region's atlas-unit area: a half-resolution page costs a quarter of it, an
35
+ * @2x page four times it. Measured by counting the simultaneously-alive cut
36
+ * canvases and their backing at `toBlob` (chromium, 1:1 pages):
34
37
  * the demo's 40-region 1024×256 atlas peaks at all 40 cuts and 194,742 px
35
38
  * (0.19 Mpx ≈ 0.74 MiB), which is nothing; a synthetic 256-region atlas on
36
39
  * four 2048×2048 pages peaks at 16.78 Mpx ≈ 64 MiB, which doubles that
@@ -45,10 +48,101 @@ function revokeOwned(url) {
45
48
  * starve a cut.
46
49
  */
47
50
  const CUT_BACKING_BUDGET_PX = 4 * 1024 * 1024;
51
+ /**
52
+ * Locates a region on its page image.
53
+ *
54
+ * **The rect is read in the image's own frame, not in declared atlas pixels.**
55
+ * An atlas `size:` line and the image that ships for the page need not agree:
56
+ * projects export textures at half resolution (or @2x) and leave the atlas
57
+ * alone. Every official Spine runtime absorbs that for free, because
58
+ * spine-core turns a region's bounds into *normalized* UVs against the
59
+ * declared page size (`region.u = region.x / page.width`) and a GPU samples
60
+ * normalized coordinates at whatever resolution the texture happens to have.
61
+ * So the rect here is the region's bounds relative to the declared page size,
62
+ * times the image's natural size — the continuous `uv * size` frame both mesh
63
+ * backends already address texels in. No `size - 1`, no half-texel term: this
64
+ * maps a rect, it does not sample.
65
+ *
66
+ * With a page that does ship at its declared size the scale is exactly 1 and
67
+ * every number below is the region's own integer bounds, unchanged.
68
+ *
69
+ * Rotation: a region packed at 90° lies on its side, so it occupies a
70
+ * `height × width` rect on the page — which is how spine-core reads it too
71
+ * (`u2 = (x + height) / page.width` when `degrees === 90`). The cut canvas is
72
+ * the rect turned back upright, so the bitmap comes out in artwork
73
+ * orientation.
74
+ *
75
+ * Rounding: each *edge* is rounded to the nearest image pixel, rather than the
76
+ * width being rounded on its own. Neighbouring regions share an edge, so
77
+ * rounding the edge keeps their cuts tiling the image exactly — no gap, no
78
+ * overlap, and at most half a pixel of either region's own content given up on
79
+ * a boundary that falls mid-pixel. Rounding outward would instead pull a whole
80
+ * neighbouring pixel into every cut on every side, which is bleed the caller
81
+ * can see. A rect that scales down below one pixel still gets a 1×1 bitmap,
82
+ * since a zero-sized canvas is not one.
83
+ */
84
+ function planCut(region, image) {
85
+ const iw = image.naturalWidth;
86
+ const ih = image.naturalHeight;
87
+ // A page with no `size:` line (or a malformed one) declares nothing, so the
88
+ // image is taken to be its own declared size — which is what this did for
89
+ // every page before the frame above existed.
90
+ const pageW = region.page.width > 0 ? region.page.width : iw;
91
+ const pageH = region.page.height > 0 ? region.page.height : ih;
92
+ const rotated = region.degrees === 90;
93
+ const packedW = rotated ? region.height : region.width;
94
+ const packedH = rotated ? region.width : region.height;
95
+ // Whole-page pass-through: an unrotated region covering its entire page
96
+ // would be cut into a pixel-for-pixel copy of the page image, so reuse the
97
+ // page URL instead — no canvas, no PNG re-encode, no second decoded copy in
98
+ // memory, and nothing to revoke afterwards. Atlases written as one part per
99
+ // page (the loose-part-PNG workflow, where every part is declared its own
100
+ // page) hit this for every single region.
101
+ //
102
+ // The test is against the declared page size, at any image resolution: a
103
+ // whole page is a whole page whether it ships at 1×, half or double, and the
104
+ // cut would copy the image either way. (It used to be tested against the
105
+ // image, which was the same rule as long as the two always agreed.)
106
+ if (!rotated && region.x === 0 && region.y === 0 && packedW === pageW && packedH === pageH) {
107
+ return { passThrough: true, sx: 0, sy: 0, sw: iw, sh: ih, cw: iw, ch: ih };
108
+ }
109
+ const scaleX = iw / pageW;
110
+ const scaleY = ih / pageH;
111
+ const x0 = Math.round(region.x * scaleX);
112
+ const y0 = Math.round(region.y * scaleY);
113
+ const sw = Math.max(1, Math.round((region.x + packedW) * scaleX) - x0);
114
+ const sh = Math.max(1, Math.round((region.y + packedH) * scaleY) - y0);
115
+ return {
116
+ passThrough: false,
117
+ sx: x0,
118
+ sy: y0,
119
+ sw,
120
+ sh,
121
+ cw: rotated ? sh : sw,
122
+ ch: rotated ? sw : sh,
123
+ };
124
+ }
125
+ /** Backing pixels one cut allocates — the charge against the budget above. */
126
+ function cutBackingPixels(region, pageImages) {
127
+ const image = pageImages.get(region.page.name);
128
+ // No image: this region is about to fail in the cut. Charging its atlas
129
+ // units keeps the walk moving until it does.
130
+ if (!image)
131
+ return region.width * region.height;
132
+ const plan = planCut(region, image);
133
+ return plan.cw * plan.ch;
134
+ }
48
135
  /**
49
136
  * One region's bitmap: the whole-page pass-through, or a cut canvas encoded to
50
137
  * a blob URL this module then owns.
51
138
  *
139
+ * The cut is a **1:1 copy of the source rect** planCut located — never a
140
+ * resample — so the bitmap has the native resolution of those pixels, while
141
+ * the `RegionImage` sizes reported alongside it stay in atlas units. A page
142
+ * shipped at half resolution therefore costs a quarter of the cut pixels and
143
+ * still poses identically; upscaling the cut back to declared size would only
144
+ * quadruple the pixels and add a resample.
145
+ *
52
146
  * Everything before the `toBlob` await runs synchronously, so calling this is
53
147
  * what "starts" a cut: the canvas is painted and the encode is handed to the
54
148
  * browser before control comes back.
@@ -59,39 +153,22 @@ async function cutRegion(region, pageImages) {
59
153
  throw new Error(`Missing page image: ${region.page.name}`);
60
154
  const w = region.width;
61
155
  const h = region.height;
62
- // Whole-page pass-through: an unrotated region covering its entire page
63
- // would be cut into a pixel-for-pixel copy of the page image, so reuse
64
- // the page URL instead — no canvas, no PNG re-encode, no second decoded
65
- // copy in memory, and nothing to revoke afterwards. Atlases written as
66
- // one part per page (the loose-part-PNG workflow, where every part is
67
- // declared its own page) hit this for every single region.
68
- //
69
- // The test is against the image, not the atlas `size:` line: a page
70
- // declared at the wrong size still goes through the cut, since the cut
71
- // is what the region's coordinates actually describe.
72
- if (region.degrees === 0 &&
73
- region.x === 0 &&
74
- region.y === 0 &&
75
- w === image.naturalWidth &&
76
- h === image.naturalHeight) {
156
+ const plan = planCut(region, image);
157
+ if (plan.passThrough)
77
158
  return { url: image.src, width: w, height: h };
78
- }
79
159
  const canvas = document.createElement('canvas');
80
- canvas.width = w;
81
- canvas.height = h;
160
+ canvas.width = plan.cw;
161
+ canvas.height = plan.ch;
82
162
  const ctx = canvas.getContext('2d');
83
163
  if (!ctx)
84
164
  throw new Error('2d context unavailable');
85
165
  if (region.degrees === 90) {
86
- // The region is packed rotated: it occupies an h×w rect in the page.
87
- // Rotate it back so the bitmap is in artwork orientation.
88
- ctx.translate(0, h);
166
+ // The region is packed rotated. Turn the destination frame back so the
167
+ // source rect, drawn at its own size, lands upright and fills the canvas.
168
+ ctx.translate(0, plan.ch);
89
169
  ctx.rotate(-Math.PI / 2);
90
- ctx.drawImage(image, region.x, region.y, h, w, 0, 0, h, w);
91
- }
92
- else {
93
- ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h);
94
170
  }
171
+ ctx.drawImage(image, plan.sx, plan.sy, plan.sw, plan.sh, 0, 0, plan.sw, plan.sh);
95
172
  const blob = await new Promise((resolve, reject) => {
96
173
  canvas.toBlob((b) => (b ? resolve(b) : reject(new Error('toBlob failed'))), 'image/png');
97
174
  });
@@ -108,7 +185,23 @@ async function cutRegion(region, pageImages) {
108
185
  * rendering is pure DOM (one <img> per slot, one CSS matrix write per frame).
109
186
  *
110
187
  * A region that covers its whole page unrotated skips the cut and reuses the
111
- * page image URL — see the pass-through in cutRegion.
188
+ * page image URL — see the pass-through in planCut.
189
+ *
190
+ * **A page may ship at a resolution its atlas does not declare.** Half-size
191
+ * texture builds and @2x variants are normal, and no option is needed for
192
+ * them: a region's bounds are read relative to the declared page size and
193
+ * scaled onto the image's natural size, which is exactly how spine-core
194
+ * derives the UVs the mesh tier already samples with. Each bitmap comes out at
195
+ * the native resolution of the pixels it was cut from, and the `RegionImage`
196
+ * sizes beside it stay in atlas units, so nothing downstream has to know.
197
+ *
198
+ * *Behaviour change (0.5.1 → next).* An atlas whose `size:` line is simply
199
+ * wrong — bounds written in image pixels under a page declared some other size
200
+ * — used to be cut "as the coordinates say", because the cut read the image
201
+ * directly. It is now read the way every other Spine runtime reads it:
202
+ * relative to the declared size. Such an atlas rendered with a skewed mesh
203
+ * tier and an intact rigid tier before; now both tiers agree, and the fix is
204
+ * to correct the `size:` line.
112
205
  *
113
206
  * **The cuts run concurrently.** PNG encoding is asynchronous and the browser
114
207
  * does it off the main thread, so the encodes are started together and awaited
@@ -155,8 +248,8 @@ export async function unpackRegions(atlas, pageImages) {
155
248
  if (!region)
156
249
  continue;
157
250
  // A pass-through allocates no canvas, but it also resolves without waiting
158
- // for anything, so charging it the region's area costs at most one drain.
159
- const pixels = region.width * region.height;
251
+ // for anything, so charging it the page's area costs at most one drain.
252
+ const pixels = cutBackingPixels(region, pageImages);
160
253
  while (inFlight.length > 0 && inFlightPixels + pixels > CUT_BACKING_BUDGET_PX) {
161
254
  await Promise.race(inFlight.map((job) => job.promise));
162
255
  inFlight = inFlight.filter((job) => !job.done);
@@ -1 +1 @@
1
- {"version":3,"file":"DomTexture.js","sourceRoot":"","sources":["../src/DomTexture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DomTexture.js","sourceRoot":"","sources":["../src/DomTexture.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spine-html",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Render Spine skeletal animations as plain DOM — rigid slots as <img> posed by CSS matrix, deform meshes on small per-part canvases, interleaved in one stacking context.",
5
5
  "type": "module",
6
6
  "license": "MIT",