spryte 0.2.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -8
- package/dist/backend.d.ts +22 -5
- package/dist/backend.d.ts.map +1 -1
- package/dist/canvas2d.d.ts +11 -3
- package/dist/canvas2d.d.ts.map +1 -1
- package/dist/canvas2d.js +72 -4
- package/dist/canvas2d.js.map +1 -1
- package/dist/draw.d.ts +50 -20
- package/dist/draw.d.ts.map +1 -1
- package/dist/draw.js +48 -7
- package/dist/draw.js.map +1 -1
- package/dist/filters.d.ts +59 -0
- package/dist/filters.d.ts.map +1 -0
- package/dist/filters.js +188 -0
- package/dist/filters.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/mask.d.ts +13 -0
- package/dist/mask.d.ts.map +1 -0
- package/dist/mask.js +29 -0
- package/dist/mask.js.map +1 -0
- package/dist/offscreen.d.ts +26 -0
- package/dist/offscreen.d.ts.map +1 -0
- package/dist/offscreen.js +83 -0
- package/dist/offscreen.js.map +1 -0
- package/dist/panels.d.ts +44 -0
- package/dist/panels.d.ts.map +1 -0
- package/dist/panels.js +97 -0
- package/dist/panels.js.map +1 -0
- package/dist/phaser.d.ts +80 -0
- package/dist/phaser.d.ts.map +1 -0
- package/dist/phaser.js +100 -0
- package/dist/phaser.js.map +1 -0
- package/dist/renderer.js +1 -0
- package/dist/renderer.js.map +1 -1
- package/dist/shapes.d.ts +64 -0
- package/dist/shapes.d.ts.map +1 -0
- package/dist/shapes.js +367 -0
- package/dist/shapes.js.map +1 -0
- package/dist/shared.d.ts +29 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +134 -0
- package/dist/shared.js.map +1 -0
- package/dist/webgl2.d.ts +29 -12
- package/dist/webgl2.d.ts.map +1 -1
- package/dist/webgl2.js +138 -19
- package/dist/webgl2.js.map +1 -1
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
# spryte
|
|
4
4
|
|
|
5
|
-
**Blazing fast 2D rendering for the web: 2
|
|
5
|
+
**Blazing fast 2D rendering for the web: 2-4x faster than the most popular renderer, at an eighth of its size.** Every number is checked pixel for pixel in [2dbench](https://github.com/debuffjp/2dbench), an open benchmark you can [run on your own device](https://debuffjp.github.io/2dbench/mobile.html).
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
-
You draw in immediate mode (sprites, bulk sprites,
|
|
9
|
+
You draw in immediate mode (sprites, bulk sprites, nine-slice panels, tiled fills, shapes and strokes, text, clips, masks, blend modes, filters, render targets and custom shaders), and spryte batches it onto WebGL2 with instancing, falling back to Canvas 2D automatically. No dependencies, no scene graph, no game framework.
|
|
10
10
|
|
|
11
11
|
> **Alpha.** spryte is the renderer inside [debuff](https://debuff.jp), where games already run on it. The API may still change before 1.0. It's measured on desktop Chrome and Chromium (Windows and Linux; NVIDIA and AMD GPUs), iPhone Safari and Chrome, and Firefox on Android, and its one-call-per-sprite path is ahead of PixiJS on every device so far ([results across devices](https://github.com/debuffjp/2dbench#across-devices)). Safari on macOS isn't covered yet: [run 2dbench on your device](https://debuffjp.github.io/2dbench/mobile.html) to help.
|
|
12
12
|
|
|
@@ -45,21 +45,23 @@ Games are where spryte started, but anything that draws lots of moving 2D things
|
|
|
45
45
|
|
|
46
46
|
## Why spryte
|
|
47
47
|
|
|
48
|
-
Against PixiJS 8 on the same machine, assets and simulation, over 3
|
|
48
|
+
Against PixiJS 8 on the same machine, assets and simulation, over 3-7 interleaved rounds in [2dbench](https://github.com/debuffjp/2dbench), after a pixel-parity gate (desktop Chrome, RTX 5060 laptop, spryte 0.2.1). The comparison went through a fairness review aimed at breaking it. Method, raw data and caveats are in [benchmarks](https://github.com/debuffjp/spryte/blob/main/docs/benchmarks.md).
|
|
49
49
|
|
|
50
50
|
| | spryte | PixiJS 8 | |
|
|
51
51
|
| --- | --- | --- | --- |
|
|
52
|
-
| JS at startup (brotli) | **
|
|
53
|
-
| 200k particles, per-particle scale, rotation, tint and alpha all changing | **5.8 ms** | 24.2 ms (`ParticleContainer`) | 4.
|
|
54
|
-
| 50k sprites with rotation, scale and tint, one call each | **7.8 ms** | 27.1 ms (`Sprite`) | 3.
|
|
55
|
-
| 200k sprites, position only, bulk | **2.8 ms** | 7.2 ms (`ParticleContainer`) | 2.
|
|
52
|
+
| JS at startup (brotli) | **11.3 kB** | 87.8 kB | ~8x smaller |
|
|
53
|
+
| 200k particles, per-particle scale, rotation, tint and alpha all changing | **5.8 ms** | 24.2 ms (`ParticleContainer`) | 4.2x faster |
|
|
54
|
+
| 50k sprites with rotation, scale and tint, one call each | **7.8 ms** | 27.1 ms (`Sprite`) | 3.5x faster |
|
|
55
|
+
| 200k sprites, position only, bulk | **2.8 ms** | 7.2 ms (`ParticleContainer`) | 2.6x faster |
|
|
56
56
|
|
|
57
57
|

|
|
58
58
|
|
|
59
|
-
*Charts from [2dbench](https://github.com/debuffjp/2dbench), the same run as the table (3
|
|
59
|
+
*Charts from [2dbench](https://github.com/debuffjp/2dbench), the same run as the table (3-7 rounds depending on the scene). Lower lines are faster; the dashed line is the 60 fps budget.*
|
|
60
60
|
|
|
61
61
|
In [2dbench](https://github.com/debuffjp/2dbench)'s raycaster scene (a retro first-person maze drawn as thousands of texture slices), spryte held 20,000 enemies at 60 fps against PixiJS `Sprite`'s 5,000. The gap is per-sprite work: a PixiJS `Sprite` is a scene-graph object updated, bounded and batched every frame, while spryte writes a few numbers per sprite into a typed array and the GPU expands them. Static scenes, where PixiJS can cache, are much closer.
|
|
62
62
|
|
|
63
|
+
Against Phaser 4 on the same laptop, spryte draws moving sprites 2.2-3.1x faster than Phaser's `Image` and 5x faster than its `SpriteGPULayer`, at 11.3 kB of JavaScript against Phaser's 276.6 kB ([spryte vs Phaser](https://debuff.jp/blog/spryte-vs-phaser)). A Phaser game can keep Phaser and hand its heaviest effects to spryte, inside Phaser's frame and depth order, through an `Extern` (`spryte/phaser`, see the [API docs](docs/api.md#phaser-4-sprytephaser)).
|
|
64
|
+
|
|
63
65
|
- **Bulk sprites with no per-sprite JavaScript.** On WebGL2, pass a `Float32Array` of positions (plus optional per-copy scale, rotation and colour arrays) and spryte uploads it as is.
|
|
64
66
|
- **Immediate mode.** There are no display objects to create, pool or destroy. Draw what you want this frame.
|
|
65
67
|
- **Verified output.** Real-GPU pixel checks prove that the bulk paths, render targets and shaders draw exactly what the simple path draws.
|
|
@@ -78,6 +80,7 @@ draw.withShader(crt, () => draw.sprite(scene, 0, 0, { origin: [0, 0] }));
|
|
|
78
80
|
- **Guides on debuff.jp:** [getting started](https://debuff.jp/spryte/getting-started), [sprites and frames](https://debuff.jp/spryte/sprites), [bulk sprites and particles](https://debuff.jp/spryte/bulk-sprites), [shapes and text](https://debuff.jp/spryte/shapes-and-text), [transforms and clipping](https://debuff.jp/spryte/transforms-and-clipping), [render targets and shaders](https://debuff.jp/spryte/render-targets-and-shaders), [pixel art](https://debuff.jp/spryte/pixel-art)
|
|
79
81
|
- **[How spryte got fast](https://debuff.jp/research/how-spryte-got-fast):** the research write-up, from the first profile to the 8-byte instance format
|
|
80
82
|
- **[Migrating from PixiJS](https://debuff.jp/spryte/migrating-from-pixijs):** the mental model, side-by-side code and a mapping table
|
|
83
|
+
- **[Migrating from Phaser](https://debuff.jp/spryte/migrating-from-phaser):** what spryte replaces in Phaser, side-by-side code and a mapping table
|
|
81
84
|
- [Changelog](https://github.com/debuffjp/spryte/blob/main/CHANGELOG.md)
|
|
82
85
|
- [Roadmap](https://github.com/debuffjp/debuff/blob/main/docs/roadmap.md#spryte)
|
|
83
86
|
- [API reference](https://github.com/debuffjp/spryte/blob/main/docs/api.md)
|
package/dist/backend.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/** 2D affine matrix `[a, b, c, d, e, f]`: x' = a·x + c·y + e, y' = b·x + d·y + f (Canvas order). */
|
|
2
2
|
export type Matrix = [number, number, number, number, number, number];
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* How drawing combines with what's underneath. `add` brightens (glows, fire), `multiply` darkens (shadows,
|
|
5
|
+
* tinted lighting), `screen` lightens softly, and `erase` cuts alpha out of what's there (holes in a render
|
|
6
|
+
* target, masks). On a see-through target `multiply` follows the GPU formula, which hides drawing over fully
|
|
7
|
+
* transparent pixels where Canvas 2D shows it.
|
|
8
|
+
*/
|
|
9
|
+
export type BlendMode = "normal" | "add" | "multiply" | "screen" | "erase";
|
|
4
10
|
export interface ClipRect {
|
|
5
11
|
x: number;
|
|
6
12
|
y: number;
|
|
@@ -17,6 +23,7 @@ export type RawContext = {
|
|
|
17
23
|
};
|
|
18
24
|
import type { CopySpec } from "./copies.js";
|
|
19
25
|
import type { Shader } from "./shader.js";
|
|
26
|
+
import type { ShapeBuffer } from "./shapes.js";
|
|
20
27
|
import type { RenderTarget } from "./target.js";
|
|
21
28
|
/** Image sources the renderer can draw. Textures are cached per source object. */
|
|
22
29
|
export type TextureSource = HTMLImageElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap | RenderTarget;
|
|
@@ -32,8 +39,8 @@ export interface Backend {
|
|
|
32
39
|
readonly contextLost?: boolean;
|
|
33
40
|
/** GPU draw calls submitted so far this frame, where the backend batches (WebGL2). */
|
|
34
41
|
readonly drawCalls?: number;
|
|
35
|
-
/** Begin a frame: clear to `clear` (0xRRGGBBAA) at the given logical size and backing scale. */
|
|
36
|
-
begin(clear: number, width: number, height: number, scale: number): void;
|
|
42
|
+
/** Begin a frame: clear to `clear` (0xRRGGBBAA; null keeps what's there) at the given logical size and backing scale. */
|
|
43
|
+
begin(clear: number | null, width: number, height: number, scale: number): void;
|
|
37
44
|
/**
|
|
38
45
|
* Draw the unit square transformed by `m`. `src` null draws solid `color`.
|
|
39
46
|
* `sx, sy, sw, sh` is the source rect in source pixels (ignored when `src` is null). `flash` (0..1) mixes the texture toward white.
|
|
@@ -47,14 +54,24 @@ export interface Backend {
|
|
|
47
54
|
quads(t: Matrix, m: Matrix, positions: ArrayLike<number>, count: number, src: TextureSource, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean, snap: boolean): void;
|
|
48
55
|
/** Copies of one frame with per-copy scale, rotation or colour (`draw.sprites` with `each`). */
|
|
49
56
|
copies(spec: CopySpec): void;
|
|
50
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Fill (`width` 0) or stroke a path of `n` points (x0, y0, x1, y1, …) in the units `m` maps to logical space.
|
|
59
|
+
* `aa` is one device pixel in those units, for edge antialiasing where the backend does its own. The
|
|
60
|
+
* tessellator comes from the shape functions, so it's only in apps that draw shapes.
|
|
61
|
+
*/
|
|
62
|
+
path(m: Matrix, points: ArrayLike<number>, n: number, closed: boolean, width: number, color: number, aa: number, tessellator: new () => ShapeBuffer): void;
|
|
63
|
+
/** `mask` (internal, for `mask()`) keeps what's there in proportion to the source's alpha. */
|
|
64
|
+
setBlend(mode: BlendMode | "mask"): void;
|
|
51
65
|
/**
|
|
52
66
|
* Send drawing to `target` (null: the canvas). `clear` (0xRRGGBBAA) clears it first; null keeps what's there.
|
|
53
|
-
* `width, height` are the logical size of the destination
|
|
67
|
+
* `width, height` are the logical size of the destination: the canvas's logical size, or for a target its pixel
|
|
68
|
+
* size (`into`) or the canvas's logical size again (`mask`, whose targets match the canvas's backing pixels).
|
|
54
69
|
*/
|
|
55
70
|
setTarget(target: RenderTarget | null, clear: number | null, width: number, height: number): void;
|
|
56
71
|
/** Draw subsequent quads with a custom fragment effect (null: the default). */
|
|
57
72
|
setShader(shader: Shader | null): void;
|
|
73
|
+
/** Canvas 2D only: a CSS filter (`"none"` to clear) for subsequent draws. Its presence selects CSS filters in `filter()`. */
|
|
74
|
+
setFilter?(css: string): void;
|
|
58
75
|
/** Free a target's GPU or canvas storage. */
|
|
59
76
|
disposeTarget(target: RenderTarget): void;
|
|
60
77
|
/** Restrict drawing to a rectangle in backing-store pixels (top-left origin), or remove the clip. */
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3E,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,sBAAsB,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAExH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AAEhH;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,sFAAsF;IACtF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yHAAyH;IACzH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChF;;;;OAIG;IACH,IAAI,CACF,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,GACd,IAAI,CAAC;IACR;;;OAGG;IACH,KAAK,CACH,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,GACZ,IAAI,CAAC;IACR,gGAAgG;IAChG,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,IAAI,CACF,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EACzB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,UAAU,WAAW,GACjC,IAAI,CAAC;IACR,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClG,+EAA+E;IAC/E,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,6HAA6H;IAC7H,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1C,qGAAqG;IACrG,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,2CAA2C;IAC3C,GAAG,IAAI,IAAI,CAAC;IACZ,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,8DAA8D;IAC9D,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,MAAM,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzH,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
package/dist/canvas2d.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare class Canvas2DBackend implements Backend {
|
|
|
19
19
|
private readonly surfaces;
|
|
20
20
|
private target;
|
|
21
21
|
private warnedShader;
|
|
22
|
+
private warnedFilter;
|
|
22
23
|
private scale;
|
|
23
24
|
private smoothing;
|
|
24
25
|
private scratch;
|
|
@@ -27,17 +28,19 @@ export declare class Canvas2DBackend implements Backend {
|
|
|
27
28
|
private clipped;
|
|
28
29
|
private blendMode;
|
|
29
30
|
constructor(ctx: CanvasRenderingContext2D);
|
|
30
|
-
begin(clear: number, width: number, height: number, scale: number): void;
|
|
31
|
+
begin(clear: number | null, width: number, height: number, scale: number): void;
|
|
31
32
|
quad(m: Matrix, src: TextureSource | null, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean): void;
|
|
32
33
|
quads(t: Matrix, m: Matrix, positions: ArrayLike<number>, count: number, src: TextureSource, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean, snap: boolean): void;
|
|
33
34
|
copies(c: CopySpec): void;
|
|
34
|
-
|
|
35
|
+
path(m: Matrix, points: ArrayLike<number>, n: number, closed: boolean, width: number, color: number): void;
|
|
36
|
+
setBlend(mode: BlendMode | "mask"): void;
|
|
35
37
|
setClip(rect: ClipRect | null): void;
|
|
36
38
|
end(): void;
|
|
37
39
|
resize(): void;
|
|
38
40
|
invalidate(src: TextureSource): void;
|
|
39
41
|
dispose(): void;
|
|
40
|
-
setTarget(target: RenderTarget | null, clear: number | null,
|
|
42
|
+
setTarget(target: RenderTarget | null, clear: number | null, width: number, _height: number): void;
|
|
43
|
+
setFilter(css: string): void;
|
|
41
44
|
setShader(shader: Shader | null): void;
|
|
42
45
|
disposeTarget(target: RenderTarget): void;
|
|
43
46
|
private surface;
|
|
@@ -49,4 +52,9 @@ export declare class Canvas2DBackend implements Backend {
|
|
|
49
52
|
private shaded;
|
|
50
53
|
private scratchCanvas;
|
|
51
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Whether Canvas 2D applies `ctx.filter`. Some browsers accept the property and ignore it (Safari before 18), so
|
|
57
|
+
* this draws one red pixel through `grayscale(1)` and reads it back, once.
|
|
58
|
+
*/
|
|
59
|
+
export declare function canvasFilters(): boolean;
|
|
52
60
|
//# sourceMappingURL=canvas2d.d.ts.map
|
package/dist/canvas2d.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas2d.d.ts","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpG,OAAO,EAAE,KAAK,QAAQ,EAAU,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;IAC9B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,+FAA+F;IAC/F,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAkD;IACjE,mEAAmE;IACnE,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"canvas2d.d.ts","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"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"}
|
package/dist/canvas2d.js
CHANGED
|
@@ -18,6 +18,7 @@ export class Canvas2DBackend {
|
|
|
18
18
|
surfaces = new WeakMap();
|
|
19
19
|
target = null;
|
|
20
20
|
warnedShader = false;
|
|
21
|
+
warnedFilter = false;
|
|
21
22
|
scale = 1;
|
|
22
23
|
smoothing;
|
|
23
24
|
scratch;
|
|
@@ -39,6 +40,8 @@ export class Canvas2DBackend {
|
|
|
39
40
|
ctx.setTransform(scale, 0, 0, scale, 0, 0);
|
|
40
41
|
ctx.globalAlpha = 1;
|
|
41
42
|
ctx.globalCompositeOperation = "source-over";
|
|
43
|
+
if (clear === null)
|
|
44
|
+
return;
|
|
42
45
|
// A see-through clear colour replaces last frame instead of blending over it.
|
|
43
46
|
if ((clear & 0xff) < 255)
|
|
44
47
|
ctx.clearRect(0, 0, width, height);
|
|
@@ -90,9 +93,35 @@ export class Canvas2DBackend {
|
|
|
90
93
|
this.quad(q, c.src, c.sx, c.sy, c.sw, c.sh, color, c.flash, c.smooth);
|
|
91
94
|
}
|
|
92
95
|
}
|
|
96
|
+
path(m, points, n, closed, width, color) {
|
|
97
|
+
if (n < 2)
|
|
98
|
+
return;
|
|
99
|
+
const ctx = this.ctx;
|
|
100
|
+
const s = this.scale;
|
|
101
|
+
ctx.setTransform(m[0] * s, m[1] * s, m[2] * s, m[3] * s, m[4] * s, m[5] * s);
|
|
102
|
+
ctx.globalAlpha = 1;
|
|
103
|
+
ctx.beginPath();
|
|
104
|
+
ctx.moveTo(points[0], points[1]);
|
|
105
|
+
for (let i = 1; i < n; i++)
|
|
106
|
+
ctx.lineTo(points[i * 2], points[i * 2 + 1]);
|
|
107
|
+
if (closed || width === 0)
|
|
108
|
+
ctx.closePath();
|
|
109
|
+
if (width === 0) {
|
|
110
|
+
ctx.fillStyle = rgbaToCss(color);
|
|
111
|
+
ctx.fill();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
ctx.strokeStyle = rgbaToCss(color);
|
|
115
|
+
ctx.lineWidth = width;
|
|
116
|
+
ctx.lineJoin = "miter";
|
|
117
|
+
ctx.miterLimit = 4;
|
|
118
|
+
ctx.lineCap = "butt";
|
|
119
|
+
ctx.stroke();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
93
122
|
setBlend(mode) {
|
|
94
123
|
this.blendMode = mode;
|
|
95
|
-
this.ctx.globalCompositeOperation = mode
|
|
124
|
+
this.ctx.globalCompositeOperation = COMPOSITE[mode];
|
|
96
125
|
}
|
|
97
126
|
setClip(rect) {
|
|
98
127
|
const ctx = this.ctx;
|
|
@@ -126,11 +155,11 @@ export class Canvas2DBackend {
|
|
|
126
155
|
this.shades.delete(src);
|
|
127
156
|
}
|
|
128
157
|
dispose() { }
|
|
129
|
-
setTarget(target, clear,
|
|
158
|
+
setTarget(target, clear, width, _height) {
|
|
130
159
|
this.ctx = target ? this.surface(target).getContext("2d") : this.screen;
|
|
131
160
|
this.target = target;
|
|
132
|
-
//
|
|
133
|
-
this.scale = target ?
|
|
161
|
+
// The canvas is in logical units at its backing scale; a target at its pixels per logical unit (1 for `into`).
|
|
162
|
+
this.scale = target ? target.width / width : this.screenScale;
|
|
134
163
|
this.smoothing = undefined;
|
|
135
164
|
this.setBlend(this.blendMode);
|
|
136
165
|
if (target && clear !== null) {
|
|
@@ -144,6 +173,16 @@ export class Canvas2DBackend {
|
|
|
144
173
|
}
|
|
145
174
|
}
|
|
146
175
|
}
|
|
176
|
+
setFilter(css) {
|
|
177
|
+
if (css !== "none" && !canvasFilters()) {
|
|
178
|
+
if (!this.warnedFilter) {
|
|
179
|
+
this.warnedFilter = true;
|
|
180
|
+
console.warn("spryte: this browser's Canvas 2D ignores ctx.filter, so filters draw unfiltered on the fallback");
|
|
181
|
+
}
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
this.ctx.filter = css;
|
|
185
|
+
}
|
|
147
186
|
setShader(shader) {
|
|
148
187
|
if (shader && !this.warnedShader) {
|
|
149
188
|
this.warnedShader = true;
|
|
@@ -237,4 +276,33 @@ function newSurface(w, h) {
|
|
|
237
276
|
function mixWhite(c, f) {
|
|
238
277
|
return Math.round(c + ((255 - c) * f) / 255);
|
|
239
278
|
}
|
|
279
|
+
let filtersWork;
|
|
280
|
+
/**
|
|
281
|
+
* Whether Canvas 2D applies `ctx.filter`. Some browsers accept the property and ignore it (Safari before 18), so
|
|
282
|
+
* this draws one red pixel through `grayscale(1)` and reads it back, once.
|
|
283
|
+
*/
|
|
284
|
+
export function canvasFilters() {
|
|
285
|
+
if (filtersWork === undefined) {
|
|
286
|
+
const c = typeof OffscreenCanvas === "function" ? new OffscreenCanvas(1, 1) : document.createElement("canvas");
|
|
287
|
+
const g = c.getContext("2d", { willReadFrequently: true });
|
|
288
|
+
if (!g) {
|
|
289
|
+
filtersWork = false;
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
g.filter = "grayscale(1)";
|
|
293
|
+
g.fillStyle = "#f00";
|
|
294
|
+
g.fillRect(0, 0, 1, 1);
|
|
295
|
+
const [r, gr] = g.getImageData(0, 0, 1, 1).data;
|
|
296
|
+
filtersWork = r !== undefined && r === gr;
|
|
297
|
+
}
|
|
298
|
+
return filtersWork;
|
|
299
|
+
}
|
|
300
|
+
const COMPOSITE = {
|
|
301
|
+
normal: "source-over",
|
|
302
|
+
add: "lighter",
|
|
303
|
+
multiply: "multiply",
|
|
304
|
+
screen: "screen",
|
|
305
|
+
erase: "destination-out",
|
|
306
|
+
mask: "destination-in",
|
|
307
|
+
};
|
|
240
308
|
//# sourceMappingURL=canvas2d.js.map
|
package/dist/canvas2d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas2d.js","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas2d.js","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"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"}
|
package/dist/draw.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Backend, BlendMode, Matrix, RawContext, TextureSource } from "./backend.js";
|
|
1
|
+
import type { Backend, BlendMode, ClipRect, Matrix, RawContext, TextureSource } from "./backend.js";
|
|
2
2
|
import type { BitmapFont } from "./bitmap-font.js";
|
|
3
3
|
import { type Color } from "./color.js";
|
|
4
4
|
import type { SpritesEach } from "./copies.js";
|
|
@@ -43,7 +43,8 @@ export interface TextDrawOptions {
|
|
|
43
43
|
* Everything batches automatically; call order is draw order.
|
|
44
44
|
*/
|
|
45
45
|
export declare class Draw {
|
|
46
|
-
|
|
46
|
+
/** @internal */
|
|
47
|
+
backend: Backend;
|
|
47
48
|
/** Default filtering for images (false for pixel art). */
|
|
48
49
|
smooth: boolean;
|
|
49
50
|
/** Global alpha multiplier for subsequent draws. */
|
|
@@ -58,25 +59,36 @@ export declare class Draw {
|
|
|
58
59
|
/** Preallocated transform stack: push/pop copy six numbers and never allocate. */
|
|
59
60
|
private readonly stack;
|
|
60
61
|
private depth;
|
|
61
|
-
|
|
62
|
+
/** @internal */
|
|
63
|
+
readonly m: Matrix;
|
|
62
64
|
private readonly frames;
|
|
63
65
|
private lastImage;
|
|
64
66
|
private lastFrame;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
/** @internal */
|
|
68
|
+
readonly clips: ClipRect[];
|
|
69
|
+
/** @internal */
|
|
70
|
+
shader: Shader | null;
|
|
67
71
|
/** The render target being drawn into, or null for the canvas. */
|
|
68
|
-
|
|
72
|
+
/** @internal */
|
|
73
|
+
target: RenderTarget | null;
|
|
69
74
|
/** The canvas's logical size this frame, to switch back to after `into()`. */
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
/** @internal */
|
|
76
|
+
viewW: number;
|
|
77
|
+
/** @internal */
|
|
78
|
+
viewH: number;
|
|
79
|
+
/** @internal */
|
|
80
|
+
readonly tmp: Matrix;
|
|
73
81
|
private readonly textCache;
|
|
74
82
|
/** Antialiased white circles, 64, 256 and 1024px across, each made on first use. */
|
|
75
83
|
private readonly circleTextures;
|
|
76
|
-
private backingW;
|
|
77
|
-
private backingH;
|
|
78
84
|
/** @internal */
|
|
79
|
-
|
|
85
|
+
backingW: number;
|
|
86
|
+
/** @internal */
|
|
87
|
+
backingH: number;
|
|
88
|
+
/** @internal */
|
|
89
|
+
constructor(
|
|
90
|
+
/** @internal */
|
|
91
|
+
backend: Backend,
|
|
80
92
|
/** Default filtering for images (false for pixel art). */
|
|
81
93
|
smooth: boolean);
|
|
82
94
|
/** Which backend is active. */
|
|
@@ -93,6 +105,12 @@ export declare class Draw {
|
|
|
93
105
|
push(): void;
|
|
94
106
|
pop(): void;
|
|
95
107
|
translate(x: number, y: number): void;
|
|
108
|
+
/**
|
|
109
|
+
* Multiply a matrix `[a, b, c, d, e, f]` (x' = a·x + c·y + e, y' = b·x + d·y + f, the Canvas order) onto the
|
|
110
|
+
* current transform, the way `translate`, `scale` and `rotate` do. For a camera or parent transform another
|
|
111
|
+
* engine computed, which can include skew that those three can't express.
|
|
112
|
+
*/
|
|
113
|
+
transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
96
114
|
scale(x: number, y?: number): void;
|
|
97
115
|
rotate(radians: number): void;
|
|
98
116
|
/**
|
|
@@ -127,7 +145,8 @@ export declare class Draw {
|
|
|
127
145
|
private spritesEach;
|
|
128
146
|
/** tmp = M · T(x, y) · R(rotation) · S(sx, sy) · T(ox, oy) · S(w, h), expanded by hand. Returns the frame. */
|
|
129
147
|
private place;
|
|
130
|
-
|
|
148
|
+
/** @internal */
|
|
149
|
+
spriteColor(o: SpriteDrawOptions): number;
|
|
131
150
|
/** Text, rasterised once and cached as a texture (crisp at the current render scale). */
|
|
132
151
|
text(text: string, x: number, y: number, o?: TextDrawOptions): void;
|
|
133
152
|
/**
|
|
@@ -167,23 +186,34 @@ export declare class Draw {
|
|
|
167
186
|
invalidate(src: TextureSource): void;
|
|
168
187
|
/** @internal */
|
|
169
188
|
renderScale: number;
|
|
170
|
-
/**
|
|
171
|
-
|
|
189
|
+
/**
|
|
190
|
+
* Start a frame: clear to `clear` (null draws over what's there: an overlay, a second pass, or a frame another
|
|
191
|
+
* engine began), at a logical size of `width × height` units with `scale` backing pixels per unit (2 on a 2×
|
|
192
|
+
* screen, or the canvas's pixel width / `width`). Resets the transform, alpha, blend and clips.
|
|
193
|
+
*/
|
|
194
|
+
begin(clear: Color | null, width: number, height: number, scale: number): void;
|
|
172
195
|
/** @internal Reset transform and blend between scene and afterRender hooks. */
|
|
173
196
|
reset(): void;
|
|
174
|
-
/**
|
|
197
|
+
/** Finish the frame: submits everything drawn since `begin()`. */
|
|
175
198
|
end(): void;
|
|
176
199
|
/** Release GPU resources and listeners. Using this `Draw` afterwards throws; disposing again does nothing. */
|
|
177
200
|
dispose(): void;
|
|
178
|
-
/**
|
|
201
|
+
/** Tell spryte the canvas's backing size changed: call it with `canvas.width, canvas.height` after setting them. */
|
|
179
202
|
resize(w: number, h: number): void;
|
|
180
203
|
/** @internal Switch to a backend that finished loading (the Canvas 2D fallback), at the current size. */
|
|
181
204
|
setBackend(backend: Backend): void;
|
|
205
|
+
/** @internal */
|
|
206
|
+
blendMode: BlendMode;
|
|
207
|
+
/** @internal */
|
|
208
|
+
maskDepth: number;
|
|
182
209
|
/** tmp = current matrix × (translate(x, y) · scale(w, h)): maps the unit square to the rect. */
|
|
183
|
-
|
|
184
|
-
|
|
210
|
+
/** @internal */
|
|
211
|
+
local(x: number, y: number, w: number, h: number): void;
|
|
212
|
+
/** @internal */
|
|
213
|
+
wholeImage(image: TextureSource): Frame;
|
|
185
214
|
private defaultFont;
|
|
186
|
-
|
|
215
|
+
/** @internal */
|
|
216
|
+
withAlpha(rgba: number, alpha: number): number;
|
|
187
217
|
private circleTexture;
|
|
188
218
|
}
|
|
189
219
|
//# sourceMappingURL=draw.d.ts.map
|
package/dist/draw.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../src/draw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../src/draw.ts"],"names":[],"mappings":"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"}
|