@kurot/core 1.0.12 → 1.0.14
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/kurot/display/texture/BitmapData.d.ts +1 -0
- package/dist/kurot/display/texture/BitmapData.d.ts.map +1 -1
- package/dist/kurot/display/texture/BitmapData.js +2 -0
- package/dist/kurot/display/texture/BitmapData.js.map +1 -1
- package/dist/kurot/media/Video.d.ts +21 -17
- package/dist/kurot/media/Video.d.ts.map +1 -1
- package/dist/kurot/media/Video.js +137 -106
- package/dist/kurot/media/Video.js.map +1 -1
- package/dist/kurot/player/{webgl/InstructionSet.d.ts → InstructionSet.d.ts} +1 -1
- package/dist/kurot/player/InstructionSet.d.ts.map +1 -0
- package/dist/kurot/player/InstructionSet.js.map +1 -0
- package/dist/kurot/player/Player.js +2 -2
- package/dist/kurot/player/RenderBuffer.d.ts +28 -0
- package/dist/kurot/player/RenderBuffer.d.ts.map +1 -0
- package/dist/kurot/player/RenderBuffer.js +2 -0
- package/dist/kurot/player/RenderBuffer.js.map +1 -0
- package/dist/kurot/player/RenderContext.d.ts +73 -0
- package/dist/kurot/player/RenderContext.d.ts.map +1 -0
- package/dist/kurot/player/RenderContext.js +2 -0
- package/dist/kurot/player/RenderContext.js.map +1 -0
- package/dist/kurot/player/RenderPipe.d.ts +1 -1
- package/dist/kurot/player/RenderPipe.d.ts.map +1 -1
- package/dist/kurot/player/canvas/{RenderBuffer.d.ts → CanvasBuffer.d.ts} +3 -3
- package/dist/kurot/player/canvas/{RenderBuffer.d.ts.map → CanvasBuffer.d.ts.map} +1 -1
- package/dist/kurot/player/canvas/{RenderBuffer.js → CanvasBuffer.js} +3 -3
- package/dist/kurot/player/canvas/{RenderBuffer.js.map → CanvasBuffer.js.map} +1 -1
- package/dist/kurot/player/canvas/CanvasRenderer.d.ts +2 -2
- package/dist/kurot/player/canvas/CanvasRenderer.js +7 -7
- package/dist/kurot/player/canvas/DisplayList.d.ts +2 -2
- package/dist/kurot/player/canvas/DisplayList.js +7 -7
- package/dist/kurot/player/canvas/index.d.ts +1 -1
- package/dist/kurot/player/canvas/index.js +1 -1
- package/dist/kurot/player/createPlayer.js +2 -2
- package/dist/kurot/player/index.d.ts +2 -2
- package/dist/kurot/player/index.d.ts.map +1 -1
- package/dist/kurot/player/index.js +2 -2
- package/dist/kurot/player/index.js.map +1 -1
- package/dist/kurot/player/{webgl/pipes → pipes}/BitmapPipe.d.ts +4 -4
- package/dist/kurot/player/pipes/BitmapPipe.d.ts.map +1 -0
- package/dist/kurot/player/pipes/BitmapPipe.js.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/FilterPipe.d.ts +4 -4
- package/dist/kurot/player/pipes/FilterPipe.d.ts.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/FilterPipe.js +2 -2
- package/dist/kurot/player/pipes/FilterPipe.js.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/GraphicsPipe.d.ts +7 -7
- package/dist/kurot/player/pipes/GraphicsPipe.d.ts.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/GraphicsPipe.js +17 -29
- package/dist/kurot/player/pipes/GraphicsPipe.js.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/MaskPipe.d.ts +3 -3
- package/dist/kurot/player/pipes/MaskPipe.d.ts.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/MaskPipe.js +2 -2
- package/dist/kurot/player/pipes/MaskPipe.js.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/MeshPipe.d.ts +4 -4
- package/dist/kurot/player/pipes/MeshPipe.d.ts.map +1 -0
- package/dist/kurot/player/pipes/MeshPipe.js.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/ParticlePipe.d.ts +4 -4
- package/dist/kurot/player/pipes/ParticlePipe.d.ts.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/ParticlePipe.js +1 -1
- package/dist/kurot/player/pipes/ParticlePipe.js.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/TextPipe.d.ts +6 -6
- package/dist/kurot/player/pipes/TextPipe.d.ts.map +1 -0
- package/dist/kurot/player/{webgl/pipes → pipes}/TextPipe.js +17 -29
- package/dist/kurot/player/pipes/TextPipe.js.map +1 -0
- package/dist/kurot/player/pipes/index.d.ts.map +1 -0
- package/dist/kurot/player/pipes/index.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts +2 -1
- package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderBuffer.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderContext.d.ts +14 -1
- package/dist/kurot/player/webgl/WebGLRenderContext.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderContext.js +31 -2
- package/dist/kurot/player/webgl/WebGLRenderContext.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderer.js +13 -13
- package/dist/kurot/player/webgl/WebGLRenderer.js.map +1 -1
- package/package.json +4 -3
- package/dist/kurot/player/webgl/InstructionSet.d.ts.map +0 -1
- package/dist/kurot/player/webgl/InstructionSet.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/BitmapPipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/BitmapPipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/FilterPipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/FilterPipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/GraphicsPipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/GraphicsPipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/MaskPipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/MaskPipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/MeshPipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/MeshPipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/ParticlePipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/ParticlePipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/TextPipe.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/TextPipe.js.map +0 -1
- package/dist/kurot/player/webgl/pipes/index.d.ts.map +0 -1
- package/dist/kurot/player/webgl/pipes/index.js.map +0 -1
- /package/dist/kurot/player/{webgl/InstructionSet.js → InstructionSet.js} +0 -0
- /package/dist/kurot/player/{webgl/pipes → pipes}/BitmapPipe.js +0 -0
- /package/dist/kurot/player/{webgl/pipes → pipes}/MeshPipe.js +0 -0
- /package/dist/kurot/player/{webgl/pipes → pipes}/index.d.ts +0 -0
- /package/dist/kurot/player/{webgl/pipes → pipes}/index.js +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { BitmapData } from '../display/texture/BitmapData.js';
|
|
2
|
+
import type { Filter } from '../filters/Filter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Opaque backend texture handle.
|
|
5
|
+
*
|
|
6
|
+
* Its concrete type is backend-specific (`WebGLTexture` today, `GPUTexture` in
|
|
7
|
+
* a future WebGPU backend). Pipes only ever receive this from `RenderContext`
|
|
8
|
+
* methods and pass it back to other `RenderContext` methods — they never
|
|
9
|
+
* inspect its internals. Aliased to `unknown` (not a branded type) because the
|
|
10
|
+
* WebGL backend returns the native `WebGLTexture` directly, which couldn't
|
|
11
|
+
* satisfy a branded interface without a wrapping class. The alias exists for
|
|
12
|
+
* readability and documentation, not type-level enforcement.
|
|
13
|
+
*/
|
|
14
|
+
export type TextureHandle = unknown;
|
|
15
|
+
/**
|
|
16
|
+
* Opaque offscreen buffer handle (`WebGLRenderBuffer` today). Same rationale
|
|
17
|
+
* as {@link TextureHandle} — pass-through only, aliased to `unknown`.
|
|
18
|
+
*/
|
|
19
|
+
export type OffscreenBufferHandle = unknown;
|
|
20
|
+
/**
|
|
21
|
+
* Backend-agnostic drawing surface used by leaf/effect pipes.
|
|
22
|
+
*
|
|
23
|
+
* This is the one coupling point between a pipe's `execute()` body and a
|
|
24
|
+
* concrete GPU API. `WebGLRenderContext` implements this interface today;
|
|
25
|
+
* a future WebGPU backend would provide its own implementation without any
|
|
26
|
+
* change to the pipes that consume it.
|
|
27
|
+
*
|
|
28
|
+
* Only methods actually called from `player/pipes/*.ts` are declared here —
|
|
29
|
+
* see docs-internal/renderer-backend-decoupling.md for the grep that
|
|
30
|
+
* produced this list. `texture`/`buffer` parameters are typed
|
|
31
|
+
* {@link TextureHandle}/{@link OffscreenBufferHandle} because their concrete
|
|
32
|
+
* shape (`WebGLTexture`, `WebGLRenderBuffer`, ...) is backend-specific; pipes
|
|
33
|
+
* only ever pass through values they received from this same interface, never
|
|
34
|
+
* inspect their internals directly.
|
|
35
|
+
*/
|
|
36
|
+
export interface RenderContext {
|
|
37
|
+
drawImage(image: BitmapData, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, destX: number, destY: number, destWidth: number, destHeight: number, imageSourceWidth: number, imageSourceHeight: number, rotated: boolean, smoothing?: boolean): void;
|
|
38
|
+
drawMesh(image: BitmapData, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, destX: number, destY: number, destWidth: number, destHeight: number, imageSourceWidth: number, imageSourceHeight: number, meshUVs: number[], meshVertices: number[], meshIndices: number[], rotated: boolean, smoothing: boolean): void;
|
|
39
|
+
drawTexture(texture: TextureHandle, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, destX: number, destY: number, destWidth: number, destHeight: number, textureWidth: number, textureHeight: number): void;
|
|
40
|
+
drawFramebufferTexture(texture: TextureHandle, sourceWidth: number, sourceHeight: number, destX: number, destY: number, destWidth: number, destHeight: number): void;
|
|
41
|
+
compositeFilterResult(filters: Filter[], offscreen: OffscreenBufferHandle): void;
|
|
42
|
+
createTexture(source: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): TextureHandle;
|
|
43
|
+
updateTexture(texture: TextureHandle, source: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): void;
|
|
44
|
+
/**
|
|
45
|
+
* Registers `texture` for backend-appropriate cleanup once `owner` is
|
|
46
|
+
* garbage-collected, keyed by `token` so a later `unregisterTextureGC`
|
|
47
|
+
* call can cancel this specific registration (e.g. when `owner`'s cached
|
|
48
|
+
* texture is replaced before it was ever collected). Replaces a pipe
|
|
49
|
+
* holding onto a raw GPU context handle itself just to delete a texture
|
|
50
|
+
* later — pipes never need to know which backend created the texture.
|
|
51
|
+
*/
|
|
52
|
+
registerTextureForGC(owner: object, texture: TextureHandle, token: object): void;
|
|
53
|
+
/** Cancels a pending registration made via `registerTextureForGC`. */
|
|
54
|
+
unregisterTextureGC(token: object): void;
|
|
55
|
+
/**
|
|
56
|
+
* Immediately release a texture previously passed to
|
|
57
|
+
* `registerTextureForGC`, without waiting for garbage collection.
|
|
58
|
+
*/
|
|
59
|
+
deleteTexture(texture: TextureHandle): void;
|
|
60
|
+
pushMask(x: number, y: number, width: number, height: number): void;
|
|
61
|
+
popMask(): void;
|
|
62
|
+
enableScissor(x: number, y: number, width: number, height: number): void;
|
|
63
|
+
disableScissor(): void;
|
|
64
|
+
pushBuffer(buffer: OffscreenBufferHandle): void;
|
|
65
|
+
popBuffer(): void;
|
|
66
|
+
setGlobalCompositeOperation(value: string): void;
|
|
67
|
+
currentBlendMode: string;
|
|
68
|
+
activeFilter?: Filter;
|
|
69
|
+
flush(): void;
|
|
70
|
+
/** Maximum texture dimension the backend can handle (e.g. `MAX_TEXTURE_SIZE` in WebGL). */
|
|
71
|
+
maxTextureSize: number;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=RenderContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderContext.d.ts","sourceRoot":"","sources":["../../../src/kurot/player/RenderContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderContext.js","sourceRoot":"","sources":["../../../src/kurot/player/RenderContext.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DisplayObject } from '../display/DisplayObject.js';
|
|
2
|
-
import type { InstructionSet } from './
|
|
2
|
+
import type { InstructionSet } from './InstructionSet.js';
|
|
3
3
|
/**
|
|
4
4
|
* A RenderPipe handles one category of DisplayObject (Bitmap, Graphics, Mesh…).
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderPipe.d.ts","sourceRoot":"","sources":["../../../src/kurot/player/RenderPipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RenderPipe.d.ts","sourceRoot":"","sources":["../../../src/kurot/player/RenderPipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAClE;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;IAE9D;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC;IAEtC;;;OAGG;IACH,iBAAiB,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC;CACxC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Wraps an HTMLCanvasElement + CanvasRenderingContext2D for offscreen drawing,
|
|
4
4
|
* hit testing, and pixel readback.
|
|
5
5
|
*/
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class CanvasBuffer {
|
|
7
7
|
readonly surface: HTMLCanvasElement;
|
|
8
8
|
readonly context: CanvasRenderingContext2D;
|
|
9
9
|
constructor(width?: number, height?: number);
|
|
@@ -31,5 +31,5 @@ export declare class RenderBuffer {
|
|
|
31
31
|
*/
|
|
32
32
|
destroy(): void;
|
|
33
33
|
}
|
|
34
|
-
export declare function hitTestBuffer():
|
|
35
|
-
//# sourceMappingURL=
|
|
34
|
+
export declare function hitTestBuffer(): CanvasBuffer;
|
|
35
|
+
//# sourceMappingURL=CanvasBuffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"CanvasBuffer.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/canvas/CanvasBuffer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,YAAY;IAGxB,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,SAAgB,OAAO,EAAE,wBAAwB,CAAC;gBAI/B,KAAK,SAAI,EAAE,MAAM,SAAI;IAYxC,IAAW,KAAK,IAAI,MAAM,CAEzB;IACD,IAAW,MAAM,IAAI,MAAM,CAE1B;IAID;;;OAGG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,IAAI;IAYtE;;OAEG;IACI,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,MAAM,SAAI,GAAG,MAAM,EAAE;IAKvE;;OAEG;IACI,SAAS,CAAC,IAAI,SAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9D;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;OAEG;IACI,OAAO,IAAI,IAAI;CAItB;AAID,wBAAgB,aAAa,IAAI,YAAY,CAG5C"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Wraps an HTMLCanvasElement + CanvasRenderingContext2D for offscreen drawing,
|
|
4
4
|
* hit testing, and pixel readback.
|
|
5
5
|
*/
|
|
6
|
-
export class
|
|
6
|
+
export class CanvasBuffer {
|
|
7
7
|
// ── Instance fields ───────────────────────────────────────────────────────
|
|
8
8
|
surface;
|
|
9
9
|
context;
|
|
@@ -77,7 +77,7 @@ export class RenderBuffer {
|
|
|
77
77
|
let _hitTestBuffer;
|
|
78
78
|
export function hitTestBuffer() {
|
|
79
79
|
if (!_hitTestBuffer)
|
|
80
|
-
_hitTestBuffer = new
|
|
80
|
+
_hitTestBuffer = new CanvasBuffer(3, 3);
|
|
81
81
|
return _hitTestBuffer;
|
|
82
82
|
}
|
|
83
|
-
//# sourceMappingURL=
|
|
83
|
+
//# sourceMappingURL=CanvasBuffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"CanvasBuffer.js","sourceRoot":"","sources":["../../../../src/kurot/player/canvas/CanvasBuffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Bitmap } from '../../display/Bitmap.js';
|
|
|
3
3
|
import { Graphics } from '../../display/Graphics.js';
|
|
4
4
|
import { Matrix } from '../../geom/Matrix.js';
|
|
5
5
|
import { TextField } from '../../text/TextField.js';
|
|
6
|
-
import {
|
|
6
|
+
import { CanvasBuffer } from './CanvasBuffer.js';
|
|
7
7
|
/**
|
|
8
8
|
* Canvas 2D renderer. Traverses the DisplayObject tree and draws each node
|
|
9
9
|
* using the Canvas 2D API. Equivalent to Egret's `CanvasRenderer`.
|
|
@@ -25,7 +25,7 @@ export declare class CanvasRenderer {
|
|
|
25
25
|
/**
|
|
26
26
|
* Renders a display object tree into the given buffer.
|
|
27
27
|
*/
|
|
28
|
-
render(displayObject: DisplayObject, buffer:
|
|
28
|
+
render(displayObject: DisplayObject, buffer: CanvasBuffer, matrix?: Matrix): number;
|
|
29
29
|
/** @internal Used by WebGLRenderer for offscreen DisplayList rendering. */
|
|
30
30
|
renderToContext(displayObject: DisplayObject, ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number): void;
|
|
31
31
|
/** @internal Used by WebGLRenderer to rasterize a Graphics object into a Canvas 2D context. */
|
|
@@ -9,7 +9,7 @@ import { HorizontalAlign } from '../../text/enums/HorizontalAlign.js';
|
|
|
9
9
|
import { VerticalAlign } from '../../text/enums/VerticalAlign.js';
|
|
10
10
|
import { TextFieldType } from '../../text/enums/TextFieldType.js';
|
|
11
11
|
import { getFontString } from '../../text/TextMeasurer.js';
|
|
12
|
-
import {
|
|
12
|
+
import { CanvasBuffer, hitTestBuffer } from './CanvasBuffer.js';
|
|
13
13
|
const CAPS_MAP = { none: 'butt', square: 'square', round: 'round' };
|
|
14
14
|
/** Convert a 0xRRGGBB color number to a CSS rgb() string. */
|
|
15
15
|
function colorToString(color) {
|
|
@@ -76,10 +76,10 @@ export class CanvasRenderer {
|
|
|
76
76
|
if ($displayList && !_isStage) {
|
|
77
77
|
if (displayObject.$cacheDirty || displayObject.$renderDirty) {
|
|
78
78
|
if ($displayList.updateSurfaceSize()) {
|
|
79
|
-
$displayList.
|
|
79
|
+
$displayList.canvasBuffer.clear();
|
|
80
80
|
const resolution = $displayList.actualResolution;
|
|
81
|
-
$displayList.
|
|
82
|
-
this.drawDisplayObject(displayObject, $displayList.
|
|
81
|
+
$displayList.canvasBuffer.context.setTransform(resolution, 0, 0, resolution, 0, 0);
|
|
82
|
+
this.drawDisplayObject(displayObject, $displayList.canvasBuffer.context, $displayList.offsetX, $displayList.offsetY, true);
|
|
83
83
|
$displayList.updateBitmapData();
|
|
84
84
|
}
|
|
85
85
|
displayObject.$cacheDirty = false;
|
|
@@ -90,7 +90,7 @@ export class CanvasRenderer {
|
|
|
90
90
|
const resolution = $displayList.actualResolution;
|
|
91
91
|
const previousSmoothing = ctx.imageSmoothingEnabled;
|
|
92
92
|
ctx.imageSmoothingEnabled = $displayList.scaleMode === 'linear';
|
|
93
|
-
ctx.drawImage($displayList.bitmapData.source, offsetX - $displayList.offsetX, offsetY - $displayList.offsetY, $displayList.
|
|
93
|
+
ctx.drawImage($displayList.bitmapData.source, offsetX - $displayList.offsetX, offsetY - $displayList.offsetY, $displayList.canvasBuffer.width / resolution, $displayList.canvasBuffer.height / resolution);
|
|
94
94
|
ctx.imageSmoothingEnabled = previousSmoothing;
|
|
95
95
|
drawCalls++;
|
|
96
96
|
}
|
|
@@ -229,7 +229,7 @@ export class CanvasRenderer {
|
|
|
229
229
|
// ── CPU fallback: ColorMatrixFilter or mixed ──────────────────────────
|
|
230
230
|
const bufferW = Math.ceil(bounds.width);
|
|
231
231
|
const bufferH = Math.ceil(bounds.height);
|
|
232
|
-
const offscreen = new
|
|
232
|
+
const offscreen = new CanvasBuffer(bufferW, bufferH);
|
|
233
233
|
const offCtx = offscreen.context;
|
|
234
234
|
// Apply CSS-capable filters on the offscreen context before drawing.
|
|
235
235
|
if (cssFilters.length > 0)
|
|
@@ -295,7 +295,7 @@ export class CanvasRenderer {
|
|
|
295
295
|
const bx = bounds.x;
|
|
296
296
|
const by = bounds.y;
|
|
297
297
|
// Render content to offscreen buffer
|
|
298
|
-
const contentBuffer = new
|
|
298
|
+
const contentBuffer = new CanvasBuffer(bw, bh);
|
|
299
299
|
const contentCtx = contentBuffer.context;
|
|
300
300
|
const drawCalls = this.drawDisplayObject(displayObject, contentCtx, -bx, -by);
|
|
301
301
|
// Render mask shape to the same buffer using destination-in
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BitmapData } from '../../display/texture/BitmapData.js';
|
|
2
2
|
import type { CacheAsTextureOptions, DisplayObject } from '../../display/DisplayObject.js';
|
|
3
|
-
import {
|
|
3
|
+
import { CanvasBuffer } from './CanvasBuffer.js';
|
|
4
4
|
/**
|
|
5
5
|
* DisplayList provides per-object offscreen caching for DisplayObjects with
|
|
6
6
|
* cacheAsBitmap = true. When the object is not dirty, the cached canvas is
|
|
@@ -13,7 +13,7 @@ export declare class DisplayList {
|
|
|
13
13
|
root: DisplayObject;
|
|
14
14
|
offsetX: number;
|
|
15
15
|
offsetY: number;
|
|
16
|
-
|
|
16
|
+
canvasBuffer: CanvasBuffer;
|
|
17
17
|
bitmapData?: BitmapData;
|
|
18
18
|
resolution: number;
|
|
19
19
|
scaleMode: 'linear' | 'nearest';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BitmapData } from '../../display/texture/BitmapData.js';
|
|
2
2
|
import { deleteWebGLTexture, SYM_GL_CONTEXT } from '../webgl/WebGLUtils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { CanvasBuffer } from './CanvasBuffer.js';
|
|
4
4
|
/**
|
|
5
5
|
* DisplayList provides per-object offscreen caching for DisplayObjects with
|
|
6
6
|
* cacheAsBitmap = true. When the object is not dirty, the cached canvas is
|
|
@@ -15,7 +15,7 @@ export class DisplayList {
|
|
|
15
15
|
root;
|
|
16
16
|
offsetX = 0;
|
|
17
17
|
offsetY = 0;
|
|
18
|
-
|
|
18
|
+
canvasBuffer;
|
|
19
19
|
bitmapData;
|
|
20
20
|
resolution = 1;
|
|
21
21
|
scaleMode = 'linear';
|
|
@@ -23,7 +23,7 @@ export class DisplayList {
|
|
|
23
23
|
// ── Constructor ───────────────────────────────────────────────────────────
|
|
24
24
|
constructor(root) {
|
|
25
25
|
this.root = root;
|
|
26
|
-
this.
|
|
26
|
+
this.canvasBuffer = new CanvasBuffer();
|
|
27
27
|
}
|
|
28
28
|
// ── Public methods ────────────────────────────────────────────────────────
|
|
29
29
|
static create(target) {
|
|
@@ -43,7 +43,7 @@ export class DisplayList {
|
|
|
43
43
|
deleteWebGLTexture(gl, texture);
|
|
44
44
|
dl.bitmapData.webGLTexture = undefined;
|
|
45
45
|
}
|
|
46
|
-
dl.
|
|
46
|
+
dl.canvasBuffer.resize(0, 0);
|
|
47
47
|
dl.bitmapData = undefined;
|
|
48
48
|
if (DisplayList._pool.length < 8)
|
|
49
49
|
DisplayList._pool.push(dl);
|
|
@@ -76,8 +76,8 @@ export class DisplayList {
|
|
|
76
76
|
const h = Math.max(1, Math.ceil(bounds.height * this.actualResolution));
|
|
77
77
|
this.offsetX = -bounds.x;
|
|
78
78
|
this.offsetY = -bounds.y;
|
|
79
|
-
if (this.
|
|
80
|
-
this.
|
|
79
|
+
if (this.canvasBuffer.width !== w || this.canvasBuffer.height !== h) {
|
|
80
|
+
this.canvasBuffer.resize(w, h);
|
|
81
81
|
}
|
|
82
82
|
return true;
|
|
83
83
|
}
|
|
@@ -85,7 +85,7 @@ export class DisplayList {
|
|
|
85
85
|
* Updates the BitmapData reference after rendering into the buffer.
|
|
86
86
|
*/
|
|
87
87
|
updateBitmapData() {
|
|
88
|
-
const surface = this.
|
|
88
|
+
const surface = this.canvasBuffer.surface;
|
|
89
89
|
if (!this.bitmapData) {
|
|
90
90
|
this.bitmapData = new BitmapData(surface);
|
|
91
91
|
this.bitmapData.deleteSource = false;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { CanvasRenderer } from './CanvasRenderer.js';
|
|
2
|
-
export {
|
|
2
|
+
export { CanvasBuffer, hitTestBuffer } from './CanvasBuffer.js';
|
|
3
3
|
export { DisplayList } from './DisplayList.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { CanvasRenderer } from './CanvasRenderer.js';
|
|
2
|
-
export {
|
|
2
|
+
export { CanvasBuffer, hitTestBuffer } from './CanvasBuffer.js';
|
|
3
3
|
export { DisplayList } from './DisplayList.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -7,7 +7,7 @@ import { Player } from './Player.js';
|
|
|
7
7
|
import { TouchHandler } from './TouchHandler.js';
|
|
8
8
|
import { ScreenAdapter } from './ScreenAdapter.js';
|
|
9
9
|
import { setupLifecycle } from './SystemTicker.js';
|
|
10
|
-
import { CanvasRenderer,
|
|
10
|
+
import { CanvasRenderer, CanvasBuffer } from './canvas/index.js';
|
|
11
11
|
import { Capabilities } from '../system/Capabilities.js';
|
|
12
12
|
/**
|
|
13
13
|
* Creates and initializes a Kurot player from the given options.
|
|
@@ -35,7 +35,7 @@ export function createPlayer(options) {
|
|
|
35
35
|
if (!RenderTexture.renderer) {
|
|
36
36
|
const _renderer = new CanvasRenderer();
|
|
37
37
|
RenderTexture.renderer = (displayObject, width, height, offsetX, offsetY) => {
|
|
38
|
-
const buffer = new
|
|
38
|
+
const buffer = new CanvasBuffer(width, height);
|
|
39
39
|
const m = new Matrix();
|
|
40
40
|
m.translate(offsetX, offsetY);
|
|
41
41
|
_renderer.render(displayObject, buffer, m);
|
|
@@ -2,9 +2,9 @@ export { Player } from './Player.js';
|
|
|
2
2
|
export { createPlayer, type KurotApp } from './createPlayer.js';
|
|
3
3
|
export type { KurotOptions } from './KurotOptions.js';
|
|
4
4
|
export { SystemTicker, ticker, getTimer, setupLifecycle, START_TIME, invalidateRenderFlag, setInvalidateRenderFlag, requestRenderingFlag, setRequestRenderingFlag, type Renderable, } from './SystemTicker.js';
|
|
5
|
-
export { InstructionSet, type Instruction } from './
|
|
5
|
+
export { InstructionSet, type Instruction } from './InstructionSet.js';
|
|
6
6
|
export type { RenderPipe } from './RenderPipe.js';
|
|
7
|
-
export {
|
|
7
|
+
export { CanvasBuffer, hitTestBuffer, CanvasRenderer, DisplayList } from './canvas/index.js';
|
|
8
8
|
export { TouchHandler } from './TouchHandler.js';
|
|
9
9
|
export { ScreenAdapter, type StageDisplaySize } from './ScreenAdapter.js';
|
|
10
10
|
export { WebGLRenderer, WebGLRenderContext, WebGLRenderBuffer, WebGLRenderTarget, WebGLVertexArrayObject, WebGLDrawCmdManager, WebGLProgram, ShaderLib, checkWebGLSupport, MultiTextureBatcher, } from './webgl/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kurot/player/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EACN,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,UAAU,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kurot/player/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EACN,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,UAAU,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EACN,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,mBAAmB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
@@ -4,8 +4,8 @@ export { createPlayer } from './createPlayer.js';
|
|
|
4
4
|
// ── Ticker ────────────────────────────────────────────────────────────────────
|
|
5
5
|
export { SystemTicker, ticker, getTimer, setupLifecycle, START_TIME, invalidateRenderFlag, setInvalidateRenderFlag, requestRenderingFlag, setRequestRenderingFlag, } from './SystemTicker.js';
|
|
6
6
|
// ── Rendering ─────────────────────────────────────────────────────────────────
|
|
7
|
-
export { InstructionSet } from './
|
|
8
|
-
export {
|
|
7
|
+
export { InstructionSet } from './InstructionSet.js';
|
|
8
|
+
export { CanvasBuffer, hitTestBuffer, CanvasRenderer, DisplayList } from './canvas/index.js';
|
|
9
9
|
// ── Input & Layout ────────────────────────────────────────────────────────────
|
|
10
10
|
export { TouchHandler } from './TouchHandler.js';
|
|
11
11
|
export { ScreenAdapter } from './ScreenAdapter.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kurot/player/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAGhE,iFAAiF;AACjF,OAAO,EACN,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GAEvB,MAAM,mBAAmB,CAAC;AAE3B,iFAAiF;AACjF,OAAO,EAAE,cAAc,EAAoB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kurot/player/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAGhE,iFAAiF;AACjF,OAAO,EACN,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GAEvB,MAAM,mBAAmB,CAAC;AAE3B,iFAAiF;AACjF,OAAO,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7F,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAyB,MAAM,oBAAoB,CAAC;AAE1E,iFAAiF;AACjF,OAAO,EACN,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,mBAAmB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Bitmap } from '
|
|
2
|
-
import type {
|
|
1
|
+
import type { Bitmap } from '../../display/Bitmap.js';
|
|
2
|
+
import type { RenderBuffer } from '../RenderBuffer.js';
|
|
3
3
|
import type { Instruction } from '../InstructionSet.js';
|
|
4
4
|
import type { InstructionSet } from '../InstructionSet.js';
|
|
5
|
-
import type { RenderPipe } from '
|
|
5
|
+
import type { RenderPipe } from '../RenderPipe.js';
|
|
6
6
|
export interface BitmapInstruction extends Instruction {
|
|
7
7
|
readonly renderPipeId: 'bitmap';
|
|
8
8
|
renderable: Bitmap;
|
|
@@ -29,7 +29,7 @@ export declare class BitmapPipe implements RenderPipe<Bitmap> {
|
|
|
29
29
|
* Issue the draw call for a BitmapInstruction.
|
|
30
30
|
* Called by WebGLRenderer._executeInstructions().
|
|
31
31
|
*/
|
|
32
|
-
execute(inst: BitmapInstruction, buffer:
|
|
32
|
+
execute(inst: BitmapInstruction, buffer: RenderBuffer): void;
|
|
33
33
|
private _drawScale9;
|
|
34
34
|
}
|
|
35
35
|
//# sourceMappingURL=BitmapPipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitmapPipe.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/BitmapPipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACrD,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;GAMG;AACH,qBAAa,UAAW,YAAW,UAAU,CAAC,MAAM,CAAC;IACpD,gBAAuB,OAAO,YAAY;IAG1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA2B;IAExD,OAAO,CAAC,MAAM,CAAC,MAAM;WAaP,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAM7C,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI;IAM9D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO/C;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAqCnE,OAAO,CAAC,WAAW;CAsFnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitmapPipe.js","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/BitmapPipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { DisplayObject } from '
|
|
2
|
-
import type { Filter } from '
|
|
3
|
-
import type { WebGLRenderBuffer } from '../WebGLRenderBuffer.js';
|
|
1
|
+
import type { DisplayObject } from '../../display/DisplayObject.js';
|
|
2
|
+
import type { Filter } from '../../filters/Filter.js';
|
|
3
|
+
import type { WebGLRenderBuffer } from '../webgl/WebGLRenderBuffer.js';
|
|
4
4
|
import type { Instruction } from '../InstructionSet.js';
|
|
5
5
|
import type { InstructionSet } from '../InstructionSet.js';
|
|
6
|
-
import type { RenderPipe } from '
|
|
6
|
+
import type { RenderPipe } from '../RenderPipe.js';
|
|
7
7
|
/** Marks the start of a filtered subtree. */
|
|
8
8
|
export interface FilterPushInstruction extends Instruction {
|
|
9
9
|
readonly renderPipeId: 'filterPush';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterPipe.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/FilterPipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,6CAA6C;AAC7C,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACzD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,UAAU,EAAE,aAAa,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACxD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,UAAU,EAAE,aAAa,CAAC;IAC1B,uDAAuD;IACvD,IAAI,EAAE,qBAAqB,CAAC;CAC5B;AAYD;;;;;;;;;GASG;AACH,qBAAa,UAAW,YAAW,UAAU,CAAC,aAAa,CAAC;IAE3D,gBAAuB,OAAO,gBAAgB;IAC9C,gBAAuB,MAAM,eAAe;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAChE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAIvD,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAK3E,gBAAgB,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI;WAI3C,QAAQ,CACrB,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,qBAAqB;WAaV,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,GAAG,oBAAoB;WAUrF,WAAW,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;WAM9C,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAQ1D;;;;;;;;;;;;OAYG;IACI,WAAW,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS;IAuDzG;;;OAGG;IACI,UAAU,CAChB,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,iBAAiB,GAAG,SAAS,GACtC,IAAI;CA6CP"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ColorMatrixFilter } from '
|
|
2
|
-
import { WebGLRenderBuffer as WGLBuf } from '../WebGLRenderBuffer.js';
|
|
1
|
+
import { ColorMatrixFilter } from '../../filters/ColorMatrixFilter.js';
|
|
2
|
+
import { WebGLRenderBuffer as WGLBuf } from '../webgl/WebGLRenderBuffer.js';
|
|
3
3
|
// ── Pipe ──────────────────────────────────────────────────────────────────────
|
|
4
4
|
const BLEND_MODES = {
|
|
5
5
|
0: 'source-over',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterPipe.js","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/FilterPipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Graphics } from '
|
|
2
|
-
import type { DisplayObject } from '
|
|
3
|
-
import type { WebGLRenderBuffer } from '../WebGLRenderBuffer.js';
|
|
1
|
+
import type { Graphics } from '../../display/Graphics.js';
|
|
2
|
+
import type { DisplayObject } from '../../display/DisplayObject.js';
|
|
4
3
|
import type { Instruction } from '../InstructionSet.js';
|
|
5
4
|
import type { InstructionSet } from '../InstructionSet.js';
|
|
6
|
-
import type { RenderPipe } from '
|
|
7
|
-
import type {
|
|
5
|
+
import type { RenderPipe } from '../RenderPipe.js';
|
|
6
|
+
import type { RenderBuffer } from '../RenderBuffer.js';
|
|
7
|
+
import type { CanvasRenderer } from '../canvas/index.js';
|
|
8
8
|
export interface GraphicsInstruction extends Instruction {
|
|
9
9
|
readonly renderPipeId: 'graphics';
|
|
10
10
|
renderable: DisplayObject;
|
|
@@ -26,13 +26,13 @@ export declare class GraphicsPipe implements RenderPipe<DisplayObject> {
|
|
|
26
26
|
private readonly _canvasRenderer;
|
|
27
27
|
private readonly _cache;
|
|
28
28
|
private readonly _registryTokens;
|
|
29
|
-
private
|
|
29
|
+
private _context?;
|
|
30
30
|
constructor(canvasRenderer: CanvasRenderer);
|
|
31
31
|
private static _alloc;
|
|
32
32
|
static release(inst: GraphicsInstruction): void;
|
|
33
33
|
addToInstructionSet(renderable: DisplayObject, set: InstructionSet): void;
|
|
34
34
|
updateRenderable(_renderable: DisplayObject): void;
|
|
35
35
|
destroyRenderable(renderable: DisplayObject): void;
|
|
36
|
-
execute(inst: GraphicsInstruction, buffer:
|
|
36
|
+
execute(inst: GraphicsInstruction, buffer: RenderBuffer): void;
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=GraphicsPipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphicsPipe.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/GraphicsPipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACvD,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,UAAU,EAAE,aAAa,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAkBD;;;;;;GAMG;AACH,qBAAa,YAAa,YAAW,UAAU,CAAC,aAAa,CAAC;IAE7D,gBAAuB,OAAO,cAAc;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAG1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,CAAgB;gBAGd,cAAc,EAAE,cAAc;IAIjD,OAAO,CAAC,MAAM,CAAC,MAAM;WAeP,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAM/C,mBAAmB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI;IAQzE,gBAAgB,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI;IAKlD,iBAAiB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IAkBlD,OAAO,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;CA8FrE"}
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
import { Rectangle } from '
|
|
2
|
-
import {
|
|
1
|
+
import { Rectangle } from '../../geom/Rectangle.js';
|
|
2
|
+
import { CanvasBuffer } from '../canvas/index.js';
|
|
3
3
|
// Shared scratch rectangle — avoids per-execute allocation.
|
|
4
4
|
const _scratchBounds = new Rectangle();
|
|
5
|
-
// ── Texture GC registry ───────────────────────────────────────────────────────
|
|
6
|
-
/**
|
|
7
|
-
* GC is the actual cleanup path for cached Graphics textures: nothing in the
|
|
8
|
-
* engine calls destroyRenderable() during normal Shape lifecycle (Shapes are
|
|
9
|
-
* typically just dropped), so this registry is what actually reclaims GPU
|
|
10
|
-
* memory. destroyRenderable() remains as an optional explicit entry for
|
|
11
|
-
* future use.
|
|
12
|
-
*/
|
|
13
|
-
const _textureRegistry = new FinalizationRegistry(({ gl, texture }) => {
|
|
14
|
-
gl.deleteTexture(texture);
|
|
15
|
-
});
|
|
16
5
|
// ── Pipe ──────────────────────────────────────────────────────────────────────
|
|
17
6
|
/**
|
|
18
7
|
* Handles WebGL rendering of Shape / Sprite graphics.
|
|
@@ -29,7 +18,7 @@ export class GraphicsPipe {
|
|
|
29
18
|
_canvasRenderer;
|
|
30
19
|
_cache = new WeakMap();
|
|
31
20
|
_registryTokens = new WeakMap();
|
|
32
|
-
|
|
21
|
+
_context;
|
|
33
22
|
// ── Constructor ───────────────────────────────────────────────────────────
|
|
34
23
|
constructor(canvasRenderer) {
|
|
35
24
|
this._canvasRenderer = canvasRenderer;
|
|
@@ -72,11 +61,10 @@ export class GraphicsPipe {
|
|
|
72
61
|
// Unregister from GC registry and delete texture immediately.
|
|
73
62
|
const token = this._registryTokens.get(graphics);
|
|
74
63
|
if (token) {
|
|
75
|
-
|
|
64
|
+
this._context?.unregisterTextureGC(token);
|
|
76
65
|
this._registryTokens.delete(graphics);
|
|
77
66
|
}
|
|
78
|
-
|
|
79
|
-
this._gl.deleteTexture(cache.texture);
|
|
67
|
+
this._context?.deleteTexture(cache.texture);
|
|
80
68
|
}
|
|
81
69
|
this._cache.delete(graphics);
|
|
82
70
|
}
|
|
@@ -86,9 +74,9 @@ export class GraphicsPipe {
|
|
|
86
74
|
if (graphics.commands.length === 0) {
|
|
87
75
|
return;
|
|
88
76
|
}
|
|
89
|
-
// Cache the
|
|
90
|
-
if (!this.
|
|
91
|
-
this.
|
|
77
|
+
// Cache the render context for use in destroyRenderable.
|
|
78
|
+
if (!this._context)
|
|
79
|
+
this._context = buffer.context;
|
|
92
80
|
const bounds = _scratchBounds;
|
|
93
81
|
bounds.setEmpty();
|
|
94
82
|
graphics.$measureContentBounds(bounds);
|
|
@@ -105,7 +93,7 @@ export class GraphicsPipe {
|
|
|
105
93
|
let cache = this._cache.get(graphics);
|
|
106
94
|
if (!cache) {
|
|
107
95
|
cache = {
|
|
108
|
-
|
|
96
|
+
canvasBuffer: new CanvasBuffer(w, h),
|
|
109
97
|
texture: undefined,
|
|
110
98
|
textureWidth: 0,
|
|
111
99
|
textureHeight: 0,
|
|
@@ -116,29 +104,29 @@ export class GraphicsPipe {
|
|
|
116
104
|
}
|
|
117
105
|
const needsRebuild = graphics.canvasCacheDirty || cache.textureWidth !== w || cache.textureHeight !== h;
|
|
118
106
|
if (needsRebuild) {
|
|
119
|
-
if (cache.
|
|
120
|
-
cache.
|
|
107
|
+
if (cache.canvasBuffer.width !== w || cache.canvasBuffer.height !== h) {
|
|
108
|
+
cache.canvasBuffer.resize(w, h);
|
|
121
109
|
}
|
|
122
|
-
cache.
|
|
110
|
+
cache.canvasBuffer.clear();
|
|
123
111
|
// skipCache=true: we are the cache owner, bypass CanvasRenderer's own
|
|
124
112
|
// offscreen canvas layer to avoid a redundant intermediate rasterization.
|
|
125
|
-
this._canvasRenderer.renderGraphicsToContext(graphics, cache.
|
|
126
|
-
const surface = cache.
|
|
113
|
+
this._canvasRenderer.renderGraphicsToContext(graphics, cache.canvasBuffer.context, -bounds.x, -bounds.y, false, true);
|
|
114
|
+
const surface = cache.canvasBuffer.surface;
|
|
127
115
|
if (!cache.texture) {
|
|
128
116
|
cache.texture = buffer.context.createTexture(surface);
|
|
129
117
|
// Register for GC-based cleanup.
|
|
130
118
|
const token = {};
|
|
131
|
-
|
|
119
|
+
buffer.context.registerTextureForGC(graphics, cache.texture, token);
|
|
132
120
|
this._registryTokens.set(graphics, token);
|
|
133
121
|
}
|
|
134
122
|
else {
|
|
135
123
|
// Unregister old texture, create new registration for updated texture.
|
|
136
124
|
const oldToken = this._registryTokens.get(graphics);
|
|
137
125
|
if (oldToken)
|
|
138
|
-
|
|
126
|
+
buffer.context.unregisterTextureGC(oldToken);
|
|
139
127
|
buffer.context.updateTexture(cache.texture, surface);
|
|
140
128
|
const token = {};
|
|
141
|
-
|
|
129
|
+
buffer.context.registerTextureForGC(graphics, cache.texture, token);
|
|
142
130
|
this._registryTokens.set(graphics, token);
|
|
143
131
|
}
|
|
144
132
|
cache.textureWidth = w;
|