@swf2es/context3d 0.1.20 → 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.
- package/README.md +8 -5
- package/dist/webgl/back-buffer.d.ts +6 -0
- package/dist/webgl/back-buffer.d.ts.map +1 -0
- package/dist/webgl/back-buffer.js +197 -0
- package/dist/webgl/back-buffer.js.map +1 -0
- package/dist/webgl/buffers.d.ts +2 -2
- package/dist/webgl/buffers.d.ts.map +1 -1
- package/dist/webgl/buffers.js +105 -2
- package/dist/webgl/buffers.js.map +1 -1
- package/dist/webgl/context.d.ts +5 -45
- package/dist/webgl/context.d.ts.map +1 -1
- package/dist/webgl/context.js +44 -322
- package/dist/webgl/context.js.map +1 -1
- package/dist/webgl/readback.d.ts +3 -0
- package/dist/webgl/readback.d.ts.map +1 -0
- package/dist/webgl/readback.js +40 -0
- package/dist/webgl/readback.js.map +1 -0
- package/package.json +1 -1
- package/src/webgl/back-buffer.ts +287 -0
- package/src/webgl/buffers.ts +114 -2
- package/src/webgl/context.ts +73 -451
- package/src/webgl/readback.ts +54 -0
package/README.md
CHANGED
|
@@ -7,11 +7,14 @@ WebGL2 context exclusively. It does not share GL state or resources with the
|
|
|
7
7
|
display list's renderer.
|
|
8
8
|
|
|
9
9
|
The WebGL entry re-exports the context owner from `webgl/context.ts`. That owner
|
|
10
|
-
keeps resource maps, byte accounting, bindings and
|
|
11
|
-
`buffers.ts` and
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
keeps resource maps, byte accounting, bindings, state and draws together.
|
|
11
|
+
`buffers.ts` creates buffers and handles their uploads, and `textures.ts` texture
|
|
12
|
+
uploads; `programs.ts` handles shader linking and uniform locations; `targets.ts`
|
|
13
|
+
handles framebuffer allocation and resolves; `back-buffer.ts` configures the back
|
|
14
|
+
buffer, resolves and presents it, and `readback.ts` reads it back. Limits and
|
|
15
|
+
render-state constants live beside those modules. These are internal splits, the
|
|
16
|
+
moved parts functions over the context: the package entries and ownership contracts
|
|
17
|
+
stay the same.
|
|
15
18
|
|
|
16
19
|
This package does not enable Stage3D playback. The separate
|
|
17
20
|
`@swf2es/player/context3d` entry installs the Flash bindings, and
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WebGLContext3D } from "./context.js";
|
|
2
|
+
export declare function configureBackBuffer(ctx: WebGLContext3D, width: number, height: number, depth: boolean, antiAlias: number, scale: number): void;
|
|
3
|
+
export declare function unconfigureBackBuffer(ctx: WebGLContext3D): void;
|
|
4
|
+
export declare function resolveBackBuffer(ctx: WebGLContext3D): void;
|
|
5
|
+
export declare function presentBackBuffer(ctx: WebGLContext3D): void;
|
|
6
|
+
//# sourceMappingURL=back-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-buffer.d.ts","sourceRoot":"","sources":["../../src/webgl/back-buffer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,IAAI,CAmJN;AAgCD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CA8B/D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CA8B3D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CA0B3D"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// The back buffer: its storage, as large as the GPU gives, its multisample resolve and its
|
|
2
|
+
// presentation to the canvas.
|
|
3
|
+
import { MOST_BACK_BUFFER } from "../backend.js";
|
|
4
|
+
import { Context3DError } from "../errors.js";
|
|
5
|
+
import { range } from "./state.js";
|
|
6
|
+
import { selectSamples } from "./targets.js";
|
|
7
|
+
export function configureBackBuffer(ctx, width, height, depth, antiAlias, scale) {
|
|
8
|
+
ctx.alive();
|
|
9
|
+
range(32, width - 32, MOST_BACK_BUFFER);
|
|
10
|
+
range(32, height - 32, MOST_BACK_BUFFER);
|
|
11
|
+
if (ctx.renderTexture) {
|
|
12
|
+
throw new Context3DError("operation", "Context3D experiment: resize while rendering to texture");
|
|
13
|
+
}
|
|
14
|
+
// AIR preserves color, depth and bindings when the request is unchanged.
|
|
15
|
+
// Shadow passes can issue this every frame when returning to the back buffer.
|
|
16
|
+
if (ctx.framebuffer &&
|
|
17
|
+
width === ctx.width &&
|
|
18
|
+
height === ctx.height &&
|
|
19
|
+
depth === (ctx.depthBuffer !== null) &&
|
|
20
|
+
antiAlias === ctx.antiAlias) {
|
|
21
|
+
if (scale !== ctx.scale) {
|
|
22
|
+
ctx.scale = scale;
|
|
23
|
+
showAt(ctx);
|
|
24
|
+
ctx.applyScissor();
|
|
25
|
+
}
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const samples = selectSamples(ctx.gl, antiAlias, depth);
|
|
29
|
+
const gl = ctx.gl;
|
|
30
|
+
const most = storageLimit(ctx);
|
|
31
|
+
const drawnWidth = Math.min(width, most[0]);
|
|
32
|
+
const drawnHeight = Math.min(height, most[1]);
|
|
33
|
+
const texture = gl.createTexture();
|
|
34
|
+
const framebuffer = gl.createFramebuffer();
|
|
35
|
+
const depthBuffer = depth ? gl.createRenderbuffer() : null;
|
|
36
|
+
const resolveFramebuffer = samples ? gl.createFramebuffer() : null;
|
|
37
|
+
const colorBuffer = samples ? gl.createRenderbuffer() : null;
|
|
38
|
+
try {
|
|
39
|
+
if (!texture ||
|
|
40
|
+
!framebuffer ||
|
|
41
|
+
(depth && !depthBuffer) ||
|
|
42
|
+
(samples && (!resolveFramebuffer || !colorBuffer))) {
|
|
43
|
+
throw new Context3DError("operation", "Context3D experiment: cannot allocate back buffer");
|
|
44
|
+
}
|
|
45
|
+
ctx.texturesApplied[0] = 0;
|
|
46
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
47
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
48
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
49
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
50
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, drawnWidth, drawnHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
51
|
+
ctx.bindFramebuffer(gl.FRAMEBUFFER, resolveFramebuffer ?? framebuffer);
|
|
52
|
+
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
|
|
53
|
+
if (resolveFramebuffer) {
|
|
54
|
+
if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) !== gl.FRAMEBUFFER_COMPLETE) {
|
|
55
|
+
throw new Context3DError("operation", "Context3D experiment: incomplete resolve buffer");
|
|
56
|
+
}
|
|
57
|
+
ctx.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
|
|
58
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer);
|
|
59
|
+
gl.renderbufferStorageMultisample(gl.RENDERBUFFER, samples, gl.RGBA8, drawnWidth, drawnHeight);
|
|
60
|
+
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuffer);
|
|
61
|
+
}
|
|
62
|
+
if (depthBuffer) {
|
|
63
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuffer);
|
|
64
|
+
if (samples) {
|
|
65
|
+
gl.renderbufferStorageMultisample(gl.RENDERBUFFER, samples, gl.DEPTH24_STENCIL8, drawnWidth, drawnHeight);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH24_STENCIL8, drawnWidth, drawnHeight);
|
|
69
|
+
}
|
|
70
|
+
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, depthBuffer);
|
|
71
|
+
}
|
|
72
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
|
|
73
|
+
if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) !== gl.FRAMEBUFFER_COMPLETE) {
|
|
74
|
+
throw new Context3DError("operation", "Context3D experiment: incomplete back buffer");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
gl.deleteTexture(texture);
|
|
79
|
+
gl.deleteFramebuffer(framebuffer);
|
|
80
|
+
gl.deleteFramebuffer(resolveFramebuffer);
|
|
81
|
+
gl.deleteRenderbuffer(depthBuffer);
|
|
82
|
+
gl.deleteRenderbuffer(colorBuffer);
|
|
83
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
|
|
84
|
+
ctx.bindFramebuffer(gl.FRAMEBUFFER, ctx.framebuffer);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
gl.deleteTexture(ctx.texture);
|
|
88
|
+
gl.deleteFramebuffer(ctx.framebuffer);
|
|
89
|
+
gl.deleteFramebuffer(ctx.resolveFramebuffer);
|
|
90
|
+
gl.deleteRenderbuffer(ctx.depthBuffer);
|
|
91
|
+
gl.deleteRenderbuffer(ctx.colorBuffer);
|
|
92
|
+
ctx.texture = texture;
|
|
93
|
+
ctx.framebuffer = framebuffer;
|
|
94
|
+
ctx.resolveFramebuffer = resolveFramebuffer;
|
|
95
|
+
ctx.colorBuffer = colorBuffer;
|
|
96
|
+
ctx.depthBuffer = depthBuffer;
|
|
97
|
+
ctx.antiAlias = antiAlias;
|
|
98
|
+
ctx.width = width;
|
|
99
|
+
ctx.height = height;
|
|
100
|
+
ctx.drawnWidth = drawnWidth;
|
|
101
|
+
ctx.drawnHeight = drawnHeight;
|
|
102
|
+
ctx.scale = scale;
|
|
103
|
+
gl.canvas.width = drawnWidth;
|
|
104
|
+
gl.canvas.height = drawnHeight;
|
|
105
|
+
showAt(ctx);
|
|
106
|
+
// Readback's storage waits for a read: a back buffer as large as a 4K screen is 33 MB each.
|
|
107
|
+
ctx.pixels = new Uint8Array(0);
|
|
108
|
+
ctx.topDown = new Uint8Array(0);
|
|
109
|
+
ctx.applyScissor();
|
|
110
|
+
ctx.clear(0, 0, 0, 1);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Shown at the size asked for, in CSS pixels, as an unstyled canvas of that size would be,
|
|
114
|
+
* divided by its scale: a best-resolution back buffer shows its pixels at the screen's.
|
|
115
|
+
*/
|
|
116
|
+
function showAt(ctx) {
|
|
117
|
+
const style = ctx.gl.canvas.style;
|
|
118
|
+
if (!style) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const plain = ctx.scale === 1;
|
|
122
|
+
style.width = plain && ctx.drawnWidth === ctx.width ? "" : `${ctx.width / ctx.scale}px`;
|
|
123
|
+
style.height = plain && ctx.drawnHeight === ctx.height ? "" : `${ctx.height / ctx.scale}px`;
|
|
124
|
+
}
|
|
125
|
+
/** The largest back buffer storage the GPU gives: a texture, a renderbuffer and a viewport. */
|
|
126
|
+
function storageLimit(ctx) {
|
|
127
|
+
if (!ctx.gpuMost) {
|
|
128
|
+
const gl = ctx.gl;
|
|
129
|
+
const viewport = gl.getParameter(gl.MAX_VIEWPORT_DIMS);
|
|
130
|
+
const side = Math.min(gl.getParameter(gl.MAX_TEXTURE_SIZE), gl.getParameter(gl.MAX_RENDERBUFFER_SIZE));
|
|
131
|
+
ctx.gpuMost = Int32Array.of(Math.min(side, viewport[0]), Math.min(side, viewport[1]));
|
|
132
|
+
}
|
|
133
|
+
return ctx.gpuMost;
|
|
134
|
+
}
|
|
135
|
+
export function unconfigureBackBuffer(ctx) {
|
|
136
|
+
ctx.alive();
|
|
137
|
+
if (ctx.renderTexture) {
|
|
138
|
+
throw new Context3DError("operation", "Context3D experiment: resize while rendering to texture");
|
|
139
|
+
}
|
|
140
|
+
const gl = ctx.gl;
|
|
141
|
+
gl.deleteTexture(ctx.texture);
|
|
142
|
+
gl.deleteFramebuffer(ctx.framebuffer);
|
|
143
|
+
gl.deleteFramebuffer(ctx.resolveFramebuffer);
|
|
144
|
+
gl.deleteRenderbuffer(ctx.depthBuffer);
|
|
145
|
+
gl.deleteRenderbuffer(ctx.colorBuffer);
|
|
146
|
+
ctx.drawState.forget();
|
|
147
|
+
ctx.texture = null;
|
|
148
|
+
ctx.framebuffer = null;
|
|
149
|
+
ctx.resolveFramebuffer = null;
|
|
150
|
+
ctx.colorBuffer = null;
|
|
151
|
+
ctx.depthBuffer = null;
|
|
152
|
+
ctx.resolveDirty = false;
|
|
153
|
+
ctx.antiAlias = 0;
|
|
154
|
+
ctx.scale = 1;
|
|
155
|
+
ctx.width = 0;
|
|
156
|
+
ctx.height = 0;
|
|
157
|
+
ctx.drawnWidth = 0;
|
|
158
|
+
ctx.drawnHeight = 0;
|
|
159
|
+
ctx.pixels = new Uint8Array(0);
|
|
160
|
+
ctx.topDown = new Uint8Array(0);
|
|
161
|
+
}
|
|
162
|
+
export function resolveBackBuffer(ctx) {
|
|
163
|
+
if (!ctx.resolveFramebuffer) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const gl = ctx.gl;
|
|
167
|
+
if (ctx.resolveDirty) {
|
|
168
|
+
ctx.bindFramebuffer(gl.READ_FRAMEBUFFER, ctx.framebuffer);
|
|
169
|
+
ctx.bindFramebuffer(gl.DRAW_FRAMEBUFFER, ctx.resolveFramebuffer);
|
|
170
|
+
if (ctx.scissor) {
|
|
171
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
172
|
+
}
|
|
173
|
+
gl.blitFramebuffer(0, 0, ctx.drawnWidth, ctx.drawnHeight, 0, 0, ctx.drawnWidth, ctx.drawnHeight, gl.COLOR_BUFFER_BIT, gl.NEAREST);
|
|
174
|
+
if (ctx.scissor) {
|
|
175
|
+
gl.enable(gl.SCISSOR_TEST);
|
|
176
|
+
}
|
|
177
|
+
ctx.resolveDirty = false;
|
|
178
|
+
}
|
|
179
|
+
ctx.bindFramebuffer(gl.READ_FRAMEBUFFER, ctx.resolveFramebuffer);
|
|
180
|
+
}
|
|
181
|
+
export function presentBackBuffer(ctx) {
|
|
182
|
+
ctx.setRenderTarget(null);
|
|
183
|
+
ctx.target();
|
|
184
|
+
resolveBackBuffer(ctx);
|
|
185
|
+
const gl = ctx.gl;
|
|
186
|
+
ctx.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
|
|
187
|
+
if (ctx.scissor) {
|
|
188
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
189
|
+
}
|
|
190
|
+
// To the drawing buffer the browser gave, which it may have made smaller than the canvas.
|
|
191
|
+
gl.blitFramebuffer(0, 0, ctx.drawnWidth, ctx.drawnHeight, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.COLOR_BUFFER_BIT, gl.NEAREST);
|
|
192
|
+
if (ctx.scissor) {
|
|
193
|
+
gl.enable(gl.SCISSOR_TEST);
|
|
194
|
+
}
|
|
195
|
+
gl.flush();
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=back-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-buffer.js","sourceRoot":"","sources":["../../src/webgl/back-buffer.ts"],"names":[],"mappings":"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"}
|
package/dist/webgl/buffers.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Buffer3D } from "../backend.js";
|
|
2
|
+
import type { WebGLContext3D } from "./context.js";
|
|
2
3
|
export interface BufferState {
|
|
3
4
|
handle: WebGLBuffer;
|
|
4
5
|
indices: Uint16Array | null;
|
|
@@ -25,6 +26,5 @@ export interface VertexBinding {
|
|
|
25
26
|
checkedFirst: number;
|
|
26
27
|
checkedCount: number;
|
|
27
28
|
}
|
|
28
|
-
export declare function
|
|
29
|
-
export declare function uploadBufferBytes(gl: WebGL2RenderingContext, vao: WebGLVertexArrayObject, buffer: Buffer3D, state: BufferState, data: Uint8Array, offset: number, start: number, amount: number): void;
|
|
29
|
+
export declare function allocateBuffer(ctx: WebGLContext3D, count: number, stride: number, dynamic: boolean): Buffer3D;
|
|
30
30
|
//# sourceMappingURL=buffers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../src/webgl/buffers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,wFAAwF;IACxF,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../src/webgl/buffers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,wFAAwF;IACxF,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8ED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACf,QAAQ,CAsGV"}
|
package/dist/webgl/buffers.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Context3DError } from "../errors.js";
|
|
1
2
|
import { range } from "./state.js";
|
|
2
3
|
function uploaded(state, start, amount) {
|
|
3
4
|
if (amount === 0) {
|
|
@@ -10,7 +11,7 @@ function uploaded(state, start, amount) {
|
|
|
10
11
|
state.prefix++;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
+
function uploadBuffer(gl, vao, buffer, state, values, start, amount) {
|
|
14
15
|
const { count, stride } = buffer;
|
|
15
16
|
const target = stride === 0 ? gl.ELEMENT_ARRAY_BUFFER : gl.ARRAY_BUFFER;
|
|
16
17
|
const handle = state.handle;
|
|
@@ -27,7 +28,7 @@ export function uploadBuffer(gl, vao, buffer, state, values, start, amount) {
|
|
|
27
28
|
gl.bindBuffer(target, handle);
|
|
28
29
|
gl.bufferSubData(target, start * size * (stride === 0 ? 2 : 4), data);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
function uploadBufferBytes(gl, vao, buffer, state, data, offset, start, amount) {
|
|
31
32
|
const { count, stride } = buffer;
|
|
32
33
|
const target = stride === 0 ? gl.ELEMENT_ARRAY_BUFFER : gl.ARRAY_BUFFER;
|
|
33
34
|
const handle = state.handle;
|
|
@@ -51,4 +52,106 @@ export function uploadBufferBytes(gl, vao, buffer, state, data, offset, start, a
|
|
|
51
52
|
gl.bindBuffer(target, handle);
|
|
52
53
|
gl.bufferSubData(target, start * bytesPerEntry, data, offset, length);
|
|
53
54
|
}
|
|
55
|
+
export function allocateBuffer(ctx, count, stride, dynamic) {
|
|
56
|
+
ctx.alive();
|
|
57
|
+
range(1, count - 1, stride === 0 ? 524287 : 65535);
|
|
58
|
+
range(0, stride, 64);
|
|
59
|
+
const countLimit = stride === 0 ? ctx.limits.maxIndexBuffers : ctx.limits.maxVertexBuffers;
|
|
60
|
+
const used = stride === 0 ? ctx.buffers.size - ctx.vertexBuffers : ctx.vertexBuffers;
|
|
61
|
+
if (ctx.buffers.size >= ctx.limits.maxBuffers || used >= countLimit) {
|
|
62
|
+
throw new Context3DError("limit", "Context3D experiment: buffer limit");
|
|
63
|
+
}
|
|
64
|
+
const bytes = count * (stride === 0 ? 2 : stride * 4);
|
|
65
|
+
const usedBytes = stride === 0 ? ctx.bufferBytes - ctx.vertexBufferBytes : ctx.vertexBufferBytes;
|
|
66
|
+
const byteLimit = stride === 0 ? ctx.limits.maxIndexBufferBytes : ctx.limits.maxVertexBufferBytes;
|
|
67
|
+
if (ctx.bufferBytes + bytes > ctx.limits.maxBufferBytes || usedBytes + bytes > byteLimit) {
|
|
68
|
+
throw new Context3DError("limit", "Context3D experiment: buffer memory limit");
|
|
69
|
+
}
|
|
70
|
+
const gl = ctx.gl;
|
|
71
|
+
const handle = gl.createBuffer();
|
|
72
|
+
if (!handle) {
|
|
73
|
+
throw new Context3DError("bufferAllocation", "Context3D experiment: cannot allocate buffer");
|
|
74
|
+
}
|
|
75
|
+
const target = stride === 0 ? gl.ELEMENT_ARRAY_BUFFER : gl.ARRAY_BUFFER;
|
|
76
|
+
if (stride === 0) {
|
|
77
|
+
ctx.indexBuffer = null;
|
|
78
|
+
}
|
|
79
|
+
gl.bindVertexArray(ctx.vao);
|
|
80
|
+
gl.bindBuffer(target, handle);
|
|
81
|
+
gl.bufferData(target, bytes, dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);
|
|
82
|
+
const state = {
|
|
83
|
+
handle,
|
|
84
|
+
indices: stride === 0 ? new Uint16Array(count) : null,
|
|
85
|
+
uploaded: new Uint8Array(count),
|
|
86
|
+
prefix: 0,
|
|
87
|
+
version: 0,
|
|
88
|
+
checkedVersion: -1,
|
|
89
|
+
checkedFirst: 0,
|
|
90
|
+
checkedCount: 0,
|
|
91
|
+
maximum: -1,
|
|
92
|
+
ranges: null,
|
|
93
|
+
};
|
|
94
|
+
const buffer = {
|
|
95
|
+
count,
|
|
96
|
+
stride,
|
|
97
|
+
upload: (values, start, amount) => {
|
|
98
|
+
ctx.alive();
|
|
99
|
+
ctx.buffer(buffer);
|
|
100
|
+
try {
|
|
101
|
+
uploadBuffer(gl, ctx.vao, buffer, state, values, start, amount);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
// Source getters can draw before the upload replaces the VAO's index binding.
|
|
105
|
+
if (stride === 0) {
|
|
106
|
+
ctx.indexBuffer = null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
uploadBytes: (data, offset, start, amount) => {
|
|
111
|
+
ctx.alive();
|
|
112
|
+
ctx.buffer(buffer);
|
|
113
|
+
try {
|
|
114
|
+
uploadBufferBytes(gl, ctx.vao, buffer, state, data, offset, start, amount);
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
if (stride === 0) {
|
|
118
|
+
ctx.indexBuffer = null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
dispose: () => {
|
|
123
|
+
if (!ctx.buffers.delete(buffer)) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (ctx.indexBuffer === handle) {
|
|
127
|
+
ctx.indexBuffer = null;
|
|
128
|
+
}
|
|
129
|
+
gl.deleteBuffer(handle);
|
|
130
|
+
ctx.bufferBytes -= bytes;
|
|
131
|
+
if (stride !== 0) {
|
|
132
|
+
ctx.vertexBuffers--;
|
|
133
|
+
ctx.vertexBufferBytes -= bytes;
|
|
134
|
+
}
|
|
135
|
+
state.indices = null;
|
|
136
|
+
state.ranges = null;
|
|
137
|
+
state.uploaded = new Uint8Array(0);
|
|
138
|
+
for (let i = 0; i < ctx.vertices.length; i++) {
|
|
139
|
+
const binding = ctx.vertices[i];
|
|
140
|
+
if (binding?.buffer === buffer) {
|
|
141
|
+
ctx.vertices[i] = null;
|
|
142
|
+
}
|
|
143
|
+
else if (binding?.checkedIndex === state) {
|
|
144
|
+
binding.checkedIndex = null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
ctx.buffers.set(buffer, state);
|
|
150
|
+
if (stride !== 0) {
|
|
151
|
+
ctx.vertexBuffers++;
|
|
152
|
+
ctx.vertexBufferBytes += bytes;
|
|
153
|
+
}
|
|
154
|
+
ctx.bufferBytes += bytes;
|
|
155
|
+
return buffer;
|
|
156
|
+
}
|
|
54
157
|
//# sourceMappingURL=buffers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../src/webgl/buffers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA8BnC,SAAS,QAAQ,CAAC,KAAkB,EAAE,KAAa,EAAE,MAAc;IACjE,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IAC9C,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../src/webgl/buffers.ts"],"names":[],"mappings":"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"}
|
package/dist/webgl/context.d.ts
CHANGED
|
@@ -2,26 +2,18 @@ import { type ProgramType } from "../agal.js";
|
|
|
2
2
|
import { type BlendFactor, type Buffer3D, type CompareMode, type Context3D, type CullFace, type Profile, type Program3D, type SamplerFilter, type SamplerMip, type SamplerWrap, type StencilAction, type Texture3D, type TextureFormat, type VertexFormat } from "../backend.js";
|
|
3
3
|
import { type DxtEncoder } from "../dxt.js";
|
|
4
4
|
import { type WebGLContext3DLimits } from "./limits.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* An owned WebGL2 context, deliberately independent of the 2D renderer. Its members that are
|
|
7
|
+
* neither private nor Context3D's are for back-buffer.ts, buffers.ts and readback.ts, which
|
|
8
|
+
* hold parts of it as functions over it.
|
|
9
|
+
*/
|
|
6
10
|
export declare class WebGLContext3D implements Context3D {
|
|
7
11
|
readonly gl: WebGL2RenderingContext;
|
|
8
|
-
private readonly drawState;
|
|
9
12
|
width: number;
|
|
10
13
|
height: number;
|
|
11
|
-
/**
|
|
12
|
-
* The back buffer's storage: its size, or less where the GPU allows less. The SWF still
|
|
13
|
-
* sees the size it asked for, drawn at this one and stretched to it when presented.
|
|
14
|
-
*/
|
|
15
|
-
private drawnWidth;
|
|
16
|
-
private drawnHeight;
|
|
17
|
-
private gpuMost;
|
|
18
14
|
disposed: boolean;
|
|
19
15
|
samplerFormats: boolean;
|
|
20
16
|
profile: Profile;
|
|
21
|
-
private readonly buffers;
|
|
22
|
-
private vertexBuffers;
|
|
23
|
-
private bufferBytes;
|
|
24
|
-
private vertexBufferBytes;
|
|
25
17
|
private readonly programs;
|
|
26
18
|
private readonly textures;
|
|
27
19
|
private readonly textureCounts;
|
|
@@ -33,7 +25,6 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
33
25
|
private copy2D;
|
|
34
26
|
private copyCube;
|
|
35
27
|
private readonly targetSamples;
|
|
36
|
-
private renderTexture;
|
|
37
28
|
private renderDepth;
|
|
38
29
|
private renderFace;
|
|
39
30
|
/** Colour outputs 1 to 3, drawn into with renderTexture, and their cube faces. */
|
|
@@ -50,20 +41,8 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
50
41
|
private anisotropy;
|
|
51
42
|
private s3tc;
|
|
52
43
|
private maxAnisotropy;
|
|
53
|
-
private readonly vertices;
|
|
54
44
|
private enabledAttributes;
|
|
55
|
-
private indexBuffer;
|
|
56
|
-
private readonly texturesApplied;
|
|
57
45
|
private selected;
|
|
58
|
-
private framebuffer;
|
|
59
|
-
private texture;
|
|
60
|
-
private resolveFramebuffer;
|
|
61
|
-
private colorBuffer;
|
|
62
|
-
private resolveDirty;
|
|
63
|
-
private depthBuffer;
|
|
64
|
-
private antiAlias;
|
|
65
|
-
/** The back buffer's pixels to a CSS pixel and to a scissor rectangle's unit. */
|
|
66
|
-
private scale;
|
|
67
46
|
private depthWrite;
|
|
68
47
|
private depthCompare;
|
|
69
48
|
private blendEnabled;
|
|
@@ -77,7 +56,6 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
77
56
|
private stencilReference;
|
|
78
57
|
private stencilRead;
|
|
79
58
|
private stencilWrite;
|
|
80
|
-
private scissor;
|
|
81
59
|
private scissorLeft;
|
|
82
60
|
private scissorTop;
|
|
83
61
|
private scissorRight;
|
|
@@ -85,26 +63,11 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
85
63
|
private scissorOutside;
|
|
86
64
|
private readonly vertexConstants;
|
|
87
65
|
private readonly fragmentConstants;
|
|
88
|
-
private pixels;
|
|
89
|
-
private topDown;
|
|
90
|
-
private readonly vao;
|
|
91
|
-
private readonly limits;
|
|
92
66
|
private dxtEncoder;
|
|
93
67
|
/** The host's whole-level encoder; a refusal retains the TypeScript path. */
|
|
94
68
|
setDxtEncoder(encoder: DxtEncoder): void;
|
|
95
69
|
constructor(gl: WebGL2RenderingContext, limits?: Partial<WebGLContext3DLimits>);
|
|
96
|
-
private alive;
|
|
97
|
-
private target;
|
|
98
|
-
/** Temporary attachments and separate READ/DRAW bindings bypass the hot target cache. */
|
|
99
|
-
private bindFramebuffer;
|
|
100
70
|
configure(width: number, height: number, depth?: boolean, antiAlias?: number, scale?: number): void;
|
|
101
|
-
/**
|
|
102
|
-
* Shown at the size asked for, in CSS pixels, as an unstyled canvas of that size would be,
|
|
103
|
-
* divided by its scale: a best-resolution back buffer shows its pixels at the screen's.
|
|
104
|
-
*/
|
|
105
|
-
private showAt;
|
|
106
|
-
/** The largest back buffer storage the GPU gives: a texture, a renderbuffer and a viewport. */
|
|
107
|
-
private storageLimit;
|
|
108
71
|
unconfigure(): void;
|
|
109
72
|
clear(red: number, green: number, blue: number, alpha: number, depth?: number, mask?: number, stencil?: number): void;
|
|
110
73
|
setStencilActions(face: CullFace, compare: CompareMode, pass: StencilAction, depthFail: StencilAction, stencilFail: StencilAction): void;
|
|
@@ -114,11 +77,9 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
114
77
|
private applyColorMask;
|
|
115
78
|
setDepth(write: boolean, compare: CompareMode): void;
|
|
116
79
|
setScissor(x: number | null, y?: number, width?: number, height?: number): void;
|
|
117
|
-
private applyScissor;
|
|
118
80
|
setBlend(source: BlendFactor, destination: BlendFactor): void;
|
|
119
81
|
setCulling(face: CullFace): void;
|
|
120
82
|
createBuffer(count: number, stride: number, dynamic?: boolean): Buffer3D;
|
|
121
|
-
private buffer;
|
|
122
83
|
createProgram(): Program3D;
|
|
123
84
|
private program;
|
|
124
85
|
createTexture(width: number, height: number, cube?: boolean, format?: TextureFormat, streaming?: number): Texture3D;
|
|
@@ -170,7 +131,6 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
170
131
|
*/
|
|
171
132
|
private streamingBase;
|
|
172
133
|
private uniforms;
|
|
173
|
-
private resolve;
|
|
174
134
|
read(width?: number, height?: number): Uint8Array;
|
|
175
135
|
present(): void;
|
|
176
136
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/webgl/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/webgl/context.ts"],"names":[],"mappings":"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"}
|