@debuffjp/core 0.13.0 → 0.13.2

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.
@@ -0,0 +1,312 @@
1
+ /** Texture units sampled per batch. 8 is guaranteed on every WebGL2 implementation's fragment stage (min 16). */
2
+ const UNITS = 8;
3
+ const VERT = `#version 300 es
4
+ layout(location=0) in vec2 a_corner;
5
+ layout(location=1) in vec3 a_m0; // a, c, e
6
+ layout(location=2) in vec3 a_m1; // b, d, f
7
+ layout(location=3) in vec4 a_uv; // u0, v0, u1, v1 (normalised)
8
+ layout(location=4) in vec2 a_extra; // flash, texture unit
9
+ layout(location=5) in vec4 a_color; // normalised RGBA
10
+ uniform vec2 u_view;
11
+ out vec2 v_uv;
12
+ out vec4 v_color;
13
+ out float v_flash;
14
+ flat out int v_unit;
15
+ void main() {
16
+ vec2 p = vec2(dot(a_m0, vec3(a_corner, 1.0)), dot(a_m1, vec3(a_corner, 1.0)));
17
+ vec2 clip = p / u_view * 2.0 - 1.0;
18
+ gl_Position = vec4(clip.x, -clip.y, 0.0, 1.0);
19
+ v_uv = mix(a_uv.xy, a_uv.zw, a_corner);
20
+ v_color = vec4(a_color.rgb * a_color.a, a_color.a);
21
+ v_flash = a_extra.x;
22
+ v_unit = int(a_extra.y);
23
+ }`;
24
+ const FRAG = `#version 300 es
25
+ precision mediump float;
26
+ in vec2 v_uv;
27
+ in vec4 v_color;
28
+ in float v_flash;
29
+ flat in int v_unit;
30
+ uniform sampler2D u_tex[${UNITS}];
31
+ out vec4 outColor;
32
+ vec4 sampleUnit(int unit, vec2 uv) {
33
+ ${Array.from({ length: UNITS }, (_, i) => `if (unit == ${i}) return texture(u_tex[${i}], uv);`).join("\n ")}
34
+ return vec4(1.0);
35
+ }
36
+ void main() {
37
+ vec4 t = sampleUnit(v_unit, v_uv) * v_color;
38
+ // Flash: push colour toward white while keeping alpha (premultiplied).
39
+ outColor = vec4(mix(t.rgb, vec3(t.a), v_flash), t.a);
40
+ }`;
41
+ /** Floats per instance before the 4-byte colour. */
42
+ const FLOATS = 12;
43
+ const STRIDE = FLOATS * 4 + 4;
44
+ /** Instanced, multi-texture WebGL2 sprite batcher behind the `draw` API. */
45
+ export class WebGL2Backend {
46
+ kind = "webgl2";
47
+ raw;
48
+ gl;
49
+ capacity = 16_384;
50
+ data = new ArrayBuffer(this.capacity * STRIDE);
51
+ f32 = new Float32Array(this.data);
52
+ u32 = new Uint32Array(this.data);
53
+ // GPU objects are recreated after a context loss, so they are not readonly.
54
+ instanceBuffer;
55
+ viewLoc = null;
56
+ textures = new Map();
57
+ white;
58
+ /** True between webglcontextlost and webglcontextrestored: drawing is skipped. */
59
+ lost = false;
60
+ onLost = (e) => {
61
+ // preventDefault tells the browser we will handle restoration.
62
+ e.preventDefault();
63
+ this.lost = true;
64
+ };
65
+ onRestored = () => {
66
+ // Every GPU object died with the context. Sources are still in memory, so textures re-upload lazily.
67
+ this.textures.clear();
68
+ this.lastSrc = null;
69
+ this.last = undefined;
70
+ this.count = 0;
71
+ this.unitCount = 0;
72
+ this.setup();
73
+ this.lost = false;
74
+ };
75
+ units = new Array(UNITS).fill(null);
76
+ unitCount = 0;
77
+ lastSrc = null;
78
+ last;
79
+ count = 0;
80
+ blend = "normal";
81
+ submitted = 0;
82
+ /** Draw calls this frame, counting the batch still pending (read before `end()` flushes it). */
83
+ get drawCalls() {
84
+ return this.submitted + (this.count > 0 ? 1 : 0);
85
+ }
86
+ constructor(gl) {
87
+ this.gl = gl;
88
+ this.raw = { kind: "webgl2", gl };
89
+ this.setup();
90
+ gl.canvas.addEventListener("webglcontextlost", this.onLost);
91
+ gl.canvas.addEventListener("webglcontextrestored", this.onRestored);
92
+ }
93
+ /** True while the GPU context is lost (e.g. a mobile tab was backgrounded or the driver reset). */
94
+ get contextLost() {
95
+ return this.lost;
96
+ }
97
+ /** Create program, buffers and the white texture. Runs at start and after a context restore. */
98
+ setup() {
99
+ const gl = this.gl;
100
+ const program = link(gl, VERT, FRAG);
101
+ gl.useProgram(program);
102
+ this.viewLoc = gl.getUniformLocation(program, "u_view");
103
+ gl.uniform1iv(gl.getUniformLocation(program, "u_tex"), Array.from({ length: UNITS }, (_, i) => i));
104
+ gl.bindVertexArray(gl.createVertexArray());
105
+ const quad = gl.createBuffer();
106
+ gl.bindBuffer(gl.ARRAY_BUFFER, quad);
107
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), gl.STATIC_DRAW);
108
+ gl.enableVertexAttribArray(0);
109
+ gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
110
+ const instances = gl.createBuffer();
111
+ if (!instances)
112
+ throw new Error("WebGL2: could not create instance buffer");
113
+ this.instanceBuffer = instances;
114
+ gl.bindBuffer(gl.ARRAY_BUFFER, instances);
115
+ gl.bufferData(gl.ARRAY_BUFFER, this.data.byteLength, gl.DYNAMIC_DRAW);
116
+ const attr = (loc, size, type, normalise, offset) => {
117
+ gl.enableVertexAttribArray(loc);
118
+ gl.vertexAttribPointer(loc, size, type, normalise, STRIDE, offset);
119
+ gl.vertexAttribDivisor(loc, 1);
120
+ };
121
+ attr(1, 3, gl.FLOAT, false, 0);
122
+ attr(2, 3, gl.FLOAT, false, 12);
123
+ attr(3, 4, gl.FLOAT, false, 24);
124
+ attr(4, 2, gl.FLOAT, false, 40);
125
+ attr(5, 4, gl.UNSIGNED_BYTE, true, 48);
126
+ gl.enable(gl.BLEND);
127
+ this.applyBlend();
128
+ const pixel = new Uint8Array([255, 255, 255, 255]);
129
+ const whiteTex = gl.createTexture();
130
+ if (!whiteTex)
131
+ throw new Error("WebGL2: could not create texture");
132
+ gl.bindTexture(gl.TEXTURE_2D, whiteTex);
133
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, pixel);
134
+ this.white = { tex: whiteTex, iw: 1, ih: 1, smooth: false };
135
+ this.filter(false);
136
+ }
137
+ begin(clear, width, height) {
138
+ if (this.lost)
139
+ return;
140
+ const gl = this.gl;
141
+ gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
142
+ gl.uniform2f(this.viewLoc, width, height);
143
+ gl.clearColor((clear >>> 24) / 255, ((clear >>> 16) & 0xff) / 255, ((clear >>> 8) & 0xff) / 255, (clear & 0xff) / 255);
144
+ gl.clear(gl.COLOR_BUFFER_BIT);
145
+ this.submitted = 0;
146
+ }
147
+ quad(m, src, sx, sy, sw, sh, color, flash, smooth) {
148
+ if (this.lost)
149
+ return;
150
+ // Fast path: consecutive draws from the same source skip the texture lookup.
151
+ const t = src === null ? this.white : src === this.lastSrc && this.last?.smooth === smooth ? this.last : this.texture(src, smooth);
152
+ this.lastSrc = src;
153
+ this.last = t;
154
+ let unit = this.units.indexOf(t.tex);
155
+ if (unit < 0 || unit >= this.unitCount) {
156
+ if (this.unitCount === UNITS)
157
+ this.flush();
158
+ unit = this.unitCount++;
159
+ this.units[unit] = t.tex;
160
+ }
161
+ if (this.count === this.capacity) {
162
+ this.flush();
163
+ unit = 0;
164
+ this.units[0] = t.tex;
165
+ this.unitCount = 1;
166
+ }
167
+ const f = this.count * (STRIDE / 4);
168
+ const { f32 } = this;
169
+ f32[f] = m[0];
170
+ f32[f + 1] = m[2];
171
+ f32[f + 2] = m[4];
172
+ f32[f + 3] = m[1];
173
+ f32[f + 4] = m[3];
174
+ f32[f + 5] = m[5];
175
+ f32[f + 6] = sx * t.iw;
176
+ f32[f + 7] = sy * t.ih;
177
+ f32[f + 8] = (sx + sw) * t.iw;
178
+ f32[f + 9] = (sy + sh) * t.ih;
179
+ f32[f + 10] = flash;
180
+ f32[f + 11] = unit;
181
+ // Bytes in memory must read R, G, B, A; Uint32 is little-endian.
182
+ this.u32[f + 12] =
183
+ color === 0xffffffff
184
+ ? color
185
+ : ((color & 0xff) << 24) | (((color >>> 8) & 0xff) << 16) | (((color >>> 16) & 0xff) << 8) | (color >>> 24);
186
+ this.count++;
187
+ }
188
+ setBlend(mode) {
189
+ if (mode === this.blend || this.lost)
190
+ return;
191
+ this.flush();
192
+ this.blend = mode;
193
+ this.applyBlend();
194
+ }
195
+ setClip(rect) {
196
+ if (this.lost)
197
+ return;
198
+ this.flush();
199
+ const gl = this.gl;
200
+ if (!rect) {
201
+ gl.disable(gl.SCISSOR_TEST);
202
+ return;
203
+ }
204
+ gl.enable(gl.SCISSOR_TEST);
205
+ // WebGL's scissor origin is bottom-left.
206
+ gl.scissor(rect.x, gl.drawingBufferHeight - rect.y - rect.h, rect.w, rect.h);
207
+ }
208
+ end() {
209
+ this.flush();
210
+ this.gl.disable(this.gl.SCISSOR_TEST);
211
+ }
212
+ resize() {
213
+ // The viewport is set from drawingBufferWidth/Height at the start of each frame.
214
+ }
215
+ invalidate(src) {
216
+ const cached = this.textures.get(src);
217
+ if (!cached)
218
+ return;
219
+ this.flush();
220
+ this.gl.deleteTexture(cached.tex);
221
+ this.textures.delete(src);
222
+ if (this.lastSrc === src)
223
+ this.lastSrc = null;
224
+ }
225
+ dispose() {
226
+ this.gl.canvas.removeEventListener("webglcontextlost", this.onLost);
227
+ this.gl.canvas.removeEventListener("webglcontextrestored", this.onRestored);
228
+ if (!this.lost)
229
+ for (const { tex } of this.textures.values())
230
+ this.gl.deleteTexture(tex);
231
+ this.textures.clear();
232
+ }
233
+ flush() {
234
+ if (this.lost) {
235
+ this.count = 0;
236
+ this.unitCount = 0;
237
+ return;
238
+ }
239
+ if (this.count === 0) {
240
+ this.unitCount = 0;
241
+ return;
242
+ }
243
+ const gl = this.gl;
244
+ for (let i = 0; i < this.unitCount; i++) {
245
+ gl.activeTexture(gl.TEXTURE0 + i);
246
+ gl.bindTexture(gl.TEXTURE_2D, this.units[i] ?? null);
247
+ }
248
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.instanceBuffer);
249
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.f32, 0, this.count * (STRIDE / 4));
250
+ gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, this.count);
251
+ this.submitted++;
252
+ this.count = 0;
253
+ this.unitCount = 0;
254
+ }
255
+ texture(src, smooth) {
256
+ const hit = this.textures.get(src);
257
+ if (hit && hit.smooth === smooth)
258
+ return hit;
259
+ if (hit)
260
+ this.invalidate(src);
261
+ const gl = this.gl;
262
+ const tex = gl.createTexture();
263
+ if (!tex)
264
+ throw new Error("WebGL2: could not create texture");
265
+ gl.activeTexture(gl.TEXTURE0);
266
+ gl.bindTexture(gl.TEXTURE_2D, tex);
267
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
268
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, src);
269
+ this.filter(smooth);
270
+ const w = "naturalWidth" in src ? src.naturalWidth : src.width;
271
+ const h = "naturalHeight" in src ? src.naturalHeight : src.height;
272
+ const cached = { tex, iw: 1 / w, ih: 1 / h, smooth };
273
+ this.textures.set(src, cached);
274
+ // Unit 0 is now bound to this texture; the next flush rebinds whatever the batch needs.
275
+ return cached;
276
+ }
277
+ filter(smooth) {
278
+ const gl = this.gl;
279
+ const f = smooth ? gl.LINEAR : gl.NEAREST;
280
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, f);
281
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, f);
282
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
283
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
284
+ }
285
+ applyBlend() {
286
+ const gl = this.gl;
287
+ if (this.blend === "add")
288
+ gl.blendFunc(gl.ONE, gl.ONE);
289
+ else
290
+ gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
291
+ }
292
+ }
293
+ function link(gl, vs, fs) {
294
+ const compile = (type, source) => {
295
+ const shader = gl.createShader(type);
296
+ if (!shader)
297
+ throw new Error("WebGL2: could not create shader");
298
+ gl.shaderSource(shader, source);
299
+ gl.compileShader(shader);
300
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS))
301
+ throw new Error(`WebGL2 shader: ${gl.getShaderInfoLog(shader)}`);
302
+ return shader;
303
+ };
304
+ const program = gl.createProgram();
305
+ gl.attachShader(program, compile(gl.VERTEX_SHADER, vs));
306
+ gl.attachShader(program, compile(gl.FRAGMENT_SHADER, fs));
307
+ gl.linkProgram(program);
308
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS))
309
+ throw new Error(`WebGL2 program: ${gl.getProgramInfoLog(program)}`);
310
+ return program;
311
+ }
312
+ //# sourceMappingURL=webgl2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl2.js","sourceRoot":"","sources":["../../src/render/webgl2.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@debuffjp/core",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "Game loop, fixed-step clock, scenes, camera, sprites and typed creative parameters for debuff",
5
5
  "keywords": [
6
6
  "game",
@@ -46,6 +46,6 @@
46
46
  "access": "public"
47
47
  },
48
48
  "dependencies": {
49
- "spryte": "0.3.0"
49
+ "spryte": "0.4.1"
50
50
  }
51
51
  }