@kurot/core 1.0.19 → 1.0.21

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.
Files changed (109) hide show
  1. package/dist/kurot/display/DisplayObject.d.ts.map +1 -1
  2. package/dist/kurot/display/DisplayObject.js +6 -0
  3. package/dist/kurot/display/DisplayObject.js.map +1 -1
  4. package/dist/kurot/display/Mesh.d.ts +5 -2
  5. package/dist/kurot/display/Mesh.d.ts.map +1 -1
  6. package/dist/kurot/display/Mesh.js +5 -2
  7. package/dist/kurot/display/Mesh.js.map +1 -1
  8. package/dist/kurot/filters/BloomFilter.d.ts +40 -0
  9. package/dist/kurot/filters/BloomFilter.d.ts.map +1 -0
  10. package/dist/kurot/filters/BloomFilter.js +51 -0
  11. package/dist/kurot/filters/BloomFilter.js.map +1 -0
  12. package/dist/kurot/filters/BloomShaders.d.ts +10 -0
  13. package/dist/kurot/filters/BloomShaders.d.ts.map +1 -0
  14. package/dist/kurot/filters/BloomShaders.js +54 -0
  15. package/dist/kurot/filters/BloomShaders.js.map +1 -0
  16. package/dist/kurot/filters/BlurFilter.d.ts +4 -0
  17. package/dist/kurot/filters/BlurFilter.d.ts.map +1 -1
  18. package/dist/kurot/filters/BlurFilter.js +23 -6
  19. package/dist/kurot/filters/BlurFilter.js.map +1 -1
  20. package/dist/kurot/filters/CustomFilter.d.ts +44 -1
  21. package/dist/kurot/filters/CustomFilter.d.ts.map +1 -1
  22. package/dist/kurot/filters/CustomFilter.js +56 -17
  23. package/dist/kurot/filters/CustomFilter.js.map +1 -1
  24. package/dist/kurot/filters/DropShadowFilter.d.ts.map +1 -1
  25. package/dist/kurot/filters/DropShadowFilter.js +1 -0
  26. package/dist/kurot/filters/DropShadowFilter.js.map +1 -1
  27. package/dist/kurot/filters/Filter.d.ts +15 -0
  28. package/dist/kurot/filters/Filter.d.ts.map +1 -1
  29. package/dist/kurot/filters/Filter.js +58 -0
  30. package/dist/kurot/filters/Filter.js.map +1 -1
  31. package/dist/kurot/filters/FilterTexture.d.ts +21 -0
  32. package/dist/kurot/filters/FilterTexture.d.ts.map +1 -0
  33. package/dist/kurot/filters/FilterTexture.js +2 -0
  34. package/dist/kurot/filters/FilterTexture.js.map +1 -0
  35. package/dist/kurot/filters/GlowFilter.d.ts.map +1 -1
  36. package/dist/kurot/filters/GlowFilter.js +6 -0
  37. package/dist/kurot/filters/GlowFilter.js.map +1 -1
  38. package/dist/kurot/filters/MultiPassFilter.d.ts +41 -0
  39. package/dist/kurot/filters/MultiPassFilter.d.ts.map +1 -0
  40. package/dist/kurot/filters/MultiPassFilter.js +53 -0
  41. package/dist/kurot/filters/MultiPassFilter.js.map +1 -0
  42. package/dist/kurot/filters/index.d.ts +6 -0
  43. package/dist/kurot/filters/index.d.ts.map +1 -1
  44. package/dist/kurot/filters/index.js +2 -0
  45. package/dist/kurot/filters/index.js.map +1 -1
  46. package/dist/kurot/player/Player.d.ts.map +1 -1
  47. package/dist/kurot/player/Player.js +1 -0
  48. package/dist/kurot/player/Player.js.map +1 -1
  49. package/dist/kurot/player/canvas/CanvasRenderer.d.ts.map +1 -1
  50. package/dist/kurot/player/canvas/CanvasRenderer.js +15 -13
  51. package/dist/kurot/player/canvas/CanvasRenderer.js.map +1 -1
  52. package/dist/kurot/player/pipes/FilterPipe.d.ts.map +1 -1
  53. package/dist/kurot/player/pipes/FilterPipe.js +23 -18
  54. package/dist/kurot/player/pipes/FilterPipe.js.map +1 -1
  55. package/dist/kurot/player/pipes/MaskPipe.d.ts.map +1 -1
  56. package/dist/kurot/player/pipes/MaskPipe.js +6 -0
  57. package/dist/kurot/player/pipes/MaskPipe.js.map +1 -1
  58. package/dist/kurot/player/pipes/filter-bounds.d.ts +8 -0
  59. package/dist/kurot/player/pipes/filter-bounds.d.ts.map +1 -0
  60. package/dist/kurot/player/pipes/filter-bounds.js +25 -0
  61. package/dist/kurot/player/pipes/filter-bounds.js.map +1 -0
  62. package/dist/kurot/player/webgl/WebGLFilterSystem.d.ts +27 -0
  63. package/dist/kurot/player/webgl/WebGLFilterSystem.d.ts.map +1 -0
  64. package/dist/kurot/player/webgl/WebGLFilterSystem.js +119 -0
  65. package/dist/kurot/player/webgl/WebGLFilterSystem.js.map +1 -0
  66. package/dist/kurot/player/webgl/WebGLFilterTargetPool.d.ts +18 -0
  67. package/dist/kurot/player/webgl/WebGLFilterTargetPool.d.ts.map +1 -0
  68. package/dist/kurot/player/webgl/WebGLFilterTargetPool.js +80 -0
  69. package/dist/kurot/player/webgl/WebGLFilterTargetPool.js.map +1 -0
  70. package/dist/kurot/player/webgl/WebGLFilterTextures.d.ts +17 -0
  71. package/dist/kurot/player/webgl/WebGLFilterTextures.d.ts.map +1 -0
  72. package/dist/kurot/player/webgl/WebGLFilterTextures.js +124 -0
  73. package/dist/kurot/player/webgl/WebGLFilterTextures.js.map +1 -0
  74. package/dist/kurot/player/webgl/WebGLProgram.d.ts +6 -2
  75. package/dist/kurot/player/webgl/WebGLProgram.d.ts.map +1 -1
  76. package/dist/kurot/player/webgl/WebGLProgram.js +29 -8
  77. package/dist/kurot/player/webgl/WebGLProgram.js.map +1 -1
  78. package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts +2 -0
  79. package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts.map +1 -1
  80. package/dist/kurot/player/webgl/WebGLRenderBuffer.js +3 -0
  81. package/dist/kurot/player/webgl/WebGLRenderBuffer.js.map +1 -1
  82. package/dist/kurot/player/webgl/WebGLRenderContext.d.ts +15 -6
  83. package/dist/kurot/player/webgl/WebGLRenderContext.d.ts.map +1 -1
  84. package/dist/kurot/player/webgl/WebGLRenderContext.js +200 -145
  85. package/dist/kurot/player/webgl/WebGLRenderContext.js.map +1 -1
  86. package/dist/kurot/player/webgl/WebGLRenderer.d.ts.map +1 -1
  87. package/dist/kurot/player/webgl/WebGLRenderer.js +143 -110
  88. package/dist/kurot/player/webgl/WebGLRenderer.js.map +1 -1
  89. package/dist/kurot/player/webgl/WebGLUtils.d.ts +2 -2
  90. package/dist/kurot/player/webgl/WebGLUtils.d.ts.map +1 -1
  91. package/dist/kurot/player/webgl/WebGLUtils.js +35 -12
  92. package/dist/kurot/player/webgl/WebGLUtils.js.map +1 -1
  93. package/dist/kurot/player/webgl/WebGLVertexArrayObject.d.ts +2 -0
  94. package/dist/kurot/player/webgl/WebGLVertexArrayObject.d.ts.map +1 -1
  95. package/dist/kurot/player/webgl/WebGLVertexArrayObject.js +3 -1
  96. package/dist/kurot/player/webgl/WebGLVertexArrayObject.js.map +1 -1
  97. package/dist/kurot/player/webgl/custom-filter-uniforms.d.ts +6 -0
  98. package/dist/kurot/player/webgl/custom-filter-uniforms.d.ts.map +1 -0
  99. package/dist/kurot/player/webgl/custom-filter-uniforms.js +116 -0
  100. package/dist/kurot/player/webgl/custom-filter-uniforms.js.map +1 -0
  101. package/dist/kurot/player/webgl/split-mesh.d.ts +9 -0
  102. package/dist/kurot/player/webgl/split-mesh.d.ts.map +1 -0
  103. package/dist/kurot/player/webgl/split-mesh.js +29 -0
  104. package/dist/kurot/player/webgl/split-mesh.js.map +1 -0
  105. package/dist/kurot/system/Capabilities.js +1 -1
  106. package/dist/kurot/text/TextField.d.ts.map +1 -1
  107. package/dist/kurot/text/TextField.js +2 -1
  108. package/dist/kurot/text/TextField.js.map +1 -1
  109. package/package.json +1 -1
@@ -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":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAWnE;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAIO;IAHpB,IAAI,CAAwB;IAC3B,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEvD,YAAoC,QAA4B;QAA5B,aAAQ,GAAR,QAAQ,CAAoB;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,OAA0B,EAAE,KAAwB,EAAE,UAAkB,EACrF,SAA8C;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;QAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAChD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACJ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;gBACnF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAChD,MAAM,GAAG,MAAM,CAAC;YACjB,CAAC;YACD,SAAS,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;gBAAS,CAAC;YACV,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACF,CAAC;IAEO,OAAO,CAAC,KAAa,EAAE,MAAc;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,OAAO,CAAC,MAAyB;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,MAAc,EAAE,KAAwB,EAAE,KAAa,EAAE,MAAc,EAAE,UAAkB,EACxG,WAA0C,EAAE;QAC5C,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;QACnE,IAAI,MAAM,YAAY,eAAe,EAAE,CAAC;YACvC,MAAM,OAAO,GAAwB,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;oBACxE,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;wBAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAC,CAAC;gBACzC,CAAC;YACF,CAAC;YACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC;gBACxE,MAAM,QAAQ,GAAkC,EAAE,CAAC;gBACnD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC/D,MAAM,MAAM,GAAG,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzD,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC3F,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,KAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACjG,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;oBACxE,IAAI,GAAG,KAAK,UAAU,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAC,CAAC;gBAC7E,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAC,CAAC;YACzD,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,YAAY,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,MAAM,YAAY,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtH,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,IAAI,CAAC,MAAkB,EAAE,KAAwB,EAAE,KAAa,EAAE,MAAc,EAAE,UAAkB;QAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;YAC1F,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;YAC9F,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;YAC/C,MAAM,GAAG,QAAQ,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;YACpI,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,GAAG,QAAQ,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -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 readonly _cache;
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,QAAQ,CAAC,MAAM,CAAmC;WAEnD,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY;WAOxE,UAAU,IAAI,IAAI;IAMhC,SAAgB,EAAE,EAAE,kBAAkB,CAAC;IACvC,SAAgB,QAAQ,EAAE,UAAU,CAAM;IAC1C,SAAgB,UAAU,EAAE,YAAY,CAAM;IAE9C,OAAO;CAeP"}
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 Map();
4
+ static _cache = new WeakMap();
5
5
  static get(gl, vertSrc, fragSrc, key) {
6
- if (!this._cache.has(key)) {
7
- this._cache.set(key, new WebGLProgram(gl, vertSrc, fragSrc));
6
+ let cache = this._cache.get(gl);
7
+ if (!cache) {
8
+ cache = new Map();
9
+ this._cache.set(gl, cache);
8
10
  }
9
- return this._cache.get(key);
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
- this._cache.clear();
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
- constructor(gl, vertSrc, fragSrc) {
19
- this.id = createProgram(gl, vertSrc, fragSrc);
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,CAAU,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE1D,MAAM,CAAC,GAAG,CAAC,EAAM,EAAE,OAAe,EAAE,OAAe,EAAE,GAAW;QACtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,UAAU;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,6EAA6E;IAE7D,EAAE,CAAqB;IACvB,QAAQ,GAAe,EAAE,CAAC;IAC1B,UAAU,GAAiB,EAAE,CAAC;IAE9C,YAAoB,EAAM,EAAE,OAAe,EAAE,OAAe;QAC3D,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAE/C,MAAM,aAAa,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAW,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAW,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;IACF,CAAC"}
1
+ {"version":3,"file":"WebGLProgram.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLProgram.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Matrix } from '../../geom/Matrix.js';
2
+ import { Rectangle } from '../../geom/Rectangle.js';
2
3
  import { WebGLRenderTarget } from './WebGLRenderTarget.js';
3
4
  import { WebGLRenderContext } from './WebGLRenderContext.js';
4
5
  import type { RenderBuffer } from '../RenderBuffer.js';
@@ -30,6 +31,7 @@ export declare class WebGLRenderBuffer implements RenderBuffer {
30
31
  offscreenLocalY: number;
31
32
  filterPadX: number;
32
33
  filterPadY: number;
34
+ filterBounds?: Rectangle;
33
35
  stencilList: {
34
36
  x: number;
35
37
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"WebGLRenderBuffer.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLRenderBuffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGLRenderBuffer.d.ts","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLRenderBuffer.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export class WebGLRenderBuffer {
32
32
  static release(buf) {
33
33
  buf.filterPadX = 0;
34
34
  buf.filterPadY = 0;
35
+ buf.filterBounds = undefined;
35
36
  buf.hasOffscreenTransform = false;
36
37
  if (_pool.length < 6) {
37
38
  _pool.push(buf);
@@ -66,6 +67,7 @@ export class WebGLRenderBuffer {
66
67
  offscreenLocalY = 0;
67
68
  filterPadX = 0;
68
69
  filterPadY = 0;
70
+ filterBounds;
69
71
  stencilList = [];
70
72
  stencilHandleCount = 0;
71
73
  scissorState = false;
@@ -191,6 +193,7 @@ export class WebGLRenderBuffer {
191
193
  this.offscreenLocalY = 0;
192
194
  this.filterPadX = 0;
193
195
  this.filterPadY = 0;
196
+ this.filterBounds = undefined;
194
197
  this.stencilList.length = 0;
195
198
  this.stencilHandleCount = 0;
196
199
  this.scissorState = false;
@@ -1 +1 @@
1
- {"version":3,"file":"WebGLRenderBuffer.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLRenderBuffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGLRenderBuffer.js","sourceRoot":"","sources":["../../../../src/kurot/player/webgl/WebGLRenderBuffer.ts"],"names":[],"mappings":"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"}