@luma.gl/engine 8.5.8 → 8.6.0-alpha.2

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 (270) 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 +26 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +17 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/animation-loop.d.ts +149 -0
  54. package/dist/lib/animation-loop.d.ts.map +1 -0
  55. package/dist/{esm/lib → lib}/animation-loop.js +190 -143
  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 +109 -0
  62. package/dist/lib/model.d.ts.map +1 -0
  63. package/dist/{esm/lib → lib}/model.js +76 -20
  64. package/dist/lib/model.js.map +1 -0
  65. package/dist/lib/program-manager.d.ts +39 -0
  66. package/dist/lib/program-manager.d.ts.map +1 -0
  67. package/dist/{esm/lib → lib}/program-manager.js +29 -18
  68. package/dist/lib/program-manager.js.map +1 -0
  69. package/dist/lib/render-loop.d.ts +27 -0
  70. package/dist/lib/render-loop.d.ts.map +1 -0
  71. package/dist/lib/render-loop.js +56 -0
  72. package/dist/lib/render-loop.js.map +1 -0
  73. package/dist/transform/buffer-transform.d.ts +36 -0
  74. package/dist/transform/buffer-transform.d.ts.map +1 -0
  75. package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
  76. package/dist/transform/buffer-transform.js.map +1 -0
  77. package/dist/transform/texture-transform.d.ts +57 -0
  78. package/dist/transform/texture-transform.d.ts.map +1 -0
  79. package/dist/{esm/transform → transform}/texture-transform.js +48 -16
  80. package/dist/transform/texture-transform.js.map +1 -0
  81. package/dist/transform/transform-shader-utils.d.ts +26 -0
  82. package/dist/transform/transform-shader-utils.d.ts.map +1 -0
  83. package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
  84. package/dist/transform/transform-shader-utils.js.map +1 -0
  85. package/dist/transform/transform-types.d.ts +44 -0
  86. package/dist/transform/transform-types.d.ts.map +1 -0
  87. package/dist/transform/transform-types.js +2 -0
  88. package/dist/transform/transform-types.js.map +1 -0
  89. package/dist/transform/transform.d.ts +47 -0
  90. package/dist/transform/transform.d.ts.map +1 -0
  91. package/dist/{esm/transform → transform}/transform.js +63 -43
  92. package/dist/transform/transform.js.map +1 -0
  93. package/dist/utils/clip-space.d.ts +5 -0
  94. package/dist/utils/clip-space.d.ts.map +1 -0
  95. package/dist/{esm/utils → utils}/clip-space.js +3 -17
  96. package/dist/utils/clip-space.js.map +1 -0
  97. package/package.json +11 -11
  98. package/src/animation/{key-frames.js → key-frames.ts} +18 -16
  99. package/src/animation/{timeline.js → timeline.ts} +54 -18
  100. package/src/bundle.ts +4 -0
  101. package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
  102. package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
  103. package/src/geometries/cylinder-geometry.ts +20 -0
  104. package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
  105. package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
  106. package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
  107. package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
  108. package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
  109. package/src/geometry/{geometry.js → geometry.ts} +47 -34
  110. package/src/index.ts +35 -0
  111. package/src/lib/animation-loop.ts +724 -0
  112. package/src/lib/{model-utils.js → model-utils.ts} +2 -2
  113. package/src/lib/{model.js → model.ts} +184 -66
  114. package/src/lib/{program-manager.js → program-manager.ts} +53 -34
  115. package/src/lib/render-loop.ts +56 -0
  116. package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
  117. package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
  118. package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
  119. package/src/transform/transform-types.ts +42 -0
  120. package/src/transform/transform.ts +189 -0
  121. package/src/utils/{clip-space.js → clip-space.ts} +4 -3
  122. package/dist/dist.js +0 -32403
  123. package/dist/dist.min.js +0 -1
  124. package/dist/es5/animation/key-frames.d.ts +0 -19
  125. package/dist/es5/animation/key-frames.js +0 -95
  126. package/dist/es5/animation/key-frames.js.map +0 -1
  127. package/dist/es5/animation/timeline.d.ts +0 -39
  128. package/dist/es5/animation/timeline.js +0 -211
  129. package/dist/es5/animation/timeline.js.map +0 -1
  130. package/dist/es5/bundle.js +0 -9
  131. package/dist/es5/bundle.js.map +0 -1
  132. package/dist/es5/geometries/cone-geometry.d.ts +0 -5
  133. package/dist/es5/geometries/cone-geometry.js +0 -59
  134. package/dist/es5/geometries/cone-geometry.js.map +0 -1
  135. package/dist/es5/geometries/cube-geometry.d.ts +0 -5
  136. package/dist/es5/geometries/cube-geometry.js +0 -75
  137. package/dist/es5/geometries/cube-geometry.js.map +0 -1
  138. package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
  139. package/dist/es5/geometries/cylinder-geometry.js +0 -55
  140. package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
  141. package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
  142. package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
  143. package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
  144. package/dist/es5/geometries/index.d.ts +0 -7
  145. package/dist/es5/geometries/index.js +0 -64
  146. package/dist/es5/geometries/index.js.map +0 -1
  147. package/dist/es5/geometries/plane-geometry.d.ts +0 -5
  148. package/dist/es5/geometries/plane-geometry.js +0 -168
  149. package/dist/es5/geometries/plane-geometry.js.map +0 -1
  150. package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
  151. package/dist/es5/geometries/sphere-geometry.js +0 -152
  152. package/dist/es5/geometries/sphere-geometry.js.map +0 -1
  153. package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
  154. package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
  155. package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
  156. package/dist/es5/geometry/geometry-utils.d.ts +0 -1
  157. package/dist/es5/geometry/geometry-utils.js +0 -49
  158. package/dist/es5/geometry/geometry-utils.js.map +0 -1
  159. package/dist/es5/geometry/geometry.d.ts +0 -25
  160. package/dist/es5/geometry/geometry.js +0 -150
  161. package/dist/es5/geometry/geometry.js.map +0 -1
  162. package/dist/es5/index.d.ts +0 -19
  163. package/dist/es5/index.js +0 -128
  164. package/dist/es5/index.js.map +0 -1
  165. package/dist/es5/lib/animation-loop.d.ts +0 -158
  166. package/dist/es5/lib/animation-loop.js +0 -642
  167. package/dist/es5/lib/animation-loop.js.map +0 -1
  168. package/dist/es5/lib/model-utils.d.ts +0 -3
  169. package/dist/es5/lib/model-utils.js +0 -110
  170. package/dist/es5/lib/model-utils.js.map +0 -1
  171. package/dist/es5/lib/model.d.ts +0 -214
  172. package/dist/es5/lib/model.js +0 -584
  173. package/dist/es5/lib/model.js.map +0 -1
  174. package/dist/es5/lib/program-manager.d.ts +0 -79
  175. package/dist/es5/lib/program-manager.js +0 -238
  176. package/dist/es5/lib/program-manager.js.map +0 -1
  177. package/dist/es5/transform/buffer-transform.d.ts +0 -13
  178. package/dist/es5/transform/buffer-transform.js +0 -294
  179. package/dist/es5/transform/buffer-transform.js.map +0 -1
  180. package/dist/es5/transform/resource-transform.d.ts +0 -16
  181. package/dist/es5/transform/texture-transform.d.ts +0 -16
  182. package/dist/es5/transform/texture-transform.js +0 -405
  183. package/dist/es5/transform/texture-transform.js.map +0 -1
  184. package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
  185. package/dist/es5/transform/transform-shader-utils.js +0 -160
  186. package/dist/es5/transform/transform-shader-utils.js.map +0 -1
  187. package/dist/es5/transform/transform.d.ts +0 -33
  188. package/dist/es5/transform/transform.js +0 -274
  189. package/dist/es5/transform/transform.js.map +0 -1
  190. package/dist/es5/utils/clip-space.d.ts +0 -5
  191. package/dist/es5/utils/clip-space.js +0 -72
  192. package/dist/es5/utils/clip-space.js.map +0 -1
  193. package/dist/esm/animation/key-frames.d.ts +0 -19
  194. package/dist/esm/animation/key-frames.js.map +0 -1
  195. package/dist/esm/animation/timeline.d.ts +0 -39
  196. package/dist/esm/animation/timeline.js.map +0 -1
  197. package/dist/esm/bundle.js +0 -7
  198. package/dist/esm/bundle.js.map +0 -1
  199. package/dist/esm/geometries/cone-geometry.d.ts +0 -5
  200. package/dist/esm/geometries/cone-geometry.js.map +0 -1
  201. package/dist/esm/geometries/cube-geometry.d.ts +0 -5
  202. package/dist/esm/geometries/cube-geometry.js.map +0 -1
  203. package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
  204. package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
  205. package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
  206. package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
  207. package/dist/esm/geometries/index.d.ts +0 -7
  208. package/dist/esm/geometries/index.js +0 -8
  209. package/dist/esm/geometries/index.js.map +0 -1
  210. package/dist/esm/geometries/plane-geometry.d.ts +0 -5
  211. package/dist/esm/geometries/plane-geometry.js.map +0 -1
  212. package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
  213. package/dist/esm/geometries/sphere-geometry.js.map +0 -1
  214. package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
  215. package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
  216. package/dist/esm/geometry/geometry-utils.d.ts +0 -1
  217. package/dist/esm/geometry/geometry-utils.js.map +0 -1
  218. package/dist/esm/geometry/geometry.d.ts +0 -25
  219. package/dist/esm/geometry/geometry.js.map +0 -1
  220. package/dist/esm/index.d.ts +0 -19
  221. package/dist/esm/index.js +0 -16
  222. package/dist/esm/index.js.map +0 -1
  223. package/dist/esm/lib/animation-loop.d.ts +0 -158
  224. package/dist/esm/lib/animation-loop.js.map +0 -1
  225. package/dist/esm/lib/model-utils.d.ts +0 -3
  226. package/dist/esm/lib/model-utils.js.map +0 -1
  227. package/dist/esm/lib/model.d.ts +0 -214
  228. package/dist/esm/lib/model.js.map +0 -1
  229. package/dist/esm/lib/program-manager.d.ts +0 -79
  230. package/dist/esm/lib/program-manager.js.map +0 -1
  231. package/dist/esm/transform/buffer-transform.d.ts +0 -13
  232. package/dist/esm/transform/buffer-transform.js.map +0 -1
  233. package/dist/esm/transform/resource-transform.d.ts +0 -16
  234. package/dist/esm/transform/texture-transform.d.ts +0 -16
  235. package/dist/esm/transform/texture-transform.js.map +0 -1
  236. package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
  237. package/dist/esm/transform/transform-shader-utils.js.map +0 -1
  238. package/dist/esm/transform/transform.d.ts +0 -33
  239. package/dist/esm/transform/transform.js.map +0 -1
  240. package/dist/esm/utils/clip-space.d.ts +0 -5
  241. package/dist/esm/utils/clip-space.js.map +0 -1
  242. package/src/animation/key-frames.d.ts +0 -19
  243. package/src/animation/timeline.d.ts +0 -39
  244. package/src/bundle.js +0 -7
  245. package/src/geometries/cone-geometry.d.ts +0 -5
  246. package/src/geometries/cube-geometry.d.ts +0 -5
  247. package/src/geometries/cylinder-geometry.d.ts +0 -5
  248. package/src/geometries/cylinder-geometry.js +0 -14
  249. package/src/geometries/ico-sphere-geometry.d.ts +0 -5
  250. package/src/geometries/index.d.ts +0 -7
  251. package/src/geometries/index.js +0 -7
  252. package/src/geometries/plane-geometry.d.ts +0 -5
  253. package/src/geometries/sphere-geometry.d.ts +0 -5
  254. package/src/geometries/truncated-cone-geometry.d.ts +0 -5
  255. package/src/geometry/geometry-utils.d.ts +0 -1
  256. package/src/geometry/geometry.d.ts +0 -25
  257. package/src/index.d.ts +0 -19
  258. package/src/index.js +0 -22
  259. package/src/lib/animation-loop.d.ts +0 -158
  260. package/src/lib/animation-loop.js +0 -601
  261. package/src/lib/model-utils.d.ts +0 -3
  262. package/src/lib/model.d.ts +0 -214
  263. package/src/lib/program-manager.d.ts +0 -79
  264. package/src/transform/buffer-transform.d.ts +0 -13
  265. package/src/transform/resource-transform.d.ts +0 -16
  266. package/src/transform/texture-transform.d.ts +0 -16
  267. package/src/transform/transform-shader-utils.d.ts +0 -31
  268. package/src/transform/transform.d.ts +0 -33
  269. package/src/transform/transform.js +0 -177
  270. package/src/utils/clip-space.d.ts +0 -5
@@ -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,EAA8B,MAAM,gBAAgB,CAAC;AACnE,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,21 @@
1
- import { isWebGL2 } from '@luma.gl/gltools';
2
- import { Buffer, TransformFeedback } from '@luma.gl/webgl';
3
- import { assert } from '@luma.gl/webgl';
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { assert } from '@luma.gl/api';
3
+ import { Buffer, TransformFeedback, isWebGL2 } from '@luma.gl/webgl';
4
4
  export default class BufferTransform {
5
5
  constructor(gl, props = {}) {
6
+ _defineProperty(this, "gl", void 0);
7
+
8
+ _defineProperty(this, "currentIndex", 0);
9
+
10
+ _defineProperty(this, "feedbackMap", {});
11
+
12
+ _defineProperty(this, "varyings", null);
13
+
14
+ _defineProperty(this, "bindings", []);
15
+
16
+ _defineProperty(this, "resources", {});
17
+
6
18
  this.gl = gl;
7
- this.currentIndex = 0;
8
- this.feedbackMap = {};
9
- this.varyings = null;
10
- this.bindings = [];
11
- this.resources = {};
12
19
 
13
20
  this._initialize(props);
14
21
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transform/buffer-transform.ts"],"names":["assert","Buffer","TransformFeedback","isWebGL2","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 {assert} from '@luma.gl/api';\nimport {Buffer, TransformFeedback, isWebGL2} 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;IAWN,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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transform/texture-transform.ts"],"names":["GL","cloneTextureFrom","readPixelsToArray","Buffer","Texture2D","Framebuffer","_transform","transformModule","getShaderInfo","getPassthroughFS","typeToChannelCount","combineInjects","updateForTextures","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","FS_OUTPUT_VARIABLE","TextureTransform","constructor","gl","props","id","currentIndex","_swapTexture","targetTextureVarying","targetTextureType","samplerTextureMap","bindings","resources","_initialize","Object","seal","updateModelProps","updatedModelProps","_processVertexShader","assign","getDrawOptions","opts","sourceBuffers","sourceTextures","framebuffer","targetTexture","attributes","uniforms","parameters","discard","hasSourceTextures","hasTargetTexture","transform_elementID","elementIDBuffer","sampler","textureName","_setSourceTextureParameters","sizeUniforms","sourceTextureMap","viewport","width","height","swap","_getNextIndex","update","_setupTextures","getTargetTexture","getData","packed","pixels","ArrayType","channelCount","packedPixels","length","packCount","i","j","getFramebuffer","currentResources","delete","ownTexture","_targetTextureVarying","Boolean","_createTargetTexture","textureOrReference","refTexture","_targetRefTexName","_createNewTexture","_sourceTextures","_targetTexture","keys","_updateBindings","_updateElementIDBuffer","elementCount","elementIds","Float32Array","forEach","_","index","array","data","accessor","size","setData","_updateBinding","_swapTextures","nextIndex","binding","attachments","COLOR_ATTACHMENT0","resizeAttachments","resize","name","setParameters","texture","pixelStore","UNPACK_FLIP_Y_WEBGL","vs","inject","combinedInject","fs","_fs","version","input","inputType","output","modules","concat"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\n\nimport {cloneTextureFrom, readPixelsToArray, Buffer, Texture2D, Framebuffer} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getShaderInfo,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\nimport type {TransformProps, TransformDrawOptions} from './transform-types';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n gl: WebGL2RenderingContext;\n id = 0;\n currentIndex = 0;\n _swapTexture = null;\n targetTextureVarying = null;\n targetTextureType = null;\n samplerTextureMap = null;\n bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n resources = {}; // resources to be deleted\n\n hasTargetTexture: boolean = false;\n hasSourceTextures: boolean = false;\n ownTexture: Texture2D | null = null;\n elementIDBuffer: Buffer | null = null;\n _targetRefTexName: string;\n elementCount: number;\n\n constructor(gl: WebGL2RenderingContext, props: TransformProps = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props: TransformProps = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts: TransformProps = {}): TransformDrawOptions {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} =\n this.bindings[this.currentIndex];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\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._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-expect-error\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props: TransformProps = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = Boolean(_targetTextureVarying);\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n _setupTextures(props: TransformProps = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount: number): void {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props: TransformProps = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-expect-error TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderInfo(vs).version,\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n // @ts-expect-error\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n"],"file":"texture-transform.js"}
@@ -0,0 +1,26 @@
1
+ export declare function updateForTextures(options: {
2
+ vs: any;
3
+ sourceTextureMap: any;
4
+ targetTextureVarying: any;
5
+ targetTexture: any;
6
+ }): {
7
+ vs: any;
8
+ targetTextureType: any;
9
+ inject: {};
10
+ samplerTextureMap: {};
11
+ };
12
+ export declare function getSizeUniforms(options: {
13
+ sourceTextureMap: any;
14
+ targetTextureVarying: any;
15
+ targetTexture: any;
16
+ }): {};
17
+ export declare function getVaryingType(line: any, varying: any): any;
18
+ export declare function processAttributeDefinition(line: any, textureMap: any): {
19
+ updatedLine: string;
20
+ inject: {
21
+ 'vs:#decl': string;
22
+ 'vs:#main-start': string;
23
+ };
24
+ samplerTextureMap: {};
25
+ };
26
+ //# sourceMappingURL=transform-shader-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-shader-utils.d.ts","sourceRoot":"","sources":["../../src/transform/transform-shader-utils.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,EAAE,EAAE,GAAG,CAAC;IACR,gBAAgB,EAAE,GAAG,CAAC;IACtB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;CACpB,GAAG;IACF,EAAE,EAAE,GAAG,CAAC;IACR,iBAAiB,EAAE,GAAG,CAAC;IACvB,MAAM,EAAE,EAAE,CAAC;IACX,iBAAiB,EAAE,EAAE,CAAC;CACvB,CAyDA;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,gBAAgB,EAAE,GAAG,CAAC;IACtB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;CACpB,GAAG,EAAE,CAaL;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,CAM3D;AAGD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,GAAG,GACd;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB,EAAE,EAAE,CAAC;CACvB,CAgCA"}
@@ -3,12 +3,13 @@ import { combineInjects, getQualifierDetails, typeToChannelSuffix } from '@luma.
3
3
  const SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';
4
4
  const SIZE_UNIFORM_PREFIX = 'transform_uSize_';
5
5
  const VS_POS_VARIABLE = 'transform_position';
6
- export function updateForTextures({
7
- vs,
8
- sourceTextureMap,
9
- targetTextureVarying,
10
- targetTexture
11
- }) {
6
+ export function updateForTextures(options) {
7
+ const {
8
+ vs,
9
+ sourceTextureMap,
10
+ targetTextureVarying,
11
+ targetTexture
12
+ } = options;
12
13
  const texAttributeNames = Object.keys(sourceTextureMap);
13
14
  let sourceCount = texAttributeNames.length;
14
15
  let targetTextureType = null;
@@ -42,11 +43,9 @@ export function updateForTextures({
42
43
 
43
44
  if (targetTextureVarying) {
44
45
  assert(targetTexture);
45
- const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;
46
- const uniformDeclaration = `uniform vec2 ${sizeName};\n`;
47
- const posInstructions = `\
48
- vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});
49
- gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\n`;
46
+ const sizeName = "".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying);
47
+ const uniformDeclaration = "uniform vec2 ".concat(sizeName, ";\n");
48
+ const posInstructions = " vec2 ".concat(VS_POS_VARIABLE, " = transform_getPos(").concat(sizeName, ");\n gl_Position = vec4(").concat(VS_POS_VARIABLE, ", 0, 1.);\n");
50
49
  const inject = {
51
50
  'vs:#decl': uniformDeclaration,
52
51
  'vs:#main-start': posInstructions
@@ -64,59 +63,37 @@ export function updateForTextures({
64
63
  samplerTextureMap
65
64
  };
66
65
  }
67
- export function getSizeUniforms({
68
- sourceTextureMap,
69
- targetTextureVarying,
70
- targetTexture
71
- }) {
66
+ export function getSizeUniforms(options) {
72
67
  const uniforms = {};
73
68
  let width;
74
69
  let height;
75
70
 
76
- if (targetTextureVarying) {
71
+ if (options.targetTextureVarying) {
77
72
  ({
78
73
  width,
79
74
  height
80
- } = targetTexture);
81
- uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];
75
+ } = options.targetTexture);
76
+ uniforms["".concat(SIZE_UNIFORM_PREFIX).concat(options.targetTextureVarying)] = [width, height];
82
77
  }
83
78
 
84
- for (const textureName in sourceTextureMap) {
79
+ for (const textureName in options.sourceTextureMap) {
85
80
  ({
86
81
  width,
87
82
  height
88
- } = sourceTextureMap[textureName]);
89
- uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];
83
+ } = options.sourceTextureMap[textureName]);
84
+ uniforms["".concat(SIZE_UNIFORM_PREFIX).concat(textureName)] = [width, height];
90
85
  }
91
86
 
92
87
  return uniforms;
93
88
  }
94
-
95
- function getAttributeDefinition(line) {
96
- return getQualifierDetails(line, ['attribute', 'in']);
97
- }
98
-
99
- function getSamplerDeclerations(textureName) {
100
- const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;
101
- const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;
102
- const uniformDeclerations = `\
103
- uniform sampler2D ${samplerName};
104
- uniform vec2 ${sizeName};`;
105
- return {
106
- samplerName,
107
- sizeName,
108
- uniformDeclerations
109
- };
110
- }
111
-
112
89
  export function getVaryingType(line, varying) {
113
- const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);
90
+ const qualiferDetails = getQualifierDetails(line, ['varying', 'out']);
114
91
 
115
- if (!qualaiferDetails) {
92
+ if (!qualiferDetails) {
116
93
  return null;
117
94
  }
118
95
 
119
- return qualaiferDetails.name === varying ? qualaiferDetails.type : null;
96
+ return qualiferDetails.name === varying ? qualiferDetails.type : null;
120
97
  }
121
98
  export function processAttributeDefinition(line, textureMap) {
122
99
  const samplerTextureMap = {};
@@ -132,14 +109,14 @@ export function processAttributeDefinition(line, textureMap) {
132
109
  } = attributeData;
133
110
 
134
111
  if (name && textureMap[name]) {
135
- const updatedLine = `\// ${line} => Replaced by Transform with a sampler`;
112
+ const updatedLine = "// ".concat(line, " => Replaced by Transform with a sampler");
136
113
  const {
137
114
  samplerName,
138
115
  sizeName,
139
116
  uniformDeclerations
140
- } = getSamplerDeclerations(name);
117
+ } = getSamplerDeclarations(name);
141
118
  const channels = typeToChannelSuffix(type);
142
- const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\n`;
119
+ const sampleInstruction = " ".concat(type, " ").concat(name, " = transform_getInput(").concat(samplerName, ", ").concat(sizeName, ").").concat(channels, ";\n");
143
120
  samplerTextureMap[samplerName] = name;
144
121
  const inject = {
145
122
  'vs:#decl': uniformDeclerations,
@@ -154,4 +131,19 @@ export function processAttributeDefinition(line, textureMap) {
154
131
 
155
132
  return null;
156
133
  }
134
+
135
+ function getAttributeDefinition(line) {
136
+ return getQualifierDetails(line, ['attribute', 'in']);
137
+ }
138
+
139
+ function getSamplerDeclarations(textureName) {
140
+ const samplerName = "".concat(SAMPLER_UNIFORM_PREFIX).concat(textureName);
141
+ const sizeName = "".concat(SIZE_UNIFORM_PREFIX).concat(textureName);
142
+ const uniformDeclerations = " uniform sampler2D ".concat(samplerName, ";\n uniform vec2 ").concat(sizeName, ";");
143
+ return {
144
+ samplerName,
145
+ sizeName,
146
+ uniformDeclerations
147
+ };
148
+ }
157
149
  //# sourceMappingURL=transform-shader-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transform/transform-shader-utils.ts"],"names":["assert","combineInjects","getQualifierDetails","typeToChannelSuffix","SAMPLER_UNIFORM_PREFIX","SIZE_UNIFORM_PREFIX","VS_POS_VARIABLE","updateForTextures","options","vs","sourceTextureMap","targetTextureVarying","targetTexture","texAttributeNames","Object","keys","sourceCount","length","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","split","updateVsLines","slice","forEach","line","index","lines","updated","processAttributeDefinition","updatedLine","inject","assign","getVaryingType","sizeName","uniformDeclaration","posInstructions","join","getSizeUniforms","uniforms","width","height","textureName","varying","qualiferDetails","name","type","textureMap","attributeData","getAttributeDefinition","samplerName","uniformDeclerations","getSamplerDeclarations","channels","sampleInstruction"],"mappings":"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","sourcesContent":["import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures(options: {\n vs: any;\n sourceTextureMap: any;\n targetTextureVarying: any;\n targetTexture: any;\n}): {\n vs: any;\n targetTextureType: any;\n inject: {};\n samplerTextureMap: {};\n} {\n const {vs, sourceTextureMap, targetTextureVarying, targetTexture} = options;\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms(options: {\n sourceTextureMap: any;\n targetTextureVarying: any;\n targetTexture: any;\n}): {} {\n const uniforms = {};\n let width;\n let height;\n if (options.targetTextureVarying) {\n ({width, height} = options.targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${options.targetTextureVarying}`] = [width, height];\n }\n for (const textureName in options.sourceTextureMap) {\n ({width, height} = options.sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\n\nexport function getVaryingType(line: any, varying: any): any {\n const qualiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualiferDetails) {\n return null;\n }\n return qualiferDetails.name === varying ? qualiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(\n line: any,\n textureMap: any\n): {\n updatedLine: string;\n inject: {\n 'vs:#decl': string;\n 'vs:#main-start': string;\n };\n samplerTextureMap: {};\n} {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclarations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n\n// HELPERS\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclarations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n"],"file":"transform-shader-utils.js"}
@@ -0,0 +1,44 @@
1
+ /** Properties for creating Transforms */
2
+ export declare type TransformProps = {
3
+ id?: string;
4
+ vs?: string;
5
+ elementCount?: number;
6
+ sourceBuffers?: object;
7
+ feedbackBuffers?: object;
8
+ varyings?: string[];
9
+ feedbackMap?: object;
10
+ modules?: object[];
11
+ attributes?: any;
12
+ uniforms?: any;
13
+ parameters?: any;
14
+ discard?: boolean;
15
+ isIndexed?: boolean;
16
+ _sourceTextures?: any;
17
+ _targetTexture?: any;
18
+ _targetTextureVarying?: string;
19
+ _swapTexture?: string;
20
+ _fs?: string;
21
+ fs?: string;
22
+ inject?: any;
23
+ drawMode?: number;
24
+ };
25
+ /** Options that can be provided when running a Transform */
26
+ export declare type TransformRunOptions = {
27
+ clearRenderTarget?: boolean;
28
+ uniforms: Record<string, any>;
29
+ };
30
+ /** Options that control drawing a Transform. Used by subclasses to return draw parameters */
31
+ export declare type TransformDrawOptions = {
32
+ attributes?: object;
33
+ framebuffer?: any;
34
+ uniforms?: object;
35
+ discard?: boolean;
36
+ parameters?: object;
37
+ transformFeedback?: any;
38
+ };
39
+ export declare type TransformBinding = {
40
+ sourceBuffers: any;
41
+ feedbackBuffers: any;
42
+ transformFeedback: any;
43
+ };
44
+ //# sourceMappingURL=transform-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-types.d.ts","sourceRoot":"","sources":["../../src/transform/transform-types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oBAAY,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,4DAA4D;AAC5D,oBAAY,mBAAmB,GAAG;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B,CAAC;AAEF,6FAA6F;AAC7F,oBAAY,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF,oBAAY,gBAAgB,GAAG;IAAC,aAAa,MAAC;IAAC,eAAe,MAAC;IAAC,iBAAiB,MAAA;CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transform-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"transform-types.js"}
@@ -0,0 +1,47 @@
1
+ import { Device } from '@luma.gl/api';
2
+ import type { Framebuffer, Buffer } from '@luma.gl/webgl';
3
+ import { WebGLDevice } from '@luma.gl/webgl';
4
+ import Model from '../lib/model';
5
+ import { TransformProps, TransformRunOptions, TransformDrawOptions } from './transform-types';
6
+ /**
7
+ * Takes source and target buffers/textures and sets up the pipeline
8
+ */
9
+ export default class Transform {
10
+ /**
11
+ * Check if Transforms are supported (they are not under WebGL1)
12
+ * @todo differentiate writing to buffer vs not
13
+ */
14
+ static isSupported(device: Device | WebGL2RenderingContext): boolean;
15
+ readonly device: WebGLDevice;
16
+ readonly gl: WebGL2RenderingContext;
17
+ model: Model | null;
18
+ elementCount: number;
19
+ bufferTransform: any;
20
+ textureTransform: any;
21
+ elementIDBuffer: any;
22
+ constructor(device: Device | WebGL2RenderingContext, props?: TransformProps);
23
+ /** Delete owned resources. */
24
+ destroy(): void;
25
+ /** @deprecated Use destroy*() */
26
+ delete(): void;
27
+ /** Run one transform loop. */
28
+ run(options?: TransformRunOptions): void;
29
+ /** swap resources if a map is provided */
30
+ swap(): void;
31
+ /** Return Buffer object for given varying name. */
32
+ getBuffer(varyingName?: string): Buffer;
33
+ /** Return data either from Buffer or from Texture */
34
+ getData(options?: {
35
+ packed?: boolean;
36
+ varyingName?: string;
37
+ }): any;
38
+ /** Return framebuffer object if rendering to textures */
39
+ getFramebuffer(): Framebuffer | null;
40
+ /** Update some or all buffer/texture bindings. */
41
+ update(props: TransformProps): void;
42
+ _initialize(props: TransformProps): void;
43
+ _updateModelProps(props: TransformProps): TransformProps;
44
+ _buildResourceTransforms(gl: WebGL2RenderingContext, props: TransformProps): void;
45
+ _updateDrawOptions(options: TransformRunOptions): TransformDrawOptions;
46
+ }
47
+ //# sourceMappingURL=transform.d.ts.map