@swf2es/render 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +17 -2
  3. package/dist/commands.d.ts +67 -0
  4. package/dist/commands.d.ts.map +1 -0
  5. package/dist/commands.js +93 -0
  6. package/dist/commands.js.map +1 -0
  7. package/dist/filter-plan.d.ts +110 -0
  8. package/dist/filter-plan.d.ts.map +1 -0
  9. package/dist/filter-plan.js +480 -0
  10. package/dist/filter-plan.js.map +1 -0
  11. package/dist/filter-shaders.d.ts +63 -0
  12. package/dist/filter-shaders.d.ts.map +1 -0
  13. package/dist/filter-shaders.js +350 -0
  14. package/dist/filter-shaders.js.map +1 -0
  15. package/dist/filters.d.ts +107 -0
  16. package/dist/filters.d.ts.map +1 -0
  17. package/dist/filters.js +187 -0
  18. package/dist/filters.js.map +1 -0
  19. package/dist/geometry.d.ts +83 -0
  20. package/dist/geometry.d.ts.map +1 -0
  21. package/dist/geometry.js +93 -0
  22. package/dist/geometry.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +13 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/keeps.d.ts +17 -0
  28. package/dist/keeps.d.ts.map +1 -0
  29. package/dist/keeps.js +17 -0
  30. package/dist/keeps.js.map +1 -0
  31. package/dist/kernel-shaders.d.ts +74 -0
  32. package/dist/kernel-shaders.d.ts.map +1 -0
  33. package/dist/kernel-shaders.js +323 -0
  34. package/dist/kernel-shaders.js.map +1 -0
  35. package/dist/measure.d.ts +56 -0
  36. package/dist/measure.d.ts.map +1 -0
  37. package/dist/measure.js +287 -0
  38. package/dist/measure.js.map +1 -0
  39. package/dist/plan.d.ts +14 -0
  40. package/dist/plan.d.ts.map +1 -0
  41. package/dist/plan.js +247 -0
  42. package/dist/plan.js.map +1 -0
  43. package/dist/registry.d.ts +49 -0
  44. package/dist/registry.d.ts.map +1 -0
  45. package/dist/registry.js +87 -0
  46. package/dist/registry.js.map +1 -0
  47. package/dist/rows.d.ts +39 -0
  48. package/dist/rows.d.ts.map +1 -0
  49. package/dist/rows.js +60 -0
  50. package/dist/rows.js.map +1 -0
  51. package/dist/scene.d.ts +179 -0
  52. package/dist/scene.d.ts.map +1 -0
  53. package/dist/scene.js +265 -0
  54. package/dist/scene.js.map +1 -0
  55. package/dist/shelves.d.ts +23 -0
  56. package/dist/shelves.d.ts.map +1 -0
  57. package/dist/shelves.js +63 -0
  58. package/dist/shelves.js.map +1 -0
  59. package/dist/textures.d.ts +72 -0
  60. package/dist/textures.d.ts.map +1 -0
  61. package/dist/textures.js +160 -0
  62. package/dist/textures.js.map +1 -0
  63. package/dist/webgl/atlas.d.ts +63 -0
  64. package/dist/webgl/atlas.d.ts.map +1 -0
  65. package/dist/webgl/atlas.js +328 -0
  66. package/dist/webgl/atlas.js.map +1 -0
  67. package/dist/webgl/backend.d.ts +141 -0
  68. package/dist/webgl/backend.d.ts.map +1 -0
  69. package/dist/webgl/backend.js +659 -0
  70. package/dist/webgl/backend.js.map +1 -0
  71. package/dist/webgl/composite.d.ts +101 -0
  72. package/dist/webgl/composite.d.ts.map +1 -0
  73. package/dist/webgl/composite.js +293 -0
  74. package/dist/webgl/composite.js.map +1 -0
  75. package/dist/webgl/draws.d.ts +213 -0
  76. package/dist/webgl/draws.d.ts.map +1 -0
  77. package/dist/webgl/draws.js +714 -0
  78. package/dist/webgl/draws.js.map +1 -0
  79. package/dist/webgl/filters.d.ts +107 -0
  80. package/dist/webgl/filters.d.ts.map +1 -0
  81. package/dist/webgl/filters.js +351 -0
  82. package/dist/webgl/filters.js.map +1 -0
  83. package/dist/webgl/gpu-textures.d.ts +44 -0
  84. package/dist/webgl/gpu-textures.d.ts.map +1 -0
  85. package/dist/webgl/gpu-textures.js +178 -0
  86. package/dist/webgl/gpu-textures.js.map +1 -0
  87. package/dist/webgl/holds.d.ts +97 -0
  88. package/dist/webgl/holds.d.ts.map +1 -0
  89. package/dist/webgl/holds.js +453 -0
  90. package/dist/webgl/holds.js.map +1 -0
  91. package/dist/webgl/index.d.ts +2 -0
  92. package/dist/webgl/index.d.ts.map +1 -0
  93. package/dist/webgl/index.js +4 -0
  94. package/dist/webgl/index.js.map +1 -0
  95. package/dist/webgl/kernels.d.ts +64 -0
  96. package/dist/webgl/kernels.d.ts.map +1 -0
  97. package/dist/webgl/kernels.js +160 -0
  98. package/dist/webgl/kernels.js.map +1 -0
  99. package/dist/webgl/pool.d.ts +71 -0
  100. package/dist/webgl/pool.d.ts.map +1 -0
  101. package/dist/webgl/pool.js +192 -0
  102. package/dist/webgl/pool.js.map +1 -0
  103. package/dist/webgl/programs.d.ts +130 -0
  104. package/dist/webgl/programs.d.ts.map +1 -0
  105. package/dist/webgl/programs.js +582 -0
  106. package/dist/webgl/programs.js.map +1 -0
  107. package/dist/webgl/stage.d.ts +67 -0
  108. package/dist/webgl/stage.d.ts.map +1 -0
  109. package/dist/webgl/stage.js +173 -0
  110. package/dist/webgl/stage.js.map +1 -0
  111. package/dist/webgl/targets.d.ts +172 -0
  112. package/dist/webgl/targets.d.ts.map +1 -0
  113. package/dist/webgl/targets.js +323 -0
  114. package/dist/webgl/targets.js.map +1 -0
  115. package/package.json +35 -3
  116. package/src/commands.ts +98 -0
  117. package/src/filter-plan.ts +755 -0
  118. package/src/filter-shaders.ts +360 -0
  119. package/src/filters.ts +220 -0
  120. package/src/geometry.ts +143 -0
  121. package/src/index.ts +87 -0
  122. package/src/keeps.ts +21 -0
  123. package/src/kernel-shaders.ts +375 -0
  124. package/src/measure.ts +400 -0
  125. package/src/plan.ts +331 -0
  126. package/src/registry.ts +105 -0
  127. package/src/rows.ts +93 -0
  128. package/src/scene.ts +297 -0
  129. package/src/shelves.ts +70 -0
  130. package/src/textures.ts +198 -0
  131. package/src/webgl/atlas.ts +370 -0
  132. package/src/webgl/backend.ts +973 -0
  133. package/src/webgl/composite.ts +372 -0
  134. package/src/webgl/draws.ts +902 -0
  135. package/src/webgl/filters.ts +502 -0
  136. package/src/webgl/gpu-textures.ts +253 -0
  137. package/src/webgl/holds.ts +624 -0
  138. package/src/webgl/index.ts +3 -0
  139. package/src/webgl/kernels.ts +205 -0
  140. package/src/webgl/pool.ts +245 -0
  141. package/src/webgl/programs.ts +620 -0
  142. package/src/webgl/stage.ts +214 -0
  143. package/src/webgl/targets.ts +464 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/webgl/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { type GlState } from "@swf2es/context3d/device";
2
+ import { type Filters } from "../filters.js";
3
+ import type { KernelHost, KernelPrograms } from "./kernels.js";
4
+ import { type Open } from "./targets.js";
5
+ /**
6
+ * Whether blend mode `mode` reads what is below, which GL's blending does
7
+ * not compute, onto a target `opaque` throughout or not. Over an opaque
8
+ * one, multiply's src × (1 − da) term is none, and premultiplied it is
9
+ * s × d + d × (1 − sa), alpha as normal's: GL's blending (setModeBlend).
10
+ * An alpha mask's is d × sa (ALPHA_MASK).
11
+ */
12
+ export declare function readsBelow(mode: number, opaque?: boolean): boolean;
13
+ /**
14
+ * GL's blending set for `mode` where it computes it (readsBelow false),
15
+ * the fragment then its pixel alone (BLEND_FRONT's normal); else off, the
16
+ * fragment the blend itself.
17
+ */
18
+ export declare function setModeBlend(gl: WebGL2RenderingContext, state: GlState, mode: number): void;
19
+ /** Where a compositor finds the frame's blend shaders and the textures they read. */
20
+ export interface CompositeHost extends KernelHost {
21
+ filters(): Filters | null;
22
+ }
23
+ /**
24
+ * Layers composited onto what they are drawn over, in Flash's blend modes:
25
+ * through GL's blending where it computes the blend, else by the composite
26
+ * program from a copy of what is below, or by a blend shader's program
27
+ * (KERNEL).
28
+ */
29
+ export declare class Compositor {
30
+ private readonly host;
31
+ /** Blend shaders' programs, the backend's one cache of kernels'. */
32
+ private readonly kernels;
33
+ private readonly gl;
34
+ private readonly state;
35
+ /** The layers' composite program and where it takes its mode and row. */
36
+ private composite;
37
+ private modeLocation;
38
+ private compositeRowLocation;
39
+ private offsetLocation;
40
+ private flipLocation;
41
+ private backOffsetLocation;
42
+ private rectLocation;
43
+ /** A copy of what is below a layer whose mode reads it, the target's size. */
44
+ private back;
45
+ private backFramebuffer;
46
+ private backWidth;
47
+ private backHeight;
48
+ constructor(gl: WebGL2RenderingContext, state: GlState, host: CompositeHost,
49
+ /** Blend shaders' programs, the backend's one cache of kernels'. */
50
+ kernels: KernelPrograms);
51
+ /** The composite program made, and no copy yet, as the context comes or comes back. */
52
+ setUp(): void;
53
+ /**
54
+ * `open` composited onto `under`, bound, in blend mode `mode`, coloured by
55
+ * row `row` (or -1), over its rectangle alone: through GL's blending where
56
+ * it computes Flash's blend, else from a copy of what is below there, the
57
+ * result replacing it. Its rectangle is cut to `under`'s, as a filtered
58
+ * one may reach past the canvas; in `under`'s framebuffer its rows run
59
+ * up on the canvas and down in a layer.
60
+ */
61
+ compositeLayer(open: Open, under: Open, given: number, row: number): void;
62
+ /** Where cover last found a rectangle on its target, and where copyBelow copied what is below it. */
63
+ readonly place: {
64
+ dx: number;
65
+ dy: number;
66
+ x0: number;
67
+ y0: number;
68
+ width: number;
69
+ height: number;
70
+ fx: number;
71
+ fy: number;
72
+ backX: number;
73
+ backY: number;
74
+ };
75
+ /**
76
+ * Where `rect` lies on `under`, into place: cut to `under`'s, as a
77
+ * filtered layer may reach past the canvas; in `under`'s framebuffer its
78
+ * rows run up on the canvas and down in a layer. Whether any of it does.
79
+ */
80
+ cover(rect: {
81
+ x: number;
82
+ y: number;
83
+ width: number;
84
+ height: number;
85
+ }, under: Open): boolean;
86
+ /**
87
+ * What is below the rectangle cover found copied, for a blend that reads
88
+ * it: bound to BACK_UNIT, where the copy has the rectangle's corner, less
89
+ * where the target has it, into place, and `under`'s framebuffer bound again.
90
+ */
91
+ copyBelow(under: Open): boolean;
92
+ /**
93
+ * The program of the blend shader of chain `chain` of the frame's
94
+ * filters (KernelPrograms), in use; null for none, one that would not
95
+ * link, one of more images than a program binds, or one whose image is gone.
96
+ */
97
+ private useKernel;
98
+ /** The program and the copy made on the context, deleted. */
99
+ destroy(): void;
100
+ }
101
+ //# sourceMappingURL=composite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/webgl/composite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAiB,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9E,OAAO,EAAyC,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAShE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqB3F;AAED,qFAAqF;AACrF,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IAmBnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO;IApB1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,yEAAyE;IACzE,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,YAAY,CAAqC;IACzD,8EAA8E;IAC9E,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,YACE,EAAE,EAAE,sBAAsB,EAC1B,KAAK,EAAE,OAAO,EACG,IAAI,EAAE,aAAa;IACpC,oEAAoE;IACnD,OAAO,EAAE,cAAc,EAIzC;IAED,uFAAuF;IACvF,KAAK,IAAI,IAAI,CAiBZ;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAyDxE;IAED,qGAAqG;IACrG,QAAQ,CAAC,KAAK;QACZ,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,KAAK;QACL,MAAM;QACN,EAAE;QACF,EAAE;QACF,KAAK;QACL,KAAK;MACL;IAEF;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAmBzF;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAkG9B;IAED;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA0BjB,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAQd;CACF"}
@@ -0,0 +1,293 @@
1
+ import { linkProgram } from "@swf2es/context3d/device";
2
+ import { BLEND } from "../filters.js";
3
+ import { blendKernel, kernelImagesFit } from "../kernel-shaders.js";
4
+ import { ADD, ALPHA_MASK, KERNEL, LAYER, MULTIPLY, NORMAL, SCREEN } from "../scene.js";
5
+ import { BACK_UNIT, compositeFragment, compositeVertex, LAYER_COLOR, LAYER_UNIT, } from "./programs.js";
6
+ import { framebufferOf, LAYER_STEP } from "./targets.js";
7
+ /**
8
+ * Whether blend mode `mode` reads what is below, which GL's blending does
9
+ * not compute, onto a target `opaque` throughout or not. Over an opaque
10
+ * one, multiply's src × (1 − da) term is none, and premultiplied it is
11
+ * s × d + d × (1 − sa), alpha as normal's: GL's blending (setModeBlend).
12
+ * An alpha mask's is d × sa (ALPHA_MASK).
13
+ */
14
+ export function readsBelow(mode, opaque = false) {
15
+ return !(mode === NORMAL ||
16
+ mode === ALPHA_MASK ||
17
+ mode === LAYER ||
18
+ mode === ADD ||
19
+ mode === SCREEN ||
20
+ (mode === MULTIPLY && opaque));
21
+ }
22
+ /**
23
+ * GL's blending set for `mode` where it computes it (readsBelow false),
24
+ * the fragment then its pixel alone (BLEND_FRONT's normal); else off, the
25
+ * fragment the blend itself.
26
+ */
27
+ export function setModeBlend(gl, state, mode) {
28
+ switch (mode) {
29
+ case ADD:
30
+ state.setBlend(gl.ONE, gl.ONE);
31
+ break;
32
+ case SCREEN:
33
+ state.setBlend(gl.ONE, gl.ONE_MINUS_SRC_COLOR);
34
+ break;
35
+ case NORMAL:
36
+ case LAYER:
37
+ state.setBlend(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
38
+ break;
39
+ case MULTIPLY:
40
+ state.setBlend(gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
41
+ break;
42
+ case ALPHA_MASK:
43
+ state.setBlend(gl.ZERO, gl.SRC_ALPHA);
44
+ break;
45
+ default:
46
+ state.setBlend(null);
47
+ }
48
+ }
49
+ /**
50
+ * Layers composited onto what they are drawn over, in Flash's blend modes:
51
+ * through GL's blending where it computes the blend, else by the composite
52
+ * program from a copy of what is below, or by a blend shader's program
53
+ * (KERNEL).
54
+ */
55
+ export class Compositor {
56
+ host;
57
+ kernels;
58
+ gl;
59
+ state;
60
+ /** The layers' composite program and where it takes its mode and row. */
61
+ composite;
62
+ modeLocation = null;
63
+ compositeRowLocation = null;
64
+ offsetLocation = null;
65
+ flipLocation = null;
66
+ backOffsetLocation = null;
67
+ rectLocation = null;
68
+ /** A copy of what is below a layer whose mode reads it, the target's size. */
69
+ back = null;
70
+ backFramebuffer = null;
71
+ backWidth = 0;
72
+ backHeight = 0;
73
+ constructor(gl, state, host,
74
+ /** Blend shaders' programs, the backend's one cache of kernels'. */
75
+ kernels) {
76
+ this.host = host;
77
+ this.kernels = kernels;
78
+ this.gl = gl;
79
+ this.state = state;
80
+ }
81
+ /** The composite program made, and no copy yet, as the context comes or comes back. */
82
+ setUp() {
83
+ const gl = this.gl;
84
+ this.composite = linkProgram(gl, compositeVertex, compositeFragment);
85
+ this.state.useProgram(this.composite);
86
+ gl.uniform1i(gl.getUniformLocation(this.composite, "uLayer"), LAYER_UNIT);
87
+ gl.uniform1i(gl.getUniformLocation(this.composite, "uBack"), BACK_UNIT);
88
+ gl.uniform1i(gl.getUniformLocation(this.composite, "uRows"), 0);
89
+ this.modeLocation = gl.getUniformLocation(this.composite, "uMode");
90
+ this.compositeRowLocation = gl.getUniformLocation(this.composite, "uRow");
91
+ this.offsetLocation = gl.getUniformLocation(this.composite, "uOffset");
92
+ this.flipLocation = gl.getUniformLocation(this.composite, "uFlip");
93
+ this.backOffsetLocation = gl.getUniformLocation(this.composite, "uBackOffset");
94
+ this.rectLocation = gl.getUniformLocation(this.composite, "uRect");
95
+ this.back = null;
96
+ this.backFramebuffer = null;
97
+ this.backWidth = 0;
98
+ this.backHeight = 0;
99
+ }
100
+ /**
101
+ * `open` composited onto `under`, bound, in blend mode `mode`, coloured by
102
+ * row `row` (or -1), over its rectangle alone: through GL's blending where
103
+ * it computes Flash's blend, else from a copy of what is below there, the
104
+ * result replacing it. Its rectangle is cut to `under`'s, as a filtered
105
+ * one may reach past the canvas; in `under`'s framebuffer its rows run
106
+ * up on the canvas and down in a layer.
107
+ */
108
+ compositeLayer(open, under, given, row) {
109
+ const gl = this.gl;
110
+ // A blend shader that will not link, of too many images, or with an image gone, composites as
111
+ // normal.
112
+ const kernel = given >= KERNEL ? this.useKernel(given - KERNEL) : null;
113
+ const mode = given >= KERNEL && !kernel ? NORMAL : given;
114
+ const state = this.state;
115
+ const reads = readsBelow(mode, under.opaque);
116
+ if (!this.cover(open, under) || (reads && !this.copyBelow(under))) {
117
+ return;
118
+ }
119
+ const { dx, dy, x0, y0, width, height, fx, fy, backX, backY } = this.place;
120
+ const flip = !under.layer;
121
+ state.bindTexture(LAYER_UNIT, open.layer.texture);
122
+ state.bindSampler(LAYER_UNIT, null);
123
+ state.bindSampler(BACK_UNIT, null);
124
+ state.bindVertexArray(null);
125
+ // Less its corner on its page, where it is a held layer's rectangle of one (HELD), and past
126
+ // the target's, where that is one.
127
+ const ox = (under.ox ?? 0) - (open.ox ?? 0);
128
+ const oy = (under.oy ?? 0) - (open.oy ?? 0);
129
+ const offsetY = flip ? under.height - 1 - dy - oy : dy + oy;
130
+ if (kernel) {
131
+ const filters = this.host.filters();
132
+ const entry = filters.chains[mode - KERNEL];
133
+ state.useProgram(kernel.program);
134
+ gl.uniform1i(kernel.at("uRow"), row);
135
+ gl.uniform2i(kernel.at("uOffset"), dx + ox, offsetY);
136
+ gl.uniform1i(kernel.at("uFlip"), flip ? 1 : 0);
137
+ gl.uniform2i(kernel.at("uBackOffset"), backX, backY);
138
+ gl.uniform1i(kernel.at("uWhole"), filters.values[filters.start[entry]]);
139
+ this.kernels.setUniforms(kernel, filters, entry, this.host);
140
+ }
141
+ else {
142
+ state.useProgram(this.composite);
143
+ // Its pixel alone where GL's blending computes the mode (MULTIPLY over an opaque target).
144
+ gl.uniform1i(this.modeLocation, reads ? mode : NORMAL);
145
+ gl.uniform1i(this.compositeRowLocation, row);
146
+ gl.uniform2i(this.offsetLocation, dx + ox, offsetY);
147
+ gl.uniform1i(this.flipLocation, flip ? 1 : 0);
148
+ gl.uniform2i(this.backOffsetLocation, backX, backY);
149
+ }
150
+ setModeBlend(gl, state, reads ? -1 : mode);
151
+ // Over the rectangle alone, in the target's clip space; the scissor keeps it to whole pixels.
152
+ const tw = under.width;
153
+ const th = under.height;
154
+ gl.uniform4f(kernel ? kernel.at("uRect") : this.rectLocation, (2 * x0) / tw - 1, (2 * y0) / th - 1, (2 * (x0 + width)) / tw - 1, (2 * (y0 + height)) / th - 1);
155
+ state.scissor([fx, fy, width, height]);
156
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
157
+ state.scissor(null);
158
+ }
159
+ /** Where cover last found a rectangle on its target, and where copyBelow copied what is below it. */
160
+ place = {
161
+ dx: 0,
162
+ dy: 0,
163
+ x0: 0,
164
+ y0: 0,
165
+ width: 0,
166
+ height: 0,
167
+ fx: 0,
168
+ fy: 0,
169
+ backX: 0,
170
+ backY: 0,
171
+ };
172
+ /**
173
+ * Where `rect` lies on `under`, into place: cut to `under`'s, as a
174
+ * filtered layer may reach past the canvas; in `under`'s framebuffer its
175
+ * rows run up on the canvas and down in a layer. Whether any of it does.
176
+ */
177
+ cover(rect, under) {
178
+ const place = this.place;
179
+ const dx = rect.x - under.x;
180
+ const dy = rect.y - under.y;
181
+ const y = under.layer ? dy : under.height - dy - rect.height;
182
+ place.dx = dx;
183
+ place.dy = dy;
184
+ place.x0 = Math.max(0, dx);
185
+ place.y0 = Math.max(0, y);
186
+ place.width = Math.min(under.width, dx + rect.width) - place.x0;
187
+ place.height = Math.min(under.height, y + rect.height) - place.y0;
188
+ // The rectangle's corner in the target's framebuffer, where the target is a held layer's
189
+ // rectangle of a page (HOLD_PUSH).
190
+ place.fx = place.x0 + (under.ox ?? 0);
191
+ place.fy = place.y0 + (under.oy ?? 0);
192
+ // Where the copy of what is below has the rectangle's corner, less where the target has it.
193
+ place.backX = 0;
194
+ place.backY = 0;
195
+ return place.width > 0 && place.height > 0;
196
+ }
197
+ /**
198
+ * What is below the rectangle cover found copied, for a blend that reads
199
+ * it: bound to BACK_UNIT, where the copy has the rectangle's corner, less
200
+ * where the target has it, into place, and `under`'s framebuffer bound again.
201
+ */
202
+ copyBelow(under) {
203
+ const gl = this.gl;
204
+ const state = this.state;
205
+ const { fx, fy, width, height } = this.place;
206
+ // Out of a multisampled page, its rectangle resolved into the page's own texture first, which
207
+ // a blit may then copy anywhere: copied where it lies, the copy would stay as large as the
208
+ // page's far corner.
209
+ let from = framebufferOf(under);
210
+ const paged = under.msaa !== null && under.layer !== null && under.ox !== undefined;
211
+ if (paged) {
212
+ gl.bindFramebuffer(gl.READ_FRAMEBUFFER, from);
213
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, under.layer.framebuffer);
214
+ gl.blitFramebuffer(fx, fy, fx + width, fy + height, fx, fy, fx + width, fy + height, gl.COLOR_BUFFER_BIT, gl.NEAREST);
215
+ from = under.layer.framebuffer;
216
+ }
217
+ // Copied from its corner, or out of a multisampled target to where it lies, as a blit
218
+ // resolving must keep its rectangle: then as large as the rectangle's far corner.
219
+ const bx = under.msaa && !paged ? fx : 0;
220
+ const by = under.msaa && !paged ? fy : 0;
221
+ this.place.backX = fx - bx;
222
+ this.place.backY = fy - by;
223
+ const right = bx + width;
224
+ const top = by + height;
225
+ if (!this.back || this.backWidth < right || this.backHeight < top) {
226
+ if (this.back) {
227
+ state.dropTexture(this.back);
228
+ gl.deleteTexture(this.back);
229
+ gl.deleteFramebuffer(this.backFramebuffer);
230
+ this.backFramebuffer = null;
231
+ }
232
+ this.back = gl.createTexture();
233
+ this.backWidth = Math.max(this.backWidth, Math.ceil(right / LAYER_STEP) * LAYER_STEP);
234
+ this.backHeight = Math.max(this.backHeight, Math.ceil(top / LAYER_STEP) * LAYER_STEP);
235
+ state.bindTexture(BACK_UNIT, this.back);
236
+ state.activeTexture(BACK_UNIT);
237
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, this.backWidth, this.backHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
238
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
239
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
240
+ }
241
+ // Blitted, not copied: the canvas' colour may have no alpha, which copyTexSubImage2D into an
242
+ // RGBA texture refuses, where a blit fills it in.
243
+ // Out of a multisampled target the blit resolves the rectangle alone.
244
+ if (!this.backFramebuffer) {
245
+ this.backFramebuffer = gl.createFramebuffer();
246
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.backFramebuffer);
247
+ gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.back, 0);
248
+ }
249
+ else {
250
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.backFramebuffer);
251
+ }
252
+ gl.bindFramebuffer(gl.READ_FRAMEBUFFER, from);
253
+ gl.blitFramebuffer(fx, fy, fx + width, fy + height, bx, by, right, top, gl.COLOR_BUFFER_BIT, gl.NEAREST);
254
+ // Both bindings back as the state cache has them.
255
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebufferOf(under));
256
+ state.bindTexture(BACK_UNIT, this.back);
257
+ state.bindSampler(BACK_UNIT, null);
258
+ return true;
259
+ }
260
+ /**
261
+ * The program of the blend shader of chain `chain` of the frame's
262
+ * filters (KernelPrograms), in use; null for none, one that would not
263
+ * link, one of more images than a program binds, or one whose image is gone.
264
+ */
265
+ useKernel(chain) {
266
+ const filters = this.host.filters();
267
+ if (!filters || chain >= filters.chainCount) {
268
+ return null;
269
+ }
270
+ const i = filters.chains[chain];
271
+ const source = filters.kernels[i];
272
+ const images = source && filters.kind[i] === BLEND ? this.kernels.readImages(filters, i, this.host) : null;
273
+ if (!source || !images || !kernelImagesFit(images)) {
274
+ return null;
275
+ }
276
+ return this.kernels.use(compositeVertex, blendKernel(source, images, LAYER_COLOR), (program) => {
277
+ const gl = this.gl;
278
+ gl.uniform1i(gl.getUniformLocation(program, "uLayer"), LAYER_UNIT);
279
+ gl.uniform1i(gl.getUniformLocation(program, "uBack"), BACK_UNIT);
280
+ gl.uniform1i(gl.getUniformLocation(program, "uRows"), 0);
281
+ });
282
+ }
283
+ /** The program and the copy made on the context, deleted. */
284
+ destroy() {
285
+ const gl = this.gl;
286
+ gl.deleteProgram(this.composite);
287
+ if (this.back) {
288
+ gl.deleteTexture(this.back);
289
+ gl.deleteFramebuffer(this.backFramebuffer);
290
+ }
291
+ }
292
+ }
293
+ //# sourceMappingURL=composite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/webgl/composite.ts"],"names":[],"mappings":"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"}