@swf2es/render 0.0.0-stage → 0.1.1

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":"draws.js","sourceRoot":"","sources":["../../src/webgl/draws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { type GlState } from "@swf2es/context3d/device";
2
+ import { FilterPlan, type KernelObject } from "../filter-plan.js";
3
+ import type { Filters } from "../filters.js";
4
+ import type { KernelPrograms } from "./kernels.js";
5
+ /**
6
+ * A texture a pass draws into through its framebuffer, and reads: at least
7
+ * its frame's size; or a rectangle of one, `width` by `height` from texel
8
+ * (x, y), read as if it were a texture of its own, its edges clamped.
9
+ */
10
+ export interface FilterTarget {
11
+ framebuffer: WebGLFramebuffer;
12
+ texture: WebGLTexture;
13
+ width: number;
14
+ height: number;
15
+ x?: number;
16
+ y?: number;
17
+ }
18
+ /** Where the runner takes its targets from and gives them back, and finds textures and samplers. */
19
+ export interface FilterHost<T extends FilterTarget> {
20
+ /**
21
+ * A target for a frame of `width` by `height`, of the one size the host
22
+ * gives every such frame: two targets for one frame are alike, and a
23
+ * filter that reads two at one coordinate reads them alike.
24
+ */
25
+ take(width: number, height: number): T;
26
+ give(target: T): void;
27
+ texture(id: number): WebGLTexture | null;
28
+ sampler(bits: number): WebGLSampler;
29
+ }
30
+ /**
31
+ * Runs a layer's chain of Flash's filters, each a pass or a few over
32
+ * targets the host lends: the shaders of filter-shaders.ts, reading their
33
+ * input's size in the target's units, uInputSize, and its texels,
34
+ * uInputPixel. Every target's rows run down, so the shaders' offsets keep
35
+ * their sense. Each pass clears its whole output, which its
36
+ * successor may read past the frame.
37
+ */
38
+ export declare class FilterRunner<T extends FilterTarget> {
39
+ private readonly kernels;
40
+ private readonly gl;
41
+ private readonly state;
42
+ private readonly host;
43
+ private readonly passes;
44
+ /** The kernel image units a kernel's pass has bound so far. */
45
+ private samplers;
46
+ /** Whether a kernel's fragment shader links (planChain's `links`), linking it now if not yet. */
47
+ readonly links: (fragment: string) => boolean;
48
+ /** The chain being run, planned (filter-plan.ts), each slot's target and the last pass using it. */
49
+ private readonly plan;
50
+ private readonly targets;
51
+ private readonly lastUse;
52
+ private readonly hasTexture;
53
+ /** The target's pixels a unit of its own, for the chain running. */
54
+ private resolution;
55
+ constructor(gl: WebGL2RenderingContext, state: GlState, host: FilterHost<T>, kernels: KernelPrograms);
56
+ /**
57
+ * Chain `chain` of `filters` run over `input`'s first `width` by `height`
58
+ * texels: the target its last pass drew into, `input` itself where none
59
+ * changed it. Every other target, `input` too where it was replaced, goes
60
+ * back to the host. `object` is where the layer's object lies in it
61
+ * (planChain).
62
+ */
63
+ run(filters: Filters, chain: number, input: T, width: number, height: number, resolution: number, object?: KernelObject | null): T;
64
+ /**
65
+ * `input`'s first `width` by `height` texels at half the size each way,
66
+ * each texel the mean of the four it covers, read once linearly at the
67
+ * corner they share: a target the host lends, which the caller gives
68
+ * back. Not a filter's pass, so at a texel a unit.
69
+ */
70
+ halve(input: T, width: number, height: number): T;
71
+ /**
72
+ * `plan`'s passes drawn in order, its slot 0 `input`: each slot's target
73
+ * taken as a pass first draws into it and given back after the last pass
74
+ * that reads it, but the one the plan leaves its output in.
75
+ */
76
+ private execute;
77
+ /**
78
+ * Pass `k` of `plan` drawn from and into `targets`, by slot, which hold
79
+ * every one it reads and draws into; its output's rectangle cleared first
80
+ * where `clear`, else left as it is, as a rectangle no pass drew into yet is.
81
+ */
82
+ drawPass(plan: FilterPlan, k: number, targets: readonly (FilterTarget | null)[], clear: boolean): void;
83
+ /**
84
+ * `pass`'s uniform `name`, of `count` floats, set to `x` and those after,
85
+ * unless it was told them last: a frame's glows alike tell their passes
86
+ * the same values over and over.
87
+ */
88
+ private set;
89
+ /** Uniform `u` of `plan` set on `pass`, in use. */
90
+ private setUniform;
91
+ /** The pass of program `id` (filter-plan.ts), in use. */
92
+ private program;
93
+ /**
94
+ * `pass` drawn into `output`'s first `width` by `height` texels, the rest
95
+ * of it cleared, reading `input` from its corner over `readWidth` by
96
+ * `readHeight` texels.
97
+ */
98
+ private draw;
99
+ /** The pass of `fragment`, linked as first used, in use. */
100
+ private use;
101
+ /** The pass of a kernel's fragment shader (KernelPrograms), in use; null where it would not link. */
102
+ private kernel;
103
+ /** Where `pass` takes uniform `name`, asked once. */
104
+ private at;
105
+ destroy(): void;
106
+ }
107
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/webgl/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,351 @@
1
+ import { linkProgram } from "@swf2es/context3d/device";
2
+ import { BEVEL_PASS, BOX_PASS, CONVOLUTION_PASS, DISPLACE_PASS, FilterPlan, FLOATS, GLOW_PASS, GRADIENT_PASS, IVEC4S, KERNEL_PASS, MATRIX_PASS, MATRIX4, NO_BLUR, planChain, READ_BACK_PASS, SAMPLER, SHRINK_PASS, VEC4S, } from "../filter-plan.js";
3
+ import * as shaders from "../filter-shaders.js";
4
+ import { CLAMP, SMOOTH } from "../scene.js";
5
+ /**
6
+ * The units a pass reads its input, the blur it combines with, and a
7
+ * gradient from; a kernel's images take KernelPrograms' own (KERNEL_UNIT).
8
+ */
9
+ const INPUT_UNIT = 4;
10
+ const BLURRED_UNIT = 5;
11
+ const EXTRA_UNIT = 6;
12
+ /**
13
+ * A triangle over the output's frame, the viewport, reading its input
14
+ * from 0 to uCoord: the input's frame over its texture's size, or more of
15
+ * it for a shrink.
16
+ */
17
+ const VERTEX = `#version 300 es
18
+ uniform vec2 uCoord;
19
+ out vec2 vTextureCoord;
20
+ void main(void) {
21
+ vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));
22
+ gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);
23
+ vTextureCoord = p * uCoord;
24
+ }
25
+ `;
26
+ const HEADER = "#version 300 es\nprecision highp float;\n";
27
+ /**
28
+ * The input and the blur read within their rectangles (FilterTarget), as a
29
+ * texture of their own size clamped to its edges reads, linearly: a texel
30
+ * coordinate kept half a texel in from each edge reads the edge texel, as
31
+ * the edge's clamp does.
32
+ */
33
+ const READS = `uniform vec4 uTextureRect;
34
+ uniform vec4 uBlurredRect;
35
+ vec4 within(sampler2D t, vec4 rect, vec2 at) {
36
+ vec2 texel = clamp(at * rect.zw, vec2(0.5), rect.zw - 0.5);
37
+ return texture(t, (rect.xy + texel) / vec2(textureSize(t, 0)));
38
+ }
39
+ `;
40
+ /** A filter's fragment shader reading its input and its blur within their rectangles (READS). */
41
+ function withinRects(fragment) {
42
+ const reads = fragment
43
+ .replaceAll("texture(uTexture,", "within(uTexture, uTextureRect,")
44
+ .replaceAll("texture(uBlurred,", "within(uBlurred, uBlurredRect,");
45
+ // A read left as it was would read past its rectangle, into another's on a page: refused.
46
+ if (/\b(texture\w*|texelFetch\w*)\s*\(\s*u(Texture|Blurred)\b/.test(reads)) {
47
+ throw new Error("a filter shader reads its input other than as texture(uTexture, at)");
48
+ }
49
+ // After the samplers' declarations, which READS's function takes.
50
+ const at = reads.lastIndexOf("uniform sampler2D");
51
+ const end = reads.indexOf("\n", at) + 1;
52
+ return reads.slice(0, end) + READS + reads.slice(end);
53
+ }
54
+ /** The input as it is, read where the vertex shader says: halved, at a corner four texels share. */
55
+ const COPY = `in vec2 vTextureCoord;
56
+ out vec4 finalColor;
57
+ uniform sampler2D uTexture;
58
+ void main(void) {
59
+ finalColor = texture(uTexture, vTextureCoord);
60
+ }`;
61
+ /**
62
+ * Runs a layer's chain of Flash's filters, each a pass or a few over
63
+ * targets the host lends: the shaders of filter-shaders.ts, reading their
64
+ * input's size in the target's units, uInputSize, and its texels,
65
+ * uInputPixel. Every target's rows run down, so the shaders' offsets keep
66
+ * their sense. Each pass clears its whole output, which its
67
+ * successor may read past the frame.
68
+ */
69
+ export class FilterRunner {
70
+ kernels;
71
+ gl;
72
+ state;
73
+ host;
74
+ passes = new Map();
75
+ /** The kernel image units a kernel's pass has bound so far. */
76
+ samplers = 0;
77
+ /** Whether a kernel's fragment shader links (planChain's `links`), linking it now if not yet. */
78
+ links = (fragment) => this.kernel(fragment) !== null;
79
+ /** The chain being run, planned (filter-plan.ts), each slot's target and the last pass using it. */
80
+ plan = new FilterPlan();
81
+ targets = [];
82
+ lastUse = [];
83
+ hasTexture = (id) => id >= 0 && this.host.texture(id) !== null;
84
+ /** The target's pixels a unit of its own, for the chain running. */
85
+ resolution = 1;
86
+ constructor(gl, state, host, kernels) {
87
+ this.kernels = kernels;
88
+ this.gl = gl;
89
+ this.state = state;
90
+ this.host = host;
91
+ }
92
+ /**
93
+ * Chain `chain` of `filters` run over `input`'s first `width` by `height`
94
+ * texels: the target its last pass drew into, `input` itself where none
95
+ * changed it. Every other target, `input` too where it was replaced, goes
96
+ * back to the host. `object` is where the layer's object lies in it
97
+ * (planChain).
98
+ */
99
+ run(filters, chain, input, width, height, resolution, object = null) {
100
+ const plan = this.plan;
101
+ planChain(plan, filters, chain, width, height, resolution, this.hasTexture, this.links, object);
102
+ return this.execute(plan, input);
103
+ }
104
+ /**
105
+ * `input`'s first `width` by `height` texels at half the size each way,
106
+ * each texel the mean of the four it covers, read once linearly at the
107
+ * corner they share: a target the host lends, which the caller gives
108
+ * back. Not a filter's pass, so at a texel a unit.
109
+ */
110
+ halve(input, width, height) {
111
+ this.resolution = 1;
112
+ const out = this.host.take(width, height);
113
+ this.draw(this.use("copy", COPY), input, width * 2, height * 2, out, width, height);
114
+ return out;
115
+ }
116
+ /**
117
+ * `plan`'s passes drawn in order, its slot 0 `input`: each slot's target
118
+ * taken as a pass first draws into it and given back after the last pass
119
+ * that reads it, but the one the plan leaves its output in.
120
+ */
121
+ execute(plan, input) {
122
+ const targets = this.targets;
123
+ const last = this.lastUse;
124
+ targets.length = plan.slots;
125
+ last.length = plan.slots;
126
+ targets.fill(null);
127
+ last.fill(-1);
128
+ targets[0] = input;
129
+ for (let k = 0; k < plan.count; k++) {
130
+ const pass = plan.passes[k];
131
+ last[pass.input] = k;
132
+ last[pass.output] = k;
133
+ if (pass.blurred >= 0) {
134
+ last[pass.blurred] = k;
135
+ }
136
+ }
137
+ for (let k = 0; k < plan.count; k++) {
138
+ const pass = plan.passes[k];
139
+ if (!targets[pass.output]) {
140
+ targets[pass.output] = this.host.take(plan.slotWidth[pass.output], plan.slotHeight[pass.output]);
141
+ }
142
+ this.drawPass(plan, k, targets, true);
143
+ for (let slot = 0; slot < plan.slots; slot++) {
144
+ const target = targets[slot];
145
+ if (target && last[slot] === k && slot !== plan.result) {
146
+ this.host.give(target);
147
+ targets[slot] = null;
148
+ }
149
+ }
150
+ }
151
+ return targets[plan.result];
152
+ }
153
+ /**
154
+ * Pass `k` of `plan` drawn from and into `targets`, by slot, which hold
155
+ * every one it reads and draws into; its output's rectangle cleared first
156
+ * where `clear`, else left as it is, as a rectangle no pass drew into yet is.
157
+ */
158
+ drawPass(plan, k, targets, clear) {
159
+ this.resolution = plan.resolution;
160
+ const pass = plan.passes[k];
161
+ const from = targets[pass.input];
162
+ const to = targets[pass.output];
163
+ // A kernel that will not link was left out as the chain was planned (links).
164
+ const program = pass.program === KERNEL_PASS
165
+ ? (this.kernel(pass.kernel) ?? this.use("copy", COPY))
166
+ : this.program(pass.program);
167
+ this.samplers = 0;
168
+ for (let u = pass.first; u < pass.end; u++) {
169
+ this.setUniform(program, plan, u);
170
+ }
171
+ if (pass.texture >= 0) {
172
+ this.state.bindTexture(EXTRA_UNIT, this.host.texture(pass.texture));
173
+ this.state.bindSampler(EXTRA_UNIT, this.host.sampler(CLAMP));
174
+ }
175
+ if (pass.blurred !== NO_BLUR) {
176
+ // The blur, or the input where nothing blurred it, with the scale between them.
177
+ const blurred = pass.blurred >= 0 ? targets[pass.blurred] : from;
178
+ this.state.bindTexture(BLURRED_UNIT, blurred.texture);
179
+ this.state.bindSampler(BLURRED_UNIT, this.host.sampler(SMOOTH | CLAMP));
180
+ this.set(program, "uBlurredScale", 2, from.width / (blurred.width * pass.across), from.height / (blurred.height * pass.down));
181
+ this.set(program, "uBlurredRect", 4, blurred.x ?? 0, blurred.y ?? 0, blurred.width, blurred.height);
182
+ }
183
+ this.draw(program, from, pass.readWidth, pass.readHeight, to, pass.width, pass.height, clear);
184
+ }
185
+ /**
186
+ * `pass`'s uniform `name`, of `count` floats, set to `x` and those after,
187
+ * unless it was told them last: a frame's glows alike tell their passes
188
+ * the same values over and over.
189
+ */
190
+ set(pass, name, count, x, y = 0, z = 0, w = 0) {
191
+ let told = pass.told.get(name);
192
+ if (!told) {
193
+ told = new Float32Array(4).fill(Number.NaN);
194
+ pass.told.set(name, told);
195
+ }
196
+ // Compared as the floats the uniform holds.
197
+ if (told[0] === Math.fround(x) &&
198
+ told[1] === Math.fround(y) &&
199
+ told[2] === Math.fround(z) &&
200
+ told[3] === Math.fround(w)) {
201
+ return;
202
+ }
203
+ told[0] = x;
204
+ told[1] = y;
205
+ told[2] = z;
206
+ told[3] = w;
207
+ const gl = this.gl;
208
+ const location = this.at(pass, name);
209
+ switch (count) {
210
+ case 1:
211
+ gl.uniform1f(location, x);
212
+ break;
213
+ case 2:
214
+ gl.uniform2f(location, x, y);
215
+ break;
216
+ case 3:
217
+ gl.uniform3f(location, x, y, z);
218
+ break;
219
+ default:
220
+ gl.uniform4f(location, x, y, z, w);
221
+ }
222
+ }
223
+ /** Uniform `u` of `plan` set on `pass`, in use. */
224
+ setUniform(pass, plan, u) {
225
+ const gl = this.gl;
226
+ const location = this.at(pass, plan.uniformName[u]);
227
+ const values = plan.values;
228
+ const at = plan.uniformAt[u];
229
+ const count = plan.uniformCount[u];
230
+ switch (plan.uniformKind[u]) {
231
+ case MATRIX4:
232
+ gl.uniformMatrix4fv(location, false, values, at, 16);
233
+ break;
234
+ case VEC4S:
235
+ gl.uniform4fv(location, values, at, count);
236
+ break;
237
+ case IVEC4S:
238
+ this.kernels.setInts(location, plan.ints, at, count);
239
+ break;
240
+ case SAMPLER:
241
+ // As many as KERNEL_IMAGES, which the plan holds a kernel to.
242
+ this.kernels.bindImage(location, this.samplers++, values[at], this.host);
243
+ break;
244
+ case FLOATS:
245
+ this.set(pass, plan.uniformName[u], count, values[at], count > 1 ? values[at + 1] : 0, count > 2 ? values[at + 2] : 0, count > 3 ? values[at + 3] : 0);
246
+ }
247
+ }
248
+ /** The pass of program `id` (filter-plan.ts), in use. */
249
+ program(id) {
250
+ switch (id) {
251
+ case BOX_PASS:
252
+ return this.use("box", shaders.BOX);
253
+ case SHRINK_PASS:
254
+ return this.use("shrink", shaders.SHRINK);
255
+ case READ_BACK_PASS:
256
+ return this.use("readBack", shaders.READ_BACK);
257
+ case GLOW_PASS:
258
+ return this.use("glow", shaders.GLOW);
259
+ case BEVEL_PASS:
260
+ return this.use("bevel", shaders.BEVEL);
261
+ case GRADIENT_PASS:
262
+ return this.use("gradient", shaders.GRADIENT);
263
+ case MATRIX_PASS:
264
+ return this.use("colorMatrix", shaders.MATRIX);
265
+ case CONVOLUTION_PASS:
266
+ return this.use("convolution", shaders.CONVOLUTION);
267
+ case DISPLACE_PASS:
268
+ return this.use("displacement", shaders.DISPLACE);
269
+ }
270
+ throw new Error(`no filter pass ${id}`);
271
+ }
272
+ /**
273
+ * `pass` drawn into `output`'s first `width` by `height` texels, the rest
274
+ * of it cleared, reading `input` from its corner over `readWidth` by
275
+ * `readHeight` texels.
276
+ */
277
+ draw(pass, input, readWidth, readHeight, output, width, height, clear = true) {
278
+ const gl = this.gl;
279
+ const state = this.state;
280
+ const x = output.x ?? 0;
281
+ const y = output.y ?? 0;
282
+ state.bindFramebuffer(output.framebuffer);
283
+ state.viewport(x, y, width, height);
284
+ state.colorMask(15);
285
+ state.stencil(null);
286
+ state.setBlend(null);
287
+ if (clear) {
288
+ state.scissor([x, y, output.width, output.height]);
289
+ gl.clearColor(0, 0, 0, 0);
290
+ gl.clear(gl.COLOR_BUFFER_BIT);
291
+ }
292
+ state.scissor(null);
293
+ state.useProgram(pass.program);
294
+ state.bindVertexArray(null);
295
+ state.bindTexture(INPUT_UNIT, input.texture);
296
+ state.bindSampler(INPUT_UNIT, this.host.sampler(SMOOTH | CLAMP));
297
+ const res = this.resolution;
298
+ this.set(pass, "uInputSize", 4, input.width / res, input.height / res, res / input.width, res / input.height);
299
+ this.set(pass, "uInputPixel", 4, input.width, input.height, 1 / input.width, 1 / input.height);
300
+ this.set(pass, "uCoord", 2, readWidth / input.width, readHeight / input.height);
301
+ this.set(pass, "uTextureRect", 4, input.x ?? 0, input.y ?? 0, input.width, input.height);
302
+ // A kernel's alone: the others need not be told.
303
+ if (this.at(pass, "uOutputAt")) {
304
+ this.set(pass, "uOutputAt", 2, x, y);
305
+ }
306
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
307
+ }
308
+ /** The pass of `fragment`, linked as first used, in use. */
309
+ use(name, fragment) {
310
+ const gl = this.gl;
311
+ let pass = this.passes.get(name);
312
+ if (!pass) {
313
+ const program = linkProgram(gl, VERTEX, HEADER + withinRects(fragment));
314
+ pass = {
315
+ program,
316
+ uniforms: new Map(),
317
+ told: new Map(),
318
+ };
319
+ this.passes.set(name, pass);
320
+ this.state.useProgram(program);
321
+ gl.uniform1i(gl.getUniformLocation(program, "uTexture"), INPUT_UNIT);
322
+ gl.uniform1i(gl.getUniformLocation(program, "uBlurred"), BLURRED_UNIT);
323
+ gl.uniform1i(gl.getUniformLocation(program, "uGradient"), EXTRA_UNIT);
324
+ gl.uniform1i(gl.getUniformLocation(program, "uMap"), EXTRA_UNIT);
325
+ }
326
+ this.state.useProgram(pass.program);
327
+ return pass;
328
+ }
329
+ /** The pass of a kernel's fragment shader (KernelPrograms), in use; null where it would not link. */
330
+ kernel(fragment) {
331
+ return this.kernels.use(VERTEX, fragment, (program) => {
332
+ this.gl.uniform1i(this.gl.getUniformLocation(program, "uTexture"), INPUT_UNIT);
333
+ });
334
+ }
335
+ /** Where `pass` takes uniform `name`, asked once. */
336
+ at(pass, name) {
337
+ let location = pass.uniforms.get(name);
338
+ if (location === undefined) {
339
+ location = this.gl.getUniformLocation(pass.program, name);
340
+ pass.uniforms.set(name, location);
341
+ }
342
+ return location;
343
+ }
344
+ destroy() {
345
+ for (const pass of this.passes.values()) {
346
+ this.gl.deleteProgram(pass.program);
347
+ }
348
+ this.passes.clear();
349
+ }
350
+ }
351
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/webgl/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { GlState } from "@swf2es/context3d/device";
2
+ import { type Rows } from "../rows.js";
3
+ import type { Textures } from "../textures.js";
4
+ /**
5
+ * The textures the programs read: the registry's, uploaded as they are
6
+ * added or change, and the samplers they are read through; the rows, a
7
+ * float texture uploaded once a frame; and advanced text's outlines.
8
+ */
9
+ export declare class GpuTextures {
10
+ private readonly gl;
11
+ private readonly state;
12
+ /** The textures uploaded, by the registry's ids, and their sizes; the samplers made, by their bits. */
13
+ textures: (WebGLTexture | null)[];
14
+ private sizes;
15
+ private samplers;
16
+ rowsTexture: WebGLTexture;
17
+ private rowLines;
18
+ /** Advanced text's outlines (uploadOutlines), on OUTLINE_UNIT for the glyph program. */
19
+ outlines: WebGLTexture | null;
20
+ /** The outlines uploaded: of which epoch, how many segments, and the texture's rows. */
21
+ private outlineEpoch;
22
+ private outlineCount;
23
+ private outlineRows;
24
+ constructor(gl: WebGL2RenderingContext, state: GlState);
25
+ /** The rows' texture made, and none other yet, as the context comes or comes back. */
26
+ setUp(): void;
27
+ /** Whether texture `id` of the frame's is there, for a filter that reads it. */
28
+ readonly hasTexture: (id: number) => boolean;
29
+ /**
30
+ * Advanced text's outlines (GeometryData.glyphs), `count` segments of four floats each
31
+ * in `data`, as the player's store holds them: uploaded whole for another
32
+ * `epoch` or a larger store, else the rows added since.
33
+ */
34
+ uploadOutlines(data: Float32Array, count: number, epoch: number): void;
35
+ /** The textures removed since the last frame deleted, and those added or changed uploaded, their pixels let go. */
36
+ uploadTextures(textures: Textures): void;
37
+ /** The sampler for `bits` (SMOOTH, and REPEAT or MIRROR), made as first asked for. */
38
+ sampler(bits: number): WebGLSampler;
39
+ /** The rows a frame wrote, uploaded in one call, the texture made taller first if they need it. */
40
+ uploadRows(rows: Rows): void;
41
+ /** The textures made on the context, deleted. */
42
+ destroy(): void;
43
+ }
44
+ //# sourceMappingURL=gpu-textures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpu-textures.d.ts","sourceRoot":"","sources":["../../src/webgl/gpu-textures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAA2B,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,uGAAuG;IACvG,QAAQ,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAM;IACvC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,WAAW,EAAG,YAAY,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,wFAAwF;IACxF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAQ;IACrC,wFAAwF;IACxF,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAK;IAExB,YAAY,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAGrD;IAED,sFAAsF;IACtF,KAAK,IAAI,IAAI,CAaZ;IAED,gFAAgF;IAChF,QAAQ,CAAC,UAAU,OAAQ,MAAM,aAAqD;IAEtF;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CA6CrE;IAED,mHAAmH;IACnH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA+EvC;IAED,sFAAsF;IACtF,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAgBlC;IAED,mGAAmG;IACnG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAyB3B;IAED,iDAAiD;IACjD,OAAO,IAAI,IAAI,CAkBd;CACF"}