@swf2es/render 0.1.19 → 0.1.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 (40) hide show
  1. package/dist/filter-plan.d.ts +5 -2
  2. package/dist/filter-plan.d.ts.map +1 -1
  3. package/dist/filter-plan.js +9 -6
  4. package/dist/filter-plan.js.map +1 -1
  5. package/dist/filter-shaders.d.ts +1 -1
  6. package/dist/filter-shaders.d.ts.map +1 -1
  7. package/dist/filter-shaders.js +3 -3
  8. package/dist/webgl/atlas.d.ts +8 -1
  9. package/dist/webgl/atlas.d.ts.map +1 -1
  10. package/dist/webgl/atlas.js +17 -2
  11. package/dist/webgl/atlas.js.map +1 -1
  12. package/dist/webgl/batches.d.ts +68 -18
  13. package/dist/webgl/batches.d.ts.map +1 -1
  14. package/dist/webgl/batches.js +252 -63
  15. package/dist/webgl/batches.js.map +1 -1
  16. package/dist/webgl/draws.d.ts +32 -11
  17. package/dist/webgl/draws.d.ts.map +1 -1
  18. package/dist/webgl/draws.js +114 -43
  19. package/dist/webgl/draws.js.map +1 -1
  20. package/dist/webgl/filters.d.ts +10 -0
  21. package/dist/webgl/filters.d.ts.map +1 -1
  22. package/dist/webgl/filters.js +50 -1
  23. package/dist/webgl/filters.js.map +1 -1
  24. package/dist/webgl/glyph-tables.d.ts +44 -0
  25. package/dist/webgl/glyph-tables.d.ts.map +1 -0
  26. package/dist/webgl/glyph-tables.js +148 -0
  27. package/dist/webgl/glyph-tables.js.map +1 -0
  28. package/dist/webgl/programs.d.ts +27 -8
  29. package/dist/webgl/programs.d.ts.map +1 -1
  30. package/dist/webgl/programs.js +49 -22
  31. package/dist/webgl/programs.js.map +1 -1
  32. package/package.json +2 -2
  33. package/src/filter-plan.ts +9 -6
  34. package/src/filter-shaders.ts +3 -3
  35. package/src/webgl/atlas.ts +23 -4
  36. package/src/webgl/batches.ts +316 -68
  37. package/src/webgl/draws.ts +129 -47
  38. package/src/webgl/filters.ts +55 -0
  39. package/src/webgl/glyph-tables.ts +179 -0
  40. package/src/webgl/programs.ts +49 -22
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/webgl/filters.ts"],"names":[],"mappings":"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"}
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
+ /**
3
+ * Advanced text's modes and CSM cutoff tables (GeometryData.glyphs), each
4
+ * distinct one in a slot of a float texture the glyph program reads by
5
+ * texelFetch: the mode in a slot's first texel, its table's entries after
6
+ * it. They were a uniform array the shader indexed by each glyph's table
7
+ * start, the access that hung Intel's GPUs in the fill program's run table
8
+ * (#717), and uploaded whole for every text drawn. Texts alike share a slot; slots are only
9
+ * added, between the glyph atlas' repacks, which take them all afresh
10
+ * (reset), or once the texture is as large as it may be (full). Slot 0 is
11
+ * left for a text past the room (scratch), uploaded as it is drawn.
12
+ */
13
+ export declare class GlyphTables {
14
+ private readonly gl;
15
+ private readonly state;
16
+ texture: WebGLTexture | null;
17
+ /** The slots' floats as uploaded and to upload, and the texture's lines. */
18
+ private data;
19
+ private words;
20
+ private lines;
21
+ private lineMost;
22
+ /** Slots taken, the first not yet uploaded, and whether the texture's lines are all taken. */
23
+ private count;
24
+ private uploaded;
25
+ full: boolean;
26
+ /** The first slot by its contents' hash, then the next of that hash, -1 for none. */
27
+ private readonly byHash;
28
+ private next;
29
+ constructor(gl: WebGL2RenderingContext, state: GlState);
30
+ /** No texture yet, nor slots, as the context comes or comes back. */
31
+ setUp(): void;
32
+ /** Every slot but the scratch let go of, for the texts to take theirs again. */
33
+ reset(): void;
34
+ /** The slot holding `mode` and `table`, taken if none does; -1 where the room is full. */
35
+ slot(mode: Float32Array, table: Float32Array): number;
36
+ /** The slots taken since uploaded: into a texture grown to hold them, all of them if grown. */
37
+ upload(): void;
38
+ /** The scratch slot made to hold `mode` and `table` now, for a text drawn next past the room. */
39
+ scratch(mode: Float32Array, table: Float32Array): number;
40
+ private write;
41
+ /** The texture made on the context, deleted. */
42
+ destroy(): void;
43
+ }
44
+ //# sourceMappingURL=glyph-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyph-tables.d.ts","sourceRoot":"","sources":["../../src/webgl/glyph-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAUxD;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAQ;IACpC,4EAA4E;IAC5E,OAAO,CAAC,IAAI,CAAgD;IAC5D,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,8FAA8F;IAC9F,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,IAAI,UAAS;IACb,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,IAAI,CAAgC;IAE5C,YAAY,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAGrD;IAED,qEAAqE;IACrE,KAAK,IAAI,IAAI,CAKZ;IAED,gFAAgF;IAChF,KAAK,IAAI,IAAI,CAKZ;IAED,0FAA0F;IAC1F,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAkDpD;IAED,+FAA+F;IAC/F,MAAM,IAAI,IAAI,CAuCb;IAED,iGAAiG;IACjG,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAOvD;IAED,OAAO,CAAC,KAAK;IAMb,gDAAgD;IAChD,OAAO,IAAI,IAAI,CAMd;CACF"}
@@ -0,0 +1,148 @@
1
+ import { TABLE_ENTRIES, TABLE_LINE, TABLE_SLOT, TABLE_UNIT } from "./programs.js";
2
+ /** Floats a slot: its texels' four each. */
3
+ const SLOT_FLOATS = TABLE_SLOT * 4;
4
+ /** Slots a line of the texture. */
5
+ const SLOTS_A_LINE = TABLE_LINE / TABLE_SLOT;
6
+ /** Floats a text's mode and table take of a slot, compared and hashed. */
7
+ const USED_FLOATS = 4 + TABLE_ENTRIES * 4;
8
+ /**
9
+ * Advanced text's modes and CSM cutoff tables (GeometryData.glyphs), each
10
+ * distinct one in a slot of a float texture the glyph program reads by
11
+ * texelFetch: the mode in a slot's first texel, its table's entries after
12
+ * it. They were a uniform array the shader indexed by each glyph's table
13
+ * start, the access that hung Intel's GPUs in the fill program's run table
14
+ * (#717), and uploaded whole for every text drawn. Texts alike share a slot; slots are only
15
+ * added, between the glyph atlas' repacks, which take them all afresh
16
+ * (reset), or once the texture is as large as it may be (full). Slot 0 is
17
+ * left for a text past the room (scratch), uploaded as it is drawn.
18
+ */
19
+ export class GlyphTables {
20
+ gl;
21
+ state;
22
+ texture = null;
23
+ /** The slots' floats as uploaded and to upload, and the texture's lines. */
24
+ data = new Float32Array(SLOT_FLOATS * SLOTS_A_LINE);
25
+ words = new Uint32Array(this.data.buffer);
26
+ lines = 0;
27
+ lineMost = 1;
28
+ /** Slots taken, the first not yet uploaded, and whether the texture's lines are all taken. */
29
+ count = 1;
30
+ uploaded = 1;
31
+ full = false;
32
+ /** The first slot by its contents' hash, then the next of that hash, -1 for none. */
33
+ byHash = new Map();
34
+ next = new Int32Array(SLOTS_A_LINE);
35
+ constructor(gl, state) {
36
+ this.gl = gl;
37
+ this.state = state;
38
+ }
39
+ /** No texture yet, nor slots, as the context comes or comes back. */
40
+ setUp() {
41
+ this.texture = null;
42
+ this.lines = 0;
43
+ this.lineMost = this.gl.getParameter(this.gl.MAX_TEXTURE_SIZE);
44
+ this.reset();
45
+ }
46
+ /** Every slot but the scratch let go of, for the texts to take theirs again. */
47
+ reset() {
48
+ this.count = 1;
49
+ this.uploaded = 1;
50
+ this.full = false;
51
+ this.byHash.clear();
52
+ }
53
+ /** The slot holding `mode` and `table`, taken if none does; -1 where the room is full. */
54
+ slot(mode, table) {
55
+ let hash = 0x811c9dc5;
56
+ const modeWords = new Uint32Array(mode.buffer, mode.byteOffset, 4);
57
+ const tableWords = new Uint32Array(table.buffer, table.byteOffset, TABLE_ENTRIES * 4);
58
+ for (let i = 0; i < 4; i++) {
59
+ hash = Math.imul(hash ^ modeWords[i], 0x01000193);
60
+ }
61
+ for (let i = 0; i < tableWords.length; i++) {
62
+ hash = Math.imul(hash ^ tableWords[i], 0x01000193);
63
+ }
64
+ const words = this.words;
65
+ let s = this.byHash.get(hash) ?? -1;
66
+ for (; s >= 0; s = this.next[s]) {
67
+ const at = s * SLOT_FLOATS;
68
+ let k = 0;
69
+ while (k < 4 && words[at + k] === modeWords[k]) {
70
+ k++;
71
+ }
72
+ while (k < USED_FLOATS && words[at + k] === tableWords[k - 4]) {
73
+ k++;
74
+ }
75
+ if (k === USED_FLOATS) {
76
+ return s;
77
+ }
78
+ }
79
+ if (this.count >= this.lineMost * SLOTS_A_LINE) {
80
+ this.full = true;
81
+ return -1;
82
+ }
83
+ s = this.count++;
84
+ if (this.count * SLOT_FLOATS > this.data.length) {
85
+ const grown = new Float32Array(this.data.length * 2);
86
+ grown.set(this.data);
87
+ this.data = grown;
88
+ this.words = new Uint32Array(grown.buffer);
89
+ const next = new Int32Array(this.next.length * 2);
90
+ next.set(this.next);
91
+ this.next = next;
92
+ }
93
+ this.write(s, mode, table);
94
+ this.next[s] = this.byHash.get(hash) ?? -1;
95
+ this.byHash.set(hash, s);
96
+ return s;
97
+ }
98
+ /** The slots taken since uploaded: into a texture grown to hold them, all of them if grown. */
99
+ upload() {
100
+ const gl = this.gl;
101
+ if (this.uploaded === this.count || gl.isContextLost()) {
102
+ return;
103
+ }
104
+ const lines = Math.ceil(this.count / SLOTS_A_LINE);
105
+ let from = Math.floor(this.uploaded / SLOTS_A_LINE);
106
+ if (!this.texture || lines > this.lines) {
107
+ if (this.texture) {
108
+ this.state.dropTexture(this.texture);
109
+ gl.deleteTexture(this.texture);
110
+ }
111
+ this.lines = Math.min(this.lineMost, Math.max(lines, this.lines * 2));
112
+ this.texture = gl.createTexture();
113
+ this.state.bindTexture(TABLE_UNIT, this.texture);
114
+ this.state.activeTexture(TABLE_UNIT);
115
+ gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, TABLE_LINE, this.lines);
116
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
117
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
118
+ from = 0;
119
+ }
120
+ this.state.bindTexture(TABLE_UNIT, this.texture);
121
+ this.state.activeTexture(TABLE_UNIT);
122
+ gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, from, TABLE_LINE, lines - from, gl.RGBA, gl.FLOAT, this.data, from * TABLE_LINE * 4);
123
+ this.uploaded = this.count;
124
+ }
125
+ /** The scratch slot made to hold `mode` and `table` now, for a text drawn next past the room. */
126
+ scratch(mode, table) {
127
+ this.write(0, mode, table);
128
+ const gl = this.gl;
129
+ this.state.bindTexture(TABLE_UNIT, this.texture);
130
+ this.state.activeTexture(TABLE_UNIT);
131
+ gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, TABLE_SLOT, 1, gl.RGBA, gl.FLOAT, this.data, 0);
132
+ return 0;
133
+ }
134
+ write(s, mode, table) {
135
+ const at = s * SLOT_FLOATS;
136
+ this.data.set(mode.subarray(0, 4), at);
137
+ this.data.set(table.subarray(0, TABLE_ENTRIES * 4), at + 4);
138
+ }
139
+ /** The texture made on the context, deleted. */
140
+ destroy() {
141
+ if (this.texture) {
142
+ this.state.dropTexture(this.texture);
143
+ this.gl.deleteTexture(this.texture);
144
+ this.texture = null;
145
+ }
146
+ }
147
+ }
148
+ //# sourceMappingURL=glyph-tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyph-tables.js","sourceRoot":"","sources":["../../src/webgl/glyph-tables.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,13 @@ export declare const TINT_AT = 7;
17
17
  export declare const DRAW_AT = 8;
18
18
  /** The most cutoff table entries a text's draw takes, as the player's text/saffron.ts builds them. */
19
19
  export declare const TABLE_ENTRIES = 48;
20
+ /**
21
+ * Texels a text's slot in the glyph tables' texture (GlyphTables): its mode,
22
+ * then its table's entries; and texels a line of it. Powers of two, which
23
+ * the vertex shader splits a slot's texel into column and line with.
24
+ */
25
+ export declare const TABLE_SLOT = 64;
26
+ export declare const TABLE_LINE = 1024;
20
27
  /** Segments a row of the outlines' texture, as the player's text/saffron.ts stores them. */
21
28
  export declare const OUTLINE_ROW = 1024;
22
29
  /**
@@ -46,6 +53,12 @@ export declare const OUTLINE_UNIT = 7;
46
53
  export declare const FILL_UNIT = 8;
47
54
  /** The multi-draw row table's unit, past the fill textures. */
48
55
  export declare const RUN_UNIT: number;
56
+ /** The merged fills' rows' unit (FillBatches), past the run table. */
57
+ export declare const MERGED_UNIT: number;
58
+ /** The merged fills' rows a line of their integer texture: a power of two, as for RUN_MOST. */
59
+ export declare const MERGED_LINE = 1024;
60
+ /** The glyph tables' unit (GlyphTables), past the merged fills' rows. */
61
+ export declare const TABLE_UNIT: number;
49
62
  /**
50
63
  * Places a vertex by its row's transform, on a quarter of a pixel of
51
64
  * Flash's (uUnit of them a stage pixel, from the stage's origin) where it
@@ -53,10 +66,13 @@ export declare const RUN_UNIT: number;
53
66
  * space), and passes on its straight colour, the row's colour transform
54
67
  * and the texture it samples. uRow names the draw's row (FILL_SLOT); with
55
68
  * `multi` (WEBGL_multi_draw), uRunTable names each draw's of a multi-draw by
56
- * gl_DrawID, which is 0 in a draw of its own. Merged fills supply the packed
57
- * row as aDraw; the atlas leaves that attribute disabled and negative.
69
+ * gl_DrawID, which is 0 in a draw of its own. With `merged`, as with
70
+ * `multi`, a merged fill's vertices carry as aDraw where its packed row is
71
+ * in uMergedRows, which the stream keeps for its copy, so that the row
72
+ * changes from frame to frame where the vertices need not; the atlas leaves
73
+ * that attribute disabled and negative.
58
74
  */
59
- export declare const fillVertex: (multi: boolean) => string;
75
+ export declare const fillVertex: (multi: boolean, merged?: boolean) => string;
60
76
  /**
61
77
  * Flash's colour transform on the straight colour, clamped, then
62
78
  * premultiplied for blending: the vertex' colour, or with a texture the
@@ -88,11 +104,14 @@ export declare const meshFragment = "#version 300 es\nprecision highp float;\nin
88
104
  * pixels to Flash's, uUnit of them a stage pixel, on their grid from the
89
105
  * stage's origin, a BitmapData's in a draw. A glyph's pen stands where its
90
106
  * text's origin, at a whole pixel, puts it, snapped as its grid fits it
91
- * (uMode: gridFitType 0 none, 1 pixel, 2 subpixel, thickness, sharpness),
92
- * and its quad reaches out past its outline by the furthest cutoff. Its
93
- * colour is drawn under the row's colour transform, light or dark as adl
94
- * chooses its table. aOrigin: the pen, and its light and dark tables, each
95
- * its first entry plus 64 times its entries; aGlyph: a corner of its
107
+ * (its mode: gridFitType 0 none, 1 pixel, 2 subpixel, thickness,
108
+ * sharpness), and its quad reaches out past its outline by the furthest
109
+ * cutoff. Its colour is drawn under the row's colour transform, light or
110
+ * dark as adl chooses its table. The text's mode and tables are in its slot
111
+ * of uTables (uTable; GlyphTables), read by texelFetch: not a uniform array
112
+ * indexed by each glyph's table start, the access that hung Intel's GPUs
113
+ * in the fill program's run table. aOrigin: the pen, and its light and dark tables,
114
+ * each its first entry plus 64 times its entries; aGlyph: a corner of its
96
115
  * outline's bounds and the way out from it; aRun: its segments, first and
97
116
  * count, the pixels of a unit of its outline, and its size.
98
117
  */
@@ -1 +1 @@
1
- {"version":3,"file":"programs.d.ts","sourceRoot":"","sources":["../../src/webgl/programs.ts"],"names":[],"mappings":"AAkBA,2CAA2C;AAC3C,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,oGAAoG;AACpG,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,kEAAkE;AAClE,eAAO,MAAM,OAAO,IAAI,CAAC;AAEzB,sGAAsG;AACtG,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,4FAA4F;AAC5F,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,qFAAqF;AACrF,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,QAAQ,QAAU,CAAC;AAEhC,sGAAsG;AACtG,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,oEAAoE;AACpE,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,0FAA0F;AAC1F,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,uFAAuF;AACvF,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,QAA4B,CAAC;AAElD;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,UAAW,OAAO,WAkCxC,CAAC;AAiBF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,QAkCxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAsBtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,0qEAqExB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,QAmGxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAwD1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,wPAO3B,CAAC;AAeF,kHAAkH;AAClH,eAAO,MAAM,WAAW,QAAqB,CAAC;AAuD9C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,QAmB7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QA0C7B,CAAC"}
1
+ {"version":3,"file":"programs.d.ts","sourceRoot":"","sources":["../../src/webgl/programs.ts"],"names":[],"mappings":"AAkBA,2CAA2C;AAC3C,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,oGAAoG;AACpG,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,kEAAkE;AAClE,eAAO,MAAM,OAAO,IAAI,CAAC;AAEzB,sGAAsG;AACtG,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC;;;;GAIG;AACH,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,OAAO,CAAC;AAC/B,4FAA4F;AAC5F,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,qFAAqF;AACrF,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,QAAQ,QAAU,CAAC;AAEhC,sGAAsG;AACtG,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,oEAAoE;AACpE,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,0FAA0F;AAC1F,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,uFAAuF;AACvF,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,QAA4B,CAAC;AAClD,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,+FAA+F;AAC/F,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,yEAAyE;AACzE,eAAO,MAAM,UAAU,QAAkB,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,UAAW,OAAO,6BAmCxC,CAAC;AAiBF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,QAkCxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAsBtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,0qEAqExB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,QA0GxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAwD1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,wPAO3B,CAAC;AAeF,kHAAkH;AAClH,eAAO,MAAM,WAAW,QAAqB,CAAC;AAuD9C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,QAmB7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QA0C7B,CAAC"}
@@ -19,6 +19,13 @@ export const TINT_AT = 7;
19
19
  export const DRAW_AT = 8;
20
20
  /** The most cutoff table entries a text's draw takes, as the player's text/saffron.ts builds them. */
21
21
  export const TABLE_ENTRIES = 48;
22
+ /**
23
+ * Texels a text's slot in the glyph tables' texture (GlyphTables): its mode,
24
+ * then its table's entries; and texels a line of it. Powers of two, which
25
+ * the vertex shader splits a slot's texel into column and line with.
26
+ */
27
+ export const TABLE_SLOT = 64;
28
+ export const TABLE_LINE = 1024;
22
29
  /** Segments a row of the outlines' texture, as the player's text/saffron.ts stores them. */
23
30
  export const OUTLINE_ROW = 1024;
24
31
  /**
@@ -48,6 +55,12 @@ export const OUTLINE_UNIT = 7;
48
55
  export const FILL_UNIT = 8;
49
56
  /** The multi-draw row table's unit, past the fill textures. */
50
57
  export const RUN_UNIT = FILL_UNIT + FILL_TEXTURES;
58
+ /** The merged fills' rows' unit (FillBatches), past the run table. */
59
+ export const MERGED_UNIT = RUN_UNIT + 1;
60
+ /** The merged fills' rows a line of their integer texture: a power of two, as for RUN_MOST. */
61
+ export const MERGED_LINE = 1024;
62
+ /** The glyph tables' unit (GlyphTables), past the merged fills' rows. */
63
+ export const TABLE_UNIT = MERGED_UNIT + 1;
51
64
  /**
52
65
  * Places a vertex by its row's transform, on a quarter of a pixel of
53
66
  * Flash's (uUnit of them a stage pixel, from the stage's origin) where it
@@ -55,17 +68,21 @@ export const RUN_UNIT = FILL_UNIT + FILL_TEXTURES;
55
68
  * space), and passes on its straight colour, the row's colour transform
56
69
  * and the texture it samples. uRow names the draw's row (FILL_SLOT); with
57
70
  * `multi` (WEBGL_multi_draw), uRunTable names each draw's of a multi-draw by
58
- * gl_DrawID, which is 0 in a draw of its own. Merged fills supply the packed
59
- * row as aDraw; the atlas leaves that attribute disabled and negative.
71
+ * gl_DrawID, which is 0 in a draw of its own. With `merged`, as with
72
+ * `multi`, a merged fill's vertices carry as aDraw where its packed row is
73
+ * in uMergedRows, which the stream keeps for its copy, so that the row
74
+ * changes from frame to frame where the vertices need not; the atlas leaves
75
+ * that attribute disabled and negative.
60
76
  */
61
- export const fillVertex = (multi) => `#version 300 es
77
+ export const fillVertex = (multi, merged = multi) => `#version 300 es
62
78
  ${multi ? "#extension GL_ANGLE_multi_draw : require" : ""}
63
79
  precision highp float;
64
80
  layout(location = ${POSITION_AT}) in vec2 aPosition;
65
81
  layout(location = ${TEXEL_AT}) in vec2 aTexel;
66
82
  layout(location = ${COLOR_AT}) in vec4 aColor;
67
83
  uniform highp sampler2D uRows;
68
- ${multi ? `layout(location = ${DRAW_AT}) in int aDraw;\nuniform highp isampler2D uRunTable;\nuniform int uRunBase;` : "uniform int uRow;"}
84
+ ${merged ? `layout(location = ${DRAW_AT}) in int aDraw;\nuniform highp isampler2D uMergedRows;` : ""}
85
+ ${multi ? "uniform highp isampler2D uRunTable;\nuniform int uRunBase;" : "uniform int uRow;"}
69
86
  uniform vec4 uView;
70
87
  uniform float uUnit;
71
88
  out vec4 vColor;
@@ -75,7 +92,7 @@ flat out vec4 vAdd;
75
92
  flat out int vSlot;
76
93
 
77
94
  void main(void) {
78
- int draw = ${multi ? `aDraw >= 0 ? aDraw : texelFetch(uRunTable, ivec2((uRunBase + gl_DrawID) & ${RUN_MOST - 1}, (uRunBase + gl_DrawID) >> ${Math.log2(RUN_MOST)}), 0).r` : "uRow"};
95
+ int draw = ${merged ? `aDraw >= 0 ? texelFetch(uMergedRows, ivec2(aDraw & ${MERGED_LINE - 1}, aDraw >> ${Math.log2(MERGED_LINE)}), 0).r : ` : ""}${multi ? `texelFetch(uRunTable, ivec2((uRunBase + gl_DrawID) & ${RUN_MOST - 1}, (uRunBase + gl_DrawID) >> ${Math.log2(RUN_MOST)}), 0).r` : "uRow"};
79
96
  int row = draw & ${(1 << FILL_SLOT) - 1};
80
97
  vSlot = (draw >> ${FILL_SLOT}) & 15;
81
98
  ivec2 at = ivec2((row & ${ROWS_A_LINE - 1}) * ${ROW_TEXELS}, row >> ${Math.log2(ROWS_A_LINE)});
@@ -260,11 +277,14 @@ void main(void) {
260
277
  * pixels to Flash's, uUnit of them a stage pixel, on their grid from the
261
278
  * stage's origin, a BitmapData's in a draw. A glyph's pen stands where its
262
279
  * text's origin, at a whole pixel, puts it, snapped as its grid fits it
263
- * (uMode: gridFitType 0 none, 1 pixel, 2 subpixel, thickness, sharpness),
264
- * and its quad reaches out past its outline by the furthest cutoff. Its
265
- * colour is drawn under the row's colour transform, light or dark as adl
266
- * chooses its table. aOrigin: the pen, and its light and dark tables, each
267
- * its first entry plus 64 times its entries; aGlyph: a corner of its
280
+ * (its mode: gridFitType 0 none, 1 pixel, 2 subpixel, thickness,
281
+ * sharpness), and its quad reaches out past its outline by the furthest
282
+ * cutoff. Its colour is drawn under the row's colour transform, light or
283
+ * dark as adl chooses its table. The text's mode and tables are in its slot
284
+ * of uTables (uTable; GlyphTables), read by texelFetch: not a uniform array
285
+ * indexed by each glyph's table start, the access that hung Intel's GPUs
286
+ * in the fill program's run table. aOrigin: the pen, and its light and dark tables,
287
+ * each its first entry plus 64 times its entries; aGlyph: a corner of its
268
288
  * outline's bounds and the way out from it; aRun: its segments, first and
269
289
  * count, the pixels of a unit of its outline, and its size.
270
290
  */
@@ -279,8 +299,8 @@ uniform highp sampler2D uRows;
279
299
  uniform int uRow;
280
300
  uniform vec4 uView;
281
301
  uniform float uUnit;
282
- uniform vec4 uMode;
283
- uniform vec4 uTable[${TABLE_ENTRIES}];
302
+ uniform highp sampler2D uTables;
303
+ uniform int uTable;
284
304
  out vec2 vPixel;
285
305
  flat out vec2 vPen;
286
306
  flat out vec4 vToGlyph;
@@ -288,10 +308,16 @@ flat out vec4 vToPixel;
288
308
  flat out vec4 vCut;
289
309
  flat out vec4 vShown;
290
310
 
311
+ // Texel i of the text's slot: its mode, then its tables' entries.
312
+ vec4 slot(int i) {
313
+ int at = uTable * ${TABLE_SLOT} + i;
314
+ return texelFetch(uTables, ivec2(at & ${TABLE_LINE - 1}, at >> ${Math.log2(TABLE_LINE)}), 0);
315
+ }
316
+
291
317
  // The cutoffs at ppem by the table of entries start to start + count, as text/csm.ts' cutoffs.
292
- vec2 cutoffs(int start, int count, float ppem) {
293
- vec4 first = uTable[start];
294
- vec4 last = uTable[start + count - 1];
318
+ vec2 cutoffs(vec4 mode, int start, int count, float ppem) {
319
+ vec4 first = slot(1 + start);
320
+ vec4 last = slot(start + count);
295
321
  vec2 c = first.yz;
296
322
  if (ppem >= last.x) {
297
323
  c = last.yz;
@@ -301,9 +327,9 @@ vec2 cutoffs(int start, int count, float ppem) {
301
327
  break;
302
328
  }
303
329
 
304
- vec4 b = uTable[start + i];
330
+ vec4 b = slot(1 + start + i);
305
331
  if (ppem <= b.x) {
306
- vec4 a = uTable[start + i - 1];
332
+ vec4 a = slot(start + i);
307
333
  c = mix(a.yz, b.yz, (ppem - a.x) / (b.x - a.x));
308
334
  break;
309
335
  }
@@ -311,8 +337,8 @@ vec2 cutoffs(int start, int count, float ppem) {
311
337
  }
312
338
 
313
339
  float unit = 0.0001 * ppem;
314
- float t = clamp(uMode.y, -200.0, 200.0);
315
- float s = clamp(uMode.z, -400.0, 400.0);
340
+ float t = clamp(mode.y, -200.0, 200.0);
341
+ float s = clamp(mode.z, -400.0, 400.0);
316
342
  c -= unit * vec2(t + s * 0.5, t - s * 0.5);
317
343
  if (c.x < c.y) {
318
344
  c = vec2((c.x + c.y) * 0.5);
@@ -327,6 +353,7 @@ void main(void) {
327
353
  vec4 t = texelFetch(uRows, at + ivec2(1, 0), 0);
328
354
  vec4 mul = texelFetch(uRows, at + ivec2(2, 0), 0);
329
355
  vec4 add = texelFetch(uRows, at + ivec2(3, 0), 0);
356
+ vec4 mode = slot(0);
330
357
  // The text's pixels to Flash's.
331
358
  mat2 linear = mat2(m.xy, m.zw) * uUnit;
332
359
  vec2 origin = t.xy * uUnit;
@@ -334,9 +361,9 @@ void main(void) {
334
361
  float across = max(abs(linear[0][1]), abs(linear[1][0]));
335
362
  if (across > max(abs(linear[0][0]), abs(linear[1][1])) / 65536.0) {
336
363
  // Turned or skewed: no grid.
337
- } else if (uMode.x == 1.0) {
364
+ } else if (mode.x == 1.0) {
338
365
  pen = vec2(roundEven(pen.x * 8.0) / 8.0 + 0.5, roundEven(pen.y));
339
- } else if (uMode.x == 2.0) {
366
+ } else if (mode.x == 2.0) {
340
367
  pen = vec2(roundEven(pen.x * 4.0) / 4.0 + 0.5, roundEven(pen.y));
341
368
  } else {
342
369
  pen = roundEven(pen * 4.0) / 4.0 + vec2(0.5, 0.0);
@@ -347,7 +374,7 @@ void main(void) {
347
374
  vec4 shown = clamp(aColor * mul + add, 0.0, 1.0);
348
375
  bool light = dot(floor(shown.rgb * 255.0 + 0.5), vec3(30.0, 59.0, 11.0)) > 20000.0;
349
376
  int table = int(light ? aOrigin.z : aOrigin.w);
350
- vec2 cut = cutoffs(table & 63, table >> 6, ppem);
377
+ vec2 cut = cutoffs(mode, table & 63, table >> 6, ppem);
351
378
  mat2 toPixel = linear * aRun.z;
352
379
  float margin = max(abs(cut.x), abs(cut.y)) + 1.0;
353
380
  float det = determinant(toPixel);
@@ -1 +1 @@
1
- {"version":3,"file":"programs.js","sourceRoot":"","sources":["../../src/webgl/programs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,GAAG,EACH,KAAK,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,2CAA2C;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAE5B;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,oGAAoG;AACpG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAEzB,sGAAsG;AACtG,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,4FAA4F;AAC5F,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAE5B,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;AAEhC,sGAAsG;AACtG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,oEAAoE;AACpE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,0FAA0F;AAC1F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,uFAAuF;AACvF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,+DAA+D;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC;EAC5C,KAAK,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE;;oBAErC,WAAW;oBACX,QAAQ;oBACR,QAAQ;;EAE1B,KAAK,CAAC,CAAC,CAAC,qBAAqB,OAAO,6EAA6E,CAAC,CAAC,CAAC,mBAAmB;;;;;;;;;;eAU1H,KAAK,CAAC,CAAC,CAAC,6EAA6E,QAAQ,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;qBAC/J,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;qBACpB,SAAS;4BACF,WAAW,GAAG,CAAC,OAAO,UAAU,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;gBAM9E,QAAQ;;;;;;;;CAQvB,CAAC;AAEF;;;;GAIG;AACH,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,EAAE,MAAM,EAAE,aAAa,EAAE,EACzB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC;iCACI,CAAC,sCAAsC,CAAC;aAC5D,CACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;8BAOE,aAAa;;;;;;EAMzC,SAAS;;;;;;;;;;;;;;;;;;;;;CAqBV,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;oBAEN,WAAW;oBACX,QAAQ;oBACR,QAAQ;;;;;;;;;6BASC,WAAW,GAAG,CAAC,OAAO,UAAU,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;;;;CAS/F,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqE3B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;oBAER,WAAW;oBACX,SAAS;oBACT,QAAQ;oBACR,MAAM;oBACN,OAAO;;;;;;sBAML,aAAa;;;;;;;;;;;;;;;;0BAgBT,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;6BA0BV,WAAW,GAAG,CAAC,OAAO,UAAU,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C/F,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;+CAwBiB,WAAW,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC7F,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;CAO9B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,GAAG;yBACvB,GAAG,MAAM,WAAW,GAAG,CAAC,OAAO,UAAU,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;CAMtG,CAAC;AAEF,kHAAkH;AAClH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,kBAAkB,MAAM,gBAAgB,KAAK,gBAAgB,MAAM,gBAAgB,GAAG;;;;;;;;;;WAU/F,QAAQ;WACR,OAAO;WACP,MAAM;WACN,UAAU;WACV,OAAO;WACP,SAAS;WACT,QAAQ;;;WAGR,MAAM;;;WAGN,KAAK;;;WAGL,KAAK;;;;;;;;;;CAUf,CAAC;AAEF,6BAA6B;AAC7B,MAAM,aAAa,GAAG;;;;;;CAMrB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;EAY/B,aAAa;;;;;EAKb,WAAW;EACX,WAAW;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;8BAOH,aAAa;;;;;;;;EAQzC,aAAa;;;;EAIb,SAAS;;;;;;;;;;;;;;;;;;;;;EAqBT,UAAU,CAAC,WAAW,CAAC;EACvB,WAAW;CACZ,CAAC"}
1
+ {"version":3,"file":"programs.js","sourceRoot":"","sources":["../../src/webgl/programs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swf2es/render",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "swf2es's own renderer: a scene list, a planner and a WebGL 2 backend (docs/renderer.md)",
5
5
  "keywords": [
6
6
  "swf",
@@ -33,6 +33,6 @@
33
33
  "src"
34
34
  ],
35
35
  "dependencies": {
36
- "@swf2es/context3d": "0.1.19"
36
+ "@swf2es/context3d": "0.1.21"
37
37
  }
38
38
  }
@@ -38,21 +38,24 @@ export const KERNEL_PASS = 10;
38
38
 
39
39
  /**
40
40
  * How a uniform's values are set: one to four floats, an array of vec4s, a
41
- * 4 by 4 matrix, an array of ivec4s, or a sampler, its value the texture of
42
- * the frame's it reads.
41
+ * 4 by 4 matrix, an array of ivec4s, a sampler, its value the texture of
42
+ * the frame's it reads, or a sampler of a line of floats, its values, for a
43
+ * shader that reads them at a varying index (as a uniform array read so
44
+ * hangs some GPUs).
43
45
  */
44
46
  export const FLOATS = 1;
45
47
  export const VEC4S = 2;
46
48
  export const MATRIX4 = 3;
47
49
  export const IVEC4S = 4;
48
50
  export const SAMPLER = 5;
51
+ export const FLOAT_LINE = 6;
49
52
 
50
53
  /** A pass's blurred input (FilterPass.blurred): none read, or the pass's input itself. */
51
54
  export const NO_BLUR = -2;
52
55
  export const INPUT_BLUR = -1;
53
56
 
54
- /** The most floats a convolution's matrix takes in its shader: 57 vec4s. */
55
- const CONVOLUTION_FLOATS = 57 * 4;
57
+ /** The most floats a convolution's matrix takes in its shader: 15 by 15. */
58
+ const CONVOLUTION_FLOATS = 15 * 15;
56
59
 
57
60
  /** One pass: a program drawn from slot `input` into slot `output`, its uniforms in its plan's. */
58
61
  export interface FilterPass {
@@ -468,7 +471,7 @@ function colorMatrix(
468
471
  return out;
469
472
  }
470
473
 
471
- /** A convolution's weights, its matrix by rows padded to the shader's array. */
474
+ /** A convolution's weights, its matrix by rows padded to the shader's line. */
472
475
  const weights = new Float32Array(CONVOLUTION_FLOATS);
473
476
 
474
477
  function convolution(
@@ -485,7 +488,7 @@ function convolution(
485
488
  weights.set(v.subarray(at + 12, at + 12 + Math.min(columns * rows, weights.length)));
486
489
  const out = plan.slot(width, height);
487
490
  plan.pass(CONVOLUTION_PASS, input, width, height, out, width, height);
488
- plan.uniformFrom("uMatrix", VEC4S, weights, 0, weights.length);
491
+ plan.uniformFrom("uWeights", FLOAT_LINE, weights, 0, weights.length);
489
492
  plan.uniform("uSize", 2, columns, rows);
490
493
  plan.uniformFrom("uEdge", FLOATS, v, at + 2, 4);
491
494
  plan.uniform("uDivisor", 1, v[at + 6]);
@@ -312,7 +312,7 @@ export const CONVOLUTION = `in vec2 vTextureCoord;
312
312
  out vec4 finalColor;
313
313
  uniform sampler2D uTexture;
314
314
  uniform highp vec4 uInputSize;
315
- uniform vec4 uMatrix[57];
315
+ uniform highp sampler2D uWeights;
316
316
  uniform vec2 uSize;
317
317
  uniform vec4 uBox;
318
318
  uniform vec4 uEdge;
@@ -342,10 +342,10 @@ void main(void) {
342
342
  int cols = int(uSize.x);
343
343
  int count = cols * int(uSize.y);
344
344
  vec4 sum = vec4(0.0);
345
- // One loop, its index alone indexing the weights, as GLSL ES 1 allows.
346
345
  for (int k = 0; k < 225; k++) {
347
346
  if (k >= count) { break; }
348
- float w = dot(uMatrix[k / 4], vec4(equal(vec4(float(k - k / 4 * 4)), vec4(0.0, 1.0, 2.0, 3.0))));
347
+ // From a texture: a uniform array indexed so is what hung Intel's GPUs in other programs.
348
+ float w = texelFetch(uWeights, ivec2(k, 0), 0).r;
349
349
  if (w != 0.0) {
350
350
  int j = k / cols;
351
351
  vec2 at = vec2(float(k - j * cols), float(j)) - reach;