@luma.gl/engine 8.6.0-alpha.5 → 9.0.0-alpha.11

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 (129) hide show
  1. package/dist/animation/key-frames.d.ts +1 -0
  2. package/dist/animation/key-frames.d.ts.map +1 -1
  3. package/dist/animation/key-frames.js.map +1 -1
  4. package/dist/animation/timeline.d.ts +2 -2
  5. package/dist/animation/timeline.d.ts.map +1 -1
  6. package/dist/animation/timeline.js.map +1 -1
  7. package/dist/geometries/cone-geometry.d.ts.map +1 -1
  8. package/dist/geometries/cone-geometry.js +1 -1
  9. package/dist/geometries/cone-geometry.js.map +1 -1
  10. package/dist/geometries/cube-geometry.d.ts +4 -0
  11. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  12. package/dist/geometries/cube-geometry.js +31 -7
  13. package/dist/geometries/cube-geometry.js.map +1 -1
  14. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  15. package/dist/geometries/cylinder-geometry.js +1 -1
  16. package/dist/geometries/cylinder-geometry.js.map +1 -1
  17. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  18. package/dist/geometries/ico-sphere-geometry.js +1 -1
  19. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  20. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  21. package/dist/geometries/plane-geometry.js +1 -1
  22. package/dist/geometries/plane-geometry.js.map +1 -1
  23. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  24. package/dist/geometries/sphere-geometry.js +1 -1
  25. package/dist/geometries/sphere-geometry.js.map +1 -1
  26. package/dist/geometries/truncated-cone-geometry.d.ts +15 -3
  27. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  28. package/dist/geometries/truncated-cone-geometry.js +29 -15
  29. package/dist/geometries/truncated-cone-geometry.js.map +1 -1
  30. package/dist/geometry/geometry-table.d.ts +15 -0
  31. package/dist/geometry/geometry-table.d.ts.map +1 -0
  32. package/dist/geometry/geometry-table.js +2 -0
  33. package/dist/{transform/transform-types.js.map → geometry/geometry-table.js.map} +1 -1
  34. package/dist/geometry/geometry-utils.js.map +1 -1
  35. package/dist/geometry/geometry.d.ts +32 -14
  36. package/dist/geometry/geometry.d.ts.map +1 -1
  37. package/dist/geometry/geometry.js +57 -34
  38. package/dist/geometry/geometry.js.map +1 -1
  39. package/dist/geometry/primitive-utils.d.ts +1 -0
  40. package/dist/geometry/primitive-utils.d.ts.map +1 -0
  41. package/dist/geometry/primitive-utils.js +2 -0
  42. package/dist/geometry/primitive-utils.js.map +1 -0
  43. package/dist/index.d.ts +6 -7
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +4 -6
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/animation-loop.d.ts +25 -87
  48. package/dist/lib/animation-loop.d.ts.map +1 -1
  49. package/dist/lib/animation-loop.js +111 -197
  50. package/dist/lib/animation-loop.js.map +1 -1
  51. package/dist/lib/animation-props.d.ts +24 -0
  52. package/dist/lib/animation-props.d.ts.map +1 -0
  53. package/dist/lib/animation-props.js +2 -0
  54. package/dist/lib/animation-props.js.map +1 -0
  55. package/dist/lib/clip-space.d.ts +1 -0
  56. package/dist/lib/clip-space.d.ts.map +1 -0
  57. package/dist/lib/clip-space.js +2 -0
  58. package/dist/lib/clip-space.js.map +1 -0
  59. package/dist/lib/model-utils.d.ts +4 -3
  60. package/dist/lib/model-utils.d.ts.map +1 -1
  61. package/dist/lib/model-utils.js +24 -70
  62. package/dist/lib/model-utils.js.map +1 -1
  63. package/dist/lib/model.d.ts +34 -104
  64. package/dist/lib/model.d.ts.map +1 -1
  65. package/dist/lib/model.js +111 -502
  66. package/dist/lib/model.js.map +1 -1
  67. package/dist/lib/pipeline-factory.d.ts +60 -0
  68. package/dist/lib/pipeline-factory.d.ts.map +1 -0
  69. package/dist/lib/pipeline-factory.js +219 -0
  70. package/dist/lib/pipeline-factory.js.map +1 -0
  71. package/dist/lib/render-loop.d.ts +10 -18
  72. package/dist/lib/render-loop.d.ts.map +1 -1
  73. package/dist/lib/render-loop.js +32 -35
  74. package/dist/lib/render-loop.js.map +1 -1
  75. package/package.json +6 -6
  76. package/src/animation/key-frames.ts +1 -0
  77. package/src/animation/timeline.ts +2 -2
  78. package/src/geometries/cone-geometry.ts +1 -1
  79. package/src/geometries/cube-geometry.ts +160 -8
  80. package/src/geometries/cylinder-geometry.ts +1 -1
  81. package/src/geometries/ico-sphere-geometry.ts +2 -2
  82. package/src/geometries/plane-geometry.ts +1 -1
  83. package/src/geometries/sphere-geometry.ts +2 -2
  84. package/src/geometries/truncated-cone-geometry.ts +30 -12
  85. package/src/geometry/geometry-table.ts +16 -0
  86. package/src/geometry/geometry-utils.ts +1 -1
  87. package/src/geometry/geometry.ts +97 -47
  88. package/src/geometry/primitive-utils.ts +30 -0
  89. package/src/index.ts +13 -12
  90. package/src/lib/animation-loop.ts +141 -319
  91. package/src/lib/animation-props.ts +31 -0
  92. package/src/{utils → lib}/clip-space.ts +5 -2
  93. package/src/lib/model-utils.ts +60 -32
  94. package/src/lib/model.ts +127 -639
  95. package/src/lib/pipeline-factory.ts +234 -0
  96. package/src/lib/render-loop.ts +44 -40
  97. package/dist/lib/program-manager.d.ts +0 -39
  98. package/dist/lib/program-manager.d.ts.map +0 -1
  99. package/dist/lib/program-manager.js +0 -175
  100. package/dist/lib/program-manager.js.map +0 -1
  101. package/dist/transform/buffer-transform.d.ts +0 -36
  102. package/dist/transform/buffer-transform.d.ts.map +0 -1
  103. package/dist/transform/buffer-transform.js +0 -255
  104. package/dist/transform/buffer-transform.js.map +0 -1
  105. package/dist/transform/texture-transform.d.ts +0 -57
  106. package/dist/transform/texture-transform.d.ts.map +0 -1
  107. package/dist/transform/texture-transform.js +0 -412
  108. package/dist/transform/texture-transform.js.map +0 -1
  109. package/dist/transform/transform-shader-utils.d.ts +0 -26
  110. package/dist/transform/transform-shader-utils.d.ts.map +0 -1
  111. package/dist/transform/transform-shader-utils.js +0 -149
  112. package/dist/transform/transform-shader-utils.js.map +0 -1
  113. package/dist/transform/transform-types.d.ts +0 -44
  114. package/dist/transform/transform-types.d.ts.map +0 -1
  115. package/dist/transform/transform-types.js +0 -2
  116. package/dist/transform/transform.d.ts +0 -47
  117. package/dist/transform/transform.d.ts.map +0 -1
  118. package/dist/transform/transform.js +0 -198
  119. package/dist/transform/transform.js.map +0 -1
  120. package/dist/utils/clip-space.d.ts +0 -5
  121. package/dist/utils/clip-space.d.ts.map +0 -1
  122. package/dist/utils/clip-space.js +0 -34
  123. package/dist/utils/clip-space.js.map +0 -1
  124. package/src/lib/program-manager.ts +0 -187
  125. package/src/transform/buffer-transform.ts +0 -214
  126. package/src/transform/texture-transform.ts +0 -344
  127. package/src/transform/transform-shader-utils.ts +0 -169
  128. package/src/transform/transform-types.ts +0 -42
  129. package/src/transform/transform.ts +0 -189
@@ -1,255 +0,0 @@
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
- export default class BufferTransform {
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
-
18
- this.gl = gl;
19
-
20
- this._initialize(props);
21
-
22
- Object.seal(this);
23
- }
24
-
25
- setupResources(opts) {
26
- for (const binding of this.bindings) {
27
- this._setupTransformFeedback(binding, opts);
28
- }
29
- }
30
-
31
- updateModelProps(props = {}) {
32
- const {
33
- varyings
34
- } = this;
35
-
36
- if (varyings.length > 0) {
37
- props = Object.assign({}, props, {
38
- varyings
39
- });
40
- }
41
-
42
- return props;
43
- }
44
-
45
- getDrawOptions(opts = {}) {
46
- const binding = this.bindings[this.currentIndex];
47
- const {
48
- sourceBuffers,
49
- transformFeedback
50
- } = binding;
51
- const attributes = Object.assign({}, sourceBuffers, opts.attributes);
52
- return {
53
- attributes,
54
- transformFeedback
55
- };
56
- }
57
-
58
- swap() {
59
- if (this.feedbackMap) {
60
- this.currentIndex = this._getNextIndex();
61
- return true;
62
- }
63
-
64
- return false;
65
- }
66
-
67
- update(opts = {}) {
68
- this._setupBuffers(opts);
69
- }
70
-
71
- getBuffer(varyingName) {
72
- const {
73
- feedbackBuffers
74
- } = this.bindings[this.currentIndex];
75
- const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;
76
-
77
- if (!bufferOrParams) {
78
- return null;
79
- }
80
-
81
- return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;
82
- }
83
-
84
- getData(options = {}) {
85
- const {
86
- varyingName
87
- } = options;
88
- const buffer = this.getBuffer(varyingName);
89
-
90
- if (buffer) {
91
- return buffer.getData();
92
- }
93
-
94
- return null;
95
- }
96
-
97
- delete() {
98
- for (const name in this.resources) {
99
- this.resources[name].delete();
100
- }
101
- }
102
-
103
- _initialize(props = {}) {
104
- this._setupBuffers(props);
105
-
106
- this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);
107
-
108
- if (this.varyings.length > 0) {
109
- assert(isWebGL2(this.gl));
110
- }
111
- }
112
-
113
- _getFeedbackBuffers(props) {
114
- const {
115
- sourceBuffers = {}
116
- } = props;
117
- const feedbackBuffers = {};
118
-
119
- if (this.bindings[this.currentIndex]) {
120
- Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);
121
- }
122
-
123
- if (this.feedbackMap) {
124
- for (const sourceName in this.feedbackMap) {
125
- const feedbackName = this.feedbackMap[sourceName];
126
-
127
- if (sourceName in sourceBuffers) {
128
- feedbackBuffers[feedbackName] = sourceName;
129
- }
130
- }
131
- }
132
-
133
- Object.assign(feedbackBuffers, props.feedbackBuffers);
134
-
135
- for (const bufferName in feedbackBuffers) {
136
- const bufferOrRef = feedbackBuffers[bufferName];
137
-
138
- if (typeof bufferOrRef === 'string') {
139
- const sourceBuffer = sourceBuffers[bufferOrRef];
140
- const {
141
- byteLength,
142
- usage,
143
- accessor
144
- } = sourceBuffer;
145
- feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {
146
- byteLength,
147
- usage,
148
- accessor
149
- });
150
- }
151
- }
152
-
153
- return feedbackBuffers;
154
- }
155
-
156
- _setupBuffers(props = {}) {
157
- const {
158
- sourceBuffers = null
159
- } = props;
160
- Object.assign(this.feedbackMap, props.feedbackMap);
161
-
162
- const feedbackBuffers = this._getFeedbackBuffers(props);
163
-
164
- this._updateBindings({
165
- sourceBuffers,
166
- feedbackBuffers
167
- });
168
- }
169
-
170
- _setupTransformFeedback(binding, {
171
- model
172
- }) {
173
- const {
174
- program
175
- } = model;
176
- binding.transformFeedback = new TransformFeedback(this.gl, {
177
- program,
178
- buffers: binding.feedbackBuffers
179
- });
180
- }
181
-
182
- _updateBindings(opts) {
183
- this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);
184
-
185
- if (this.feedbackMap) {
186
- const {
187
- sourceBuffers,
188
- feedbackBuffers
189
- } = this._swapBuffers(this.bindings[this.currentIndex]);
190
-
191
- const nextIndex = this._getNextIndex();
192
-
193
- this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {
194
- sourceBuffers,
195
- feedbackBuffers
196
- });
197
- }
198
- }
199
-
200
- _updateBinding(binding, opts) {
201
- if (!binding) {
202
- return {
203
- sourceBuffers: Object.assign({}, opts.sourceBuffers),
204
- feedbackBuffers: Object.assign({}, opts.feedbackBuffers)
205
- };
206
- }
207
-
208
- Object.assign(binding.sourceBuffers, opts.sourceBuffers);
209
- Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);
210
-
211
- if (binding.transformFeedback) {
212
- binding.transformFeedback.setBuffers(binding.feedbackBuffers);
213
- }
214
-
215
- return binding;
216
- }
217
-
218
- _swapBuffers(opts) {
219
- if (!this.feedbackMap) {
220
- return null;
221
- }
222
-
223
- const sourceBuffers = Object.assign({}, opts.sourceBuffers);
224
- const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);
225
-
226
- for (const srcName in this.feedbackMap) {
227
- const dstName = this.feedbackMap[srcName];
228
- sourceBuffers[srcName] = opts.feedbackBuffers[dstName];
229
- feedbackBuffers[dstName] = opts.sourceBuffers[srcName];
230
- assert(feedbackBuffers[dstName] instanceof Buffer);
231
- }
232
-
233
- return {
234
- sourceBuffers,
235
- feedbackBuffers
236
- };
237
- }
238
-
239
- _createNewBuffer(name, opts) {
240
- const buffer = new Buffer(this.gl, opts);
241
-
242
- if (this.resources[name]) {
243
- this.resources[name].delete();
244
- }
245
-
246
- this.resources[name] = buffer;
247
- return buffer;
248
- }
249
-
250
- _getNextIndex() {
251
- return (this.currentIndex + 1) % 2;
252
- }
253
-
254
- }
255
- //# sourceMappingURL=buffer-transform.js.map
@@ -1 +0,0 @@
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"}
@@ -1,57 +0,0 @@
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
@@ -1 +0,0 @@
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"}