@swf2es/context3d 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.
- package/README.md +120 -27
- package/dist/agal.d.ts +11 -2
- package/dist/agal.d.ts.map +1 -1
- package/dist/agal.js +318 -47
- package/dist/agal.js.map +1 -1
- package/dist/backend.d.ts +50 -3
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +74 -2
- package/dist/backend.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- 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 +29 -48
- package/dist/webgl/context.d.ts.map +1 -1
- package/dist/webgl/context.js +227 -364
- package/dist/webgl/context.js.map +1 -1
- package/dist/webgl/programs.d.ts +4 -1
- package/dist/webgl/programs.d.ts.map +1 -1
- package/dist/webgl/programs.js +7 -6
- package/dist/webgl/programs.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/dist/webgl/targets.d.ts +3 -1
- package/dist/webgl/targets.d.ts.map +1 -1
- package/dist/webgl/targets.js +5 -3
- package/dist/webgl/targets.js.map +1 -1
- package/dist/webgl/textures.d.ts +9 -1
- package/dist/webgl/textures.d.ts.map +1 -1
- package/dist/webgl/textures.js +161 -7
- package/dist/webgl/textures.js.map +1 -1
- package/package.json +1 -1
- package/src/agal.ts +375 -51
- package/src/backend.ts +113 -3
- package/src/errors.ts +27 -1
- package/src/index.ts +12 -1
- package/src/webgl/back-buffer.ts +287 -0
- package/src/webgl/buffers.ts +114 -2
- package/src/webgl/context.ts +291 -489
- package/src/webgl/programs.ts +10 -5
- package/src/webgl/readback.ts +54 -0
- package/src/webgl/targets.ts +4 -2
- package/src/webgl/textures.ts +183 -9
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
|
@@ -1,26 +1,19 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type BlendFactor, type Buffer3D, type CompareMode, type Context3D, type CullFace, type Program3D, type SamplerFilter, type SamplerMip, type SamplerWrap, type StencilAction, type Texture3D, type TextureFormat, type VertexFormat } from "../backend.js";
|
|
1
|
+
import { type ProgramType } from "../agal.js";
|
|
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
|
-
|
|
21
|
-
private vertexBuffers;
|
|
22
|
-
private bufferBytes;
|
|
23
|
-
private vertexBufferBytes;
|
|
16
|
+
profile: Profile;
|
|
24
17
|
private readonly programs;
|
|
25
18
|
private readonly textures;
|
|
26
19
|
private readonly textureCounts;
|
|
@@ -32,9 +25,15 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
32
25
|
private copy2D;
|
|
33
26
|
private copyCube;
|
|
34
27
|
private readonly targetSamples;
|
|
35
|
-
private renderTexture;
|
|
36
28
|
private renderDepth;
|
|
37
29
|
private renderFace;
|
|
30
|
+
/** Colour outputs 1 to 3, drawn into with renderTexture, and their cube faces. */
|
|
31
|
+
private readonly outputs;
|
|
32
|
+
private readonly outputFaces;
|
|
33
|
+
private outputsChanged;
|
|
34
|
+
/** Whether any of outputs is bound, so that a draw alone into its target looks at none. */
|
|
35
|
+
private outputsBound;
|
|
36
|
+
private floatTargets;
|
|
38
37
|
private readonly textureSlots;
|
|
39
38
|
private textureMask;
|
|
40
39
|
private readonly samplers;
|
|
@@ -42,20 +41,8 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
42
41
|
private anisotropy;
|
|
43
42
|
private s3tc;
|
|
44
43
|
private maxAnisotropy;
|
|
45
|
-
private readonly vertices;
|
|
46
44
|
private enabledAttributes;
|
|
47
|
-
private indexBuffer;
|
|
48
|
-
private readonly texturesApplied;
|
|
49
45
|
private selected;
|
|
50
|
-
private framebuffer;
|
|
51
|
-
private texture;
|
|
52
|
-
private resolveFramebuffer;
|
|
53
|
-
private colorBuffer;
|
|
54
|
-
private resolveDirty;
|
|
55
|
-
private depthBuffer;
|
|
56
|
-
private antiAlias;
|
|
57
|
-
/** The back buffer's pixels to a CSS pixel and to a scissor rectangle's unit. */
|
|
58
|
-
private scale;
|
|
59
46
|
private depthWrite;
|
|
60
47
|
private depthCompare;
|
|
61
48
|
private blendEnabled;
|
|
@@ -69,7 +56,6 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
69
56
|
private stencilReference;
|
|
70
57
|
private stencilRead;
|
|
71
58
|
private stencilWrite;
|
|
72
|
-
private scissor;
|
|
73
59
|
private scissorLeft;
|
|
74
60
|
private scissorTop;
|
|
75
61
|
private scissorRight;
|
|
@@ -77,26 +63,11 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
77
63
|
private scissorOutside;
|
|
78
64
|
private readonly vertexConstants;
|
|
79
65
|
private readonly fragmentConstants;
|
|
80
|
-
private pixels;
|
|
81
|
-
private topDown;
|
|
82
|
-
private readonly vao;
|
|
83
|
-
private readonly limits;
|
|
84
66
|
private dxtEncoder;
|
|
85
67
|
/** The host's whole-level encoder; a refusal retains the TypeScript path. */
|
|
86
68
|
setDxtEncoder(encoder: DxtEncoder): void;
|
|
87
69
|
constructor(gl: WebGL2RenderingContext, limits?: Partial<WebGLContext3DLimits>);
|
|
88
|
-
private alive;
|
|
89
|
-
private target;
|
|
90
|
-
/** Temporary attachments and separate READ/DRAW bindings bypass the hot target cache. */
|
|
91
|
-
private bindFramebuffer;
|
|
92
70
|
configure(width: number, height: number, depth?: boolean, antiAlias?: number, scale?: number): void;
|
|
93
|
-
/**
|
|
94
|
-
* Shown at the size asked for, in CSS pixels, as an unstyled canvas of that size would be,
|
|
95
|
-
* divided by its scale: a best-resolution back buffer shows its pixels at the screen's.
|
|
96
|
-
*/
|
|
97
|
-
private showAt;
|
|
98
|
-
/** The largest back buffer storage the GPU gives: a texture, a renderbuffer and a viewport. */
|
|
99
|
-
private storageLimit;
|
|
100
71
|
unconfigure(): void;
|
|
101
72
|
clear(red: number, green: number, blue: number, alpha: number, depth?: number, mask?: number, stencil?: number): void;
|
|
102
73
|
setStencilActions(face: CullFace, compare: CompareMode, pass: StencilAction, depthFail: StencilAction, stencilFail: StencilAction): void;
|
|
@@ -106,15 +77,13 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
106
77
|
private applyColorMask;
|
|
107
78
|
setDepth(write: boolean, compare: CompareMode): void;
|
|
108
79
|
setScissor(x: number | null, y?: number, width?: number, height?: number): void;
|
|
109
|
-
private applyScissor;
|
|
110
80
|
setBlend(source: BlendFactor, destination: BlendFactor): void;
|
|
111
81
|
setCulling(face: CullFace): void;
|
|
112
82
|
createBuffer(count: number, stride: number, dynamic?: boolean): Buffer3D;
|
|
113
|
-
private buffer;
|
|
114
83
|
createProgram(): Program3D;
|
|
115
84
|
private program;
|
|
116
85
|
createTexture(width: number, height: number, cube?: boolean, format?: TextureFormat, streaming?: number): Texture3D;
|
|
117
|
-
createRectangleTexture(width: number, height: number): Texture3D;
|
|
86
|
+
createRectangleTexture(width: number, height: number, format?: TextureFormat): Texture3D;
|
|
118
87
|
/** GL's internal format for a compressed texture's S3TC, or 0 where the context takes none. */
|
|
119
88
|
private s3tcFormat;
|
|
120
89
|
/**
|
|
@@ -133,6 +102,19 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
133
102
|
setRenderTarget(texture: Texture3D | null, depth?: boolean, face?: number, antiAlias?: number): void;
|
|
134
103
|
private changedTarget;
|
|
135
104
|
private finishTarget;
|
|
105
|
+
/** A texture drawn into made whole again: resolved, and its mips regenerated. */
|
|
106
|
+
private finishTexture;
|
|
107
|
+
/** Half floats are drawn into where the GPU's WebGL renders float colour, as every desktop one does. */
|
|
108
|
+
private renderFormat;
|
|
109
|
+
setColorOutput(index: number, texture: Texture3D | null, face?: number): void;
|
|
110
|
+
/**
|
|
111
|
+
* The current target's framebuffer with the extra colour outputs attached, or without
|
|
112
|
+
* them: its draws write every output bound, and a program's unwritten ones are refused
|
|
113
|
+
* before they draw.
|
|
114
|
+
*/
|
|
115
|
+
private attachOutputs;
|
|
116
|
+
/** The extra colour outputs bound, a bit each from output 1. */
|
|
117
|
+
private outputMask;
|
|
136
118
|
setTexture(index: number, texture: Texture3D | null): void;
|
|
137
119
|
setSampler(index: number, wrap: SamplerWrap, filter: SamplerFilter, mip: SamplerMip): void;
|
|
138
120
|
private setSamplerState;
|
|
@@ -149,7 +131,6 @@ export declare class WebGLContext3D implements Context3D {
|
|
|
149
131
|
*/
|
|
150
132
|
private streamingBase;
|
|
151
133
|
private uniforms;
|
|
152
|
-
private resolve;
|
|
153
134
|
read(width?: number, height?: number): Uint8Array;
|
|
154
135
|
present(): void;
|
|
155
136
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/webgl/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/webgl/context.ts"],"names":[],"mappings":"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"}
|