@gjsify/webgl 0.0.3 → 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.
Files changed (149) hide show
  1. package/README.md +78 -6
  2. package/lib/esm/canvas-webgl-widget.js +116 -0
  3. package/lib/esm/html-canvas-element.js +31 -50
  4. package/lib/esm/index.js +7 -0
  5. package/lib/esm/index.spec.js +629 -120
  6. package/lib/esm/test-utils.js +87 -0
  7. package/lib/esm/test.js +5 -1
  8. package/lib/esm/utils.js +1 -1
  9. package/lib/esm/webgl-active-info.js +2 -2
  10. package/lib/esm/webgl-buffer.js +2 -3
  11. package/lib/esm/webgl-context-attributes.js +2 -3
  12. package/lib/esm/webgl-framebuffer.js +3 -4
  13. package/lib/esm/webgl-program.js +2 -3
  14. package/lib/esm/webgl-query.js +15 -0
  15. package/lib/esm/webgl-renderbuffer.js +2 -3
  16. package/lib/esm/webgl-rendering-context.js +105 -101
  17. package/lib/esm/webgl-sampler.js +15 -0
  18. package/lib/esm/webgl-shader-precision-format.js +2 -3
  19. package/lib/esm/webgl-shader.js +2 -3
  20. package/lib/esm/webgl-sync.js +15 -0
  21. package/lib/esm/webgl-texture.js +2 -3
  22. package/lib/esm/webgl-transform-feedback.js +15 -0
  23. package/lib/esm/webgl-uniform-location.js +2 -3
  24. package/lib/esm/webgl-vertex-array-object.js +21 -0
  25. package/lib/esm/webgl2-rendering-context.js +591 -0
  26. package/lib/esm/webgl2.spec.js +578 -0
  27. package/lib/types/canvas-webgl-widget.d.ts +509 -0
  28. package/lib/types/extensions/ext-blend-minmax.d.ts +2 -2
  29. package/lib/types/extensions/ext-texture-filter-anisotropic.d.ts +2 -2
  30. package/lib/types/extensions/oes-element-index-unit.d.ts +2 -2
  31. package/lib/types/extensions/oes-standard-derivatives.d.ts +2 -2
  32. package/lib/types/extensions/oes-texture-float-linear.d.ts +2 -2
  33. package/lib/types/extensions/oes-texture-float.d.ts +2 -2
  34. package/lib/types/extensions/stackgl-destroy-context.d.ts +3 -3
  35. package/lib/types/extensions/stackgl-resize-drawing-buffer.d.ts +3 -3
  36. package/lib/types/html-canvas-element.d.ts +19 -30
  37. package/lib/types/index.d.ts +7 -0
  38. package/lib/types/test-utils.d.ts +45 -0
  39. package/lib/types/types/extension.d.ts +2 -2
  40. package/lib/types/utils.d.ts +14 -15
  41. package/lib/types/webgl-active-info.d.ts +1 -2
  42. package/lib/types/webgl-buffer.d.ts +5 -6
  43. package/lib/types/webgl-context-attributes.d.ts +1 -2
  44. package/lib/types/webgl-framebuffer.d.ts +4 -5
  45. package/lib/types/webgl-program.d.ts +4 -5
  46. package/lib/types/webgl-query.d.ts +7 -0
  47. package/lib/types/webgl-renderbuffer.d.ts +4 -5
  48. package/lib/types/webgl-rendering-context.d.ts +15 -12
  49. package/lib/types/webgl-sampler.d.ts +7 -0
  50. package/lib/types/webgl-shader-precision-format.d.ts +1 -2
  51. package/lib/types/webgl-shader.d.ts +4 -5
  52. package/lib/types/webgl-sync.d.ts +7 -0
  53. package/lib/types/webgl-texture-unit.d.ts +3 -3
  54. package/lib/types/webgl-texture.d.ts +6 -7
  55. package/lib/types/webgl-transform-feedback.d.ts +7 -0
  56. package/lib/types/webgl-uniform-location.d.ts +3 -4
  57. package/lib/types/webgl-vertex-array-object.d.ts +9 -0
  58. package/lib/types/webgl-vertex-attribute.d.ts +5 -5
  59. package/lib/types/webgl2-rendering-context.d.ts +124 -0
  60. package/package.json +27 -26
  61. package/prebuilds/linux-aarch64/Gwebgl-0.1.typelib +0 -0
  62. package/prebuilds/linux-aarch64/libgwebgl.so +0 -0
  63. package/prebuilds/linux-x86_64/Gwebgl-0.1.typelib +0 -0
  64. package/prebuilds/linux-x86_64/libgwebgl.so +0 -0
  65. package/lib/cjs/@types/glsl-tokenizer/index.d.js +0 -0
  66. package/lib/cjs/extensions/ext-blend-minmax.js +0 -18
  67. package/lib/cjs/extensions/ext-texture-filter-anisotropic.js +0 -18
  68. package/lib/cjs/extensions/oes-element-index-unit.js +0 -14
  69. package/lib/cjs/extensions/oes-standard-derivatives.js +0 -17
  70. package/lib/cjs/extensions/oes-texture-float-linear.js +0 -14
  71. package/lib/cjs/extensions/oes-texture-float.js +0 -14
  72. package/lib/cjs/extensions/stackgl-destroy-context.js +0 -12
  73. package/lib/cjs/extensions/stackgl-resize-drawing-buffer.js +0 -12
  74. package/lib/cjs/html-canvas-element.js +0 -70
  75. package/lib/cjs/index.js +0 -18
  76. package/lib/cjs/index.spec.js +0 -146
  77. package/lib/cjs/linkable.js +0 -50
  78. package/lib/cjs/test.js +0 -3
  79. package/lib/cjs/types/constructor.js +0 -0
  80. package/lib/cjs/types/extension.js +0 -0
  81. package/lib/cjs/types/index.js +0 -5
  82. package/lib/cjs/types/typed-array.js +0 -0
  83. package/lib/cjs/types/webgl-constants.js +0 -0
  84. package/lib/cjs/types/webgl-context-attribute-options.js +0 -0
  85. package/lib/cjs/utils.js +0 -212
  86. package/lib/cjs/webgl-active-info.js +0 -10
  87. package/lib/cjs/webgl-buffer.js +0 -18
  88. package/lib/cjs/webgl-context-attributes.js +0 -24
  89. package/lib/cjs/webgl-drawing-buffer-wrapper.js +0 -10
  90. package/lib/cjs/webgl-framebuffer.js +0 -109
  91. package/lib/cjs/webgl-program.js +0 -26
  92. package/lib/cjs/webgl-renderbuffer.js +0 -24
  93. package/lib/cjs/webgl-rendering-context.js +0 -3343
  94. package/lib/cjs/webgl-shader-precision-format.js +0 -11
  95. package/lib/cjs/webgl-shader.js +0 -23
  96. package/lib/cjs/webgl-texture-unit.js +0 -12
  97. package/lib/cjs/webgl-texture.js +0 -22
  98. package/lib/cjs/webgl-uniform-location.js +0 -15
  99. package/lib/cjs/webgl-vertex-attribute.js +0 -147
  100. package/meson.build +0 -39
  101. package/src/test/app.vala +0 -60
  102. package/src/ts/@types/glsl-tokenizer/index.d.ts +0 -18
  103. package/src/ts/extensions/angle-instanced-arrays.ts.off +0 -232
  104. package/src/ts/extensions/ext-blend-minmax.ts +0 -18
  105. package/src/ts/extensions/ext-texture-filter-anisotropic.ts +0 -18
  106. package/src/ts/extensions/oes-element-index-unit.ts +0 -14
  107. package/src/ts/extensions/oes-standard-derivatives.ts +0 -17
  108. package/src/ts/extensions/oes-texture-float-linear.ts +0 -14
  109. package/src/ts/extensions/oes-texture-float.ts +0 -14
  110. package/src/ts/extensions/oes-vertex-array-object.ts.off +0 -128
  111. package/src/ts/extensions/stackgl-destroy-context.ts +0 -12
  112. package/src/ts/extensions/stackgl-resize-drawing-buffer.ts +0 -14
  113. package/src/ts/extensions/webgl-draw-buffers.ts.off +0 -107
  114. package/src/ts/html-canvas-element.ts +0 -98
  115. package/src/ts/index.spec.ts +0 -186
  116. package/src/ts/index.ts +0 -21
  117. package/src/ts/linkable.ts +0 -55
  118. package/src/ts/test.ts +0 -6
  119. package/src/ts/types/constructor.ts +0 -3
  120. package/src/ts/types/extension.ts +0 -3
  121. package/src/ts/types/index.ts +0 -26
  122. package/src/ts/types/typed-array.ts +0 -1
  123. package/src/ts/types/webgl-constants.ts +0 -300
  124. package/src/ts/types/webgl-context-attribute-options.ts +0 -12
  125. package/src/ts/utils.ts +0 -266
  126. package/src/ts/webgl-active-info.ts +0 -13
  127. package/src/ts/webgl-buffer.ts +0 -21
  128. package/src/ts/webgl-context-attributes.ts +0 -24
  129. package/src/ts/webgl-drawing-buffer-wrapper.ts +0 -10
  130. package/src/ts/webgl-framebuffer.ts +0 -133
  131. package/src/ts/webgl-program.ts +0 -30
  132. package/src/ts/webgl-renderbuffer.ts +0 -28
  133. package/src/ts/webgl-rendering-context.ts +0 -4050
  134. package/src/ts/webgl-shader-precision-format.ts +0 -12
  135. package/src/ts/webgl-shader.ts +0 -29
  136. package/src/ts/webgl-texture-unit.ts +0 -16
  137. package/src/ts/webgl-texture.ts +0 -27
  138. package/src/ts/webgl-uniform-location.ts +0 -18
  139. package/src/ts/webgl-vertex-attribute.ts +0 -169
  140. package/src/vala/handle-types.vala +0 -23
  141. package/src/vala/webgl-rendering-context-base.vala +0 -1265
  142. package/src/vala/webgl-rendering-context.vala +0 -265
  143. package/src/vapi/epoxy.vapi +0 -14558
  144. package/src/vapi/glesv2.vapi +0 -670
  145. package/test.gjs.js +0 -39972
  146. package/test.gjs.js.meta.json +0 -1
  147. package/tmp/.tsbuildinfo +0 -1
  148. package/tsconfig.json +0 -38
  149. package/tsconfig.types.json +0 -7
@@ -0,0 +1,87 @@
1
+ function makeShader(gl, type, src) {
2
+ const shader = gl.createShader(type);
3
+ gl.shaderSource(shader, src);
4
+ gl.compileShader(shader);
5
+ return shader;
6
+ }
7
+ function makeProgram(gl, vsSrc, fsSrc) {
8
+ const frag = makeShader(gl, gl.FRAGMENT_SHADER, fsSrc);
9
+ const vert = makeShader(gl, gl.VERTEX_SHADER, vsSrc);
10
+ const program = gl.createProgram();
11
+ gl.attachShader(program, frag);
12
+ gl.attachShader(program, vert);
13
+ gl.bindAttribLocation(program, 0, "position");
14
+ gl.linkProgram(program);
15
+ return program;
16
+ }
17
+ function drawTriangle(gl) {
18
+ const buffer = gl.createBuffer();
19
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
20
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-2, -2, -2, 4, 4, -2]), gl.STREAM_DRAW);
21
+ gl.enableVertexAttribArray(0);
22
+ gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
23
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
24
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
25
+ gl.disableVertexAttribArray(0);
26
+ gl.deleteBuffer(buffer);
27
+ }
28
+ function readPixel(gl, x = 0, y = 0) {
29
+ const pixel = new Uint8Array(4);
30
+ gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel);
31
+ return pixel;
32
+ }
33
+ function pixelClose(a, b, tolerance = 3) {
34
+ for (let i = 0; i < 4; i++) {
35
+ if (Math.abs(a[i] - b[i]) > tolerance) return false;
36
+ }
37
+ return true;
38
+ }
39
+ function makeTestFBO(gl, width = 4, height = 4) {
40
+ const fb = gl.createFramebuffer();
41
+ const colorTex = gl.createTexture();
42
+ gl.bindTexture(gl.TEXTURE_2D, colorTex);
43
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
44
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
45
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
46
+ gl.bindTexture(gl.TEXTURE_2D, null);
47
+ gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
48
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTex, 0);
49
+ gl.viewport(0, 0, width, height);
50
+ return { fb, colorTex, width, height };
51
+ }
52
+ function makeTestFBOWithDepth(gl, width = 4, height = 4) {
53
+ const base = makeTestFBO(gl, width, height);
54
+ const depthRb = gl.createRenderbuffer();
55
+ gl.bindRenderbuffer(gl.RENDERBUFFER, depthRb);
56
+ gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);
57
+ gl.bindRenderbuffer(gl.RENDERBUFFER, null);
58
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthRb);
59
+ return { ...base, depthRb };
60
+ }
61
+ function destroyTestFBO(gl, fbo) {
62
+ gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.fb);
63
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, null, 0);
64
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
65
+ gl.deleteTexture(fbo.colorTex);
66
+ gl.deleteFramebuffer(fbo.fb);
67
+ }
68
+ function destroyTestFBOWithDepth(gl, fbo) {
69
+ gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.fb);
70
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, null, 0);
71
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, null);
72
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
73
+ gl.deleteTexture(fbo.colorTex);
74
+ gl.deleteRenderbuffer(fbo.depthRb);
75
+ gl.deleteFramebuffer(fbo.fb);
76
+ }
77
+ export {
78
+ destroyTestFBO,
79
+ destroyTestFBOWithDepth,
80
+ drawTriangle,
81
+ makeProgram,
82
+ makeShader,
83
+ makeTestFBO,
84
+ makeTestFBOWithDepth,
85
+ pixelClose,
86
+ readPixel
87
+ };
package/lib/esm/test.js CHANGED
@@ -1,3 +1,7 @@
1
1
  import { run } from "@gjsify/unit";
2
2
  import testSuite from "./index.spec.js";
3
- run({ testSuite });
3
+ import webgl2TestSuite from "./webgl2.spec.js";
4
+ run({ testSuite: async () => {
5
+ await testSuite();
6
+ await webgl2TestSuite();
7
+ } });
package/lib/esm/utils.js CHANGED
@@ -115,7 +115,7 @@ function arrayToUint8Array(array) {
115
115
  throw new Error("Can't unpack typed array!");
116
116
  }
117
117
  function Uint8ArrayToVariant(array) {
118
- const variant = new GLib.Variant("ay", Array.from(array || []));
118
+ const variant = new GLib.Variant("ay", array);
119
119
  return variant;
120
120
  }
121
121
  function boolArray(array) {
@@ -1,4 +1,4 @@
1
- class GjsifyWebGLActiveInfo {
1
+ class WebGLActiveInfo {
2
2
  constructor(_) {
3
3
  this.size = _.size;
4
4
  this.type = _.type;
@@ -6,5 +6,5 @@ class GjsifyWebGLActiveInfo {
6
6
  }
7
7
  }
8
8
  export {
9
- GjsifyWebGLActiveInfo as WebGLActiveInfo
9
+ WebGLActiveInfo
10
10
  };
@@ -1,5 +1,5 @@
1
1
  import { Linkable } from "./linkable.js";
2
- class GjsifyWebGLBuffer extends Linkable {
2
+ class WebGLBuffer extends Linkable {
3
3
  constructor(_, ctx) {
4
4
  super(_);
5
5
  this._size = 0;
@@ -13,6 +13,5 @@ class GjsifyWebGLBuffer extends Linkable {
13
13
  }
14
14
  }
15
15
  export {
16
- GjsifyWebGLBuffer,
17
- GjsifyWebGLBuffer as WebGLBuffer
16
+ WebGLBuffer
18
17
  };
@@ -1,4 +1,4 @@
1
- class GjsifyWebGLContextAttributes {
1
+ class WebGLContextAttributes {
2
2
  constructor(alpha, depth, stencil, antialias, premultipliedAlpha, preserveDrawingBuffer, preferLowPowerToHighPerformance, failIfMajorPerformanceCaveat) {
3
3
  this.alpha = alpha;
4
4
  this.depth = depth;
@@ -19,6 +19,5 @@ class GjsifyWebGLContextAttributes {
19
19
  }
20
20
  }
21
21
  export {
22
- GjsifyWebGLContextAttributes,
23
- GjsifyWebGLContextAttributes as WebGLContextAttributes
22
+ WebGLContextAttributes
24
23
  };
@@ -1,5 +1,5 @@
1
1
  import { Linkable } from "./linkable.js";
2
- class GjsifyWebGLFramebuffer extends Linkable {
2
+ class WebGLFramebuffer extends Linkable {
3
3
  constructor(_, ctx) {
4
4
  super(_);
5
5
  this._binding = 0;
@@ -100,10 +100,9 @@ class GjsifyWebGLFramebuffer extends Linkable {
100
100
  _performDelete() {
101
101
  const ctx = this._ctx;
102
102
  delete ctx._framebuffers[this._ | 0];
103
- ctx.deleteFramebuffer.call(ctx, this);
103
+ ctx._native.deleteFramebuffer(this._ | 0);
104
104
  }
105
105
  }
106
106
  export {
107
- GjsifyWebGLFramebuffer,
108
- GjsifyWebGLFramebuffer as WebGLFramebuffer
107
+ WebGLFramebuffer
109
108
  };
@@ -1,5 +1,5 @@
1
1
  import { Linkable } from "./linkable.js";
2
- class GjsifyWebGLProgram extends Linkable {
2
+ class WebGLProgram extends Linkable {
3
3
  constructor(_, ctx) {
4
4
  super(_);
5
5
  this._linkCount = 0;
@@ -21,6 +21,5 @@ class GjsifyWebGLProgram extends Linkable {
21
21
  }
22
22
  }
23
23
  export {
24
- GjsifyWebGLProgram,
25
- GjsifyWebGLProgram as WebGLProgram
24
+ WebGLProgram
26
25
  };
@@ -0,0 +1,15 @@
1
+ import { Linkable } from "./linkable.js";
2
+ class WebGLQuery extends Linkable {
3
+ constructor(_, ctx) {
4
+ super(_);
5
+ this._ctx = ctx;
6
+ }
7
+ _performDelete() {
8
+ const ctx = this._ctx;
9
+ delete ctx._queries[this._ | 0];
10
+ ctx._native2.deleteQuery(this._ | 0);
11
+ }
12
+ }
13
+ export {
14
+ WebGLQuery
15
+ };
@@ -1,5 +1,5 @@
1
1
  import { Linkable } from "./linkable.js";
2
- class GjsifyWebGLRenderbuffer extends Linkable {
2
+ class WebGLRenderbuffer extends Linkable {
3
3
  constructor(_, ctx) {
4
4
  super(_);
5
5
  this._binding = 0;
@@ -19,6 +19,5 @@ class GjsifyWebGLRenderbuffer extends Linkable {
19
19
  }
20
20
  }
21
21
  export {
22
- GjsifyWebGLRenderbuffer,
23
- GjsifyWebGLRenderbuffer as WebGLRenderbuffer
22
+ WebGLRenderbuffer
24
23
  };