@thi.ng/wasm-api-webgl 0.1.0

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,546 @@
1
+ import { Pointer, WasmStringPtr } from "@thi.ng/wasm-api";
2
+ import { __array, __instanceArray, __slice32, __primslice32 } from "@thi.ng/wasm-api/memory";
3
+ const $WebGLContextOpts = (mem) => ({
4
+ get align() {
5
+ return 1;
6
+ },
7
+ get size() {
8
+ return 9;
9
+ },
10
+ instanceArray(base, num) {
11
+ return __instanceArray(this, base, num);
12
+ },
13
+ instance: (base) => {
14
+ return {
15
+ get __base() {
16
+ return base;
17
+ },
18
+ get __bytes() {
19
+ return mem.u8.subarray(base, base + 9);
20
+ },
21
+ get alpha() {
22
+ return mem.u8[base];
23
+ },
24
+ get antialias() {
25
+ return mem.u8[base + 1];
26
+ },
27
+ get depth() {
28
+ return mem.u8[base + 2];
29
+ },
30
+ get desynchronized() {
31
+ return mem.u8[base + 3];
32
+ },
33
+ get failIfMajorPerformanceCaveat() {
34
+ return mem.u8[base + 4];
35
+ },
36
+ get powerPreference() {
37
+ return mem.u8[base + 5];
38
+ },
39
+ get premultipliedAlpha() {
40
+ return mem.u8[base + 6];
41
+ },
42
+ get preserveDrawingBuffer() {
43
+ return mem.u8[base + 7];
44
+ },
45
+ get stencil() {
46
+ return mem.u8[base + 8];
47
+ }
48
+ };
49
+ }
50
+ });
51
+ var WebGLPowerPreference = /* @__PURE__ */ ((WebGLPowerPreference2) => {
52
+ WebGLPowerPreference2[WebGLPowerPreference2["default"] = 0] = "default";
53
+ WebGLPowerPreference2[WebGLPowerPreference2["high_performance"] = 1] = "high_performance";
54
+ WebGLPowerPreference2[WebGLPowerPreference2["low_power"] = 2] = "low_power";
55
+ return WebGLPowerPreference2;
56
+ })(WebGLPowerPreference || {});
57
+ const $ShaderSpec = (mem) => ({
58
+ get align() {
59
+ return 4;
60
+ },
61
+ get size() {
62
+ return 32;
63
+ },
64
+ instanceArray(base, num) {
65
+ return __instanceArray(this, base, num);
66
+ },
67
+ instance: (base) => {
68
+ let $vs = null;
69
+ let $fs = null;
70
+ return {
71
+ get __base() {
72
+ return base;
73
+ },
74
+ get __bytes() {
75
+ return mem.u8.subarray(base, base + 32);
76
+ },
77
+ get vs() {
78
+ return $vs || ($vs = new WasmStringPtr(mem, base, true));
79
+ },
80
+ get fs() {
81
+ return $fs || ($fs = new WasmStringPtr(mem, base + 4, true));
82
+ },
83
+ get attribs() {
84
+ return __slice32(mem, $ShaderAttribSpec, base + 8);
85
+ },
86
+ get varying() {
87
+ return __slice32(mem, $ShaderVaryingSpec, base + 16);
88
+ },
89
+ get uniforms() {
90
+ return __slice32(mem, $ShaderUniformSpec, base + 24);
91
+ }
92
+ };
93
+ }
94
+ });
95
+ const $ShaderAttribSpec = (mem) => ({
96
+ get align() {
97
+ return 4;
98
+ },
99
+ get size() {
100
+ return 8;
101
+ },
102
+ instanceArray(base, num) {
103
+ return __instanceArray(this, base, num);
104
+ },
105
+ instance: (base) => {
106
+ let $name = null;
107
+ return {
108
+ get __base() {
109
+ return base;
110
+ },
111
+ get __bytes() {
112
+ return mem.u8.subarray(base, base + 8);
113
+ },
114
+ get name() {
115
+ return $name || ($name = new WasmStringPtr(mem, base, true));
116
+ },
117
+ get type() {
118
+ return mem.u8[base + 4];
119
+ }
120
+ };
121
+ }
122
+ });
123
+ const $ShaderVaryingSpec = (mem) => ({
124
+ get align() {
125
+ return 4;
126
+ },
127
+ get size() {
128
+ return 8;
129
+ },
130
+ instanceArray(base, num) {
131
+ return __instanceArray(this, base, num);
132
+ },
133
+ instance: (base) => {
134
+ let $name = null;
135
+ return {
136
+ get __base() {
137
+ return base;
138
+ },
139
+ get __bytes() {
140
+ return mem.u8.subarray(base, base + 8);
141
+ },
142
+ get name() {
143
+ return $name || ($name = new WasmStringPtr(mem, base, true));
144
+ },
145
+ get type() {
146
+ return mem.u8[base + 4];
147
+ }
148
+ };
149
+ }
150
+ });
151
+ const $ShaderUniformSpec = (mem) => ({
152
+ get align() {
153
+ return 16;
154
+ },
155
+ get size() {
156
+ return 32;
157
+ },
158
+ instanceArray(base, num) {
159
+ return __instanceArray(this, base, num);
160
+ },
161
+ instance: (base) => {
162
+ let $name = null;
163
+ return {
164
+ get __base() {
165
+ return base;
166
+ },
167
+ get __bytes() {
168
+ return mem.u8.subarray(base, base + 32);
169
+ },
170
+ get name() {
171
+ return $name || ($name = new WasmStringPtr(mem, base, true));
172
+ },
173
+ get type() {
174
+ return mem.u8[base + 4];
175
+ },
176
+ get default() {
177
+ return $UniformValue(mem).instance(base + 16);
178
+ }
179
+ };
180
+ }
181
+ });
182
+ const $ModelSpec = (mem) => ({
183
+ get align() {
184
+ return 4;
185
+ },
186
+ get size() {
187
+ return 48;
188
+ },
189
+ instanceArray(base, num) {
190
+ return __instanceArray(this, base, num);
191
+ },
192
+ instance: (base) => {
193
+ return {
194
+ get __base() {
195
+ return base;
196
+ },
197
+ get __bytes() {
198
+ return mem.u8.subarray(base, base + 48);
199
+ },
200
+ get attribs() {
201
+ return __slice32(mem, $ModelAttribSpec, base);
202
+ },
203
+ get instances() {
204
+ return __slice32(mem, $ModelAttribSpec, base + 8);
205
+ },
206
+ get uniforms() {
207
+ return __slice32(mem, $ModelUniform, base + 16);
208
+ },
209
+ get textures() {
210
+ return __primslice32(mem, mem.i32, base + 24, 2);
211
+ },
212
+ get shader() {
213
+ return mem.i32[base + 32 >>> 2];
214
+ },
215
+ get num() {
216
+ return mem.u32[base + 36 >>> 2];
217
+ },
218
+ get numInstances() {
219
+ return mem.u32[base + 40 >>> 2];
220
+ },
221
+ get mode() {
222
+ return mem.u8[base + 44];
223
+ }
224
+ };
225
+ }
226
+ });
227
+ const $ModelAttribSpec = (mem) => ({
228
+ get align() {
229
+ return 4;
230
+ },
231
+ get size() {
232
+ return 28;
233
+ },
234
+ instanceArray(base, num) {
235
+ return __instanceArray(this, base, num);
236
+ },
237
+ instance: (base) => {
238
+ let $name = null;
239
+ return {
240
+ get __base() {
241
+ return base;
242
+ },
243
+ get __bytes() {
244
+ return mem.u8.subarray(base, base + 28);
245
+ },
246
+ get name() {
247
+ return $name || ($name = new WasmStringPtr(mem, base, true));
248
+ },
249
+ get data() {
250
+ return $ModelAttribData(mem).instance(base + 4);
251
+ },
252
+ get type() {
253
+ return mem.u16[base + 12 >>> 1];
254
+ },
255
+ get offset() {
256
+ return mem.u32[base + 16 >>> 2];
257
+ },
258
+ get stride() {
259
+ return mem.u32[base + 20 >>> 2];
260
+ },
261
+ get size() {
262
+ return mem.u32[base + 24 >>> 2];
263
+ }
264
+ };
265
+ }
266
+ });
267
+ const $ModelAttribData = (mem) => ({
268
+ get align() {
269
+ return 4;
270
+ },
271
+ get size() {
272
+ return 8;
273
+ },
274
+ instanceArray(base, num) {
275
+ return __instanceArray(this, base, num);
276
+ },
277
+ instance: (base) => {
278
+ return {
279
+ get __base() {
280
+ return base;
281
+ },
282
+ get __bytes() {
283
+ return mem.u8.subarray(base, base + 8);
284
+ },
285
+ get u8() {
286
+ return __primslice32(mem, mem.i8, base, 0);
287
+ },
288
+ get i8() {
289
+ return __primslice32(mem, mem.u8, base, 0);
290
+ },
291
+ get i16() {
292
+ return __primslice32(mem, mem.i16, base, 1);
293
+ },
294
+ get u16() {
295
+ return __primslice32(mem, mem.u16, base, 1);
296
+ },
297
+ get u32() {
298
+ return __primslice32(mem, mem.i32, base, 2);
299
+ },
300
+ get i32() {
301
+ return __primslice32(mem, mem.u32, base, 2);
302
+ },
303
+ get f32() {
304
+ return __primslice32(mem, mem.f32, base, 2);
305
+ }
306
+ };
307
+ }
308
+ });
309
+ const $AttribUpdateSpec = (mem) => ({
310
+ get align() {
311
+ return 4;
312
+ },
313
+ get size() {
314
+ return 16;
315
+ },
316
+ instanceArray(base, num) {
317
+ return __instanceArray(this, base, num);
318
+ },
319
+ instance: (base) => {
320
+ return {
321
+ get __base() {
322
+ return base;
323
+ },
324
+ get __bytes() {
325
+ return mem.u8.subarray(base, base + 16);
326
+ },
327
+ get data() {
328
+ return $ModelAttribData(mem).instance(base);
329
+ },
330
+ get type() {
331
+ return mem.u16[base + 8 >>> 1];
332
+ },
333
+ get offset() {
334
+ return mem.u32[base + 12 >>> 2];
335
+ }
336
+ };
337
+ }
338
+ });
339
+ const $ModelUniform = (mem) => ({
340
+ get align() {
341
+ return 16;
342
+ },
343
+ get size() {
344
+ return 32;
345
+ },
346
+ instanceArray(base, num) {
347
+ return __instanceArray(this, base, num);
348
+ },
349
+ instance: (base) => {
350
+ let $name = null;
351
+ return {
352
+ get __base() {
353
+ return base;
354
+ },
355
+ get __bytes() {
356
+ return mem.u8.subarray(base, base + 32);
357
+ },
358
+ get name() {
359
+ return $name || ($name = new WasmStringPtr(mem, base, true));
360
+ },
361
+ get type() {
362
+ return mem.u8[base + 4];
363
+ },
364
+ get value() {
365
+ return $UniformValue(mem).instance(base + 16);
366
+ }
367
+ };
368
+ }
369
+ });
370
+ const $UniformValue = (mem) => ({
371
+ get align() {
372
+ return 16;
373
+ },
374
+ get size() {
375
+ return 16;
376
+ },
377
+ instanceArray(base, num) {
378
+ return __instanceArray(this, base, num);
379
+ },
380
+ instance: (base) => {
381
+ return {
382
+ get __base() {
383
+ return base;
384
+ },
385
+ get __bytes() {
386
+ return mem.u8.subarray(base, base + 16);
387
+ },
388
+ get float() {
389
+ return mem.f32[base >>> 2];
390
+ },
391
+ get vec2() {
392
+ const addr = base >>> 2;
393
+ return mem.f32.subarray(addr, addr + 2);
394
+ },
395
+ get vec3() {
396
+ const addr = base >>> 2;
397
+ return mem.f32.subarray(addr, addr + 3);
398
+ },
399
+ get vec4() {
400
+ const addr = base >>> 2;
401
+ return mem.f32.subarray(addr, addr + 4);
402
+ }
403
+ };
404
+ }
405
+ });
406
+ const $TextureSpec = (mem) => ({
407
+ get align() {
408
+ return 4;
409
+ },
410
+ get size() {
411
+ return 28;
412
+ },
413
+ instanceArray(base, num) {
414
+ return __instanceArray(this, base, num);
415
+ },
416
+ instance: (base) => {
417
+ return {
418
+ get __base() {
419
+ return base;
420
+ },
421
+ get __bytes() {
422
+ return mem.u8.subarray(base, base + 28);
423
+ },
424
+ get img() {
425
+ return $ImageData(mem).instance(base);
426
+ },
427
+ get width() {
428
+ return mem.u16[base + 8 >>> 1];
429
+ },
430
+ get height() {
431
+ return mem.u16[base + 10 >>> 1];
432
+ },
433
+ get depth() {
434
+ return mem.u16[base + 12 >>> 1];
435
+ },
436
+ get format() {
437
+ return mem.u16[base + 14 >>> 1];
438
+ },
439
+ get target() {
440
+ return mem.u16[base + 16 >>> 1];
441
+ },
442
+ get type() {
443
+ return mem.u16[base + 18 >>> 1];
444
+ },
445
+ get filter() {
446
+ return mem.u16[base + 20 >>> 1];
447
+ },
448
+ get wrap() {
449
+ return mem.u16[base + 22 >>> 1];
450
+ },
451
+ get imgType() {
452
+ return mem.u8[base + 24];
453
+ }
454
+ };
455
+ }
456
+ });
457
+ const $ImageData = (mem) => ({
458
+ get align() {
459
+ return 4;
460
+ },
461
+ get size() {
462
+ return 8;
463
+ },
464
+ instanceArray(base, num) {
465
+ return __instanceArray(this, base, num);
466
+ },
467
+ instance: (base) => {
468
+ return {
469
+ get __base() {
470
+ return base;
471
+ },
472
+ get __bytes() {
473
+ return mem.u8.subarray(base, base + 8);
474
+ },
475
+ get none() {
476
+ return mem.u32[base >>> 2];
477
+ },
478
+ get u8() {
479
+ return __primslice32(mem, mem.u8, base, 0);
480
+ },
481
+ get u16() {
482
+ return __primslice32(mem, mem.u16, base, 1);
483
+ },
484
+ get u32() {
485
+ return __primslice32(mem, mem.u32, base, 2);
486
+ },
487
+ get f32() {
488
+ return __primslice32(mem, mem.f32, base, 2);
489
+ }
490
+ };
491
+ }
492
+ });
493
+ var ImageType = /* @__PURE__ */ ((ImageType2) => {
494
+ ImageType2[ImageType2["none"] = 0] = "none";
495
+ ImageType2[ImageType2["u8"] = 1] = "u8";
496
+ ImageType2[ImageType2["u16"] = 2] = "u16";
497
+ ImageType2[ImageType2["u32"] = 3] = "u32";
498
+ ImageType2[ImageType2["f32"] = 4] = "f32";
499
+ return ImageType2;
500
+ })(ImageType || {});
501
+ var ShaderAttribType = /* @__PURE__ */ ((ShaderAttribType2) => {
502
+ ShaderAttribType2[ShaderAttribType2["float"] = 0] = "float";
503
+ ShaderAttribType2[ShaderAttribType2["int"] = 1] = "int";
504
+ ShaderAttribType2[ShaderAttribType2["uint"] = 2] = "uint";
505
+ ShaderAttribType2[ShaderAttribType2["vec2"] = 3] = "vec2";
506
+ ShaderAttribType2[ShaderAttribType2["vec3"] = 4] = "vec3";
507
+ ShaderAttribType2[ShaderAttribType2["vec4"] = 5] = "vec4";
508
+ ShaderAttribType2[ShaderAttribType2["mat22"] = 6] = "mat22";
509
+ ShaderAttribType2[ShaderAttribType2["mat33"] = 7] = "mat33";
510
+ ShaderAttribType2[ShaderAttribType2["mat44"] = 8] = "mat44";
511
+ return ShaderAttribType2;
512
+ })(ShaderAttribType || {});
513
+ var UniformType = /* @__PURE__ */ ((UniformType2) => {
514
+ UniformType2[UniformType2["float"] = 0] = "float";
515
+ UniformType2[UniformType2["int"] = 1] = "int";
516
+ UniformType2[UniformType2["uint"] = 2] = "uint";
517
+ UniformType2[UniformType2["vec2"] = 3] = "vec2";
518
+ UniformType2[UniformType2["vec3"] = 4] = "vec3";
519
+ UniformType2[UniformType2["vec4"] = 5] = "vec4";
520
+ UniformType2[UniformType2["mat22"] = 6] = "mat22";
521
+ UniformType2[UniformType2["mat33"] = 7] = "mat33";
522
+ UniformType2[UniformType2["mat44"] = 8] = "mat44";
523
+ UniformType2[UniformType2["sampler2D"] = 9] = "sampler2D";
524
+ UniformType2[UniformType2["sampler3D"] = 10] = "sampler3D";
525
+ UniformType2[UniformType2["samplerCube"] = 11] = "samplerCube";
526
+ return UniformType2;
527
+ })(UniformType || {});
528
+ export {
529
+ $AttribUpdateSpec,
530
+ $ImageData,
531
+ $ModelAttribData,
532
+ $ModelAttribSpec,
533
+ $ModelSpec,
534
+ $ModelUniform,
535
+ $ShaderAttribSpec,
536
+ $ShaderSpec,
537
+ $ShaderUniformSpec,
538
+ $ShaderVaryingSpec,
539
+ $TextureSpec,
540
+ $UniformValue,
541
+ $WebGLContextOpts,
542
+ ImageType,
543
+ ShaderAttribType,
544
+ UniformType,
545
+ WebGLPowerPreference
546
+ };
package/gl.d.ts ADDED
@@ -0,0 +1,46 @@
1
+ import type { IWasmAPI, MemoryViewType, WasmBridge, WasmModuleSpec, WasmType } from "@thi.ng/wasm-api";
2
+ import { type WasmDom } from "@thi.ng/wasm-api-dom";
3
+ import { ObjectIndex } from "@thi.ng/wasm-api/object-index";
4
+ import type { ITexture, Shader, ModelSpec as WEBGL_ModelSpec } from "@thi.ng/webgl";
5
+ import type { AttribUpdateSpec, WasmWebGLExports, WasmWebGLImports, WebGLContextOpts } from "./api.js";
6
+ import { type ModelSpec, type ShaderSpec, type TextureSpec, type UniformValue } from "./generated/api.js";
7
+ /**
8
+ * WASM module descriptor for use as dependency object in other module
9
+ * definitions or for direct use with
10
+ * [`WasmBridge`](https://docs.thi.ng/umbrella/wasm-api/classes/WasmBridge.html).
11
+ *
12
+ * @remarks
13
+ * Module defines the following dependencies:
14
+ * - [WasmDomModule](https://docs.thi.ng/umbrella/wasm-api-dom/variables/WasmDomModule.html)
15
+ *
16
+ * See
17
+ * [`WasmModuleSpec`](https://docs.thi.ng/umbrella/wasm-api/interfaces/WasmModuleSpec.html)
18
+ * for more details.
19
+ */
20
+ export declare const WasmWebGLModule: WasmModuleSpec<WasmWebGLExports>;
21
+ export declare class WasmWebGL implements IWasmAPI<WasmWebGLExports> {
22
+ parent: WasmBridge<WasmWebGLExports>;
23
+ dom: WasmDom;
24
+ contexts: ObjectIndex<WebGL2RenderingContext>;
25
+ models: ObjectIndex<WEBGL_ModelSpec>;
26
+ shaders: ObjectIndex<Shader>;
27
+ textures: ObjectIndex<ITexture>;
28
+ $ShaderSpec: WasmType<ShaderSpec>;
29
+ $ModelSpec: WasmType<ModelSpec>;
30
+ $TextureSpec: WasmType<TextureSpec>;
31
+ $UniformValue: WasmType<UniformValue>;
32
+ $AttribUpdateSpec: WasmType<AttribUpdateSpec>;
33
+ $WebGLContextOpts: WasmType<WebGLContextOpts>;
34
+ init(parent: WasmBridge<WasmWebGLExports>): Promise<boolean>;
35
+ getImports(): WasmWebGLImports;
36
+ /**
37
+ * Shared handler for setting a scalar uniform in a ModelSpec
38
+ *
39
+ * @param modelID
40
+ * @param name
41
+ * @param value
42
+ */
43
+ uniformScalar(modelID: number, name: number, value: number): void;
44
+ uniformVec(modelID: number, name: number, type: MemoryViewType, addr: number, size: number): void;
45
+ }
46
+ //# sourceMappingURL=gl.d.ts.map