@luma.gl/engine 8.5.10 → 8.6.0-alpha.1

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 (263) hide show
  1. package/dist/animation/key-frames.d.ts +18 -0
  2. package/dist/animation/key-frames.d.ts.map +1 -0
  3. package/dist/{esm/animation → animation}/key-frames.js +13 -6
  4. package/dist/animation/key-frames.js.map +1 -0
  5. package/dist/animation/timeline.d.ts +51 -0
  6. package/dist/animation/timeline.d.ts.map +1 -0
  7. package/dist/{esm/animation → animation}/timeline.js +10 -5
  8. package/dist/animation/timeline.js.map +1 -0
  9. package/dist/bundle.d.ts +2 -0
  10. package/dist/bundle.d.ts.map +1 -0
  11. package/dist/bundle.js +5 -0
  12. package/dist/bundle.js.map +1 -0
  13. package/dist/geometries/cone-geometry.d.ts +10 -0
  14. package/dist/geometries/cone-geometry.d.ts.map +1 -0
  15. package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
  16. package/dist/geometries/cone-geometry.js.map +1 -0
  17. package/dist/geometries/cube-geometry.d.ts +9 -0
  18. package/dist/geometries/cube-geometry.d.ts.map +1 -0
  19. package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
  20. package/dist/geometries/cube-geometry.js.map +1 -0
  21. package/dist/geometries/cylinder-geometry.d.ts +10 -0
  22. package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
  23. package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
  24. package/dist/geometries/cylinder-geometry.js.map +1 -0
  25. package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
  26. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
  27. package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
  28. package/dist/geometries/ico-sphere-geometry.js.map +1 -0
  29. package/dist/geometries/plane-geometry.d.ts +10 -0
  30. package/dist/geometries/plane-geometry.d.ts.map +1 -0
  31. package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
  32. package/dist/geometries/plane-geometry.js.map +1 -0
  33. package/dist/geometries/sphere-geometry.d.ts +12 -0
  34. package/dist/geometries/sphere-geometry.d.ts.map +1 -0
  35. package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
  36. package/dist/geometries/sphere-geometry.js.map +1 -0
  37. package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
  38. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
  39. package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
  40. package/dist/geometries/truncated-cone-geometry.js.map +1 -0
  41. package/dist/geometry/geometry-utils.d.ts +2 -0
  42. package/dist/geometry/geometry-utils.d.ts.map +1 -0
  43. package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
  44. package/dist/geometry/geometry-utils.js.map +1 -0
  45. package/dist/geometry/geometry.d.ts +44 -0
  46. package/dist/geometry/geometry.d.ts.map +1 -0
  47. package/dist/{esm/geometry → geometry}/geometry.js +28 -19
  48. package/dist/geometry/geometry.js.map +1 -0
  49. package/dist/index.d.ts +16 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +16 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/animation-loop.d.ts +120 -0
  54. package/dist/lib/animation-loop.d.ts.map +1 -0
  55. package/dist/{esm/lib → lib}/animation-loop.js +135 -97
  56. package/dist/lib/animation-loop.js.map +1 -0
  57. package/dist/lib/model-utils.d.ts +4 -0
  58. package/dist/lib/model-utils.d.ts.map +1 -0
  59. package/dist/{esm/lib → lib}/model-utils.js +3 -2
  60. package/dist/lib/model-utils.js.map +1 -0
  61. package/dist/lib/model.d.ts +97 -0
  62. package/dist/lib/model.d.ts.map +1 -0
  63. package/dist/{esm/lib → lib}/model.js +63 -13
  64. package/dist/lib/model.js.map +1 -0
  65. package/dist/lib/program-manager.d.ts +38 -0
  66. package/dist/lib/program-manager.d.ts.map +1 -0
  67. package/dist/{esm/lib → lib}/program-manager.js +22 -10
  68. package/dist/lib/program-manager.js.map +1 -0
  69. package/dist/transform/buffer-transform.d.ts +36 -0
  70. package/dist/transform/buffer-transform.d.ts.map +1 -0
  71. package/dist/{esm/transform → transform}/buffer-transform.js +13 -5
  72. package/dist/transform/buffer-transform.js.map +1 -0
  73. package/dist/transform/texture-transform.d.ts +57 -0
  74. package/dist/transform/texture-transform.d.ts.map +1 -0
  75. package/dist/{esm/transform → transform}/texture-transform.js +48 -16
  76. package/dist/transform/texture-transform.js.map +1 -0
  77. package/dist/transform/transform-shader-utils.d.ts +26 -0
  78. package/dist/transform/transform-shader-utils.d.ts.map +1 -0
  79. package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
  80. package/dist/transform/transform-shader-utils.js.map +1 -0
  81. package/dist/transform/transform-types.d.ts +43 -0
  82. package/dist/transform/transform-types.d.ts.map +1 -0
  83. package/dist/transform/transform-types.js +2 -0
  84. package/dist/transform/transform-types.js.map +1 -0
  85. package/dist/transform/transform.d.ts +28 -0
  86. package/dist/transform/transform.d.ts.map +1 -0
  87. package/dist/{esm/transform → transform}/transform.js +39 -34
  88. package/dist/transform/transform.js.map +1 -0
  89. package/dist/utils/clip-space.d.ts +5 -0
  90. package/dist/utils/clip-space.d.ts.map +1 -0
  91. package/dist/{esm/utils → utils}/clip-space.js +3 -17
  92. package/dist/utils/clip-space.js.map +1 -0
  93. package/package.json +10 -10
  94. package/src/animation/{key-frames.js → key-frames.ts} +18 -16
  95. package/src/animation/{timeline.js → timeline.ts} +54 -18
  96. package/src/bundle.ts +4 -0
  97. package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
  98. package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
  99. package/src/geometries/cylinder-geometry.ts +20 -0
  100. package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
  101. package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
  102. package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
  103. package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
  104. package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
  105. package/src/geometry/{geometry.js → geometry.ts} +47 -34
  106. package/src/index.ts +30 -0
  107. package/src/lib/{animation-loop.js → animation-loop.ts} +237 -130
  108. package/src/lib/{model-utils.js → model-utils.ts} +2 -2
  109. package/src/lib/{model.js → model.ts} +148 -57
  110. package/src/lib/{program-manager.js → program-manager.ts} +46 -26
  111. package/src/transform/{buffer-transform.js → buffer-transform.ts} +40 -24
  112. package/src/transform/{texture-transform.js → texture-transform.ts} +34 -23
  113. package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
  114. package/src/transform/transform-types.ts +41 -0
  115. package/src/transform/{transform.js → transform.ts} +45 -49
  116. package/src/utils/{clip-space.js → clip-space.ts} +4 -3
  117. package/dist/dist.js +0 -32249
  118. package/dist/dist.min.js +0 -1
  119. package/dist/es5/animation/key-frames.d.ts +0 -19
  120. package/dist/es5/animation/key-frames.js +0 -95
  121. package/dist/es5/animation/key-frames.js.map +0 -1
  122. package/dist/es5/animation/timeline.d.ts +0 -39
  123. package/dist/es5/animation/timeline.js +0 -211
  124. package/dist/es5/animation/timeline.js.map +0 -1
  125. package/dist/es5/bundle.js +0 -9
  126. package/dist/es5/bundle.js.map +0 -1
  127. package/dist/es5/geometries/cone-geometry.d.ts +0 -5
  128. package/dist/es5/geometries/cone-geometry.js +0 -59
  129. package/dist/es5/geometries/cone-geometry.js.map +0 -1
  130. package/dist/es5/geometries/cube-geometry.d.ts +0 -5
  131. package/dist/es5/geometries/cube-geometry.js +0 -75
  132. package/dist/es5/geometries/cube-geometry.js.map +0 -1
  133. package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
  134. package/dist/es5/geometries/cylinder-geometry.js +0 -55
  135. package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
  136. package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
  137. package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
  138. package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
  139. package/dist/es5/geometries/index.d.ts +0 -7
  140. package/dist/es5/geometries/index.js +0 -64
  141. package/dist/es5/geometries/index.js.map +0 -1
  142. package/dist/es5/geometries/plane-geometry.d.ts +0 -5
  143. package/dist/es5/geometries/plane-geometry.js +0 -168
  144. package/dist/es5/geometries/plane-geometry.js.map +0 -1
  145. package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
  146. package/dist/es5/geometries/sphere-geometry.js +0 -152
  147. package/dist/es5/geometries/sphere-geometry.js.map +0 -1
  148. package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
  149. package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
  150. package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
  151. package/dist/es5/geometry/geometry-utils.d.ts +0 -1
  152. package/dist/es5/geometry/geometry-utils.js +0 -49
  153. package/dist/es5/geometry/geometry-utils.js.map +0 -1
  154. package/dist/es5/geometry/geometry.d.ts +0 -25
  155. package/dist/es5/geometry/geometry.js +0 -150
  156. package/dist/es5/geometry/geometry.js.map +0 -1
  157. package/dist/es5/index.d.ts +0 -19
  158. package/dist/es5/index.js +0 -128
  159. package/dist/es5/index.js.map +0 -1
  160. package/dist/es5/lib/animation-loop.d.ts +0 -158
  161. package/dist/es5/lib/animation-loop.js +0 -642
  162. package/dist/es5/lib/animation-loop.js.map +0 -1
  163. package/dist/es5/lib/model-utils.d.ts +0 -3
  164. package/dist/es5/lib/model-utils.js +0 -110
  165. package/dist/es5/lib/model-utils.js.map +0 -1
  166. package/dist/es5/lib/model.d.ts +0 -214
  167. package/dist/es5/lib/model.js +0 -584
  168. package/dist/es5/lib/model.js.map +0 -1
  169. package/dist/es5/lib/program-manager.d.ts +0 -79
  170. package/dist/es5/lib/program-manager.js +0 -238
  171. package/dist/es5/lib/program-manager.js.map +0 -1
  172. package/dist/es5/transform/buffer-transform.d.ts +0 -13
  173. package/dist/es5/transform/buffer-transform.js +0 -294
  174. package/dist/es5/transform/buffer-transform.js.map +0 -1
  175. package/dist/es5/transform/resource-transform.d.ts +0 -16
  176. package/dist/es5/transform/texture-transform.d.ts +0 -16
  177. package/dist/es5/transform/texture-transform.js +0 -405
  178. package/dist/es5/transform/texture-transform.js.map +0 -1
  179. package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
  180. package/dist/es5/transform/transform-shader-utils.js +0 -160
  181. package/dist/es5/transform/transform-shader-utils.js.map +0 -1
  182. package/dist/es5/transform/transform.d.ts +0 -33
  183. package/dist/es5/transform/transform.js +0 -274
  184. package/dist/es5/transform/transform.js.map +0 -1
  185. package/dist/es5/utils/clip-space.d.ts +0 -5
  186. package/dist/es5/utils/clip-space.js +0 -72
  187. package/dist/es5/utils/clip-space.js.map +0 -1
  188. package/dist/esm/animation/key-frames.d.ts +0 -19
  189. package/dist/esm/animation/key-frames.js.map +0 -1
  190. package/dist/esm/animation/timeline.d.ts +0 -39
  191. package/dist/esm/animation/timeline.js.map +0 -1
  192. package/dist/esm/bundle.js +0 -7
  193. package/dist/esm/bundle.js.map +0 -1
  194. package/dist/esm/geometries/cone-geometry.d.ts +0 -5
  195. package/dist/esm/geometries/cone-geometry.js.map +0 -1
  196. package/dist/esm/geometries/cube-geometry.d.ts +0 -5
  197. package/dist/esm/geometries/cube-geometry.js.map +0 -1
  198. package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
  199. package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
  200. package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
  201. package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
  202. package/dist/esm/geometries/index.d.ts +0 -7
  203. package/dist/esm/geometries/index.js +0 -8
  204. package/dist/esm/geometries/index.js.map +0 -1
  205. package/dist/esm/geometries/plane-geometry.d.ts +0 -5
  206. package/dist/esm/geometries/plane-geometry.js.map +0 -1
  207. package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
  208. package/dist/esm/geometries/sphere-geometry.js.map +0 -1
  209. package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
  210. package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
  211. package/dist/esm/geometry/geometry-utils.d.ts +0 -1
  212. package/dist/esm/geometry/geometry-utils.js.map +0 -1
  213. package/dist/esm/geometry/geometry.d.ts +0 -25
  214. package/dist/esm/geometry/geometry.js.map +0 -1
  215. package/dist/esm/index.d.ts +0 -19
  216. package/dist/esm/index.js +0 -16
  217. package/dist/esm/index.js.map +0 -1
  218. package/dist/esm/lib/animation-loop.d.ts +0 -158
  219. package/dist/esm/lib/animation-loop.js.map +0 -1
  220. package/dist/esm/lib/model-utils.d.ts +0 -3
  221. package/dist/esm/lib/model-utils.js.map +0 -1
  222. package/dist/esm/lib/model.d.ts +0 -214
  223. package/dist/esm/lib/model.js.map +0 -1
  224. package/dist/esm/lib/program-manager.d.ts +0 -79
  225. package/dist/esm/lib/program-manager.js.map +0 -1
  226. package/dist/esm/transform/buffer-transform.d.ts +0 -13
  227. package/dist/esm/transform/buffer-transform.js.map +0 -1
  228. package/dist/esm/transform/resource-transform.d.ts +0 -16
  229. package/dist/esm/transform/texture-transform.d.ts +0 -16
  230. package/dist/esm/transform/texture-transform.js.map +0 -1
  231. package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
  232. package/dist/esm/transform/transform-shader-utils.js.map +0 -1
  233. package/dist/esm/transform/transform.d.ts +0 -33
  234. package/dist/esm/transform/transform.js.map +0 -1
  235. package/dist/esm/utils/clip-space.d.ts +0 -5
  236. package/dist/esm/utils/clip-space.js.map +0 -1
  237. package/src/animation/key-frames.d.ts +0 -19
  238. package/src/animation/timeline.d.ts +0 -39
  239. package/src/bundle.js +0 -7
  240. package/src/geometries/cone-geometry.d.ts +0 -5
  241. package/src/geometries/cube-geometry.d.ts +0 -5
  242. package/src/geometries/cylinder-geometry.d.ts +0 -5
  243. package/src/geometries/cylinder-geometry.js +0 -14
  244. package/src/geometries/ico-sphere-geometry.d.ts +0 -5
  245. package/src/geometries/index.d.ts +0 -7
  246. package/src/geometries/index.js +0 -7
  247. package/src/geometries/plane-geometry.d.ts +0 -5
  248. package/src/geometries/sphere-geometry.d.ts +0 -5
  249. package/src/geometries/truncated-cone-geometry.d.ts +0 -5
  250. package/src/geometry/geometry-utils.d.ts +0 -1
  251. package/src/geometry/geometry.d.ts +0 -25
  252. package/src/index.d.ts +0 -19
  253. package/src/index.js +0 -22
  254. package/src/lib/animation-loop.d.ts +0 -158
  255. package/src/lib/model-utils.d.ts +0 -3
  256. package/src/lib/model.d.ts +0 -214
  257. package/src/lib/program-manager.d.ts +0 -79
  258. package/src/transform/buffer-transform.d.ts +0 -13
  259. package/src/transform/resource-transform.d.ts +0 -16
  260. package/src/transform/texture-transform.d.ts +0 -16
  261. package/src/transform/transform-shader-utils.d.ts +0 -31
  262. package/src/transform/transform.d.ts +0 -33
  263. package/src/utils/clip-space.d.ts +0 -5
@@ -1,7 +1,9 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import GL from '@luma.gl/constants';
1
3
  import { isWebGL } from '@luma.gl/gltools';
2
- import ProgramManager from './program-manager';
3
4
  import { Program, VertexArray, clear, TransformFeedback, Buffer, log, isObjectEmpty, uid, assert } from '@luma.gl/webgl';
4
5
  import { getDebugTableForUniforms, getDebugTableForVertexArray, getDebugTableForProgramConfiguration } from '@luma.gl/webgl';
6
+ import ProgramManager from './program-manager';
5
7
  import { getBuffersFromGeometry } from './model-utils';
6
8
  const LOG_DRAW_PRIORITY = 2;
7
9
  const LOG_DRAW_TIMEOUT = 10000;
@@ -12,6 +14,56 @@ const NOOP = () => {};
12
14
  const DRAW_PARAMS = {};
13
15
  export default class Model {
14
16
  constructor(gl, props = {}) {
17
+ _defineProperty(this, "id", void 0);
18
+
19
+ _defineProperty(this, "gl", void 0);
20
+
21
+ _defineProperty(this, "animated", false);
22
+
23
+ _defineProperty(this, "programManager", void 0);
24
+
25
+ _defineProperty(this, "vertexCount", void 0);
26
+
27
+ _defineProperty(this, "lastLogTime", 0);
28
+
29
+ _defineProperty(this, "props", void 0);
30
+
31
+ _defineProperty(this, "userData", {});
32
+
33
+ _defineProperty(this, "needsRedraw", true);
34
+
35
+ _defineProperty(this, "attributes", {});
36
+
37
+ _defineProperty(this, "_attributes", {});
38
+
39
+ _defineProperty(this, "uniforms", {});
40
+
41
+ _defineProperty(this, "drawMode", void 0);
42
+
43
+ _defineProperty(this, "instanceCount", void 0);
44
+
45
+ _defineProperty(this, "pickable", true);
46
+
47
+ _defineProperty(this, "programProps", void 0);
48
+
49
+ _defineProperty(this, "vertexArray", void 0);
50
+
51
+ _defineProperty(this, "program", void 0);
52
+
53
+ _defineProperty(this, "transformFeedback", void 0);
54
+
55
+ _defineProperty(this, "_programDirty", true);
56
+
57
+ _defineProperty(this, "_programManagerState", void 0);
58
+
59
+ _defineProperty(this, "_managedProgram", void 0);
60
+
61
+ _defineProperty(this, "geometryBuffers", {});
62
+
63
+ _defineProperty(this, "isInstanced", void 0);
64
+
65
+ _defineProperty(this, "geometry", {});
66
+
15
67
  const {
16
68
  id = uid('model')
17
69
  } = props;
@@ -19,8 +71,6 @@ export default class Model {
19
71
  this.id = id;
20
72
  this.gl = gl;
21
73
  this.id = props.id || uid('Model');
22
- this.lastLogTime = 0;
23
- this.animated = false;
24
74
  this.initialize(props);
25
75
  }
26
76
 
@@ -42,9 +92,9 @@ export default class Model {
42
92
  } = props;
43
93
  this.programProps = {
44
94
  program,
95
+ modules,
45
96
  vs,
46
97
  fs,
47
- modules,
48
98
  defines,
49
99
  inject,
50
100
  varyings,
@@ -64,7 +114,7 @@ export default class Model {
64
114
  this._checkProgram();
65
115
 
66
116
  this.setUniforms(Object.assign({}, this.getModuleUniforms(props.moduleSettings)));
67
- this.drawMode = props.drawMode !== undefined ? props.drawMode : 4;
117
+ this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;
68
118
  this.vertexCount = props.vertexCount || 0;
69
119
  this.geometryBuffers = {};
70
120
  this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;
@@ -300,7 +350,7 @@ export default class Model {
300
350
 
301
351
  if (discard) {
302
352
  parameters = Object.assign({}, parameters, {
303
- [35977]: discard
353
+ [GL.RASTERIZER_DISCARD]: discard
304
354
  });
305
355
  }
306
356
 
@@ -421,7 +471,7 @@ export default class Model {
421
471
  const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];
422
472
 
423
473
  if (buffer instanceof Buffer) {
424
- buffer.delete();
474
+ buffer.destroy();
425
475
  }
426
476
  }
427
477
  }
@@ -455,7 +505,7 @@ export default class Model {
455
505
  }
456
506
 
457
507
  this.lastLogTime = Date.now();
458
- log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {
508
+ log.group(LOG_DRAW_PRIORITY, ">>> DRAWING MODEL ".concat(this.id), {
459
509
  collapsed: log.level <= 2
460
510
  })();
461
511
  return logLevel;
@@ -468,7 +518,7 @@ export default class Model {
468
518
 
469
519
  const attributeTable = getDebugTableForVertexArray({
470
520
  vertexArray,
471
- header: `${this.id} attributes`,
521
+ header: "".concat(this.id, " attributes"),
472
522
  attributes: this._attributes
473
523
  });
474
524
  const {
@@ -476,7 +526,7 @@ export default class Model {
476
526
  unusedTable,
477
527
  unusedCount
478
528
  } = getDebugTableForUniforms({
479
- header: `${this.id} uniforms`,
529
+ header: "".concat(this.id, " uniforms"),
480
530
  program: this.program,
481
531
  uniforms: Object.assign({}, this.program.uniforms, uniforms)
482
532
  });
@@ -484,7 +534,7 @@ export default class Model {
484
534
  table: missingTable,
485
535
  count: missingCount
486
536
  } = getDebugTableForUniforms({
487
- header: `${this.id} uniforms`,
537
+ header: "".concat(this.id, " uniforms"),
488
538
  program: this.program,
489
539
  uniforms: Object.assign({}, this.program.uniforms, uniforms),
490
540
  undefinedOnly: true
@@ -506,11 +556,11 @@ export default class Model {
506
556
  if (framebuffer) {
507
557
  framebuffer.log({
508
558
  logLevel: LOG_DRAW_PRIORITY,
509
- message: `Rendered to ${framebuffer.id}`
559
+ message: "Rendered to ".concat(framebuffer.id)
510
560
  });
511
561
  }
512
562
 
513
- log.groupEnd(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`)();
563
+ log.groupEnd(LOG_DRAW_PRIORITY, ">>> DRAWING MODEL ".concat(this.id))();
514
564
  }
515
565
 
516
566
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/model.ts"],"names":["GL","isWebGL","Program","VertexArray","clear","TransformFeedback","Buffer","log","isObjectEmpty","uid","assert","getDebugTableForUniforms","getDebugTableForVertexArray","getDebugTableForProgramConfiguration","ProgramManager","getBuffersFromGeometry","LOG_DRAW_PRIORITY","LOG_DRAW_TIMEOUT","ERR_MODEL_PARAMS","NOOP","DRAW_PARAMS","Model","constructor","gl","props","id","initialize","programManager","getDefaultProgramManager","_programManagerState","_managedProgram","program","vs","fs","modules","defines","inject","varyings","bufferMode","transpileToGLSL100","programProps","vertexArray","_programDirty","userData","needsRedraw","_attributes","attributes","uniforms","pickable","_checkProgram","setUniforms","Object","assign","getModuleUniforms","moduleSettings","drawMode","undefined","TRIANGLES","vertexCount","geometryBuffers","isInstanced","instanced","instanceCount","_setModelProps","geometry","Number","isFinite","setProps","delete","key","release","_deleteGeometryBuffers","getDrawMode","getVertexCount","getInstanceCount","getAttributes","getProgram","setProgram","getUniforms","setDrawMode","setVertexCount","setInstanceCount","setGeometry","setAttributes","normalizedAttributes","name","attribute","getValue","opts","updateModuleSettings","draw","framebuffer","transformFeedback","parameters","logPriority","priority","_logDrawCallStart","drawParams","getDrawParams","isIndexed","indexType","indexOffset","vertexArrayInstanced","warn","onBeforeRender","onAfterRender","didDraw","offset","_logDrawCallEnd","transform","discard","feedbackBuffers","unbindModels","_setFeedbackBuffers","RASTERIZER_DISCARD","forEach","model","unbindBuffers","bindBuffers","render","_feedbackBuffers","needsUpdate","stateHash","get","buffer","destroy","_setAnimationProps","animationProps","animated","setBuffers","logLevel","logDrawTimeout","Date","now","lastLogTime","group","collapsed","level","attributeTable","header","table","uniformTable","unusedTable","unusedCount","missingTable","count","missingCount","undefinedOnly","keys","configTable","configuration","message","groupEnd"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport {ProgramProps} from '@luma.gl/webgl';\nimport {\n Shader,\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport ProgramManager from './program-manager';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport type ModelProps = ProgramProps & {\n id?: string\n moduleSettings?: object; // UniformsOptions\n attributes?: object,\n uniforms?: object; // Uniforms\n geometry?: object; // Geometry\n vertexCount?: number\n drawMode?: number\n isInstanced?: boolean\n instanceCount?: number\n programManager?: ProgramManager\n onBeforeRender?: () => void\n onAfterRender?: () => void\n _feedbackBuffers?: object; // FeedbackBuffers\n\n // Deprecated?\n isIndexed?: boolean;\n indexType?;\n indexOffset?: number;\n vertexArrayInstanced?: boolean;\n};\n\nexport type ModelDrawOptions = {\n moduleSettings?;\n framebuffer?;\n uniforms?;\n attributes?;\n transformFeedback?;\n parameters?;\n vertexArray?;\n};\n\n/* TODO - from autogenerated declarations, copy types and delete\ninterface ModelProps extends ProgramProps {\n id?: string\n moduleSettings?: UniformsOptions\n uniforms?: Uniforms\n geometry?: Geometry\n vertexCount?: number\n drawMode?: number\n programManager?: ProgramManager\n onBeforeRender?: () => void\n onAfterRender?: () => void\n _feedbackBuffers?: FeedbackBuffers\n}\n\ninterface DrawOpts {\n moduleSettings?: UniformsOptions\n framebuffer: Framebuffer\n uniforms?: Uniforms\n attributes?: Attributes\n parameters?: Parameters\n transformFeedback?: TransformFeedback\n vertexArray?: VertexArray\n}\n\ninterface ClearOpts {\n framebuffer?: Framebuffer\n color?: boolean\n depth?: boolean\n stencil?: boolean\n}\n\ninterface TransformOpts extends DrawOpts {\n discard: boolean\n feedbackBuffers: FeedbackBuffers\n unbindModels: Array<Model>\n parameters: Parameters\n}\n*/\n\nexport default class Model {\n readonly id: string;\n readonly gl: WebGLRenderingContext;\n readonly animated: boolean = false;\n programManager: ProgramManager;\n vertexCount: number;\n\n lastLogTime: number = 0; // TODO - move to probe.gl\n\n props: ModelProps;\n userData: Record<string, any> = {};\n needsRedraw: boolean = true;\n attributes: Record<string, any> = {};\n _attributes: Record<string, any> = {};\n uniforms: Record<string, any> = {};\n\n drawMode;\n instanceCount: number;\n pickable: boolean = true;\n\n programProps: ProgramProps & {program?: Program; modules; inject; defines; varyings; bufferMode; transpileToGLSL100;};\n vertexArray: VertexArray;\n program: Program;\n transformFeedback: TransformFeedback | undefined;\n _programDirty = true;\n _programManagerState;\n _managedProgram;\n\n // Track buffers created by setGeometry\n geometryBuffers = {};\n // geometry might have set drawMode and vertexCount\n isInstanced: boolean;\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n geometry = {};\n\n constructor(gl, props: ModelProps = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n modules,\n vs,\n fs,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount(): number {\n return this.vertexCount;\n }\n\n getInstanceCount(): number {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram(): Program {\n return this.program;\n }\n\n setProgram(props): void {\n const {program, vs, fs, modules, defines, inject, varyings, bufferMode, transpileToGLSL100} =\n props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode): this {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount): this {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount): this {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry): this {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}): this {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}): this {\n Object.assign(this.uniforms, uniforms);\n return this;\n }\n\n getModuleUniforms(opts?) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts?): this {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts): this {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts: ModelDrawOptions = {}): boolean {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback, TBD...\n transform(opts: ModelDrawOptions = {}): this {\n // @ts-expect-error\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach((model) => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach((model) => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}): boolean {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props): void {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram(): void {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {vs, fs, modules, inject, defines, varyings, bufferMode, transpileToGLSL100} =\n this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers(): void {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.destroy();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps): void {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}): this {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel: number): number {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer?): void {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {\n table: uniformTable,\n unusedTable,\n unusedCount\n } = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`)();\n }\n}\n"],"file":"model.js"}
@@ -0,0 +1,38 @@
1
+ import { Program } from '@luma.gl/webgl';
2
+ declare type Module = 'string' | {
3
+ name: string;
4
+ };
5
+ declare type GetProgramOptions = {
6
+ vs?: string;
7
+ fs?: string;
8
+ defines?: {};
9
+ inject?: {};
10
+ varyings?: string[];
11
+ bufferMode?: number;
12
+ modules?: Module[];
13
+ transpileToGLSL100?: boolean;
14
+ };
15
+ export default class ProgramManager {
16
+ readonly gl: WebGLRenderingContext;
17
+ stateHash: number;
18
+ private _hashCounter;
19
+ private readonly _hashes;
20
+ private readonly _useCounts;
21
+ private readonly _programCache;
22
+ private readonly _getUniforms;
23
+ private readonly _registeredModules;
24
+ private readonly _hookFunctions;
25
+ private _defaultModules;
26
+ static getDefaultProgramManager(gl: WebGLRenderingContext): ProgramManager;
27
+ constructor(gl: WebGLRenderingContext);
28
+ addDefaultModule(module: Module): void;
29
+ removeDefaultModule(module: Module): void;
30
+ addShaderHook(hook: any, opts: any): void;
31
+ get(props?: GetProgramOptions): any;
32
+ getUniforms(program: Program): any;
33
+ release(program: Program): void;
34
+ _getHash(key: string): string;
35
+ _getModuleList(appModules?: Module[]): Module[];
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=program-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-manager.d.ts","sourceRoot":"","sources":["../../src/lib/program-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAEvC,aAAK,MAAM,GAAG,QAAQ,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;AAExC,aAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IAEnC,SAAS,SAAK;IACd,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IAEjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAM;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAM;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAM;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IACrC,OAAO,CAAC,eAAe,CAAM;IAE7B,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,qBAAqB,GAAG,cAAc;gBAS9D,EAAE,EAAE,qBAAqB;IAIrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAStC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMzC,aAAa,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA;IAUxB,GAAG,CAAC,KAAK,GAAE,iBAAsB;IAoEjC,WAAW,CAAC,OAAO,EAAE,OAAO;IAI5B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAY/B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS7B,cAAc,CAAC,UAAU,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE;CA0BpD"}
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { assembleShaders } from '@luma.gl/shadertools';
2
3
  import { Program } from '@luma.gl/webgl';
3
4
  export default class ProgramManager {
@@ -8,16 +9,27 @@ export default class ProgramManager {
8
9
  }
9
10
 
10
11
  constructor(gl) {
12
+ _defineProperty(this, "gl", void 0);
13
+
14
+ _defineProperty(this, "stateHash", 0);
15
+
16
+ _defineProperty(this, "_hashCounter", 0);
17
+
18
+ _defineProperty(this, "_hashes", {});
19
+
20
+ _defineProperty(this, "_useCounts", {});
21
+
22
+ _defineProperty(this, "_programCache", {});
23
+
24
+ _defineProperty(this, "_getUniforms", {});
25
+
26
+ _defineProperty(this, "_registeredModules", {});
27
+
28
+ _defineProperty(this, "_hookFunctions", []);
29
+
30
+ _defineProperty(this, "_defaultModules", []);
31
+
11
32
  this.gl = gl;
12
- this._programCache = {};
13
- this._getUniforms = {};
14
- this._registeredModules = {};
15
- this._hookFunctions = [];
16
- this._defaultModules = [];
17
- this._hashes = {};
18
- this._hashCounter = 0;
19
- this.stateHash = 0;
20
- this._useCounts = {};
21
33
  }
22
34
 
23
35
  addDefaultModule(module) {
@@ -80,7 +92,7 @@ export default class ProgramManager {
80
92
  injectHashes.push(this._getHash(inject[key]));
81
93
  }
82
94
 
83
- const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join('/')}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${transpileToGLSL100 ? 'T' : ''}`;
95
+ const hash = "".concat(vsHash, "/").concat(fsHash, "D").concat(defineHashes.join('/'), "M").concat(moduleHashes.join('/'), "I").concat(injectHashes.join('/'), "V").concat(varyingHashes.join('/'), "H").concat(this.stateHash, "B").concat(bufferMode).concat(transpileToGLSL100 ? 'T' : '');
84
96
 
85
97
  if (!this._programCache[hash]) {
86
98
  const assembled = assembleShaders(this.gl, {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/program-manager.ts"],"names":["assembleShaders","Program","ProgramManager","getDefaultProgramManager","gl","luma","defaultProgramManager","constructor","addDefaultModule","module","_defaultModules","find","m","name","push","stateHash","removeDefaultModule","moduleName","filter","addShaderHook","hook","opts","Object","assign","_hookFunctions","get","props","vs","fs","defines","inject","varyings","bufferMode","transpileToGLSL100","modules","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","map","sort","varyingHashes","v","defineKeys","keys","injectKeys","defineHashes","injectHashes","key","hash","join","_programCache","assembled","hookFunctions","_getUniforms","getUniforms","x","_useCounts","program","release","delete","_hashes","undefined","_hashCounter","appModules","Array","length","seen","count","i","len"],"mappings":"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","sourcesContent":["import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\ntype Module = 'string' | {name: string}; // TODO\n\ntype GetProgramOptions = {\n vs?: string,\n fs?: string,\n defines?: {},\n inject?: {},\n varyings?: string[],\n bufferMode?: number,\n modules?: Module[];\n transpileToGLSL100?: boolean\n};\n\nexport default class ProgramManager {\n readonly gl: WebGLRenderingContext;\n\n stateHash = 0; // Used change hashing if hooks are modified\n private _hashCounter = 0;\n private readonly _hashes = {};\n private readonly _useCounts = {};\n\n private readonly _programCache = {};\n private readonly _getUniforms = {};\n private readonly _registeredModules = {}; // TODO: Remove? This isn't used anywhere in luma.gl\n private readonly _hookFunctions = [];\n private _defaultModules = [];\n\n static getDefaultProgramManager(gl: WebGLRenderingContext): ProgramManager {\n // @ts-expect-error\n gl.luma = gl.luma || {};\n // @ts-expect-error\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n // @ts-expect-error\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n }\n\n addDefaultModule(module: Module): void {\n // @ts-expect-error\n if (!this._defaultModules.find((m) => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module: Module): void {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter((m) => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props: GetProgramOptions = {}) {\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n // @ts-expect-error\n const moduleHashes = modules.map((m) => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map((v) => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${\n transpileToGLSL100 ? 'T' : ''\n }`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || ((x) => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program: Program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program: Program): void {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key: string): string {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules: Module[] = []): Module[] {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n // @ts-expect-error\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n"],"file":"program-manager.js"}
@@ -0,0 +1,36 @@
1
+ import { Buffer } from '@luma.gl/webgl';
2
+ import type { TransformProps, TransformDrawOptions, TransformRunOptions, TransformBinding } from './transform-types';
3
+ export default class BufferTransform {
4
+ gl: WebGL2RenderingContext;
5
+ currentIndex: number;
6
+ feedbackMap: {};
7
+ varyings: string[] | null;
8
+ bindings: TransformBinding[];
9
+ resources: {};
10
+ constructor(gl: WebGL2RenderingContext, props?: TransformProps);
11
+ setupResources(opts: any): void;
12
+ updateModelProps(props?: TransformProps): TransformProps;
13
+ getDrawOptions(opts?: TransformRunOptions): TransformDrawOptions;
14
+ swap(): boolean;
15
+ update(opts?: {}): void;
16
+ getBuffer(varyingName: string | null): Buffer | null;
17
+ getData(options?: {
18
+ varyingName?: string;
19
+ }): any;
20
+ delete(): void;
21
+ _initialize(props?: TransformProps): void;
22
+ _getFeedbackBuffers(props: any): {};
23
+ _setupBuffers(props?: {}): void;
24
+ _setupTransformFeedback(binding: any, { model }: {
25
+ model: any;
26
+ }): void;
27
+ _updateBindings(opts: any): void;
28
+ _updateBinding(binding: any, opts: any): any;
29
+ _swapBuffers(opts: any): {
30
+ sourceBuffers: any;
31
+ feedbackBuffers: any;
32
+ };
33
+ _createNewBuffer(name: any, opts: any): Buffer;
34
+ _getNextIndex(): number;
35
+ }
36
+ //# sourceMappingURL=buffer-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-transform.d.ts","sourceRoot":"","sources":["../../src/transform/buffer-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAoB,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EAAC,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAcnH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,EAAE,EAAE,sBAAsB,CAAC;IAC3B,YAAY,SAAK;IACjB,WAAW,KAAM;IACjB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IACjC,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAClC,SAAS,KAAM;gBAEH,EAAE,EAAE,sBAAsB,EAAE,KAAK,GAAE,cAAmB;IAMlE,cAAc,CAAC,IAAI,KAAA,GAAG,IAAI;IAM1B,gBAAgB,CAAC,KAAK,GAAE,cAAmB,GAAG,cAAc;IAS5D,cAAc,CAAC,IAAI,GAAE,mBAAwB,GAAG,oBAAoB;IAQpE,IAAI,IAAI,OAAO;IASf,MAAM,CAAC,IAAI,KAAK;IAKhB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IASpD,OAAO,CAAC,OAAO,GAAE;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAM;IAU5C,MAAM,IAAI,IAAI;IAQd,WAAW,CAAC,KAAK,GAAE,cAAmB,GAAG,IAAI;IAU7C,mBAAmB,CAAC,KAAK,KAAA;IAmCzB,aAAa,CAAC,KAAK,KAAK;IASxB,uBAAuB,CAAC,OAAO,KAAA,EAAE,EAAC,KAAK,EAAC;;KAAA,GAAG,IAAI;IAQ/C,eAAe,CAAC,IAAI,KAAA,GAAG,IAAI;IAY3B,cAAc,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA;IAe5B,YAAY,CAAC,IAAI,KAAA,GAAG;QAAC,aAAa,EAAE,GAAG,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAC;IAkB9D,gBAAgB,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,GAAG,MAAM;IASpC,aAAa,IAAI,MAAM;CAGxB"}
@@ -1,14 +1,22 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { isWebGL2 } from '@luma.gl/gltools';
2
3
  import { Buffer, TransformFeedback } from '@luma.gl/webgl';
3
4
  import { assert } from '@luma.gl/webgl';
4
5
  export default class BufferTransform {
5
6
  constructor(gl, props = {}) {
7
+ _defineProperty(this, "gl", void 0);
8
+
9
+ _defineProperty(this, "currentIndex", 0);
10
+
11
+ _defineProperty(this, "feedbackMap", {});
12
+
13
+ _defineProperty(this, "varyings", null);
14
+
15
+ _defineProperty(this, "bindings", []);
16
+
17
+ _defineProperty(this, "resources", {});
18
+
6
19
  this.gl = gl;
7
- this.currentIndex = 0;
8
- this.feedbackMap = {};
9
- this.varyings = null;
10
- this.bindings = [];
11
- this.resources = {};
12
20
 
13
21
  this._initialize(props);
14
22
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transform/buffer-transform.ts"],"names":["isWebGL2","Buffer","TransformFeedback","assert","BufferTransform","constructor","gl","props","_initialize","Object","seal","setupResources","opts","binding","bindings","_setupTransformFeedback","updateModelProps","varyings","length","assign","getDrawOptions","currentIndex","sourceBuffers","transformFeedback","attributes","swap","feedbackMap","_getNextIndex","update","_setupBuffers","getBuffer","varyingName","feedbackBuffers","bufferOrParams","buffer","getData","options","delete","name","resources","keys","_getFeedbackBuffers","sourceName","feedbackName","bufferName","bufferOrRef","sourceBuffer","byteLength","usage","accessor","_createNewBuffer","_updateBindings","model","program","buffers","_updateBinding","_swapBuffers","nextIndex","setBuffers","srcName","dstName"],"mappings":"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","sourcesContent":["import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\nimport type {TransformProps, TransformDrawOptions, TransformRunOptions, TransformBinding} from './transform-types';\n\n// import {TransformDrawOptions, TransformModelProps} from './resource-transform';\n// export interface BufferTransform2 {\n// setupResources(opts: any): void;\n// updateModelProps(props?: {}): TransformProps;\n// getDrawOptions(opts?: {}): TransformDrawOptions;\n// swap(): boolean;\n// update(opts?: {}): void;\n// getBuffer(varyingName: any): any;\n// getData(options?: {varyingName: string}): any;\n// delete(): void;\n// }\n\nexport default class BufferTransform {\n gl: WebGL2RenderingContext;\n currentIndex = 0;\n feedbackMap = {};\n varyings: string[] | null = null; // varyings array\n bindings: TransformBinding[] = [];\n resources = {}; // resources to be deleted\n\n constructor(gl: WebGL2RenderingContext, props: TransformProps = {}) {\n this.gl = gl;\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts): void {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props: TransformProps = {}): TransformProps {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n // @ts-expect-error\n getDrawOptions(opts: TransformRunOptions = {}): TransformDrawOptions {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n // @ts-expect-error\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n return {attributes, transformFeedback};\n }\n\n swap(): boolean {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName: string | null): Buffer | null {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData(options: {varyingName?: string} = {}) {\n const {varyingName} = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete(): void {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props: TransformProps = {}): void {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n // @ts-expect-error\n const {sourceBuffers = null} = props;\n // @ts-expect-error\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}): void {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts): void {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts): {sourceBuffers: any; feedbackBuffers: any} {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts): Buffer {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex(): number {\n return (this.currentIndex + 1) % 2;\n }\n}\n"],"file":"buffer-transform.js"}
@@ -0,0 +1,57 @@
1
+ import { Buffer, Texture2D } from '@luma.gl/webgl';
2
+ import type { TransformProps, TransformDrawOptions } from './transform-types';
3
+ export default class TextureTransform {
4
+ gl: WebGL2RenderingContext;
5
+ id: number;
6
+ currentIndex: number;
7
+ _swapTexture: any;
8
+ targetTextureVarying: any;
9
+ targetTextureType: any;
10
+ samplerTextureMap: any;
11
+ bindings: any[];
12
+ resources: {};
13
+ hasTargetTexture: boolean;
14
+ hasSourceTextures: boolean;
15
+ ownTexture: Texture2D | null;
16
+ elementIDBuffer: Buffer | null;
17
+ _targetRefTexName: string;
18
+ elementCount: number;
19
+ constructor(gl: WebGL2RenderingContext, props?: TransformProps);
20
+ updateModelProps(props?: TransformProps): TransformProps & {
21
+ vs: any;
22
+ fs: string;
23
+ modules: object[];
24
+ uniforms: any;
25
+ inject: {};
26
+ };
27
+ getDrawOptions(opts?: TransformProps): TransformDrawOptions;
28
+ swap(): boolean;
29
+ update(opts?: {}): void;
30
+ getTargetTexture(): any;
31
+ getData({ packed }?: {
32
+ packed?: boolean;
33
+ }): any;
34
+ getFramebuffer(): any;
35
+ delete(): void;
36
+ _initialize(props?: TransformProps): void;
37
+ _createTargetTexture(props: any): any;
38
+ _setupTextures(props?: TransformProps): void;
39
+ _updateElementIDBuffer(elementCount: number): void;
40
+ _updateBindings(opts: any): void;
41
+ _updateBinding(binding: any, opts: any): any;
42
+ _setSourceTextureParameters(): void;
43
+ _swapTextures(opts: any): {
44
+ sourceTextures: any;
45
+ targetTexture: any;
46
+ };
47
+ _createNewTexture(refTexture: any): any;
48
+ _getNextIndex(): number;
49
+ _processVertexShader(props?: TransformProps): {
50
+ vs: any;
51
+ fs: string;
52
+ modules: object[];
53
+ uniforms: any;
54
+ inject: {};
55
+ };
56
+ }
57
+ //# sourceMappingURL=texture-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture-transform.d.ts","sourceRoot":"","sources":["../../src/transform/texture-transform.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,MAAM,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAYnG,OAAO,KAAK,EAAC,cAAc,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAY5E,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,EAAE,EAAE,sBAAsB,CAAC;IAC3B,EAAE,SAAK;IACP,YAAY,SAAK;IACjB,YAAY,MAAQ;IACpB,oBAAoB,MAAQ;IAC5B,iBAAiB,MAAQ;IACzB,iBAAiB,MAAQ;IACzB,QAAQ,QAAM;IACd,SAAS,KAAM;IAEf,gBAAgB,EAAE,OAAO,CAAS;IAClC,iBAAiB,EAAE,OAAO,CAAS;IACnC,UAAU,EAAE,SAAS,GAAG,IAAI,CAAQ;IACpC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;gBAET,EAAE,EAAE,sBAAsB,EAAE,KAAK,GAAE,cAAmB;IAelE,gBAAgB,CAAC,KAAK,GAAE,cAAmB;;;;;;;IAK3C,cAAc,CAAC,IAAI,GAAE,cAAmB,GAAG,oBAAoB;IAiC/D,IAAI;IASJ,MAAM,CAAC,IAAI,KAAK;IAKhB,gBAAgB;IAKhB,OAAO,CAAC,EAAC,MAAc,EAAC;;KAAK;IAuB7B,cAAc;IAMd,MAAM;IAYN,WAAW,CAAC,KAAK,GAAE,cAAmB;IAStC,oBAAoB,CAAC,KAAK,KAAA;IAkB1B,cAAc,CAAC,KAAK,GAAE,cAAmB;IAczC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAoBlD,eAAe,CAAC,IAAI,KAAA;IAYpB,cAAc,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA;IAuC5B,2BAA2B;IAQ3B,aAAa,CAAC,IAAI,KAAA;;;;IAalB,iBAAiB,CAAC,UAAU,KAAA;IAsB5B,aAAa;IAKb,oBAAoB,CAAC,KAAK,GAAE,cAAmB;;;;;;;CA2BhD"}
@@ -1,15 +1,47 @@
1
- import { cloneTextureFrom, readPixelsToArray, getShaderVersion, Buffer, Texture2D, Framebuffer } from '@luma.gl/webgl';
2
- import { _transform as transformModule, getPassthroughFS, typeToChannelCount, combineInjects } from '@luma.gl/shadertools';
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import GL from '@luma.gl/constants';
3
+ import { cloneTextureFrom, readPixelsToArray, Buffer, Texture2D, Framebuffer } from '@luma.gl/webgl';
4
+ import { _transform as transformModule, getShaderInfo, getPassthroughFS, typeToChannelCount, combineInjects } from '@luma.gl/shadertools';
3
5
  import { updateForTextures, getSizeUniforms } from './transform-shader-utils';
4
6
  const SRC_TEX_PARAMETER_OVERRIDES = {
5
- [10241]: 9728,
6
- [10240]: 9728,
7
- [10242]: 33071,
8
- [10243]: 33071
7
+ [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,
8
+ [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,
9
+ [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
10
+ [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
9
11
  };
10
12
  const FS_OUTPUT_VARIABLE = 'transform_output';
11
13
  export default class TextureTransform {
12
14
  constructor(gl, props = {}) {
15
+ _defineProperty(this, "gl", void 0);
16
+
17
+ _defineProperty(this, "id", 0);
18
+
19
+ _defineProperty(this, "currentIndex", 0);
20
+
21
+ _defineProperty(this, "_swapTexture", null);
22
+
23
+ _defineProperty(this, "targetTextureVarying", null);
24
+
25
+ _defineProperty(this, "targetTextureType", null);
26
+
27
+ _defineProperty(this, "samplerTextureMap", null);
28
+
29
+ _defineProperty(this, "bindings", []);
30
+
31
+ _defineProperty(this, "resources", {});
32
+
33
+ _defineProperty(this, "hasTargetTexture", false);
34
+
35
+ _defineProperty(this, "hasSourceTextures", false);
36
+
37
+ _defineProperty(this, "ownTexture", null);
38
+
39
+ _defineProperty(this, "elementIDBuffer", null);
40
+
41
+ _defineProperty(this, "_targetRefTexName", void 0);
42
+
43
+ _defineProperty(this, "elementCount", void 0);
44
+
13
45
  this.gl = gl;
14
46
  this.id = this.currentIndex = 0;
15
47
  this._swapTexture = null;
@@ -142,7 +174,7 @@ export default class TextureTransform {
142
174
  } = props;
143
175
  this._swapTexture = _swapTexture;
144
176
  this.targetTextureVarying = _targetTextureVarying;
145
- this.hasTargetTexture = _targetTextureVarying;
177
+ this.hasTargetTexture = Boolean(_targetTextureVarying);
146
178
 
147
179
  this._setupTextures(props);
148
180
  }
@@ -267,7 +299,7 @@ export default class TextureTransform {
267
299
  if (framebuffer) {
268
300
  framebuffer.update({
269
301
  attachments: {
270
- [36064]: targetTexture
302
+ [GL.COLOR_ATTACHMENT0]: targetTexture
271
303
  },
272
304
  resizeAttachments: false
273
305
  });
@@ -277,11 +309,11 @@ export default class TextureTransform {
277
309
  });
278
310
  } else {
279
311
  binding.framebuffer = new Framebuffer(this.gl, {
280
- id: `transform-framebuffer`,
312
+ id: "transform-framebuffer",
281
313
  width,
282
314
  height,
283
315
  attachments: {
284
- [36064]: targetTexture
316
+ [GL.COLOR_ATTACHMENT0]: targetTexture
285
317
  }
286
318
  });
287
319
  }
@@ -318,13 +350,13 @@ export default class TextureTransform {
318
350
  _createNewTexture(refTexture) {
319
351
  const texture = cloneTextureFrom(refTexture, {
320
352
  parameters: {
321
- [10241]: 9728,
322
- [10240]: 9728,
323
- [10242]: 33071,
324
- [10243]: 33071
353
+ [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,
354
+ [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,
355
+ [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
356
+ [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
325
357
  },
326
358
  pixelStore: {
327
- [37440]: false
359
+ [GL.UNPACK_FLIP_Y_WEBGL]: false
328
360
  }
329
361
  });
330
362
 
@@ -361,7 +393,7 @@ export default class TextureTransform {
361
393
  this.targetTextureType = targetTextureType;
362
394
  this.samplerTextureMap = samplerTextureMap;
363
395
  const fs = props._fs || getPassthroughFS({
364
- version: getShaderVersion(vs),
396
+ version: getShaderInfo(vs).version,
365
397
  input: this.targetTextureVarying,
366
398
  inputType: targetTextureType,
367
399
  output: FS_OUTPUT_VARIABLE