@luma.gl/engine 9.0.0-alpha.5 → 9.0.0-alpha.50

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 (171) hide show
  1. package/LICENSE +3 -1
  2. package/dist/animation/key-frames.d.ts +1 -1
  3. package/dist/animation/key-frames.d.ts.map +1 -1
  4. package/dist/animation/key-frames.js +6 -27
  5. package/dist/animation/key-frames.js.map +1 -1
  6. package/dist/animation/timeline.d.ts +9 -9
  7. package/dist/animation/timeline.d.ts.map +1 -1
  8. package/dist/animation/timeline.js +18 -49
  9. package/dist/animation/timeline.js.map +1 -1
  10. package/dist/{lib → animation-loop}/animation-loop.d.ts +30 -31
  11. package/dist/animation-loop/animation-loop.d.ts.map +1 -0
  12. package/dist/{lib → animation-loop}/animation-loop.js +115 -199
  13. package/dist/animation-loop/animation-loop.js.map +1 -0
  14. package/dist/{lib → animation-loop}/animation-props.d.ts +6 -7
  15. package/dist/animation-loop/animation-props.d.ts.map +1 -0
  16. package/dist/animation-loop/animation-props.js.map +1 -0
  17. package/dist/animation-loop/make-animation-loop.d.ts +6 -0
  18. package/dist/animation-loop/make-animation-loop.d.ts.map +1 -0
  19. package/dist/animation-loop/make-animation-loop.js +28 -0
  20. package/dist/animation-loop/make-animation-loop.js.map +1 -0
  21. package/dist/animation-loop/render-loop.d.ts +23 -0
  22. package/dist/animation-loop/render-loop.d.ts.map +1 -0
  23. package/dist/animation-loop/render-loop.js +7 -0
  24. package/dist/animation-loop/render-loop.js.map +1 -0
  25. package/dist/dist.dev.js +7064 -0
  26. package/dist/geometries/cone-geometry.d.ts +1 -1
  27. package/dist/geometries/cone-geometry.d.ts.map +1 -1
  28. package/dist/geometries/cone-geometry.js +6 -5
  29. package/dist/geometries/cone-geometry.js.map +1 -1
  30. package/dist/geometries/cube-geometry.d.ts +2 -2
  31. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  32. package/dist/geometries/cube-geometry.js +15 -8
  33. package/dist/geometries/cube-geometry.js.map +1 -1
  34. package/dist/geometries/cylinder-geometry.d.ts +1 -1
  35. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  36. package/dist/geometries/cylinder-geometry.js +6 -5
  37. package/dist/geometries/cylinder-geometry.js.map +1 -1
  38. package/dist/geometries/ico-sphere-geometry.d.ts +2 -2
  39. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  40. package/dist/geometries/ico-sphere-geometry.js +10 -19
  41. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  42. package/dist/geometries/plane-geometry.d.ts +2 -2
  43. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  44. package/dist/geometries/plane-geometry.js +14 -23
  45. package/dist/geometries/plane-geometry.js.map +1 -1
  46. package/dist/geometries/sphere-geometry.d.ts +2 -2
  47. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  48. package/dist/geometries/sphere-geometry.js +9 -13
  49. package/dist/geometries/sphere-geometry.js.map +1 -1
  50. package/dist/geometries/truncated-cone-geometry.d.ts +2 -4
  51. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  52. package/dist/geometries/truncated-cone-geometry.js +9 -25
  53. package/dist/geometries/truncated-cone-geometry.js.map +1 -1
  54. package/dist/geometry/geometry-table.d.ts +2 -2
  55. package/dist/geometry/geometry-table.d.ts.map +1 -1
  56. package/dist/geometry/geometry-table.js.map +1 -1
  57. package/dist/geometry/geometry-utils.d.ts.map +1 -1
  58. package/dist/geometry/geometry-utils.js +0 -9
  59. package/dist/geometry/geometry-utils.js.map +1 -1
  60. package/dist/geometry/geometry.d.ts +50 -59
  61. package/dist/geometry/geometry.d.ts.map +1 -1
  62. package/dist/geometry/geometry.js +32 -97
  63. package/dist/geometry/geometry.js.map +1 -1
  64. package/dist/geometry/gpu-geometry.d.ts +37 -0
  65. package/dist/geometry/gpu-geometry.d.ts.map +1 -0
  66. package/dist/geometry/gpu-geometry.js +107 -0
  67. package/dist/geometry/gpu-geometry.js.map +1 -0
  68. package/dist/geometry/gpu-table.d.ts +1 -0
  69. package/dist/geometry/gpu-table.d.ts.map +1 -0
  70. package/dist/geometry/gpu-table.js +2 -0
  71. package/dist/geometry/gpu-table.js.map +1 -0
  72. package/dist/index.cjs +2959 -0
  73. package/dist/index.d.ts +26 -9
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +23 -13
  76. package/dist/index.js.map +1 -1
  77. package/dist/lib/clip-space.d.ts +8 -0
  78. package/dist/lib/clip-space.d.ts.map +1 -1
  79. package/dist/lib/clip-space.js +47 -0
  80. package/dist/lib/clip-space.js.map +1 -1
  81. package/dist/lib/pipeline-factory.d.ts +12 -40
  82. package/dist/lib/pipeline-factory.d.ts.map +1 -1
  83. package/dist/lib/pipeline-factory.js +50 -148
  84. package/dist/lib/pipeline-factory.js.map +1 -1
  85. package/dist/model/model.d.ts +192 -0
  86. package/dist/model/model.d.ts.map +1 -0
  87. package/dist/model/model.js +312 -0
  88. package/dist/model/model.js.map +1 -0
  89. package/dist/scenegraph/group-node.d.ts +21 -0
  90. package/dist/scenegraph/group-node.d.ts.map +1 -0
  91. package/dist/scenegraph/group-node.js +94 -0
  92. package/dist/scenegraph/group-node.js.map +1 -0
  93. package/dist/scenegraph/model-node.d.ts +18 -0
  94. package/dist/scenegraph/model-node.d.ts.map +1 -0
  95. package/dist/scenegraph/model-node.js +28 -0
  96. package/dist/scenegraph/model-node.js.map +1 -0
  97. package/dist/scenegraph/scenegraph-node.d.ts +56 -0
  98. package/dist/scenegraph/scenegraph-node.d.ts.map +1 -0
  99. package/dist/scenegraph/scenegraph-node.js +141 -0
  100. package/dist/scenegraph/scenegraph-node.js.map +1 -0
  101. package/dist/shader-inputs.d.ts +62 -0
  102. package/dist/shader-inputs.d.ts.map +1 -0
  103. package/dist/shader-inputs.js +49 -0
  104. package/dist/shader-inputs.js.map +1 -0
  105. package/dist/transform/buffer-transform.d.ts +35 -0
  106. package/dist/transform/buffer-transform.d.ts.map +1 -0
  107. package/dist/transform/buffer-transform.js +62 -0
  108. package/dist/transform/buffer-transform.js.map +1 -0
  109. package/dist/transform/texture-transform.d.ts +57 -0
  110. package/dist/transform/texture-transform.d.ts.map +1 -0
  111. package/dist/transform/texture-transform.js +122 -0
  112. package/dist/transform/texture-transform.js.map +1 -0
  113. package/dist.min.js +286 -0
  114. package/package.json +21 -12
  115. package/src/animation/timeline.ts +16 -15
  116. package/src/{lib → animation-loop}/animation-loop.ts +120 -107
  117. package/src/{lib → animation-loop}/animation-props.ts +5 -5
  118. package/src/animation-loop/make-animation-loop.ts +44 -0
  119. package/src/animation-loop/render-loop.ts +23 -0
  120. package/src/geometries/cone-geometry.ts +1 -1
  121. package/src/geometries/cube-geometry.ts +6 -3
  122. package/src/geometries/cylinder-geometry.ts +2 -2
  123. package/src/geometries/ico-sphere-geometry.ts +7 -6
  124. package/src/geometries/plane-geometry.ts +5 -4
  125. package/src/geometries/sphere-geometry.ts +4 -3
  126. package/src/geometries/truncated-cone-geometry.ts +4 -13
  127. package/src/geometry/geometry-table.ts +1 -1
  128. package/src/geometry/geometry-utils.ts +3 -3
  129. package/src/geometry/geometry.ts +79 -119
  130. package/src/geometry/gpu-geometry.ts +124 -0
  131. package/src/geometry/gpu-table.ts +41 -0
  132. package/src/index.ts +38 -12
  133. package/src/lib/clip-space.ts +22 -21
  134. package/src/lib/pipeline-factory.ts +60 -168
  135. package/src/model/model.ts +549 -0
  136. package/src/scenegraph/group-node.ts +103 -0
  137. package/src/scenegraph/model-node.ts +50 -0
  138. package/src/scenegraph/scenegraph-node.ts +204 -0
  139. package/src/shader-inputs.ts +132 -0
  140. package/src/transform/buffer-transform.ts +94 -0
  141. package/src/transform/texture-transform.ts +169 -0
  142. package/dist/bundle.d.ts +0 -2
  143. package/dist/bundle.d.ts.map +0 -1
  144. package/dist/bundle.js +0 -5
  145. package/dist/bundle.js.map +0 -1
  146. package/dist/geometry/primitive-utils.d.ts +0 -1
  147. package/dist/geometry/primitive-utils.d.ts.map +0 -1
  148. package/dist/geometry/primitive-utils.js +0 -2
  149. package/dist/geometry/primitive-utils.js.map +0 -1
  150. package/dist/lib/animation-loop.d.ts.map +0 -1
  151. package/dist/lib/animation-loop.js.map +0 -1
  152. package/dist/lib/animation-props.d.ts.map +0 -1
  153. package/dist/lib/animation-props.js.map +0 -1
  154. package/dist/lib/model-utils.d.ts +0 -5
  155. package/dist/lib/model-utils.d.ts.map +0 -1
  156. package/dist/lib/model-utils.js +0 -45
  157. package/dist/lib/model-utils.js.map +0 -1
  158. package/dist/lib/model.d.ts +0 -41
  159. package/dist/lib/model.d.ts.map +0 -1
  160. package/dist/lib/model.js +0 -176
  161. package/dist/lib/model.js.map +0 -1
  162. package/dist/lib/render-loop.d.ts +0 -14
  163. package/dist/lib/render-loop.d.ts.map +0 -1
  164. package/dist/lib/render-loop.js +0 -49
  165. package/dist/lib/render-loop.js.map +0 -1
  166. package/src/bundle.ts +0 -4
  167. package/src/geometry/primitive-utils.ts +0 -30
  168. package/src/lib/model-utils.ts +0 -124
  169. package/src/lib/model.ts +0 -179
  170. package/src/lib/render-loop.ts +0 -58
  171. /package/dist/{lib → animation-loop}/animation-props.js +0 -0
@@ -0,0 +1,57 @@
1
+ import { Buffer, Device, Framebuffer, RenderPassProps, Sampler, Texture } from '@luma.gl/core';
2
+ import { Model, ModelProps } from '../model/model';
3
+ /**
4
+ * Properties for creating a {@link TextureTransform}
5
+ * @deprecated
6
+ */
7
+ export type TextureTransformProps = Omit<ModelProps, 'fs'> & {
8
+ fs?: ModelProps['fs'];
9
+ /** @deprecated TODO(donmccurdy): Needed? */
10
+ inject?: Record<string, string>;
11
+ /** @deprecated TODO(donmccurdy): Needed? */
12
+ framebuffer?: Framebuffer;
13
+ /** @deprecated TODO(donmccurdy): Model already handles this? */
14
+ sourceBuffers?: Record<string, Buffer>;
15
+ /** @deprecated TODO(donmccurdy): Model already handles this? */
16
+ sourceTextures?: Record<string, Texture>;
17
+ targetTexture: Texture;
18
+ targetTextureChannels: 1 | 2 | 3 | 4;
19
+ targetTextureVarying: string;
20
+ };
21
+ type TextureBinding = {
22
+ sourceBuffers: Record<string, Buffer>;
23
+ sourceTextures: Record<string, Texture>;
24
+ targetTexture: Texture;
25
+ framebuffer?: Framebuffer;
26
+ };
27
+ /**
28
+ * Creates a pipeline for texture→texture transforms.
29
+ * @deprecated
30
+ */
31
+ export declare class TextureTransform {
32
+ readonly device: Device;
33
+ readonly model: Model;
34
+ readonly sampler: Sampler;
35
+ currentIndex: number;
36
+ samplerTextureMap: Record<string, any> | null;
37
+ bindings: TextureBinding[];
38
+ resources: Record<string, any>;
39
+ constructor(device: Device, props: TextureTransformProps);
40
+ destroy(): void;
41
+ /** @deprecated Use {@link destroy}. */
42
+ delete(): void;
43
+ run(options?: RenderPassProps): void;
44
+ /** @deprecated */
45
+ update(...args: any[]): void;
46
+ getData({ packed }?: {
47
+ packed?: boolean;
48
+ }): void;
49
+ getTargetTexture(): Texture;
50
+ getFramebuffer(): Framebuffer;
51
+ _initialize(props: TextureTransformProps): void;
52
+ _updateBindings(props: TextureTransformProps): void;
53
+ _updateBinding(binding: TextureBinding, { sourceBuffers, sourceTextures, targetTexture }: TextureTransformProps): TextureBinding;
54
+ _setSourceTextureParameters(): void;
55
+ }
56
+ export {};
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":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGnD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG;IAC3D,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACtB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF,KAAK,cAAc,GAAG;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAIF;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,YAAY,SAAK;IACjB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAQ;IACrD,QAAQ,EAAE,cAAc,EAAE,CAAM;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;gBAExB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IA6BxD,OAAO,IAAI,IAAI;IAEf,uCAAuC;IACvC,MAAM,IAAI,IAAI;IAId,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAOpC,kBAAkB;IAClB,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ5B,OAAO,CAAC,EAAC,MAAc,EAAC;;KAAK;IAM7B,gBAAgB,IAAI,OAAO;IAM3B,cAAc,IAAI,WAAW;IAO7B,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAI/C,eAAe,CAAC,KAAK,EAAE,qBAAqB;IAI5C,cAAc,CACZ,OAAO,EAAE,cAAc,EACvB,EAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAC,EAAE,qBAAqB,GACpE,cAAc;IA6BjB,2BAA2B,IAAI,IAAI;CAOpC"}
@@ -0,0 +1,122 @@
1
+ import { Model } from "../model/model.js";
2
+ import { getPassthroughFS } from '@luma.gl/shadertools';
3
+ const FS_OUTPUT_VARIABLE = 'transform_output';
4
+ export class TextureTransform {
5
+ constructor(device, props) {
6
+ this.device = void 0;
7
+ this.model = void 0;
8
+ this.sampler = void 0;
9
+ this.currentIndex = 0;
10
+ this.samplerTextureMap = null;
11
+ this.bindings = [];
12
+ this.resources = {};
13
+ this.device = device;
14
+ this.sampler = device.createSampler({
15
+ addressModeU: 'clamp-to-edge',
16
+ addressModeV: 'clamp-to-edge',
17
+ minFilter: 'nearest',
18
+ magFilter: 'nearest',
19
+ mipmapFilter: 'nearest'
20
+ });
21
+ this.model = new Model(this.device, {
22
+ id: props.id || 'texture-transform-model',
23
+ fs: props.fs || getPassthroughFS({
24
+ version: 300,
25
+ input: props.targetTextureVarying,
26
+ inputChannels: props.targetTextureChannels,
27
+ output: FS_OUTPUT_VARIABLE
28
+ }),
29
+ vertexCount: props.vertexCount,
30
+ ...props
31
+ });
32
+ this._initialize(props);
33
+ Object.seal(this);
34
+ }
35
+ destroy() {}
36
+ delete() {
37
+ this.destroy();
38
+ }
39
+ run(options) {
40
+ const {
41
+ framebuffer
42
+ } = this.bindings[this.currentIndex];
43
+ const renderPass = this.device.beginRenderPass({
44
+ framebuffer,
45
+ ...options
46
+ });
47
+ this.model.draw(renderPass);
48
+ renderPass.end();
49
+ }
50
+ update() {
51
+ console.warn('TextureTransform#update() not implemented');
52
+ }
53
+ getData() {
54
+ let {
55
+ packed = false
56
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
57
+ throw new Error('getData() not implemented');
58
+ }
59
+ getTargetTexture() {
60
+ const {
61
+ targetTexture
62
+ } = this.bindings[this.currentIndex];
63
+ return targetTexture;
64
+ }
65
+ getFramebuffer() {
66
+ const currentResources = this.bindings[this.currentIndex];
67
+ return currentResources.framebuffer;
68
+ }
69
+ _initialize(props) {
70
+ this._updateBindings(props);
71
+ }
72
+ _updateBindings(props) {
73
+ this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], props);
74
+ }
75
+ _updateBinding(binding, _ref) {
76
+ let {
77
+ sourceBuffers,
78
+ sourceTextures,
79
+ targetTexture
80
+ } = _ref;
81
+ if (!binding) {
82
+ binding = {
83
+ sourceBuffers: {},
84
+ sourceTextures: {},
85
+ targetTexture: null
86
+ };
87
+ }
88
+ Object.assign(binding.sourceTextures, sourceTextures);
89
+ Object.assign(binding.sourceBuffers, sourceBuffers);
90
+ if (targetTexture) {
91
+ binding.targetTexture = targetTexture;
92
+ const {
93
+ width,
94
+ height
95
+ } = targetTexture;
96
+ if (binding.framebuffer) {
97
+ binding.framebuffer.destroy();
98
+ }
99
+ binding.framebuffer = this.device.createFramebuffer({
100
+ id: 'transform-framebuffer',
101
+ width,
102
+ height,
103
+ colorAttachments: [targetTexture]
104
+ });
105
+ binding.framebuffer.resize({
106
+ width,
107
+ height
108
+ });
109
+ }
110
+ return binding;
111
+ }
112
+ _setSourceTextureParameters() {
113
+ const index = this.currentIndex;
114
+ const {
115
+ sourceTextures
116
+ } = this.bindings[index];
117
+ for (const name in sourceTextures) {
118
+ sourceTextures[name].sampler = this.sampler;
119
+ }
120
+ }
121
+ }
122
+ //# sourceMappingURL=texture-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture-transform.js","names":["Model","getPassthroughFS","FS_OUTPUT_VARIABLE","TextureTransform","constructor","device","props","model","sampler","currentIndex","samplerTextureMap","bindings","resources","createSampler","addressModeU","addressModeV","minFilter","magFilter","mipmapFilter","id","fs","version","input","targetTextureVarying","inputChannels","targetTextureChannels","output","vertexCount","_initialize","Object","seal","destroy","delete","run","options","framebuffer","renderPass","beginRenderPass","draw","end","update","console","warn","getData","packed","arguments","length","undefined","Error","getTargetTexture","targetTexture","getFramebuffer","currentResources","_updateBindings","_updateBinding","binding","_ref","sourceBuffers","sourceTextures","assign","width","height","createFramebuffer","colorAttachments","resize","_setSourceTextureParameters","index","name"],"sources":["../../src/transform/texture-transform.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport { Buffer, Device, Framebuffer, RenderPassProps, Sampler, Texture } from '@luma.gl/core';\nimport { Model, ModelProps } from '../model/model';\nimport { getPassthroughFS } from '@luma.gl/shadertools';\n\n/**\n * Properties for creating a {@link TextureTransform}\n * @deprecated\n */\nexport type TextureTransformProps = Omit<ModelProps, 'fs'> & {\n fs?: ModelProps['fs']; // override as optional\n /** @deprecated TODO(donmccurdy): Needed? */\n inject?: Record<string, string>;\n /** @deprecated TODO(donmccurdy): Needed? */\n framebuffer?: Framebuffer;\n /** @deprecated TODO(donmccurdy): Model already handles this? */\n sourceBuffers?: Record<string, Buffer>;\n /** @deprecated TODO(donmccurdy): Model already handles this? */\n sourceTextures?: Record<string, Texture>;\n targetTexture: Texture;\n targetTextureChannels: 1 | 2 | 3 | 4;\n targetTextureVarying: string;\n};\n\n\ntype TextureBinding = {\n sourceBuffers: Record<string, Buffer>;\n sourceTextures: Record<string, Texture>;\n targetTexture: Texture;\n framebuffer?: Framebuffer;\n};\n\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\n/**\n * Creates a pipeline for texture→texture transforms.\n * @deprecated\n */\nexport class TextureTransform {\n readonly device: Device;\n readonly model: Model;\n readonly sampler: Sampler;\n \n currentIndex = 0;\n samplerTextureMap: Record<string, any> | null = null;\n bindings: TextureBinding[] = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n resources: Record<string, any> = {}; // resources to be deleted\n\n constructor(device: Device, props: TextureTransformProps) {\n this.device = device;\n\n // For precise picking of element IDs.\n this.sampler = device.createSampler({\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n minFilter: 'nearest',\n magFilter: 'nearest',\n mipmapFilter: 'nearest',\n });\n\n this.model = new Model(this.device, {\n id: props.id || 'texture-transform-model',\n fs: props.fs || getPassthroughFS({\n version: 300,\n input: props.targetTextureVarying,\n inputChannels: props.targetTextureChannels,\n output: FS_OUTPUT_VARIABLE\n }),\n vertexCount: props.vertexCount, // TODO(donmccurdy): Naming?\n ...props\n });\n\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n destroy(): void {}\n\n /** @deprecated Use {@link destroy}. */\n delete(): void {\n this.destroy();\n }\n\n run(options?: RenderPassProps): void {\n const {framebuffer} = this.bindings[this.currentIndex];\n const renderPass = this.device.beginRenderPass({framebuffer, ...options});\n this.model.draw(renderPass);\n renderPass.end();\n }\n\n /** @deprecated */\n update(...args: any[]): void {\n // TODO(v9): Method should likely be removed for v9. Keeping a method stub\n // to assist with migrating DeckGL usage.\n // eslint-disable-next-line no-console\n console.warn('TextureTransform#update() not implemented');\n }\n\n\n getData({packed = false} = {}) {\n // TODO(v9): Method should likely be removed for v9. Keeping a method stub\n // to assist with migrating DeckGL usage.\n throw new Error('getData() not implemented');\n }\n\n getTargetTexture(): Texture {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n\n getFramebuffer(): Framebuffer {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Private\n\n _initialize(props: TextureTransformProps): void {\n this._updateBindings(props);\n }\n\n _updateBindings(props: TextureTransformProps) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], props);\n }\n\n _updateBinding(\n binding: TextureBinding,\n {sourceBuffers, sourceTextures, targetTexture}: TextureTransformProps\n ): TextureBinding {\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 const {width, height} = targetTexture;\n // TODO(donmccurdy): When is this called, and is this expected?\n if (binding.framebuffer) {\n binding.framebuffer.destroy();\n }\n binding.framebuffer = this.device.createFramebuffer({\n id: 'transform-framebuffer',\n width,\n height,\n colorAttachments: [targetTexture]\n });\n binding.framebuffer.resize({width, height});\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters(): void {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].sampler = this.sampler;\n }\n }\n}\n"],"mappings":"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"}