webgl2-sdf 0.0.3 → 0.0.4

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 (73) hide show
  1. package/browser/index.min.js +1 -1
  2. package/node/generate-sdf.d.ts +3 -2
  3. package/node/generate-sdf.js +5 -6
  4. package/node/generate-sdf.js.map +1 -1
  5. package/node/index.d.ts +2 -0
  6. package/node/index.js +2 -0
  7. package/node/index.js.map +1 -1
  8. package/node/main-program.js +0 -1
  9. package/node/main-program.js.map +1 -1
  10. package/node/prepare-buffers.js +4 -6
  11. package/node/prepare-buffers.js.map +1 -1
  12. package/node/shaders/main.vertex.d.ts +1 -1
  13. package/node/shaders/main.vertex.js +0 -1
  14. package/node/shaders/main.vertex.js.map +1 -1
  15. package/node/types/gl-context.d.ts +0 -1
  16. package/node/types/program.d.ts +2 -0
  17. package/node/utils/calc-circs.js.map +1 -1
  18. package/node/utils/clip-line-segment-to-grid.d.ts +1 -1
  19. package/node/utils/clip-line-segment-to-grid.js +1 -4
  20. package/node/utils/clip-line-segment-to-grid.js.map +1 -1
  21. package/node/utils/clip-line-segment-to-strips.d.ts +2 -3
  22. package/node/utils/clip-line-segment-to-strips.js +5 -57
  23. package/node/utils/clip-line-segment-to-strips.js.map +1 -1
  24. package/node/utils/find-close-cells.js +14 -70
  25. package/node/utils/find-close-cells.js.map +1 -1
  26. package/node/utils/find-crossing-cells.js +0 -15
  27. package/node/utils/find-crossing-cells.js.map +1 -1
  28. package/node/utils/jump-idx.js +20 -18
  29. package/node/utils/jump-idx.js.map +1 -1
  30. package/node/webgl-utils/free-gl-context.d.ts +3 -0
  31. package/node/webgl-utils/free-gl-context.js +26 -0
  32. package/node/webgl-utils/free-gl-context.js.map +1 -0
  33. package/node/webgl-utils/get-gl-context.d.ts +2 -2
  34. package/node/webgl-utils/get-gl-context.js +6 -9
  35. package/node/webgl-utils/get-gl-context.js.map +1 -1
  36. package/node/webgl-utils/set-attribute.js +1 -1
  37. package/node/webgl-utils/set-attribute.js.map +1 -1
  38. package/node/webgl-utils/set-uniform-block.js +1 -3
  39. package/node/webgl-utils/set-uniform-block.js.map +1 -1
  40. package/node/webgl-utils/use-program.js +13 -3
  41. package/node/webgl-utils/use-program.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/generate-sdf.ts +7 -5
  44. package/src/index.ts +2 -0
  45. package/src/main-program.ts +0 -1
  46. package/src/prepare-buffers.ts +5 -6
  47. package/src/shaders/main.vertex.ts +0 -1
  48. package/src/types/gl-context.ts +0 -1
  49. package/src/types/program.ts +2 -0
  50. package/src/utils/calc-circs.ts +0 -2
  51. package/src/utils/clip-line-segment-to-grid.ts +1 -5
  52. package/src/utils/clip-line-segment-to-strips.ts +6 -73
  53. package/src/utils/find-close-cells.ts +27 -87
  54. package/src/utils/find-crossing-cells.ts +1 -18
  55. package/src/utils/jump-idx.ts +25 -20
  56. package/src/webgl-utils/free-gl-context.ts +35 -0
  57. package/src/webgl-utils/get-gl-context.ts +6 -9
  58. package/src/webgl-utils/set-attribute.ts +1 -1
  59. package/src/webgl-utils/set-uniform-block.ts +1 -3
  60. package/src/webgl-utils/use-program.ts +14 -3
  61. package/node/debug-shaders.d.ts +0 -9
  62. package/node/types/strip.d.ts +0 -8
  63. package/node/types/strip.js +0 -2
  64. package/node/types/strip.js.map +0 -1
  65. package/node/utils/create-empty-strips.d.ts +0 -7
  66. package/node/utils/create-empty-strips.js +0 -16
  67. package/node/utils/create-empty-strips.js.map +0 -1
  68. package/node/utils/distance-seg-to-p.d.ts +0 -5
  69. package/node/utils/distance-seg-to-p.js +0 -35
  70. package/node/utils/distance-seg-to-p.js.map +0 -1
  71. package/node/webgl2.d.ts +0 -2
  72. package/src/types/strip.ts +0 -11
  73. package/src/utils/create-empty-strips.ts +0 -21
@@ -1,8 +1,7 @@
1
1
  import { ROW_COUNT } from "../row-count.js";
2
2
  import { circsCache } from "./calc-circs.js";
3
- import { distanceSegToP } from "./distance-seg-to-p.js";
4
3
  import { jumpIdx } from "./jump-idx.js";
5
- const { min, SQRT2 } = Math;
4
+ const { min, max, SQRT2 } = Math;
6
5
  function findCloseCells(grid, colCount, cellSize, maxDistance, padCount) {
7
6
  const findCloseCellsFor_ = findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount);
8
7
  let _minD = 0; // minimum for previous row, col 0
@@ -22,15 +21,17 @@ function findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount) {
22
21
  // reduce current circle search range since we moved one square
23
22
  let k = jumpIdx((_minD - SQRT2 * cellSize) / cellSize);
24
23
  let minD = Number.POSITIVE_INFINITY;
25
- while (k < circsCache.length) {
26
- const from = circsCache[k].from;
24
+ while (true) {
25
+ if (k >= circsCache.length) {
26
+ minD = cellSize * (circsCache[circsCache.length - 1].from - SQRT2);
27
+ break;
28
+ }
29
+ const { u, v, from } = circsCache[k];
27
30
  // `SQRT2` to account for diagonal
28
31
  if (cellSize * from > maxDistance + SQRT2 * cellSize) {
32
+ minD = cellSize * (from - 2 * SQRT2);
29
33
  break;
30
34
  }
31
- // uncomment loop below to search all equidistant squares
32
- // while (circsCache?.[k].from === from) {
33
- const { u, v } = circsCache[k];
34
35
  const u_ = u + i;
35
36
  const v_ = v + j;
36
37
  if (u_ < 0 || u_ >= colCount + 2 * padCount ||
@@ -39,29 +40,18 @@ function findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount) {
39
40
  continue;
40
41
  }
41
42
  const { lineSegs } = grid[u_][v_];
42
- for (let l = 0; l < lineSegs.length; l++) {
43
- // center of square
44
- const c = [(i - padCount + 0.5) * cellSize, (j - padCount + 0.5) * cellSize];
45
- const d = distanceSegToP(lineSegs[l], c);
46
- if (d < minD) {
47
- minD = d;
48
- }
49
- }
50
- k++;
51
- // }
52
- if (minD !== Number.POSITIVE_INFINITY) {
43
+ if (lineSegs.length > 0) {
44
+ minD = cellSize * (from - SQRT2);
53
45
  break;
54
46
  }
55
- }
56
- if (minD === Number.POSITIVE_INFINITY) {
57
- return min(maxDistance + SQRT2 * cellSize, cellSize * circsCache[circsCache.length - 1].from);
47
+ k++;
58
48
  }
59
49
  const { closeCells } = grid[i][j];
60
- let l = jumpIdx((_minD - 2 * SQRT2 * cellSize) / cellSize);
50
+ let l = max(0, k - 1);
61
51
  while (l < circsCache.length) {
62
52
  const { from, u, v } = circsCache[l];
63
- // `SQRT2` to account for diagonal
64
- if (cellSize * from > min(minD, maxDistance) + SQRT2 * cellSize) {
53
+ // `SQRT2` to account for diagonal (times 2 since we minused it off earlier)
54
+ if (cellSize * from > min(minD, maxDistance) + 2 * SQRT2 * cellSize) {
65
55
  break;
66
56
  }
67
57
  const u_ = u + i;
@@ -81,50 +71,4 @@ function findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount) {
81
71
  };
82
72
  }
83
73
  export { findCloseCells };
84
- // Quokka tests
85
- // const grid: Cell[][] = [
86
- // [
87
- // { u: 0, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
88
- // { u: 0, v: 1, lineSegs: [], closeCells: [], crossingCells: [] },
89
- // { u: 0, v: 2, lineSegs: [], closeCells: [], crossingCells: [] },
90
- // { u: 0, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
91
- // ],
92
- // [
93
- // { u: 1, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
94
- // {
95
- // u: 1, v: 1,
96
- // lineSegs: [[[175, 163], [175, 355]]],
97
- // closeCells: [], crossingCells: []
98
- // },
99
- // {
100
- // u: 1, v: 2,
101
- // lineSegs: [[[175, 355], [335, 355]]],
102
- // closeCells: [], crossingCells: []
103
- // },
104
- // { u: 1, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
105
- // ],
106
- // [
107
- // { u: 2, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
108
- // {
109
- // u: 2, v: 1,
110
- // lineSegs: [[[335, 163], [175, 163]]],
111
- // closeCells: [], crossingCells: []
112
- // },
113
- // {
114
- // u: 2, v: 2,
115
- // lineSegs: [[[335, 355], [335, 163]]],
116
- // closeCells: [], crossingCells: []
117
- // },
118
- // { u: 2, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
119
- // ],
120
- // [
121
- // { u: 3, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
122
- // { u: 3, v: 1, lineSegs: [], closeCells: [], crossingCells: [] },
123
- // { u: 3, v: 2, lineSegs: [], closeCells: [], crossingCells: [] },
124
- // { u: 3, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
125
- // ]
126
- // ];
127
- // findCloseCells(grid);
128
- // const v = grid.map(cells => cells.map(c => ({ u: c.u, v: c.v, closeCells: c.closeCells })));
129
- // v;//?
130
74
  //# sourceMappingURL=find-close-cells.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-close-cells.js","sourceRoot":"","sources":["../../src/utils/find-close-cells.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-close-cells.js","sourceRoot":"","sources":["../../src/utils/find-close-cells.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  import { ROW_COUNT } from "../row-count.js";
2
- // TODO - simplify?
3
- // TODO - could be made much faster by also checking intersections here
4
- // and passing the result to the next cell
5
2
  function findCrossingCells(grid, colCount, padCount) {
6
3
  for (let i = padCount; i < colCount + padCount; i++) {
7
4
  for (let j = padCount; j < ROW_COUNT + padCount; j++) {
@@ -16,16 +13,4 @@ function findCrossingCells(grid, colCount, padCount) {
16
13
  }
17
14
  }
18
15
  export { findCrossingCells };
19
- // Quokka tests
20
- // import { createEmptyGrid } from "./create-empty-grid";
21
- // // const g = createEmptyGrid(0);
22
- // const g = createEmptyGrid(0);
23
- // // g[0][0].lineSegs.push([[]]);
24
- // g[2][0].lineSegs.push([[]]);
25
- // g[2][2].lineSegs.push([[]]);
26
- // findCrossingCells(g);
27
- // let r = 2;
28
- // // g.map(r => r.map(c => c.crossingCells))[r].map(v => v);//?
29
- // g.map(r => r.map(c => c.crossingCells))[r].map(v => v.map(r => r[1]));//?
30
- // g;//?
31
16
  //# sourceMappingURL=find-crossing-cells.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-crossing-cells.js","sourceRoot":"","sources":["../../src/utils/find-crossing-cells.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,mBAAmB;AACnB,uEAAuE;AACvE,0CAA0C;AAC1C,SAAS,iBAAiB,CAClB,IAAc,EACd,QAAgB,EAChB,QAAgB;IAEpB,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACnD,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,GAAC,QAAQ,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAG5B,eAAe;AACf,yDAAyD;AACzD,mCAAmC;AACnC,gCAAgC;AAChC,kCAAkC;AAClC,+BAA+B;AAC/B,+BAA+B;AAC/B,wBAAwB;AACxB,aAAa;AACb,gEAAgE;AAChE,4EAA4E;AAC5E,QAAQ"}
1
+ {"version":3,"file":"find-crossing-cells.js","sourceRoot":"","sources":["../../src/utils/find-crossing-cells.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,SAAS,iBAAiB,CAClB,IAAc,EACd,QAAgB,EAChB,QAAgB;IAEpB,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACnD,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,GAAC,QAAQ,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { circsCache } from "./calc-circs.js";
2
- const { trunc, max, E } = Math;
2
+ const { max, E } = Math;
3
3
  /**
4
4
  * @param v
5
5
  */
@@ -8,10 +8,9 @@ function binarySearchRange(v) {
8
8
  let max = circsCache.length - 1;
9
9
  let mid = 0;
10
10
  while (min <= max) {
11
- mid = (min + max) >>> 1; //?
11
+ mid = (min + max) >>> 1;
12
12
  const midVal = circsCache[mid].from;
13
13
  if (midVal === v) {
14
- // return [min,mid,max];
15
14
  return mid;
16
15
  }
17
16
  else if (v > midVal) {
@@ -21,9 +20,19 @@ function binarySearchRange(v) {
21
20
  max = mid - 1;
22
21
  }
23
22
  }
24
- // return [min,mid,max];
25
23
  return mid;
26
24
  }
25
+ function jumpIdx(c) {
26
+ let idx = binarySearchRange(c);
27
+ c = max(0, c);
28
+ if (idx === 0) {
29
+ return 0;
30
+ }
31
+ while (circsCache[idx].from === circsCache[idx - 1].from) {
32
+ idx--;
33
+ }
34
+ return idx;
35
+ }
27
36
  // const [Q,R] = [10.606601717798213, 35.531676008879735];
28
37
  // const [A1,B1,F1] = [102.42126, 0.153169, -117.56077];
29
38
  // const [A2,B2,C2,D2,F2] = [-0.000660087, 0.388148, 841.25744, -0.0529616, -1089.49916];
@@ -43,25 +52,18 @@ function binarySearchRange(v) {
43
52
  // while (circsCache[idx + 1].from < c) { idx++; }
44
53
  // return idx;
45
54
  // }
46
- function jumpIdx(c) {
47
- let idx = binarySearchRange(c);
48
- c = max(0, c);
49
- while (idx !== 0 && circsCache[idx].from >= c) {
50
- idx--;
51
- }
52
- while (idx < circsCache.length - 2 && circsCache[idx + 1].from < c) {
53
- idx++;
54
- }
55
- return idx;
56
- }
57
55
  export { jumpIdx };
58
56
  // Quokka tests
59
- // // circsCache.slice(0,30).map(c => c.from);//?
57
+ // circsCache.slice(0,10);//?
58
+ // circsCache.slice(0,30).map(c => c.from);//?
59
+ // circsCache[5].from;//?
60
60
  // circsCache[12].from;//?
61
61
  // circsCache[15].from;//?
62
62
  // // circsCache.length;//?
63
- // // jumpIdxOld(1.5811388300841898);//?
64
- // jumpIdx(0.5);//?
63
+ // jumpIdxOld(1.5811388300841898);//?
64
+ // const v = (53.08771209782213 - Math.SQRT2*24.09375)/24.09375;//?
65
+ // jumpIdx(v);//?
66
+ // circsCache[8].from;//?
65
67
  // binarySearchRange(1.5811388300841898);//?
66
68
  // jumpIdxOld(3.7);//?
67
69
  // jumpIdx(3.7);//?
@@ -1 +1 @@
1
- {"version":3,"file":"jump-idx.js","sourceRoot":"","sources":["../../src/utils/jump-idx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AAG/B;;GAEG;AACH,SAAS,iBAAiB,CAClB,CAAS;IAEb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA,GAAG;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACf,wBAAwB;YACxB,OAAO,GAAG,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACpB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,0DAA0D;AAC1D,wDAAwD;AACxD,yFAAyF;AACzF,yFAAyF;AACzF,uBAAuB;AACvB,uBAAuB;AAEvB,uBAAuB;AACvB,kEAAkE;AAClE,4EAA4E;AAC5E,sBAAsB;AACtB,gCAAgC;AAChC,mBAAmB;AACnB,kDAAkD;AAClD,oDAAoD;AAEpD,qBAAqB;AACrB,kDAAkD;AAClD,sDAAsD;AAEtD,kBAAkB;AAClB,IAAI;AAGJ,SAAS,OAAO,CACR,CAAS;IAEb,IAAI,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE/B,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,OAAO,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;QAAC,GAAG,EAAE,CAAC;IAAC,CAAC;IACzD,OAAO,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAAC,GAAG,EAAE,CAAC;IAAC,CAAC;IAE9E,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,OAAO,EAAE,CAAA;AAGlB,eAAe;AACf,iDAAiD;AACjD,0BAA0B;AAC1B,0BAA0B;AAC1B,2BAA2B;AAE3B,wCAAwC;AACxC,mBAAmB;AACnB,4CAA4C;AAG5C,sBAAsB;AACtB,mBAAmB;AACnB,gCAAgC;AAEhC,oBAAoB;AACpB,iBAAiB;AACjB,8BAA8B;AAE9B,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,wBAAwB;AACxB,qBAAqB;AACrB,4BAA4B"}
1
+ {"version":3,"file":"jump-idx.js","sourceRoot":"","sources":["../../src/utils/jump-idx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AAGxB;;GAEG;AACH,SAAS,iBAAiB,CAClB,CAAS;IAEb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,GAAG,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACpB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,SAAS,OAAO,CACR,CAAS;IAEb,IAAI,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE/B,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAE5B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,EAAE,CAAC;IACV,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,0DAA0D;AAC1D,wDAAwD;AACxD,yFAAyF;AACzF,yFAAyF;AACzF,uBAAuB;AACvB,uBAAuB;AAEvB,uBAAuB;AACvB,kEAAkE;AAClE,4EAA4E;AAC5E,sBAAsB;AACtB,gCAAgC;AAChC,mBAAmB;AACnB,kDAAkD;AAClD,oDAAoD;AAEpD,qBAAqB;AACrB,kDAAkD;AAClD,sDAAsD;AAEtD,kBAAkB;AAClB,IAAI;AAGJ,OAAO,EAAE,OAAO,EAAE,CAAA;AAGlB,eAAe;AACf,6BAA6B;AAC7B,8CAA8C;AAC9C,yBAAyB;AACzB,0BAA0B;AAC1B,0BAA0B;AAC1B,2BAA2B;AAE3B,qCAAqC;AACrC,mEAAmE;AACnE,iBAAiB;AACjB,yBAAyB;AACzB,4CAA4C;AAG5C,sBAAsB;AACtB,mBAAmB;AACnB,gCAAgC;AAEhC,oBAAoB;AACpB,iBAAiB;AACjB,8BAA8B;AAE9B,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,wBAAwB;AACxB,qBAAqB;AACrB,4BAA4B"}
@@ -0,0 +1,3 @@
1
+ import { GlContext } from '../types/gl-context.js';
2
+ declare function freeGlContext(glContext: GlContext | undefined): void;
3
+ export { freeGlContext };
@@ -0,0 +1,26 @@
1
+ function freeGlContext(glContext) {
2
+ if (glContext === undefined) {
3
+ return;
4
+ }
5
+ const { gl, programs, textures } = glContext;
6
+ for (let key in programs) {
7
+ const { attributes, fragmentShader, vertexShader, uniformBlocks, program } = programs[key];
8
+ for (let key in uniformBlocks) {
9
+ const { buf } = uniformBlocks[key];
10
+ gl.deleteBuffer(buf);
11
+ }
12
+ for (let key in attributes) {
13
+ const { buf } = attributes[key];
14
+ gl.deleteBuffer(buf);
15
+ }
16
+ gl.deleteShader(fragmentShader);
17
+ gl.deleteShader(vertexShader);
18
+ gl.deleteProgram(program);
19
+ }
20
+ for (let key in textures) {
21
+ const { tex } = textures[key];
22
+ gl.deleteTexture(tex);
23
+ }
24
+ }
25
+ export { freeGlContext };
26
+ //# sourceMappingURL=free-gl-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free-gl-context.js","sourceRoot":"","sources":["../../src/webgl-utils/free-gl-context.ts"],"names":[],"mappings":"AAGA,SAAS,aAAa,CACd,SAAgC;IAEpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IAExC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAE7C,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE3F,KAAK,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAChC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAChC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAE1B,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -6,5 +6,5 @@ import type { GlContext } from "../types/gl-context.js";
6
6
  * @param gl the `WebGL2RenderingContext` context to wrap
7
7
  * @param callback
8
8
  */
9
- declare function getWebGLContext<T>(gl: WebGL2RenderingContext): GlContext;
10
- export { getWebGLContext };
9
+ declare function getWebGlContext(gl: WebGL2RenderingContext): GlContext;
10
+ export { getWebGlContext };
@@ -6,7 +6,7 @@ const cache = new WeakMap();
6
6
  * @param gl the `WebGL2RenderingContext` context to wrap
7
7
  * @param callback
8
8
  */
9
- function getWebGLContext(gl) {
9
+ function getWebGlContext(gl) {
10
10
  {
11
11
  const glContext = cache.get(gl);
12
12
  if (glContext) {
@@ -15,29 +15,26 @@ function getWebGLContext(gl) {
15
15
  }
16
16
  const programs = {};
17
17
  const textures = {};
18
- const framebufferStack = [];
19
18
  gl.canvas.addEventListener('webglcontextlost', e => {
20
- handleContextLoss();
19
+ onContextLoss();
21
20
  e.preventDefault();
22
21
  }, false);
23
22
  const glContext = {
24
23
  gl,
25
- onContextLoss: handleContextLoss,
24
+ onContextLoss,
26
25
  textures,
27
- programs,
28
- framebufferStack
26
+ programs
29
27
  };
30
28
  cache.set(gl, glContext);
31
29
  return glContext;
32
30
  ////////////////////////
33
- function handleContextLoss() {
31
+ function onContextLoss() {
34
32
  deleteAllProps(programs);
35
33
  deleteAllProps(textures);
36
- framebufferStack.length = 0;
37
34
  }
38
35
  }
39
36
  function deleteAllProps(o) {
40
37
  Object.keys(o).forEach(key => { delete o[key]; });
41
38
  }
42
- export { getWebGLContext };
39
+ export { getWebGlContext };
43
40
  //# sourceMappingURL=get-gl-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-gl-context.js","sourceRoot":"","sources":["../../src/webgl-utils/get-gl-context.ts"],"names":[],"mappings":"AAKA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAqC,CAAC;AAG/D;;;;;;GAMG;AACH,SAAS,eAAe,CAChB,EAA0B;IAE9B,CAAC;QACG,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,SAAS,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAgC,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAgC,EAAE,CAAC;IACjD,MAAM,gBAAgB,GAAuB,EAAE,CAAC;IAEhD,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;QAC/C,iBAAiB,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,MAAM,SAAS,GAAc;QACzB,EAAE;QACF,aAAa,EAAE,iBAAiB;QAChC,QAAQ;QACR,QAAQ;QACR,gBAAgB;KACnB,CAAC;IAEF,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAEzB,OAAO,SAAS,CAAC;IAGjB,wBAAwB;IAExB,SAAS,iBAAiB;QACtB,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzB,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;AACL,CAAC;AAGD,SAAS,cAAc,CAAC,CAA6B;IACjD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAGD,OAAO,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"get-gl-context.js","sourceRoot":"","sources":["../../src/webgl-utils/get-gl-context.ts"],"names":[],"mappings":"AAKA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAqC,CAAC;AAG/D;;;;;;GAMG;AACH,SAAS,eAAe,CAChB,EAA0B;IAE9B,CAAC;QACG,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,SAAS,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAgC,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAgC,EAAE,CAAC;IAEjD,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;QAC/C,aAAa,EAAE,CAAC;QAChB,CAAC,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,MAAM,SAAS,GAAc;QACzB,EAAE;QACF,aAAa;QACb,QAAQ;QACR,QAAQ;KACX,CAAC;IAEF,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAEzB,OAAO,SAAS,CAAC;IAGjB,wBAAwB;IAExB,SAAS,aAAa;QAClB,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzB,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC;AAGD,SAAS,cAAc,CAAC,CAA6B;IACjD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAGD,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -26,7 +26,7 @@ function setAttribute(program) {
26
26
  return (name, size, type, usage, data, instancingDivisor = 0, stride = 0, offset = 0) => {
27
27
  const { gl, attributes } = program;
28
28
  const attr = attributes[name] = attributes[name] ?? {
29
- buf: gl.createBuffer(), // TODO should we destroy our buffers?
29
+ buf: gl.createBuffer(),
30
30
  loc: gl.getAttribLocation(program.program, name),
31
31
  data: null
32
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"set-attribute.js","sourceRoot":"","sources":["../../src/webgl-utils/set-attribute.ts"],"names":[],"mappings":"AAKA,MAAM;AACF,gBAAgB;AAChB,IAAI,EAAa,OAAO;AACxB,aAAa,EAAI,OAAO;AACxB,KAAK,EAAY,OAAO;AACxB,cAAc,EAAG,OAAO;AACxB,GAAG,EAAc,OAAO;AACxB,YAAY,EAAK,OAAO;AACxB,cAAc;AACd,KAAK,EAAY,OAAO;AACxB,UAAU,EAAO,OAAO;AAExB,kBAAkB,EAAY,QAAQ;AACtC,2BAA2B,CAAG,QAAQ;EACzC,GAAG,sBAAsB,CAAC;AAG3B;;;;;;;;;GASG;AACH,SAAS,YAAY,CACb,OAAgB;IAEpB,OAAO,CAAC,IAAY,EACZ,IAAY,EACZ,IAAgB,EAChB,KAAc,EACd,IAAoC,EACpC,iBAAiB,GAAG,CAAC,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,CAAC,EAAE,EAAE;QAElB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI;YAChD,GAAG,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,sCAAsC;YAC9D,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;YAChD,IAAI,EAAE,IAAI;SACb,CAAA;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE1B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,iBAAiB,KAAK,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;IACL,CAAC,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"set-attribute.js","sourceRoot":"","sources":["../../src/webgl-utils/set-attribute.ts"],"names":[],"mappings":"AAKA,MAAM;AACF,gBAAgB;AAChB,IAAI,EAAa,OAAO;AACxB,aAAa,EAAI,OAAO;AACxB,KAAK,EAAY,OAAO;AACxB,cAAc,EAAG,OAAO;AACxB,GAAG,EAAc,OAAO;AACxB,YAAY,EAAK,OAAO;AACxB,cAAc;AACd,KAAK,EAAY,OAAO;AACxB,UAAU,EAAO,OAAO;AAExB,kBAAkB,EAAY,QAAQ;AACtC,2BAA2B,CAAG,QAAQ;EACzC,GAAG,sBAAsB,CAAC;AAG3B;;;;;;;;;GASG;AACH,SAAS,YAAY,CACb,OAAgB;IAEpB,OAAO,CAAC,IAAY,EACZ,IAAY,EACZ,IAAgB,EAChB,KAAc,EACd,IAAoC,EACpC,iBAAiB,GAAG,CAAC,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,CAAC,EAAE,EAAE;QAElB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI;YAChD,GAAG,EAAE,EAAE,CAAC,YAAY,EAAE;YACtB,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;YAChD,IAAI,EAAE,IAAI;SACb,CAAA;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE1B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,iBAAiB,KAAK,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;IACL,CAAC,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -21,10 +21,8 @@ function setUniformBlock(program_) {
21
21
  gl.bindBuffer(gl.UNIFORM_BUFFER, uniformBlock.buf);
22
22
  }
23
23
  const { buf } = uniformBlock;
24
- gl.bufferData(gl.UNIFORM_BUFFER, buffer, gl.DYNAMIC_DRAW);
25
- // gl.bindBuffer(gl.UNIFORM_BUFFER, null);
24
+ gl.bufferData(gl.UNIFORM_BUFFER, buffer, gl.STATIC_DRAW);
26
25
  gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, buf);
27
- // gl.bindBufferRange(gl.UNIFORM_BUFFER, bindingPoint, ubo, 0, sizeInBytes);
28
26
  };
29
27
  }
30
28
  export { setUniformBlock };
@@ -1 +1 @@
1
- {"version":3,"file":"set-uniform-block.js","sourceRoot":"","sources":["../../src/webgl-utils/set-uniform-block.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,SAAS,eAAe,CAChB,QAAiB;IAErB,OAAO,CAAC,SAAiB,EACjB,YAAoB,EACpB,MAA+B,EAAE,EAAE;QAEvC,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAEhD,yCAAyC;QAEzC,IAAI,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC/D,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YAE9B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAEtC,YAAY,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;YAC9C,aAAa,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAE7B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAC1D,0CAA0C;QAC1C,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QACxD,4EAA4E;IAChF,CAAC,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"set-uniform-block.js","sourceRoot":"","sources":["../../src/webgl-utils/set-uniform-block.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,SAAS,eAAe,CAChB,QAAiB;IAErB,OAAO,CAAC,SAAiB,EACjB,YAAoB,EACpB,MAA+B,EAAE,EAAE;QAEvC,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAEhD,yCAAyC;QAEzC,IAAI,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC/D,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YAE9B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAEtC,YAAY,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;YAC9C,aAAa,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAE7B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QACzD,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -21,10 +21,20 @@ function initProgram(glContext, name, vert, frag) {
21
21
  const uniforms = {};
22
22
  const uniformBlocks = {};
23
23
  const program = gl.createProgram();
24
- gl.attachShader(program, compileShader(gl, vert, gl.VERTEX_SHADER));
25
- gl.attachShader(program, compileShader(gl, frag, gl.FRAGMENT_SHADER));
24
+ const vertexShader = compileShader(gl, vert, gl.VERTEX_SHADER);
25
+ const fragmentShader = compileShader(gl, frag, gl.FRAGMENT_SHADER);
26
+ gl.attachShader(program, vertexShader);
27
+ gl.attachShader(program, fragmentShader);
26
28
  gl.linkProgram(program);
27
- programs[name] = { gl, program, attributes, uniforms, uniformBlocks };
29
+ programs[name] = {
30
+ gl,
31
+ program,
32
+ attributes,
33
+ uniforms,
34
+ uniformBlocks,
35
+ vertexShader,
36
+ fragmentShader
37
+ };
28
38
  return programs[name];
29
39
  }
30
40
  export { initProgram };
@@ -1 +1 @@
1
- {"version":3,"file":"use-program.js","sourceRoot":"","sources":["../../src/webgl-utils/use-program.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CACR,SAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,IAAY;IAEpB,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAEnC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAkC,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAoD,EAAE,CAAC;IACrE,MAAM,aAAa,GAAqC,EAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;IACnC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAExB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAEtE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"use-program.js","sourceRoot":"","sources":["../../src/webgl-utils/use-program.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CACR,SAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,IAAY;IAEpB,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAEnC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAkC,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAoD,EAAE,CAAC;IACrE,MAAM,aAAa,GAAqC,EAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;IAEnE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACvC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACzC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAExB,QAAQ,CAAC,IAAI,CAAC,GAAG;QACb,EAAE;QACF,OAAO;QACP,UAAU;QACV,QAAQ;QACR,aAAa;QACb,YAAY;QACZ,cAAc;KACjB,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "webgl2-sdf",
3
3
  "sideEffects": false,
4
4
  "description": "Fast sdf generator from bezier curves or svg string.",
5
- "version": "0.0.3",
5
+ "version": "0.0.4",
6
6
  "author": {
7
7
  "name": "Floris Steenkamp"
8
8
  },
@@ -1,4 +1,4 @@
1
- import { getWebGLContext } from './webgl-utils/get-gl-context.js';
1
+ // import { getWebGLContext } from './webgl-utils/get-gl-context.js';
2
2
  import { main_Vertex } from './shaders/main.vertex.js';
3
3
  import { getMainFragment } from './shaders/main.fragment.js';
4
4
  import { initProgram } from './webgl-utils/use-program.js';
@@ -6,13 +6,14 @@ import { mainProgram } from './main-program.js';
6
6
  import { ROW_COUNT } from './row-count.js';
7
7
  import { getPathsFromStr } from './svg/get-paths-from-str.js';
8
8
  import { MAX_ASPECT_RATIO_BEFORE_STRETCH } from './max-aspect-ratio-before-stretch.js';
9
+ import { GlContext } from './types/gl-context.js';
9
10
  // import { debugShaders } from './debug-shaders.js';
10
11
 
11
12
  const { ceil, min, max } = Math;
12
13
 
13
14
 
14
15
  /**
15
- *
16
+ * TODO
16
17
  * @param gl
17
18
  * @param psss
18
19
  * @param width
@@ -28,7 +29,7 @@ const { ceil, min, max } = Math;
28
29
  * @param resolution
29
30
  */
30
31
  function generateIntoFramebuffer(
31
- gl: WebGL2RenderingContext,
32
+ glContext: GlContext,
32
33
  psss: (number[][])[][] | string,
33
34
  width: number,
34
35
  height: number,
@@ -37,7 +38,6 @@ function generateIntoFramebuffer(
37
38
  sdfExponent = 1,
38
39
  inclInside = true,
39
40
  inclOutside = true,
40
- // framebuffer: WebGLFramebuffer | null,
41
41
  x = 0, y = 0,
42
42
  channel = 0,
43
43
  resolution: 0.5|1 = 0.5) {
@@ -48,7 +48,7 @@ function generateIntoFramebuffer(
48
48
  ? getPathsFromStr(psss)
49
49
  : psss;
50
50
 
51
- const glContext = getWebGLContext(gl);
51
+ // const glContext = getWebGLContext(gl);
52
52
 
53
53
  const { onContextLoss } = glContext;
54
54
 
@@ -72,6 +72,8 @@ function generateIntoFramebuffer(
72
72
  main_Vertex, getMainFragment(colCount, padCount)
73
73
  );
74
74
 
75
+ const { gl } = glContext;
76
+
75
77
  gl.useProgram(programMain.program);
76
78
  mainProgram(
77
79
  glContext, programMain, resolution, psss_,
package/src/index.ts CHANGED
@@ -1,2 +1,4 @@
1
1
 
2
2
  export { generateIntoFramebuffer } from './generate-sdf.js';
3
+ export { freeGlContext } from './webgl-utils/free-gl-context.js';
4
+ export { getWebGlContext } from './webgl-utils/get-gl-context.js';
@@ -81,7 +81,6 @@ function mainProgram(
81
81
  setUniform_('1f', 'uMaxDistance', maxDistance);
82
82
  setUniform_('1f', 'uExponent', sdfExponent); // TODO
83
83
  setUniform_('1i', 'uIncl', (inclInside ? 1 : 0) + (inclOutside ? 2 : 0));
84
- setUniform_('1f', 'uStretch', stretch); // TODO
85
84
 
86
85
  setUniformBlock(programMain)('SegIdxRangePerCellBlock', 0, segIdxs_PerCell_Range_Arr);
87
86
  setUniformBlock(programMain)('SegIdxRangePerStripBlock', 1, segIdxs_PerStrip_Range_Arr);
@@ -5,10 +5,9 @@ import { createEmptyGrid } from './utils/create-empty-grid.js';
5
5
  import { findCrossingCells } from './utils/find-crossing-cells.js';
6
6
  import { TEX_WIDTH } from './tex-width.js';
7
7
  import { ROW_COUNT } from './row-count.js';
8
- import { createEmptyStrips } from './utils/create-empty-strips.js';
9
8
  import { clipLineSegmentToStrips } from './utils/clip-line-segment-to-strips.js';
10
9
  import { mapToViewbox } from './utils/map-to-viewbox.js';
11
- // import { sum } from './utils/sum.js';
10
+ // import { sum } from './utils/sum.js'; // testing
12
11
 
13
12
 
14
13
  function prepareBuffers(
@@ -28,11 +27,12 @@ function prepareBuffers(
28
27
 
29
28
  const lineSegs = bezierCurvesToLineSegs(psss_, resolution);
30
29
  const grid = createEmptyGrid(colCount, padCount);
31
- const strips = createEmptyStrips();
30
+ const strips = new Array(ROW_COUNT).fill(undefined).map(v => []);
31
+
32
32
  for (let i=0; i<lineSegs.length; i++) {
33
33
  const seg = lineSegs[i];
34
34
  // Split the line segment into multiple segments that fit within grid cells
35
- clipLineSegmentToGrid(grid, width, height, colCount, cellSize, seg, padCount); // add segments to grid
35
+ clipLineSegmentToGrid(grid, width, height, cellSize, seg, padCount); // add segments to grid
36
36
  clipLineSegmentToStrips(strips, height, seg); // add segments to strips
37
37
  }
38
38
 
@@ -96,8 +96,7 @@ function prepareBuffers(
96
96
  // Add line segs from strips
97
97
  const segIdxs_PerStrip_Range: [number,number][] = [];
98
98
  for (let i=0; i<ROW_COUNT; i++) {
99
- const strip = strips[i];
100
- const { lineSegs } = strip;
99
+ const lineSegs = strips[i];
101
100
 
102
101
  //////////
103
102
  const L = lineSegs.length;
@@ -5,7 +5,6 @@ const main_Vertex = /*glsl*/`#version 300 es
5
5
  precision highp float;
6
6
 
7
7
  uniform vec2 uWidthHeight;
8
- uniform float uStretch;
9
8
  in vec2 aUV;
10
9
  in ivec2 aCloseCellIdxRangePerCell;
11
10
  in ivec2 aCrossIdxRangePerCell;
@@ -20,7 +20,6 @@ interface GlContext {
20
20
  readonly gl: WebGL2RenderingContext;
21
21
  readonly textures: { [index:string]: Texture };
22
22
  readonly programs: { [index:string]: Program };
23
- readonly framebufferStack: WebGLFramebuffer[];
24
23
  readonly onContextLoss: () => void;
25
24
  }
26
25
 
@@ -8,6 +8,8 @@ interface Program {
8
8
  readonly attributes: { [index:string]: Attribute };
9
9
  readonly uniforms: { [index:string]: WebGLUniformLocation | null };
10
10
  readonly uniformBlocks: { [index:string]: UniformBlock };
11
+ readonly vertexShader: WebGLShader;
12
+ readonly fragmentShader: WebGLShader;
11
13
  }
12
14
 
13
15
 
@@ -50,8 +50,6 @@ function calcCircs() {
50
50
  ranges.sort((a,b) => (a.from - b.from));
51
51
  }
52
52
 
53
-
54
-
55
53
  return ranges;
56
54
  }
57
55
 
@@ -20,21 +20,17 @@ function clipLineSegmentToGrid(
20
20
  grid: Cell[][],
21
21
  width: number,
22
22
  height: number,
23
- colCount: number,
24
23
  cellSize: number,
25
24
  seg: number[][],
26
25
  padCount: number): void {
27
26
 
28
- /** `cellSize` *must* be a power of two */
29
- // const cellSize = width/ROW_COUNT;
30
-
31
27
  const padding = cellSize*padCount;
32
28
 
33
29
  const [[x0,y0],[x1,y1]] = seg;
34
30
 
35
31
  const paddedWidth = width + padding;
36
32
  const paddedHeight = height + padding;
37
- // TODO - investigate lines on edge and corners - ps could be length 4!!
33
+
38
34
  const ps = segBoxX(seg, [[-padding,-padding],[paddedWidth,paddedHeight]]);
39
35
 
40
36
  const p0IsInBox = x0 > -padding && x0 < paddedWidth && y0 > -padding && y0 < paddedHeight;