@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/agal.js
CHANGED
|
@@ -1,25 +1,70 @@
|
|
|
1
|
-
//
|
|
1
|
+
// AGAL 1, 2 and 3 to GLSL ES 3.00, with AIR's validation.
|
|
2
2
|
// Format: https://github.com/adobe/glsl2agal/blob/master/agalassembler/agal.h
|
|
3
|
-
|
|
3
|
+
// Each version's registers and rules are as AIR 51 enforces them (tests/context3d/AGALProfiles.as).
|
|
4
|
+
import { profileLimits, SamplerBiasError } from "./backend.js";
|
|
4
5
|
import { Context3DError } from "./errors.js";
|
|
6
|
+
function registers(version, profile) {
|
|
7
|
+
if (version === 1) {
|
|
8
|
+
return {
|
|
9
|
+
attributes: 8,
|
|
10
|
+
vertexConstants: 128,
|
|
11
|
+
fragmentConstants: 28,
|
|
12
|
+
temporaries: profile === "baselineConstrained" ? 7 : 8,
|
|
13
|
+
varyings: 8,
|
|
14
|
+
samplers: 8,
|
|
15
|
+
outputs: 1,
|
|
16
|
+
depth: false,
|
|
17
|
+
tokens: 200,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const constrained = profile === "standardConstrained";
|
|
21
|
+
return {
|
|
22
|
+
attributes: version === 2 ? 8 : 16,
|
|
23
|
+
vertexConstants: 250,
|
|
24
|
+
fragmentConstants: version === 2 ? 64 : 200,
|
|
25
|
+
temporaries: 26,
|
|
26
|
+
varyings: constrained ? 8 : 10,
|
|
27
|
+
samplers: constrained ? 8 : 16,
|
|
28
|
+
outputs: constrained ? 1 : 4,
|
|
29
|
+
depth: !constrained,
|
|
30
|
+
tokens: version === 2 ? 1024 : 2048,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
5
33
|
const SUPPORTED = new Set([
|
|
6
34
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
|
|
7
|
-
0x15, 0x16, 0x17, 0x18, 0x19, 0x27, 0x28, 0x29, 0x2a, 0x2c,
|
|
35
|
+
0x15, 0x16, 0x17, 0x18, 0x19, 0x27, 0x28, 0x29, 0x2a, 0x2c, 0x2d,
|
|
36
|
+
]);
|
|
37
|
+
/** ddx, ddy and the conditionals: ife, ine, ifg, ifl, els and eif. */
|
|
38
|
+
const VERSION2 = new Set([0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21]);
|
|
39
|
+
const UNARY = new Set([
|
|
40
|
+
0, 5, 8, 9, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x14, 0x15, 0x16, 0x1a, 0x1b, 0x27,
|
|
8
41
|
]);
|
|
9
|
-
const
|
|
10
|
-
|
|
42
|
+
const COMPARISONS = ["==", "!=", ">", "<"];
|
|
43
|
+
/**
|
|
44
|
+
* The vertex constants an indirect read reaches: AIR's reach the first 128 in AGAL 2 and 3
|
|
45
|
+
* too, and read 0 past them; the rest only direct reads reach.
|
|
46
|
+
*/
|
|
47
|
+
export const INDIRECT_BANK = 128;
|
|
48
|
+
/** The instructions a baselineConstrained fragment program may have. */
|
|
49
|
+
const CONSTRAINED_FRAGMENT = 96;
|
|
50
|
+
/** The deepest AIR nests conditionals. */
|
|
51
|
+
const NESTING = 4;
|
|
52
|
+
export function translate(bytes, stage, profile = "baseline") {
|
|
11
53
|
const data = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
12
54
|
if (bytes.length < 31 || (bytes.length - 7) % 24 !== 0) {
|
|
13
55
|
throw new Context3DError("agalLength", "Invalid AGAL program length");
|
|
14
56
|
}
|
|
15
|
-
|
|
57
|
+
// AIR takes version 0 as 1.
|
|
58
|
+
const version = data.getUint32(1, true) || 1;
|
|
59
|
+
const limits = registers(Math.min(version, 3), profile);
|
|
60
|
+
if ((bytes.length - 7) / 24 > limits.tokens) {
|
|
16
61
|
throw new Context3DError("agalTokens", "Too many AGAL instructions");
|
|
17
62
|
}
|
|
18
63
|
if (bytes[0] !== 0xa0) {
|
|
19
64
|
throw new Context3DError("agalMagic", "Invalid AGAL magic byte");
|
|
20
65
|
}
|
|
21
|
-
if (
|
|
22
|
-
throw new Context3DError("
|
|
66
|
+
if (version > profileLimits(profile).agal) {
|
|
67
|
+
throw new Context3DError("agalProfileVersion", `AGAL version ${version} is not valid in the ${profile} profile`);
|
|
23
68
|
}
|
|
24
69
|
if (bytes[5] !== 0xa1) {
|
|
25
70
|
throw new Context3DError("agalStageMarker", "Invalid AGAL stage marker");
|
|
@@ -40,6 +85,7 @@ export function translate(bytes, stage) {
|
|
|
40
85
|
indirect = true;
|
|
41
86
|
}
|
|
42
87
|
}
|
|
88
|
+
const bank = INDIRECT_BANK;
|
|
43
89
|
const names = new Map();
|
|
44
90
|
const attributes = new Set();
|
|
45
91
|
const constants = new Set();
|
|
@@ -47,8 +93,11 @@ export function translate(bytes, stage) {
|
|
|
47
93
|
const lines = [];
|
|
48
94
|
const components = "xyzw";
|
|
49
95
|
let output = 0;
|
|
50
|
-
|
|
51
|
-
|
|
96
|
+
let outputs = 0;
|
|
97
|
+
let temporaries = new Uint8Array(limits.temporaries);
|
|
98
|
+
let varyings = new Uint8Array(limits.varyings);
|
|
99
|
+
const blocks = [];
|
|
100
|
+
let hoisted = 0;
|
|
52
101
|
const readTemporary = (index, mask) => {
|
|
53
102
|
if (!temporaries[index]) {
|
|
54
103
|
throw new Context3DError("agalTemporaryRead", "AGAL temporary read before writing");
|
|
@@ -57,12 +106,17 @@ export function translate(bytes, stage) {
|
|
|
57
106
|
throw new Context3DError("agalTemporaryComponent", "AGAL temporary component read before writing");
|
|
58
107
|
}
|
|
59
108
|
};
|
|
109
|
+
const outputInBlock = () => {
|
|
110
|
+
if (blocks.length) {
|
|
111
|
+
throw new Context3DError("agalConditionOutput", "AGAL outputs cannot be written in conditionals");
|
|
112
|
+
}
|
|
113
|
+
};
|
|
60
114
|
const register = (type, index, write) => {
|
|
61
115
|
let name;
|
|
62
116
|
let declaration;
|
|
63
117
|
switch (type) {
|
|
64
118
|
case 0:
|
|
65
|
-
if (write || stage !== "vertex" || index >=
|
|
119
|
+
if (write || stage !== "vertex" || index >= limits.attributes) {
|
|
66
120
|
const reason = write
|
|
67
121
|
? "agalAttributeWrite"
|
|
68
122
|
: stage !== "vertex"
|
|
@@ -75,11 +129,12 @@ export function translate(bytes, stage) {
|
|
|
75
129
|
attributes.add(index);
|
|
76
130
|
break;
|
|
77
131
|
case 1:
|
|
78
|
-
if (write ||
|
|
132
|
+
if (write ||
|
|
133
|
+
index >= (stage === "vertex" ? limits.vertexConstants : limits.fragmentConstants)) {
|
|
79
134
|
throw new Context3DError(write ? "agalConstantWrite" : "agalConstantIndex", "Invalid AGAL constant");
|
|
80
135
|
}
|
|
81
|
-
if (indirect && stage === "vertex") {
|
|
82
|
-
names.set("vc",
|
|
136
|
+
if (indirect && stage === "vertex" && index < bank) {
|
|
137
|
+
names.set("vc", `uniform vec4 vc[${bank}];`);
|
|
83
138
|
return `vc[${index}]`;
|
|
84
139
|
}
|
|
85
140
|
name = `${stage === "vertex" ? "vc" : "fc"}${index}`;
|
|
@@ -87,24 +142,60 @@ export function translate(bytes, stage) {
|
|
|
87
142
|
constants.add(index);
|
|
88
143
|
break;
|
|
89
144
|
case 2:
|
|
90
|
-
if (index >=
|
|
145
|
+
if (index >= limits.temporaries) {
|
|
91
146
|
throw new Context3DError("agalTemporaryIndex", "Invalid AGAL temporary");
|
|
92
147
|
}
|
|
93
148
|
name = `t${index}`;
|
|
94
149
|
declaration = `vec4 ${name};`;
|
|
95
150
|
break;
|
|
96
151
|
case 3:
|
|
97
|
-
if (!write || index
|
|
152
|
+
if (!write || index >= (stage === "vertex" ? 1 : limits.outputs)) {
|
|
98
153
|
throw new Context3DError(write ? "agalOutputIndex" : "agalOutputRead", "Invalid AGAL output");
|
|
99
154
|
}
|
|
100
|
-
|
|
155
|
+
outputInBlock();
|
|
156
|
+
if (index === 0) {
|
|
157
|
+
return "result";
|
|
158
|
+
}
|
|
159
|
+
name = `result${index}`;
|
|
160
|
+
declaration = `vec4 ${name} = vec4(0.0);`;
|
|
161
|
+
break;
|
|
101
162
|
case 4:
|
|
102
|
-
if (index >=
|
|
103
|
-
throw new Context3DError(index >=
|
|
163
|
+
if (index >= limits.varyings || write !== (stage === "vertex")) {
|
|
164
|
+
throw new Context3DError(index >= limits.varyings
|
|
165
|
+
? "agalVaryingIndex"
|
|
166
|
+
: write
|
|
167
|
+
? "agalVaryingWrite"
|
|
168
|
+
: "agalVaryingRead", "Invalid AGAL varying");
|
|
104
169
|
}
|
|
105
170
|
name = `v${index}`;
|
|
106
171
|
declaration = `${stage === "vertex" ? "out" : "in"} vec4 ${name};`;
|
|
107
172
|
break;
|
|
173
|
+
case 6:
|
|
174
|
+
if (stage === "vertex") {
|
|
175
|
+
throw new Context3DError("agalDepthStage", "AGAL depth output in a vertex program");
|
|
176
|
+
}
|
|
177
|
+
if (!write) {
|
|
178
|
+
throw new Context3DError("agalRegister", "Unsupported AGAL register");
|
|
179
|
+
}
|
|
180
|
+
if (!limits.depth || index !== 0) {
|
|
181
|
+
throw new Context3DError("agalDepthIndex", "Invalid AGAL depth output");
|
|
182
|
+
}
|
|
183
|
+
outputInBlock();
|
|
184
|
+
name = "depth";
|
|
185
|
+
declaration = "vec4 depth = vec4(0.0);";
|
|
186
|
+
break;
|
|
187
|
+
case 7:
|
|
188
|
+
if (stage !== "vertex") {
|
|
189
|
+
throw new Context3DError("agalInstanceStage", "AGAL instance id in a fragment program");
|
|
190
|
+
}
|
|
191
|
+
if (write || index !== 0) {
|
|
192
|
+
throw new Context3DError("agalRegister", "Unsupported AGAL register");
|
|
193
|
+
}
|
|
194
|
+
// AIR reads the instance id from vertex stream 15, which a draw must bind (#3611).
|
|
195
|
+
name = "va15";
|
|
196
|
+
declaration = "layout(location = 15) in vec4 va15;";
|
|
197
|
+
attributes.add(15);
|
|
198
|
+
break;
|
|
108
199
|
default:
|
|
109
200
|
throw new Context3DError("agalRegister", "Unsupported AGAL register");
|
|
110
201
|
}
|
|
@@ -123,15 +214,14 @@ export function translate(bytes, stage) {
|
|
|
123
214
|
high >>> 24 !== 128 ||
|
|
124
215
|
(high & 255) !== 1 ||
|
|
125
216
|
type > 2 ||
|
|
126
|
-
component > 3
|
|
127
|
-
add >= 128) {
|
|
217
|
+
component > 3) {
|
|
128
218
|
throw new Context3DError("agalIndirect", "Unsupported AGAL indirect constant");
|
|
129
219
|
}
|
|
130
220
|
const index = register(type, low & 65535, false);
|
|
131
221
|
if (type === 2) {
|
|
132
222
|
readTemporary(low & 65535, 1 << component);
|
|
133
223
|
}
|
|
134
|
-
names.set("vc",
|
|
224
|
+
names.set("vc", `uniform vec4 vc[${bank}];`);
|
|
135
225
|
name = `readConstant(${index}.${components[component]}, ${add + row}.0)`;
|
|
136
226
|
}
|
|
137
227
|
else {
|
|
@@ -160,29 +250,116 @@ export function translate(bytes, stage) {
|
|
|
160
250
|
}
|
|
161
251
|
return `${name}.${lanes}`;
|
|
162
252
|
};
|
|
253
|
+
const scalar = (offset) => {
|
|
254
|
+
const swizzle = data.getUint32(offset, true) >>> 24;
|
|
255
|
+
return swizzle === (swizzle & 3) * 0x55;
|
|
256
|
+
};
|
|
163
257
|
for (let offset = 7; offset < bytes.length; offset += 24) {
|
|
164
258
|
const opcode = data.getUint32(offset, true);
|
|
259
|
+
if (opcode > 0x2e) {
|
|
260
|
+
throw new Context3DError("agalOpcodeRange", "AGAL opcode out of range");
|
|
261
|
+
}
|
|
262
|
+
// tld, a vertex texture read AIR names but does not do: its sampler is refused first.
|
|
263
|
+
if (opcode === 0x2e && stage === "vertex") {
|
|
264
|
+
throw new Context3DError("agalSamplerStage", "AGAL sampler in a vertex program");
|
|
265
|
+
}
|
|
165
266
|
// Unsupported instructions may have no destination or a sampler operand;
|
|
166
267
|
// do not misreport those layouts as malformed arithmetic registers.
|
|
167
|
-
if (!SUPPORTED.has(opcode)) {
|
|
268
|
+
if (!SUPPORTED.has(opcode) && !VERSION2.has(opcode)) {
|
|
168
269
|
throw new Context3DError("agalOpcode", "Unsupported AGAL opcode");
|
|
169
270
|
}
|
|
271
|
+
if ((opcode === 0x1a || opcode === 0x1b) && stage !== "fragment") {
|
|
272
|
+
throw new Context3DError("agalFragmentOnly", "AGAL opcode only in fragment programs");
|
|
273
|
+
}
|
|
274
|
+
if (VERSION2.has(opcode) && version < 2) {
|
|
275
|
+
throw new Context3DError("agalOpcodeVersion", "AGAL opcode needs version 2");
|
|
276
|
+
}
|
|
170
277
|
const dest = data.getUint32(offset + 4, true);
|
|
278
|
+
const block = blocks[blocks.length - 1];
|
|
279
|
+
if (opcode === 0x20 || opcode === 0x21) {
|
|
280
|
+
if (!block) {
|
|
281
|
+
throw new Context3DError(opcode === 0x20 ? "agalElse" : "agalEndIf", "AGAL else or eif without if");
|
|
282
|
+
}
|
|
283
|
+
if (opcode === 0x20 && block.otherwise) {
|
|
284
|
+
throw new Context3DError("agalElse", "AGAL else chain broken");
|
|
285
|
+
}
|
|
286
|
+
if (!block.instructions) {
|
|
287
|
+
throw new Context3DError("agalEmptyBranch", "Empty AGAL conditional branch");
|
|
288
|
+
}
|
|
289
|
+
if (opcode === 0x20) {
|
|
290
|
+
// The else branch starts from what was written before the if.
|
|
291
|
+
block.otherwise = true;
|
|
292
|
+
temporaries = block.temporaries.slice();
|
|
293
|
+
varyings = block.varyings.slice();
|
|
294
|
+
block.instructions = 0;
|
|
295
|
+
block.predicate = `p${offset}`;
|
|
296
|
+
lines.push(`bool ${block.predicate} = ${block.parent}!${block.condition};`);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
// After the eif AIR counts what the else branch wrote, or, with none, what was written
|
|
300
|
+
// before the if: an if branch's writes alone are not.
|
|
301
|
+
if (!block.otherwise) {
|
|
302
|
+
temporaries = block.temporaries;
|
|
303
|
+
varyings = block.varyings;
|
|
304
|
+
}
|
|
305
|
+
blocks.pop();
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
if (opcode >= 0x1c && opcode <= 0x1f) {
|
|
309
|
+
if (dest !== 0) {
|
|
310
|
+
throw new Context3DError("agalConditionDestination", "AGAL conditional with a destination");
|
|
311
|
+
}
|
|
312
|
+
if (!scalar(offset + 8) || !scalar(offset + 16)) {
|
|
313
|
+
throw new Context3DError("agalScalar", "AGAL conditional operands must be scalar");
|
|
314
|
+
}
|
|
315
|
+
if (blocks.length === NESTING) {
|
|
316
|
+
throw new Context3DError("agalNesting", "AGAL conditionals nested too deep");
|
|
317
|
+
}
|
|
318
|
+
const a = source(offset + 8);
|
|
319
|
+
const b = source(offset + 16);
|
|
320
|
+
if (block) {
|
|
321
|
+
block.instructions++;
|
|
322
|
+
}
|
|
323
|
+
// Both branches run for every pixel and only their writes are predicated, as
|
|
324
|
+
// Direct3D's predication runs them: derivatives stay defined.
|
|
325
|
+
const parent = block ? `${block.predicate} && ` : "";
|
|
326
|
+
const condition = `c${offset}`;
|
|
327
|
+
const name = `p${offset}`;
|
|
328
|
+
lines.push(`bool ${condition} = ${a}.x ${COMPARISONS[opcode - 0x1c]} ${b}.x;`);
|
|
329
|
+
lines.push(`bool ${name} = ${parent}${condition};`);
|
|
330
|
+
blocks.push({
|
|
331
|
+
predicate: name,
|
|
332
|
+
condition,
|
|
333
|
+
parent,
|
|
334
|
+
otherwise: false,
|
|
335
|
+
instructions: 0,
|
|
336
|
+
temporaries: temporaries.slice(),
|
|
337
|
+
varyings: varyings.slice(),
|
|
338
|
+
});
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
171
341
|
const unary = UNARY.has(opcode);
|
|
172
342
|
if (unary && (data.getUint32(offset + 16, true) || data.getUint32(offset + 20, true))) {
|
|
173
343
|
throw new Context3DError("agalUnusedSource", "Nonempty unused AGAL source");
|
|
174
344
|
}
|
|
345
|
+
if (block) {
|
|
346
|
+
block.instructions++;
|
|
347
|
+
}
|
|
175
348
|
if (opcode === 0x27) {
|
|
176
349
|
const operand = data.getUint32(offset + 8, true);
|
|
177
350
|
const type = data.getUint32(offset + 12, true);
|
|
178
351
|
const swizzle = operand >>> 24;
|
|
352
|
+
if (type === 1 && stage === "fragment" && dest === 0) {
|
|
353
|
+
throw new Context3DError("agalConstants", "AGAL operands are both constants");
|
|
354
|
+
}
|
|
179
355
|
if (stage !== "fragment" ||
|
|
180
356
|
dest !== 0 ||
|
|
181
357
|
(type !== 2 && type !== 4) ||
|
|
182
358
|
swizzle !== (swizzle & 3) * 0x55) {
|
|
183
359
|
throw new Context3DError("agalDiscard", "Invalid AGAL discard");
|
|
184
360
|
}
|
|
185
|
-
|
|
361
|
+
const p = block ? `${block.predicate} && ` : "";
|
|
362
|
+
lines.push(`if (${p}${source(offset + 8)}.x < 0.0) { discard; }`);
|
|
186
363
|
continue;
|
|
187
364
|
}
|
|
188
365
|
const mask = (dest >>> 16) & 255;
|
|
@@ -192,8 +369,29 @@ export function translate(bytes, stage) {
|
|
|
192
369
|
const targetType = dest >>> 24;
|
|
193
370
|
const targetIndex = dest & 65535;
|
|
194
371
|
const target = register(targetType, targetIndex, true);
|
|
195
|
-
if (stage === "fragment" && targetType === 3
|
|
196
|
-
|
|
372
|
+
if (stage === "fragment" && targetType === 3) {
|
|
373
|
+
if (mask !== 15) {
|
|
374
|
+
throw new Context3DError("agalColorMask", "AGAL color output must write all components");
|
|
375
|
+
}
|
|
376
|
+
if (outputs & (1 << targetIndex)) {
|
|
377
|
+
throw new Context3DError("agalOutputTwice", "AGAL color output written twice");
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (targetType === 6 && mask !== 1) {
|
|
381
|
+
throw new Context3DError("agalDepthMask", "AGAL depth output must write only x");
|
|
382
|
+
}
|
|
383
|
+
if (opcode === 0x28 && block && data.getUint32(offset + 12, true) !== 4) {
|
|
384
|
+
throw new Context3DError("agalConditionTexture", "AGAL texture reads in conditionals take only varyings");
|
|
385
|
+
}
|
|
386
|
+
if ((opcode === 0x1a || opcode === 0x1b) && block) {
|
|
387
|
+
throw new Context3DError("agalConditionDerivative", "AGAL ddx and ddy in a conditional");
|
|
388
|
+
}
|
|
389
|
+
// Two constants make a value AIR wants precomputed; a lone one in kil, ddx and ddy too.
|
|
390
|
+
if (opcode !== 0 &&
|
|
391
|
+
opcode !== 0x28 &&
|
|
392
|
+
(data.getUint32(offset + 12, true) & 255) === 1 &&
|
|
393
|
+
(unary ? opcode === 0x1a || opcode === 0x1b : (data.getUint32(offset + 20, true) & 255) === 1)) {
|
|
394
|
+
throw new Context3DError("agalConstants", "AGAL operands are both constants");
|
|
197
395
|
}
|
|
198
396
|
const a = source(offset + 8);
|
|
199
397
|
const b = unary || opcode === 0x28 ? "" : source(offset + 16);
|
|
@@ -304,26 +502,47 @@ export function translate(bytes, stage) {
|
|
|
304
502
|
expression = `vec${rows}(${dots.join(", ")})`;
|
|
305
503
|
break;
|
|
306
504
|
}
|
|
505
|
+
case 0x1a:
|
|
506
|
+
expression = `dFdx(${a})`;
|
|
507
|
+
break;
|
|
508
|
+
case 0x1b:
|
|
509
|
+
// AIR's y grows down its target; GL's up the back buffer, and down a texture, which
|
|
510
|
+
// targetY flips.
|
|
511
|
+
names.set("targetY", "uniform float targetY;");
|
|
512
|
+
expression = `(-targetY * dFdy(${a}))`;
|
|
513
|
+
break;
|
|
307
514
|
case 0x28: {
|
|
308
515
|
const low = data.getUint32(offset + 16, true);
|
|
309
516
|
const high = data.getUint32(offset + 20, true);
|
|
310
517
|
const index = low & 65535;
|
|
311
518
|
const bias = data.getInt8(offset + 18) / 8;
|
|
312
519
|
const format = (high >>> 8) & 15;
|
|
520
|
+
const dimension = (high >>> 12) & 15;
|
|
521
|
+
const special = (high >>> 16) & 15;
|
|
522
|
+
const wrap = (high >>> 20) & 15;
|
|
313
523
|
const mip = (high >>> 24) & 15;
|
|
314
524
|
const filter = high >>> 28;
|
|
315
|
-
if (stage !== "fragment" ||
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
525
|
+
if (stage !== "fragment" || low >>> 24 !== 0 || (high & 255) !== 5) {
|
|
526
|
+
throw new Context3DError("agalSampler", "Unsupported AGAL sampler encoding");
|
|
527
|
+
}
|
|
528
|
+
if (index >= limits.samplers) {
|
|
529
|
+
throw new Context3DError("agalSamplerIndex", "AGAL sampler index out of bounds");
|
|
530
|
+
}
|
|
531
|
+
if (dimension > 1) {
|
|
532
|
+
throw new Context3DError("agalSamplerDimension", "Unknown AGAL sampler dimension");
|
|
533
|
+
}
|
|
534
|
+
// Of the special flags only ignoresampler: AIR refuses centroid and single.
|
|
535
|
+
if (special & ~4 || wrap > 3) {
|
|
322
536
|
throw new Context3DError("agalSampler", "Unsupported AGAL sampler encoding");
|
|
323
537
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
538
|
+
if (mip > 2) {
|
|
539
|
+
throw new Context3DError("agalSamplerMip", "Unknown AGAL sampler mipmap mode");
|
|
540
|
+
}
|
|
541
|
+
if (filter > 5) {
|
|
542
|
+
throw new Context3DError("agalSamplerFilter", "Unknown AGAL sampler filter");
|
|
543
|
+
}
|
|
544
|
+
const cube = dimension === 1;
|
|
545
|
+
const ignore = (special & 4) !== 0;
|
|
327
546
|
const previous = samplers.get(index);
|
|
328
547
|
if (previous && previous.bias !== bias) {
|
|
329
548
|
throw new SamplerBiasError("Conflicting AGAL sampler biases");
|
|
@@ -331,13 +550,13 @@ export function translate(bytes, stage) {
|
|
|
331
550
|
if (previous &&
|
|
332
551
|
(previous.format !== format ||
|
|
333
552
|
previous.filter !== filter ||
|
|
334
|
-
previous.
|
|
553
|
+
previous.wrap !== wrap ||
|
|
335
554
|
previous.mip !== mip ||
|
|
336
555
|
previous.cube !== cube ||
|
|
337
556
|
previous.ignore !== ignore)) {
|
|
338
557
|
throw new Context3DError("agalSampler", "Conflicting AGAL sampler states");
|
|
339
558
|
}
|
|
340
|
-
samplers.set(index, { index, format, filter,
|
|
559
|
+
samplers.set(index, { index, format, filter, wrap, mip, cube, ignore, bias });
|
|
341
560
|
names.set(`fs${index}`, `uniform ${cube ? "samplerCube" : "sampler2D"} fs${index};`);
|
|
342
561
|
// Bias stays in the shader even when ignoresampler preserves runtime state.
|
|
343
562
|
expression = `texture(fs${index}, ${a}.${cube ? "xyz" : "xy"}${bias === 0 ? "" : `, ${bias.toFixed(3)}`})`;
|
|
@@ -352,6 +571,9 @@ export function translate(bytes, stage) {
|
|
|
352
571
|
case 0x2c:
|
|
353
572
|
expression = `vec4(equal(${a}, ${b}))`;
|
|
354
573
|
break;
|
|
574
|
+
case 0x2d:
|
|
575
|
+
expression = `vec4(notEqual(${a}, ${b}))`;
|
|
576
|
+
break;
|
|
355
577
|
default:
|
|
356
578
|
throw new Context3DError("agalOpcode", "Unsupported AGAL opcode");
|
|
357
579
|
}
|
|
@@ -363,13 +585,30 @@ export function translate(bytes, stage) {
|
|
|
363
585
|
}
|
|
364
586
|
// One vector assignment evaluates every source before changing any lane,
|
|
365
587
|
// including overlapping temporary registers in matrix operations.
|
|
366
|
-
|
|
588
|
+
if (!block) {
|
|
589
|
+
lines.push(`${target}.${lanes} = ${expression}.${lanes};`);
|
|
590
|
+
}
|
|
591
|
+
else if (opcode === 0x28) {
|
|
592
|
+
// A texture read's derivatives are taken outside the branch, where every pixel of a
|
|
593
|
+
// quad computes them.
|
|
594
|
+
const value = `h${hoisted++}`;
|
|
595
|
+
lines.push(`vec4 ${value} = ${expression};`);
|
|
596
|
+
lines.push(`if (${block.predicate}) { ${target}.${lanes} = ${value}.${lanes}; }`);
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
lines.push(`if (${block.predicate}) { ${target}.${lanes} = ${expression}.${lanes}; }`);
|
|
600
|
+
}
|
|
367
601
|
switch (targetType) {
|
|
368
602
|
case 2:
|
|
369
603
|
temporaries[targetIndex] |= mask;
|
|
370
604
|
break;
|
|
371
605
|
case 3:
|
|
372
|
-
|
|
606
|
+
if (stage === "fragment") {
|
|
607
|
+
outputs |= 1 << targetIndex;
|
|
608
|
+
}
|
|
609
|
+
if (targetIndex === 0) {
|
|
610
|
+
output |= mask;
|
|
611
|
+
}
|
|
373
612
|
break;
|
|
374
613
|
case 4:
|
|
375
614
|
varyings[targetIndex] |= mask;
|
|
@@ -379,22 +618,53 @@ export function translate(bytes, stage) {
|
|
|
379
618
|
if (output !== 15) {
|
|
380
619
|
throw new Context3DError(stage === "vertex" ? "agalVertexOutput" : "agalFragmentOutput", "AGAL program does not write its complete output");
|
|
381
620
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
621
|
+
if (outputs & (outputs + 1)) {
|
|
622
|
+
throw new Context3DError("agalOutputSlots", "AGAL color outputs are not consecutive");
|
|
623
|
+
}
|
|
624
|
+
// ps_2_0's 64 arithmetic and 32 texture instructions, which AIR counts once the program
|
|
625
|
+
// is valid; an instruction here is taken as one there.
|
|
626
|
+
if (profile === "baselineConstrained" &&
|
|
627
|
+
stage === "fragment" &&
|
|
628
|
+
(bytes.length - 7) / 24 > CONSTRAINED_FRAGMENT) {
|
|
629
|
+
throw new Context3DError("agalNativeLength", "Too many instructions for the native shader");
|
|
630
|
+
}
|
|
631
|
+
const count = stage === "fragment" ? 32 - Math.clz32(outputs) : 1;
|
|
632
|
+
let results;
|
|
633
|
+
let finish;
|
|
634
|
+
if (stage === "vertex") {
|
|
635
|
+
results = "uniform float targetY;";
|
|
636
|
+
finish =
|
|
637
|
+
"gl_Position = vec4(result.x, result.y * targetY, result.z * 2.0 - result.w, result.w);";
|
|
638
|
+
}
|
|
639
|
+
else if (count === 1) {
|
|
640
|
+
results = "out vec4 color;";
|
|
641
|
+
finish = "color = result;";
|
|
642
|
+
}
|
|
643
|
+
else {
|
|
644
|
+
const outs = [];
|
|
645
|
+
const sets = [];
|
|
646
|
+
for (let i = 0; i < count; i++) {
|
|
647
|
+
outs.push(`layout(location = ${i}) out vec4 color${i || ""};`);
|
|
648
|
+
sets.push(`color${i || ""} = result${i || ""};`);
|
|
649
|
+
}
|
|
650
|
+
results = outs.join("\n");
|
|
651
|
+
finish = sets.join("\n ");
|
|
652
|
+
}
|
|
653
|
+
if (names.has("depth")) {
|
|
654
|
+
finish += "\n gl_FragDepth = depth.x;";
|
|
655
|
+
}
|
|
386
656
|
return {
|
|
387
657
|
source: `#version 300 es
|
|
388
658
|
precision highp float;
|
|
389
|
-
${
|
|
659
|
+
${[...names.values()].join("\n")}
|
|
390
660
|
${indirect
|
|
391
661
|
? `vec4 readConstant(float address, float offset) {
|
|
392
662
|
float index = roundEven(address) + offset;
|
|
393
|
-
if (!(index >= 0.0 && index <
|
|
663
|
+
if (!(index >= 0.0 && index < ${bank}.0)) { return vec4(0.0); }
|
|
394
664
|
return vc[int(index)];
|
|
395
665
|
}`
|
|
396
666
|
: ""}
|
|
397
|
-
${
|
|
667
|
+
${results}
|
|
398
668
|
void main() {
|
|
399
669
|
vec4 result = vec4(0.0);
|
|
400
670
|
${lines.join("\n ")}
|
|
@@ -405,6 +675,7 @@ void main() {
|
|
|
405
675
|
constants: [...constants],
|
|
406
676
|
indirect,
|
|
407
677
|
samplers: [...samplers.values()],
|
|
678
|
+
outputs: count,
|
|
408
679
|
};
|
|
409
680
|
}
|
|
410
681
|
//# sourceMappingURL=agal.js.map
|
package/dist/agal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agal.js","sourceRoot":"","sources":["../src/agal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agal.js","sourceRoot":"","sources":["../src/agal.ts"],"names":[],"mappings":"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"}
|