@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.
- package/dist/animation/key-frames.d.ts +1 -0
- package/dist/animation/key-frames.d.ts.map +1 -1
- package/dist/animation/key-frames.js.map +1 -1
- package/dist/animation/timeline.d.ts +2 -2
- package/dist/animation/timeline.d.ts.map +1 -1
- package/dist/animation/timeline.js.map +1 -1
- package/dist/geometries/cone-geometry.d.ts.map +1 -1
- package/dist/geometries/cone-geometry.js +1 -1
- package/dist/geometries/cone-geometry.js.map +1 -1
- package/dist/geometries/cube-geometry.d.ts +4 -0
- package/dist/geometries/cube-geometry.d.ts.map +1 -1
- package/dist/geometries/cube-geometry.js +31 -7
- package/dist/geometries/cube-geometry.js.map +1 -1
- package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
- package/dist/geometries/cylinder-geometry.js +1 -1
- package/dist/geometries/cylinder-geometry.js.map +1 -1
- package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
- package/dist/geometries/ico-sphere-geometry.js +1 -1
- package/dist/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/geometries/plane-geometry.d.ts.map +1 -1
- package/dist/geometries/plane-geometry.js +1 -1
- package/dist/geometries/plane-geometry.js.map +1 -1
- package/dist/geometries/sphere-geometry.d.ts.map +1 -1
- package/dist/geometries/sphere-geometry.js +1 -1
- package/dist/geometries/sphere-geometry.js.map +1 -1
- package/dist/geometries/truncated-cone-geometry.d.ts +15 -3
- package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
- package/dist/geometries/truncated-cone-geometry.js +29 -15
- package/dist/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/geometry/geometry-table.d.ts +15 -0
- package/dist/geometry/geometry-table.d.ts.map +1 -0
- package/dist/geometry/geometry-table.js +2 -0
- package/dist/{transform/transform-types.js.map → geometry/geometry-table.js.map} +1 -1
- package/dist/geometry/geometry-utils.js.map +1 -1
- package/dist/geometry/geometry.d.ts +32 -14
- package/dist/geometry/geometry.d.ts.map +1 -1
- package/dist/geometry/geometry.js +57 -34
- package/dist/geometry/geometry.js.map +1 -1
- package/dist/geometry/primitive-utils.d.ts +1 -0
- package/dist/geometry/primitive-utils.d.ts.map +1 -0
- package/dist/geometry/primitive-utils.js +2 -0
- package/dist/geometry/primitive-utils.js.map +1 -0
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/animation-loop.d.ts +25 -87
- package/dist/lib/animation-loop.d.ts.map +1 -1
- package/dist/lib/animation-loop.js +111 -197
- package/dist/lib/animation-loop.js.map +1 -1
- package/dist/lib/animation-props.d.ts +24 -0
- package/dist/lib/animation-props.d.ts.map +1 -0
- package/dist/lib/animation-props.js +2 -0
- package/dist/lib/animation-props.js.map +1 -0
- package/dist/lib/clip-space.d.ts +1 -0
- package/dist/lib/clip-space.d.ts.map +1 -0
- package/dist/lib/clip-space.js +2 -0
- package/dist/lib/clip-space.js.map +1 -0
- package/dist/lib/model-utils.d.ts +4 -3
- package/dist/lib/model-utils.d.ts.map +1 -1
- package/dist/lib/model-utils.js +24 -70
- package/dist/lib/model-utils.js.map +1 -1
- package/dist/lib/model.d.ts +34 -104
- package/dist/lib/model.d.ts.map +1 -1
- package/dist/lib/model.js +111 -502
- package/dist/lib/model.js.map +1 -1
- package/dist/lib/pipeline-factory.d.ts +60 -0
- package/dist/lib/pipeline-factory.d.ts.map +1 -0
- package/dist/lib/pipeline-factory.js +219 -0
- package/dist/lib/pipeline-factory.js.map +1 -0
- package/dist/lib/render-loop.d.ts +10 -18
- package/dist/lib/render-loop.d.ts.map +1 -1
- package/dist/lib/render-loop.js +32 -35
- package/dist/lib/render-loop.js.map +1 -1
- package/package.json +6 -6
- package/src/animation/key-frames.ts +1 -0
- package/src/animation/timeline.ts +2 -2
- package/src/geometries/cone-geometry.ts +1 -1
- package/src/geometries/cube-geometry.ts +160 -8
- package/src/geometries/cylinder-geometry.ts +1 -1
- package/src/geometries/ico-sphere-geometry.ts +2 -2
- package/src/geometries/plane-geometry.ts +1 -1
- package/src/geometries/sphere-geometry.ts +2 -2
- package/src/geometries/truncated-cone-geometry.ts +30 -12
- package/src/geometry/geometry-table.ts +16 -0
- package/src/geometry/geometry-utils.ts +1 -1
- package/src/geometry/geometry.ts +97 -47
- package/src/geometry/primitive-utils.ts +30 -0
- package/src/index.ts +13 -12
- package/src/lib/animation-loop.ts +141 -319
- package/src/lib/animation-props.ts +31 -0
- package/src/{utils → lib}/clip-space.ts +5 -2
- package/src/lib/model-utils.ts +60 -32
- package/src/lib/model.ts +127 -639
- package/src/lib/pipeline-factory.ts +234 -0
- package/src/lib/render-loop.ts +44 -40
- package/dist/lib/program-manager.d.ts +0 -39
- package/dist/lib/program-manager.d.ts.map +0 -1
- package/dist/lib/program-manager.js +0 -175
- package/dist/lib/program-manager.js.map +0 -1
- package/dist/transform/buffer-transform.d.ts +0 -36
- package/dist/transform/buffer-transform.d.ts.map +0 -1
- package/dist/transform/buffer-transform.js +0 -255
- package/dist/transform/buffer-transform.js.map +0 -1
- package/dist/transform/texture-transform.d.ts +0 -57
- package/dist/transform/texture-transform.d.ts.map +0 -1
- package/dist/transform/texture-transform.js +0 -412
- package/dist/transform/texture-transform.js.map +0 -1
- package/dist/transform/transform-shader-utils.d.ts +0 -26
- package/dist/transform/transform-shader-utils.d.ts.map +0 -1
- package/dist/transform/transform-shader-utils.js +0 -149
- package/dist/transform/transform-shader-utils.js.map +0 -1
- package/dist/transform/transform-types.d.ts +0 -44
- package/dist/transform/transform-types.d.ts.map +0 -1
- package/dist/transform/transform-types.js +0 -2
- package/dist/transform/transform.d.ts +0 -47
- package/dist/transform/transform.d.ts.map +0 -1
- package/dist/transform/transform.js +0 -198
- package/dist/transform/transform.js.map +0 -1
- package/dist/utils/clip-space.d.ts +0 -5
- package/dist/utils/clip-space.d.ts.map +0 -1
- package/dist/utils/clip-space.js +0 -34
- package/dist/utils/clip-space.js.map +0 -1
- package/src/lib/program-manager.ts +0 -187
- package/src/transform/buffer-transform.ts +0 -214
- package/src/transform/texture-transform.ts +0 -344
- package/src/transform/transform-shader-utils.ts +0 -169
- package/src/transform/transform-types.ts +0 -42
- 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"}
|