@kurot/core 1.0.20 → 1.0.22
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/DisplayObject.d.ts.map +1 -1
- package/dist/kurot/display/DisplayObject.js +6 -0
- package/dist/kurot/display/DisplayObject.js.map +1 -1
- package/dist/kurot/display/Mesh.d.ts +5 -2
- package/dist/kurot/display/Mesh.d.ts.map +1 -1
- package/dist/kurot/display/Mesh.js +5 -2
- package/dist/kurot/display/Mesh.js.map +1 -1
- package/dist/kurot/filters/BloomFilter.d.ts +40 -0
- package/dist/kurot/filters/BloomFilter.d.ts.map +1 -0
- package/dist/kurot/filters/BloomFilter.js +51 -0
- package/dist/kurot/filters/BloomFilter.js.map +1 -0
- package/dist/kurot/filters/BloomShaders.d.ts +10 -0
- package/dist/kurot/filters/BloomShaders.d.ts.map +1 -0
- package/dist/kurot/filters/BloomShaders.js +54 -0
- package/dist/kurot/filters/BloomShaders.js.map +1 -0
- package/dist/kurot/filters/BlurFilter.d.ts +4 -0
- package/dist/kurot/filters/BlurFilter.d.ts.map +1 -1
- package/dist/kurot/filters/BlurFilter.js +23 -6
- package/dist/kurot/filters/BlurFilter.js.map +1 -1
- package/dist/kurot/filters/CustomFilter.d.ts +44 -1
- package/dist/kurot/filters/CustomFilter.d.ts.map +1 -1
- package/dist/kurot/filters/CustomFilter.js +56 -17
- package/dist/kurot/filters/CustomFilter.js.map +1 -1
- package/dist/kurot/filters/DropShadowFilter.d.ts.map +1 -1
- package/dist/kurot/filters/DropShadowFilter.js +1 -0
- package/dist/kurot/filters/DropShadowFilter.js.map +1 -1
- package/dist/kurot/filters/Filter.d.ts +15 -0
- package/dist/kurot/filters/Filter.d.ts.map +1 -1
- package/dist/kurot/filters/Filter.js +58 -0
- package/dist/kurot/filters/Filter.js.map +1 -1
- package/dist/kurot/filters/FilterTexture.d.ts +21 -0
- package/dist/kurot/filters/FilterTexture.d.ts.map +1 -0
- package/dist/kurot/filters/FilterTexture.js +2 -0
- package/dist/kurot/filters/FilterTexture.js.map +1 -0
- package/dist/kurot/filters/GlowFilter.d.ts.map +1 -1
- package/dist/kurot/filters/GlowFilter.js +6 -0
- package/dist/kurot/filters/GlowFilter.js.map +1 -1
- package/dist/kurot/filters/MultiPassFilter.d.ts +41 -0
- package/dist/kurot/filters/MultiPassFilter.d.ts.map +1 -0
- package/dist/kurot/filters/MultiPassFilter.js +53 -0
- package/dist/kurot/filters/MultiPassFilter.js.map +1 -0
- package/dist/kurot/filters/index.d.ts +6 -0
- package/dist/kurot/filters/index.d.ts.map +1 -1
- package/dist/kurot/filters/index.js +2 -0
- package/dist/kurot/filters/index.js.map +1 -1
- package/dist/kurot/player/Player.d.ts.map +1 -1
- package/dist/kurot/player/Player.js +1 -0
- package/dist/kurot/player/Player.js.map +1 -1
- package/dist/kurot/player/canvas/CanvasRenderer.d.ts.map +1 -1
- package/dist/kurot/player/canvas/CanvasRenderer.js +26 -16
- package/dist/kurot/player/canvas/CanvasRenderer.js.map +1 -1
- package/dist/kurot/player/pipes/BitmapPipe.d.ts.map +1 -1
- package/dist/kurot/player/pipes/BitmapPipe.js +20 -10
- package/dist/kurot/player/pipes/BitmapPipe.js.map +1 -1
- package/dist/kurot/player/pipes/FilterPipe.d.ts.map +1 -1
- package/dist/kurot/player/pipes/FilterPipe.js +23 -18
- package/dist/kurot/player/pipes/FilterPipe.js.map +1 -1
- package/dist/kurot/player/pipes/MaskPipe.d.ts.map +1 -1
- package/dist/kurot/player/pipes/MaskPipe.js +6 -0
- package/dist/kurot/player/pipes/MaskPipe.js.map +1 -1
- package/dist/kurot/player/pipes/filter-bounds.d.ts +8 -0
- package/dist/kurot/player/pipes/filter-bounds.d.ts.map +1 -0
- package/dist/kurot/player/pipes/filter-bounds.js +25 -0
- package/dist/kurot/player/pipes/filter-bounds.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLFilterSystem.d.ts +27 -0
- package/dist/kurot/player/webgl/WebGLFilterSystem.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLFilterSystem.js +119 -0
- package/dist/kurot/player/webgl/WebGLFilterSystem.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLFilterTargetPool.d.ts +18 -0
- package/dist/kurot/player/webgl/WebGLFilterTargetPool.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLFilterTargetPool.js +80 -0
- package/dist/kurot/player/webgl/WebGLFilterTargetPool.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLFilterTextures.d.ts +17 -0
- package/dist/kurot/player/webgl/WebGLFilterTextures.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLFilterTextures.js +124 -0
- package/dist/kurot/player/webgl/WebGLFilterTextures.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLProgram.d.ts +6 -2
- package/dist/kurot/player/webgl/WebGLProgram.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLProgram.js +29 -8
- package/dist/kurot/player/webgl/WebGLProgram.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts +2 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderBuffer.js +3 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderContext.d.ts +15 -6
- package/dist/kurot/player/webgl/WebGLRenderContext.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderContext.js +200 -145
- package/dist/kurot/player/webgl/WebGLRenderContext.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderer.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLRenderer.js +143 -110
- package/dist/kurot/player/webgl/WebGLRenderer.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLUtils.d.ts +2 -2
- package/dist/kurot/player/webgl/WebGLUtils.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLUtils.js +35 -12
- package/dist/kurot/player/webgl/WebGLUtils.js.map +1 -1
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.d.ts +2 -0
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.d.ts.map +1 -1
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.js +3 -1
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.js.map +1 -1
- package/dist/kurot/player/webgl/custom-filter-uniforms.d.ts +6 -0
- package/dist/kurot/player/webgl/custom-filter-uniforms.d.ts.map +1 -0
- package/dist/kurot/player/webgl/custom-filter-uniforms.js +116 -0
- package/dist/kurot/player/webgl/custom-filter-uniforms.js.map +1 -0
- package/dist/kurot/player/webgl/split-mesh.d.ts +9 -0
- package/dist/kurot/player/webgl/split-mesh.d.ts.map +1 -0
- package/dist/kurot/player/webgl/split-mesh.js +29 -0
- package/dist/kurot/player/webgl/split-mesh.js.map +1 -0
- package/dist/kurot/system/Capabilities.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaskPipe.js","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/MaskPipe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MaskPipe.js","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/MaskPipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DisplayObject } from '../../display/DisplayObject.js';
|
|
2
|
+
import type { Rectangle } from '../../geom/Rectangle.js';
|
|
3
|
+
/**
|
|
4
|
+
* Render-only bounds include descendant effects without changing layout bounds.
|
|
5
|
+
* The owner's padding is added separately by FilterPipe.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getFilterContentBounds(owner: DisplayObject): Rectangle;
|
|
8
|
+
//# sourceMappingURL=filter-bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-bounds.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/filter-bounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAkBtE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render-only bounds include descendant effects without changing layout bounds.
|
|
3
|
+
* The owner's padding is added separately by FilterPipe.
|
|
4
|
+
*/
|
|
5
|
+
export function getFilterContentBounds(owner) {
|
|
6
|
+
let bounds = owner.$getOriginalBounds().clone();
|
|
7
|
+
for (const child of owner.$children ?? []) {
|
|
8
|
+
if (!child.visible || child.alpha <= 0 || child.$maskedObject)
|
|
9
|
+
continue;
|
|
10
|
+
const childBounds = getFilterContentBounds(child);
|
|
11
|
+
for (const filter of child.$filters) {
|
|
12
|
+
const padding = filter.getPadding();
|
|
13
|
+
childBounds.x -= padding.left;
|
|
14
|
+
childBounds.y -= padding.top;
|
|
15
|
+
childBounds.width += padding.left + padding.right;
|
|
16
|
+
childBounds.height += padding.top + padding.bottom;
|
|
17
|
+
}
|
|
18
|
+
childBounds.x -= child.$anchorOffsetX + (child.$scrollRect?.x ?? 0);
|
|
19
|
+
childBounds.y -= child.$anchorOffsetY + (child.$scrollRect?.y ?? 0);
|
|
20
|
+
child.$getMatrix().transformBounds(childBounds);
|
|
21
|
+
bounds = bounds.union(childBounds);
|
|
22
|
+
}
|
|
23
|
+
return bounds;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=filter-bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-bounds.js","sourceRoot":"","sources":["../../../../src/kurot/player/pipes/filter-bounds.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IAC1D,IAAI,MAAM,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa;YAAE,SAAS;QACxE,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;YAC9B,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC;YAC7B,WAAW,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;YAClD,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QACpD,CAAC;QACD,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,KAAK,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Filter } from '../../filters/Filter.js';
|
|
2
|
+
import type { WebGLRenderContext } from './WebGLRenderContext.js';
|
|
3
|
+
import type { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
4
|
+
import { WebGLFilterTargetPool } from './WebGLFilterTargetPool.js';
|
|
5
|
+
/**
|
|
6
|
+
* Borrowed framebuffer sampler; valid only during the current effect execution.
|
|
7
|
+
*/
|
|
8
|
+
export interface FilterSampler {
|
|
9
|
+
texture: WebGLTexture;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Executes GPU effects while keeping pass inputs alive until their last consumer.
|
|
15
|
+
*/
|
|
16
|
+
export declare class WebGLFilterSystem {
|
|
17
|
+
private readonly _context;
|
|
18
|
+
readonly pool: WebGLFilterTargetPool;
|
|
19
|
+
private readonly _owned;
|
|
20
|
+
constructor(_context: WebGLRenderContext);
|
|
21
|
+
render(filters: readonly Filter[], input: WebGLRenderTarget, resolution: number, composite: (output: WebGLRenderTarget) => void): void;
|
|
22
|
+
private acquire;
|
|
23
|
+
private release;
|
|
24
|
+
private apply;
|
|
25
|
+
private blur;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=WebGLFilterSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGLFilterSystem.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLFilterSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAIV,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH5C,SAAgB,IAAI,EAAE,qBAAqB,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAEnB,QAAQ,EAAE,kBAAkB;IAIzD,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EACrF,SAAS,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAiBtD,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,KAAK;IAsCb,OAAO,CAAC,IAAI;CA2BZ"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { BlurFilter } from '../../filters/BlurFilter.js';
|
|
2
|
+
import { CustomFilter } from '../../filters/CustomFilter.js';
|
|
3
|
+
import { MultiPassFilter } from '../../filters/MultiPassFilter.js';
|
|
4
|
+
import { WebGLFilterTargetPool } from './WebGLFilterTargetPool.js';
|
|
5
|
+
/**
|
|
6
|
+
* Executes GPU effects while keeping pass inputs alive until their last consumer.
|
|
7
|
+
*/
|
|
8
|
+
export class WebGLFilterSystem {
|
|
9
|
+
_context;
|
|
10
|
+
pool;
|
|
11
|
+
_owned = new Set();
|
|
12
|
+
constructor(_context) {
|
|
13
|
+
this._context = _context;
|
|
14
|
+
this.pool = new WebGLFilterTargetPool(_context.gl);
|
|
15
|
+
}
|
|
16
|
+
render(filters, input, resolution, composite) {
|
|
17
|
+
const logicalWidth = input.width / resolution;
|
|
18
|
+
const logicalHeight = input.height / resolution;
|
|
19
|
+
let source = input;
|
|
20
|
+
try {
|
|
21
|
+
for (const filter of filters) {
|
|
22
|
+
const output = this.apply(filter, source, logicalWidth, logicalHeight, resolution);
|
|
23
|
+
if (output !== source) {
|
|
24
|
+
this.release(source);
|
|
25
|
+
}
|
|
26
|
+
source = output;
|
|
27
|
+
}
|
|
28
|
+
composite(source);
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
for (const target of this._owned) {
|
|
32
|
+
this.pool.release(target);
|
|
33
|
+
}
|
|
34
|
+
this._owned.clear();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
acquire(width, height) {
|
|
38
|
+
const target = this.pool.acquire(Math.max(1, Math.round(width)), Math.max(1, Math.round(height)));
|
|
39
|
+
this._owned.add(target);
|
|
40
|
+
return target;
|
|
41
|
+
}
|
|
42
|
+
release(target) {
|
|
43
|
+
if (this._owned.delete(target)) {
|
|
44
|
+
this.pool.release(target);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
apply(filter, input, width, height, resolution, textures = {}) {
|
|
48
|
+
resolution = Math.min(resolution, filter.resolution ?? resolution);
|
|
49
|
+
if (filter instanceof MultiPassFilter) {
|
|
50
|
+
const outputs = [];
|
|
51
|
+
const uses = new Array(filter.passes.length).fill(0);
|
|
52
|
+
uses[uses.length - 1]++;
|
|
53
|
+
for (const pass of filter.passes) {
|
|
54
|
+
for (const ref of [pass.input, ...Object.values(pass.textures ?? {})]) {
|
|
55
|
+
if (ref !== 'original') {
|
|
56
|
+
uses[ref]++;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const [index, pass] of filter.passes.entries()) {
|
|
61
|
+
const source = pass.input === 'original' ? input : outputs[pass.input];
|
|
62
|
+
const samplers = {};
|
|
63
|
+
for (const [name, ref] of Object.entries(pass.textures ?? {})) {
|
|
64
|
+
const target = ref === 'original' ? input : outputs[ref];
|
|
65
|
+
samplers[name] = { texture: target.texture, width: target.width, height: target.height };
|
|
66
|
+
}
|
|
67
|
+
outputs.push(this.apply(pass.filter, source, width, height, resolution * pass.scale, samplers));
|
|
68
|
+
for (const ref of [pass.input, ...Object.values(pass.textures ?? {})]) {
|
|
69
|
+
if (ref !== 'original' && --uses[ref] === 0) {
|
|
70
|
+
this.release(outputs[ref]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (uses[index] === 0) {
|
|
74
|
+
this.release(outputs[index]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return outputs[outputs.length - 1];
|
|
78
|
+
}
|
|
79
|
+
if (Object.keys(textures).length && !(filter instanceof CustomFilter)) {
|
|
80
|
+
throw new Error('Additional pass inputs require a CustomFilter.');
|
|
81
|
+
}
|
|
82
|
+
if (filter instanceof BlurFilter && (filter.blurX > 0 || filter.blurY > 0)) {
|
|
83
|
+
return this.blur(filter, input, width, height, resolution);
|
|
84
|
+
}
|
|
85
|
+
const output = this.acquire(width * resolution, height * resolution);
|
|
86
|
+
this._context.$drawFilterPass(filter instanceof BlurFilter ? undefined : filter, input, output, resolution, textures);
|
|
87
|
+
return output;
|
|
88
|
+
}
|
|
89
|
+
blur(filter, input, width, height, resolution) {
|
|
90
|
+
const divisor = Math.sqrt(filter.quality);
|
|
91
|
+
const factor = Math.min(1, 32 * divisor / (Math.max(filter.blurX, filter.blurY) * resolution));
|
|
92
|
+
const w = Math.max(1, Math.floor(width * resolution * factor));
|
|
93
|
+
const h = Math.max(1, Math.floor(height * resolution * factor));
|
|
94
|
+
let source = input;
|
|
95
|
+
if (source.width !== w || source.height !== h) {
|
|
96
|
+
source = this.acquire(w, h);
|
|
97
|
+
this._context.$drawFilterPass(undefined, input, source, resolution * factor);
|
|
98
|
+
}
|
|
99
|
+
for (let pass = 0; pass < filter.quality; pass++) {
|
|
100
|
+
const horizontal = this.acquire(w, h);
|
|
101
|
+
const vertical = this.acquire(w, h);
|
|
102
|
+
this._context.$drawBlurPass(true, source, horizontal, filter.blurX * w / width / divisor);
|
|
103
|
+
this._context.$drawBlurPass(false, horizontal, vertical, filter.blurY * h / height / divisor);
|
|
104
|
+
this.release(horizontal);
|
|
105
|
+
if (source !== input) {
|
|
106
|
+
this.release(source);
|
|
107
|
+
}
|
|
108
|
+
source = vertical;
|
|
109
|
+
}
|
|
110
|
+
if (source.width !== Math.max(1, Math.round(width * resolution)) || source.height !== Math.max(1, Math.round(height * resolution))) {
|
|
111
|
+
const fullSize = this.acquire(width * resolution, height * resolution);
|
|
112
|
+
this._context.$drawFilterPass(undefined, source, fullSize, resolution);
|
|
113
|
+
this.release(source);
|
|
114
|
+
source = fullSize;
|
|
115
|
+
}
|
|
116
|
+
return source;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=WebGLFilterSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGLFilterSystem.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLFilterSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
2
|
+
import type { GL } from './WebGLUtils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Bounded context-owned pool. Active targets are owned by the filter execution.
|
|
5
|
+
*/
|
|
6
|
+
export declare class WebGLFilterTargetPool {
|
|
7
|
+
private readonly _gl;
|
|
8
|
+
private readonly _targets;
|
|
9
|
+
private _size;
|
|
10
|
+
private _bytes;
|
|
11
|
+
constructor(_gl: GL);
|
|
12
|
+
get size(): number;
|
|
13
|
+
get bytes(): number;
|
|
14
|
+
acquire(width: number, height: number): WebGLRenderTarget;
|
|
15
|
+
release(target: WebGLRenderTarget): void;
|
|
16
|
+
clear(contextLost?: boolean): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=WebGLFilterTargetPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGLFilterTargetPool.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLFilterTargetPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAK1C;;GAEG;AACH,qBAAa,qBAAqB;IAKd,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;gBAEiB,GAAG,EAAE,EAAE;IAE3C,IAAW,IAAI,IAAI,MAAM,CAAuB;IAChD,IAAW,KAAK,IAAI,MAAM,CAAwB;IAE3C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAuBzD,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAqBxC,KAAK,CAAC,WAAW,UAAQ,GAAG,IAAI;CASvC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
2
|
+
const COUNT_LIMIT = 16;
|
|
3
|
+
const BYTE_LIMIT = 64 * 1024 * 1024;
|
|
4
|
+
/**
|
|
5
|
+
* Bounded context-owned pool. Active targets are owned by the filter execution.
|
|
6
|
+
*/
|
|
7
|
+
export class WebGLFilterTargetPool {
|
|
8
|
+
_gl;
|
|
9
|
+
_targets = new Map();
|
|
10
|
+
_size = 0;
|
|
11
|
+
_bytes = 0;
|
|
12
|
+
constructor(_gl) {
|
|
13
|
+
this._gl = _gl;
|
|
14
|
+
}
|
|
15
|
+
get size() { return this._size; }
|
|
16
|
+
get bytes() { return this._bytes; }
|
|
17
|
+
acquire(width, height) {
|
|
18
|
+
const key = `${width}x${height}`;
|
|
19
|
+
const bucket = this._targets.get(key);
|
|
20
|
+
const target = bucket?.pop();
|
|
21
|
+
if (target) {
|
|
22
|
+
this._size--;
|
|
23
|
+
this._bytes -= width * height * 4;
|
|
24
|
+
if (!bucket.length) {
|
|
25
|
+
this._targets.delete(key);
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
}
|
|
29
|
+
const result = new WebGLRenderTarget(this._gl, width, height);
|
|
30
|
+
try {
|
|
31
|
+
result.initFrameBuffer();
|
|
32
|
+
if (this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER) !== this._gl.FRAMEBUFFER_COMPLETE) {
|
|
33
|
+
throw new Error(`Cannot allocate filter framebuffer ${width}x${height}.`);
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
result.dispose();
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
release(target) {
|
|
43
|
+
const bytes = target.width * target.height * 4;
|
|
44
|
+
if (bytes > BYTE_LIMIT) {
|
|
45
|
+
target.dispose();
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
while (this._size >= COUNT_LIMIT || this._bytes + bytes > BYTE_LIMIT) {
|
|
49
|
+
const oldest = this._targets.entries().next().value;
|
|
50
|
+
if (!oldest)
|
|
51
|
+
break;
|
|
52
|
+
const [key, bucket] = oldest;
|
|
53
|
+
const removed = bucket.pop();
|
|
54
|
+
this._size--;
|
|
55
|
+
this._bytes -= removed.width * removed.height * 4;
|
|
56
|
+
removed.dispose();
|
|
57
|
+
if (!bucket.length) {
|
|
58
|
+
this._targets.delete(key);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const key = `${target.width}x${target.height}`;
|
|
62
|
+
const bucket = this._targets.get(key) ?? [];
|
|
63
|
+
bucket.push(target);
|
|
64
|
+
this._targets.set(key, bucket);
|
|
65
|
+
this._size++;
|
|
66
|
+
this._bytes += bytes;
|
|
67
|
+
}
|
|
68
|
+
clear(contextLost = false) {
|
|
69
|
+
if (!contextLost) {
|
|
70
|
+
for (const bucket of this._targets.values()) {
|
|
71
|
+
for (const target of bucket) {
|
|
72
|
+
target.dispose();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
this._targets.clear();
|
|
77
|
+
this._size = this._bytes = 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=WebGLFilterTargetPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGLFilterTargetPool.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLFilterTargetPool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FilterSampler } from './WebGLFilterSystem.js';
|
|
2
|
+
import type { CustomFilter } from '../../filters/CustomFilter.js';
|
|
3
|
+
import type { WebGLProgram } from './WebGLProgram.js';
|
|
4
|
+
import type { WebGLRenderContext } from './WebGLRenderContext.js';
|
|
5
|
+
/**
|
|
6
|
+
* Context-owned auxiliary textures with independent sampling state.
|
|
7
|
+
*/
|
|
8
|
+
export declare class WebGLFilterTextures {
|
|
9
|
+
private readonly _context;
|
|
10
|
+
private _cache;
|
|
11
|
+
private readonly _entries;
|
|
12
|
+
private readonly _maxUnits;
|
|
13
|
+
constructor(_context: WebGLRenderContext);
|
|
14
|
+
bind(program: WebGLProgram, filter: CustomFilter, inputs?: Record<string, FilterSampler>): void;
|
|
15
|
+
clear(contextLost?: boolean): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=WebGLFilterTextures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGLFilterTextures.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLFilterTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAQlE;;GAEG;AACH,qBAAa,mBAAmB;IAKZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ5C,OAAO,CAAC,MAAM,CAAyD;IACvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEC,QAAQ,EAAE,kBAAkB;IAIzD,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAM,GAAG,IAAI;IAoFnG,KAAK,CAAC,WAAW,UAAQ,GAAG,IAAI;CAavC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-owned auxiliary textures with independent sampling state.
|
|
3
|
+
*/
|
|
4
|
+
export class WebGLFilterTextures {
|
|
5
|
+
_context;
|
|
6
|
+
_cache = new WeakMap();
|
|
7
|
+
_entries = new Set();
|
|
8
|
+
_maxUnits;
|
|
9
|
+
constructor(_context) {
|
|
10
|
+
this._context = _context;
|
|
11
|
+
this._maxUnits = _context.gl.getParameter(_context.gl.MAX_TEXTURE_IMAGE_UNITS);
|
|
12
|
+
}
|
|
13
|
+
bind(program, filter, inputs = {}) {
|
|
14
|
+
const gl = this._context.gl;
|
|
15
|
+
for (const name of Object.keys({ ...filter.textures, ...inputs })) {
|
|
16
|
+
if (['uSampler', 'projectionVector', 'uTextureSize', 'uInputSize', 'uInputClamp', 'uOutputSize', 'uResolution'].includes(name)
|
|
17
|
+
|| (inputs[name] && filter.textures[name]))
|
|
18
|
+
throw new Error(`Conflicting filter pass texture ${name}.`);
|
|
19
|
+
}
|
|
20
|
+
const resources = Object.keys({ ...filter.textures, ...inputs }).filter(name => program.uniforms[name] || program.uniforms[`${name}Matrix`] || program.uniforms[`${name}Clamp`]);
|
|
21
|
+
if (resources.length >= this._maxUnits)
|
|
22
|
+
throw new Error('CustomFilter exceeds available texture units (including uSampler).');
|
|
23
|
+
try {
|
|
24
|
+
for (let i = 0; i < resources.length; i++) {
|
|
25
|
+
const name = resources[i];
|
|
26
|
+
for (const [suffix, type] of [['Matrix', gl.FLOAT_MAT3], ['Clamp', gl.FLOAT_VEC4]]) {
|
|
27
|
+
const info = program.uniformInfo[`${name}${suffix}`];
|
|
28
|
+
if (info && (info.type !== type || info.size !== 1)) {
|
|
29
|
+
throw new Error(`CustomFilter ${name}${suffix} has an invalid automatic uniform type.`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (program.uniformInfo[name] && (program.uniformInfo[name].type !== gl.SAMPLER_2D || program.uniformInfo[name].size !== 1)) {
|
|
33
|
+
throw new Error(`CustomFilter texture ${name} requires a scalar sampler2D.`);
|
|
34
|
+
}
|
|
35
|
+
const borrowed = inputs[name];
|
|
36
|
+
if (borrowed) {
|
|
37
|
+
gl.activeTexture(gl.TEXTURE0 + i + 1);
|
|
38
|
+
gl.bindTexture(gl.TEXTURE_2D, borrowed.texture);
|
|
39
|
+
if (program.uniforms[name]) {
|
|
40
|
+
gl.uniform1i(program.uniforms[name], i + 1);
|
|
41
|
+
}
|
|
42
|
+
const matrix = program.uniforms[`${name}Matrix`];
|
|
43
|
+
if (matrix) {
|
|
44
|
+
gl.uniformMatrix3fv(matrix, false, new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));
|
|
45
|
+
}
|
|
46
|
+
const clamp = program.uniforms[`${name}Clamp`];
|
|
47
|
+
if (clamp) {
|
|
48
|
+
gl.uniform4f(clamp, 0.5 / borrowed.width, 0.5 / borrowed.height, 1 - 0.5 / borrowed.width, 1 - 0.5 / borrowed.height);
|
|
49
|
+
}
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const resource = filter.textures[name];
|
|
53
|
+
const data = resource.source;
|
|
54
|
+
const source = data.source;
|
|
55
|
+
if (!source || source instanceof ArrayBuffer)
|
|
56
|
+
throw new Error(`CustomFilter texture ${name} has no image source.`);
|
|
57
|
+
if (data.width <= 0 || data.height <= 0 || data.width > this._context.maxTextureSize || data.height > this._context.maxTextureSize) {
|
|
58
|
+
throw new Error(`CustomFilter texture ${name} has invalid dimensions.`);
|
|
59
|
+
}
|
|
60
|
+
const transform = resource.transform ?? [1, 0, 0, -1, 0, 1];
|
|
61
|
+
if (transform.length !== 6 || transform.some(n => !Number.isFinite(n))) {
|
|
62
|
+
throw new Error(`CustomFilter texture ${name} requires a finite affine transform.`);
|
|
63
|
+
}
|
|
64
|
+
gl.activeTexture(gl.TEXTURE0 + i + 1);
|
|
65
|
+
let variants = this._cache.get(data);
|
|
66
|
+
if (!variants) {
|
|
67
|
+
variants = new Map();
|
|
68
|
+
this._cache.set(data, variants);
|
|
69
|
+
}
|
|
70
|
+
const smoothing = resource.smoothing ?? true;
|
|
71
|
+
let entry = variants.get(smoothing);
|
|
72
|
+
if (!entry) {
|
|
73
|
+
const texture = this._context.createTexture(source, data.premultipliedAlpha);
|
|
74
|
+
entry = { texture, version: data.contentVersion, token: {} };
|
|
75
|
+
variants.set(smoothing, entry);
|
|
76
|
+
for (const ref of this._entries) {
|
|
77
|
+
if (!ref.deref()) {
|
|
78
|
+
this._entries.delete(ref);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
this._entries.add(new WeakRef(entry));
|
|
82
|
+
this._context.registerTextureForGC(entry, texture, entry.token);
|
|
83
|
+
const sampling = smoothing ? gl.LINEAR : gl.NEAREST;
|
|
84
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, sampling);
|
|
85
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, sampling);
|
|
86
|
+
}
|
|
87
|
+
else if (entry.version !== data.contentVersion) {
|
|
88
|
+
this._context.updateTexture(entry.texture, source, data.premultipliedAlpha);
|
|
89
|
+
entry.version = data.contentVersion;
|
|
90
|
+
}
|
|
91
|
+
gl.bindTexture(gl.TEXTURE_2D, entry.texture);
|
|
92
|
+
if (program.uniforms[name]) {
|
|
93
|
+
gl.uniform1i(program.uniforms[name], i + 1);
|
|
94
|
+
}
|
|
95
|
+
const matrix = program.uniforms[`${name}Matrix`];
|
|
96
|
+
if (matrix) {
|
|
97
|
+
const [a, b, c, d, tx, ty] = transform;
|
|
98
|
+
gl.uniformMatrix3fv(matrix, false, new Float32Array([a, b, 0, c, d, 0, tx, ty, 1]));
|
|
99
|
+
}
|
|
100
|
+
const clamp = program.uniforms[`${name}Clamp`];
|
|
101
|
+
if (clamp) {
|
|
102
|
+
gl.uniform4f(clamp, 0.5 / data.width, 0.5 / data.height, 1 - 0.5 / data.width, 1 - 0.5 / data.height);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
clear(contextLost = false) {
|
|
111
|
+
for (const ref of this._entries) {
|
|
112
|
+
const entry = ref.deref();
|
|
113
|
+
if (entry) {
|
|
114
|
+
this._context.unregisterTextureGC(entry.token);
|
|
115
|
+
if (!contextLost) {
|
|
116
|
+
this._context.deleteTexture(entry.texture);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this._entries.clear();
|
|
121
|
+
this._cache = new WeakMap();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=WebGLFilterTextures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGLFilterTextures.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLFilterTextures.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,16 @@ export type UniformMap = Record<string, WebGLUniformLocation | null>;
|
|
|
3
3
|
export type AttributeMap = Record<string, number>;
|
|
4
4
|
type NativeWebGLProgram = NonNullable<ReturnType<GL['createProgram']>>;
|
|
5
5
|
export declare class WebGLProgram {
|
|
6
|
-
private static
|
|
6
|
+
private static _cache;
|
|
7
7
|
static get(gl: GL, vertSrc: string, fragSrc: string, key: string): WebGLProgram;
|
|
8
|
-
static clearCache(): void;
|
|
8
|
+
static clearCache(gl?: GL, contextLost?: boolean): void;
|
|
9
9
|
readonly id: NativeWebGLProgram;
|
|
10
10
|
readonly uniforms: UniformMap;
|
|
11
11
|
readonly attributes: AttributeMap;
|
|
12
|
+
readonly uniformInfo: Record<string, {
|
|
13
|
+
type: number;
|
|
14
|
+
size: number;
|
|
15
|
+
}>;
|
|
12
16
|
private constructor();
|
|
13
17
|
}
|
|
14
18
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGLProgram.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLProgram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,KAAK,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAEvE,qBAAa,YAAY;IAGxB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"WebGLProgram.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLProgram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,KAAK,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAEvE,qBAAa,YAAY;IAGxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAgD;WAEvD,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY;WAexE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,UAAQ,GAAG,IAAI;IAgB5D,SAAgB,EAAE,EAAE,kBAAkB,CAAC;IACvC,SAAgB,QAAQ,EAAE,UAAU,CAAM;IAC1C,SAAgB,UAAU,EAAE,YAAY,CAAM;IAC9C,SAAgB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAEjF,OAAO;CAgBP"}
|
|
@@ -1,26 +1,47 @@
|
|
|
1
1
|
import { createProgram } from './WebGLUtils.js';
|
|
2
2
|
export class WebGLProgram {
|
|
3
3
|
// ── Static ────────────────────────────────────────────────────────────────
|
|
4
|
-
static _cache = new
|
|
4
|
+
static _cache = new WeakMap();
|
|
5
5
|
static get(gl, vertSrc, fragSrc, key) {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
let cache = this._cache.get(gl);
|
|
7
|
+
if (!cache) {
|
|
8
|
+
cache = new Map();
|
|
9
|
+
this._cache.set(gl, cache);
|
|
8
10
|
}
|
|
9
|
-
|
|
11
|
+
const sourceKey = JSON.stringify([key, vertSrc, fragSrc]);
|
|
12
|
+
let program = cache.get(sourceKey);
|
|
13
|
+
if (!program) {
|
|
14
|
+
program = new WebGLProgram(gl, vertSrc, fragSrc, key);
|
|
15
|
+
cache.set(sourceKey, program);
|
|
16
|
+
}
|
|
17
|
+
return program;
|
|
10
18
|
}
|
|
11
|
-
static clearCache() {
|
|
12
|
-
|
|
19
|
+
static clearCache(gl, contextLost = false) {
|
|
20
|
+
if (gl) {
|
|
21
|
+
const cache = this._cache.get(gl);
|
|
22
|
+
if (cache && !contextLost) {
|
|
23
|
+
for (const program of cache.values()) {
|
|
24
|
+
gl.deleteProgram(program.id);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
this._cache.delete(gl);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this._cache = new WeakMap();
|
|
31
|
+
}
|
|
13
32
|
}
|
|
14
33
|
// ── Instance ──────────────────────────────────────────────────────────────
|
|
15
34
|
id;
|
|
16
35
|
uniforms = {};
|
|
17
36
|
attributes = {};
|
|
18
|
-
|
|
19
|
-
|
|
37
|
+
uniformInfo = {};
|
|
38
|
+
constructor(gl, vertSrc, fragSrc, name) {
|
|
39
|
+
this.id = createProgram(gl, vertSrc, fragSrc, name);
|
|
20
40
|
const totalUniforms = gl.getProgramParameter(this.id, gl.ACTIVE_UNIFORMS);
|
|
21
41
|
for (let i = 0; i < totalUniforms; i++) {
|
|
22
42
|
const info = gl.getActiveUniform(this.id, i);
|
|
23
43
|
this.uniforms[info.name] = gl.getUniformLocation(this.id, info.name);
|
|
44
|
+
this.uniformInfo[info.name] = { type: info.type, size: info.size };
|
|
24
45
|
}
|
|
25
46
|
const totalAttribs = gl.getProgramParameter(this.id, gl.ACTIVE_ATTRIBUTES);
|
|
26
47
|
for (let i = 0; i < totalAttribs; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGLProgram.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLProgram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,MAAM,OAAO,YAAY;IACxB,6EAA6E;IAErE,MAAM,
|
|
1
|
+
{"version":3,"file":"WebGLProgram.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLProgram.ts"],"names":[],"mappings":"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"}
|