@kitware/vtk.js 33.3.2 → 34.0.0-beta.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 (56) hide show
  1. package/BREAKING_CHANGES.md +10 -0
  2. package/IO/Geometry/GLTFImporter/Decoder.js +21 -35
  3. package/IO/Geometry/GLTFImporter/ORMTexture.worker.js +42 -0
  4. package/IO/Geometry/GLTFImporter/Parser.js +6 -15
  5. package/IO/Geometry/GLTFImporter/Reader.js +10 -7
  6. package/IO/Geometry/GLTFImporter/Utils.js +27 -9
  7. package/Interaction/Manipulators/KeyboardCameraManipulator.d.ts +113 -0
  8. package/Rendering/Core/Actor.d.ts +5 -20
  9. package/Rendering/Core/Actor.js +5 -68
  10. package/Rendering/Core/ImageCPRMapper.d.ts +1 -20
  11. package/Rendering/Core/ImageCPRMapper.js +1 -2
  12. package/Rendering/Core/ImageProperty.d.ts +20 -1
  13. package/Rendering/Core/ImageProperty.js +7 -5
  14. package/Rendering/Core/ImageResliceMapper.d.ts +1 -20
  15. package/Rendering/Core/ImageResliceMapper.js +1 -2
  16. package/Rendering/Core/ImageSlice.d.ts +7 -23
  17. package/Rendering/Core/ImageSlice.js +9 -68
  18. package/Rendering/Core/Prop3D.d.ts +39 -2
  19. package/Rendering/Core/Prop3D.js +81 -2
  20. package/Rendering/Core/RenderWindowInteractor.d.ts +6 -0
  21. package/Rendering/Core/RenderWindowInteractor.js +7 -5
  22. package/Rendering/Core/Volume.d.ts +5 -20
  23. package/Rendering/Core/Volume.js +2 -70
  24. package/Rendering/Core/VolumeMapper/Constants.d.ts +0 -7
  25. package/Rendering/Core/VolumeMapper/Constants.js +2 -8
  26. package/Rendering/Core/VolumeMapper.d.ts +16 -173
  27. package/Rendering/Core/VolumeMapper.js +16 -51
  28. package/Rendering/Core/VolumeProperty/Constants.d.ts +12 -3
  29. package/Rendering/Core/VolumeProperty/Constants.js +11 -4
  30. package/Rendering/Core/VolumeProperty.d.ts +140 -5
  31. package/Rendering/Core/VolumeProperty.js +54 -7
  32. package/Rendering/OpenGL/Framebuffer.js +7 -1
  33. package/Rendering/OpenGL/ImageCPRMapper.js +72 -27
  34. package/Rendering/OpenGL/ImageMapper.js +71 -33
  35. package/Rendering/OpenGL/ImageResliceMapper.js +306 -183
  36. package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +20 -3
  37. package/Rendering/OpenGL/PolyDataMapper.js +8 -9
  38. package/Rendering/OpenGL/RenderWindow/resourceSharingHelper.d.ts +3 -3
  39. package/Rendering/OpenGL/RenderWindow/resourceSharingHelper.js +8 -5
  40. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +7 -1
  41. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +20 -3
  42. package/Rendering/OpenGL/Texture.d.ts +110 -62
  43. package/Rendering/OpenGL/Texture.js +145 -37
  44. package/Rendering/OpenGL/VolumeMapper.js +763 -783
  45. package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
  46. package/Rendering/WebGPU/CellArrayMapper.js +17 -17
  47. package/Rendering/WebGPU/PolyDataMapper.js +15 -35
  48. package/Rendering/WebGPU/Renderer.js +1 -1
  49. package/Rendering/WebGPU/Texture.js +12 -13
  50. package/Rendering/WebGPU/TextureManager.js +7 -12
  51. package/Rendering/WebGPU/VolumePassFSQ.js +2 -2
  52. package/_virtual/rollup-plugin-worker-loader__module_Sources/IO/Geometry/GLTFImporter/ORMTexture.worker.js +296 -0
  53. package/index.d.ts +1 -0
  54. package/macros.js +1 -1
  55. package/macros2.js +8 -3
  56. package/package.json +1 -1
@@ -91,16 +91,33 @@ function vtkOpenGLOrderIndependentTranslucentPass(publicAPI, model) {
91
91
  model.translucentRGBATexture.setFormat(gl.RGBA);
92
92
  model.translucentRGBATexture.setOpenGLDataType(gl.HALF_FLOAT);
93
93
  model.translucentRGBATexture.setOpenGLRenderWindow(viewNode);
94
- model.translucentRGBATexture.create2DFromRaw(size[0], size[1], 4, 'Float32Array', null);
94
+ model.translucentRGBATexture.create2DFromRaw({
95
+ width: size[0],
96
+ height: size[1],
97
+ numComps: 4,
98
+ dataType: 'Float32Array',
99
+ data: null
100
+ });
95
101
  model.translucentRTexture = vtkOpenGLTexture.newInstance();
96
102
  model.translucentRTexture.setInternalFormat(gl.R16F);
97
103
  model.translucentRTexture.setFormat(gl.RED);
98
104
  model.translucentRTexture.setOpenGLDataType(gl.HALF_FLOAT);
99
105
  model.translucentRTexture.setOpenGLRenderWindow(viewNode);
100
- model.translucentRTexture.create2DFromRaw(size[0], size[1], 1, 'Float32Array', null);
106
+ model.translucentRTexture.create2DFromRaw({
107
+ width: size[0],
108
+ height: size[1],
109
+ numComps: 1,
110
+ dataType: 'Float32Array',
111
+ data: null
112
+ });
101
113
  model.translucentZTexture = vtkOpenGLTexture.newInstance();
102
114
  model.translucentZTexture.setOpenGLRenderWindow(viewNode);
103
- model.translucentZTexture.createDepthFromRaw(size[0], size[1], 'Float32Array', null);
115
+ model.translucentZTexture.createDepthFromRaw({
116
+ width: size[0],
117
+ height: size[1],
118
+ dataType: 'Float32Array',
119
+ data: null
120
+ });
104
121
  model.framebuffer.setColorBuffer(model.translucentRGBATexture, 0);
105
122
  model.framebuffer.setColorBuffer(model.translucentRTexture, 1);
106
123
  model.framebuffer.setDepthBuffer(model.translucentZTexture);
@@ -2,7 +2,7 @@ import { mat3, mat4, vec3 } from 'gl-matrix';
2
2
  import { n as newInstance$1, e as setGet, o as obj, c as macro } from '../../macros2.js';
3
3
  import vtkHelper from './Helper.js';
4
4
  import vtkMapper from '../Core/Mapper.js';
5
- import { l as normalize, u as uninitializeBounds } from '../../Common/Core/Math/index.js';
5
+ import { l as normalize } from '../../Common/Core/Math/index.js';
6
6
  import vtkOpenGLTexture from './Texture.js';
7
7
  import vtkProp from '../Core/Prop.js';
8
8
  import vtkProperty from '../Core/Property.js';
@@ -941,13 +941,6 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
941
941
  publicAPI.renderPieceDraw(ren, actor);
942
942
  publicAPI.renderPieceFinish(ren, actor);
943
943
  };
944
- publicAPI.computeBounds = (ren, actor) => {
945
- if (!publicAPI.getInput()) {
946
- uninitializeBounds(model.bounds);
947
- return;
948
- }
949
- model.bounds = publicAPI.getInput().getBounds();
950
- };
951
944
  publicAPI.updateBufferObjects = (ren, actor) => {
952
945
  // Rebuild buffers if needed
953
946
  if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {
@@ -1021,7 +1014,13 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
1021
1014
  const input = model.renderable.getColorTextureMap();
1022
1015
  const ext = input.getExtent();
1023
1016
  const inScalars = input.getPointData().getScalars();
1024
- tex.create2DFromRaw(ext[1] - ext[0] + 1, ext[3] - ext[2] + 1, inScalars.getNumberOfComponents(), inScalars.getDataType(), inScalars.getData());
1017
+ tex.create2DFromRaw({
1018
+ width: ext[1] - ext[0] + 1,
1019
+ height: ext[3] - ext[2] + 1,
1020
+ numComps: inScalars.getNumberOfComponents(),
1021
+ dataType: inScalars.getDataType(),
1022
+ data: inScalars.getData()
1023
+ });
1025
1024
  tex.activate();
1026
1025
  tex.sendParameters();
1027
1026
  tex.deactivate();
@@ -9,8 +9,8 @@ import { vtkObject } from '../../../interfaces';
9
9
  * @param useIndependentComponents A boolean taken from the image or volume property, using getIndependentComponents()
10
10
  * @param numberOfComponents Taken from the data array, using getNumberOfComponents()
11
11
  */
12
- export function getTransferFunctionHash(
13
- transferFunction: vtkObject | undefined,
12
+ export function getTransferFunctionsHash(
13
+ transferFunctions: (vtkObject | null | undefined)[],
14
14
  useIndependentComponents: boolean,
15
15
  numberOfComponents: number
16
16
  ): string;
@@ -27,7 +27,7 @@ export function getImageDataHash(
27
27
  ): string;
28
28
 
29
29
  declare const defaultExport: {
30
- getTransferFunctionHash: typeof getTransferFunctionHash;
30
+ getTransferFunctionsHash: typeof getTransferFunctionsHash;
31
31
  getImageDataHash: typeof getImageDataHash;
32
32
  };
33
33
 
@@ -1,14 +1,17 @@
1
1
  // See typescript header for documentation
2
2
 
3
- function getTransferFunctionHash(transferFunction, useIndependentComponents, numberOfComponents) {
4
- return transferFunction ? `${transferFunction.getMTime()}-${useIndependentComponents}-${numberOfComponents}` : '0';
3
+ function getTransferFunctionsHash(transferFunctions, useIndependentComponents, numberOfComponents) {
4
+ return transferFunctions.length > 0 ? `${transferFunctions.map(tf => tf?.getMTime() ?? 'x').join('/')}-${useIndependentComponents}-${numberOfComponents}` : '0';
5
5
  }
6
6
  function getImageDataHash(image, scalars) {
7
- return `${image.getMTime()}A${scalars.getMTime()}`;
7
+ // Don't use the image data, as the scalars will define the texture
8
+ // If using the image data in the hash, it will cause issues when two image data
9
+ // using the same scalars are in the same mapper (for example the VolumeMapper)
10
+ return `${scalars.getMTime()}`;
8
11
  }
9
12
  var resourceSharingHelper = {
10
- getTransferFunctionHash,
13
+ getTransferFunctionsHash,
11
14
  getImageDataHash
12
15
  };
13
16
 
14
- export { resourceSharingHelper as default, getImageDataHash, getTransferFunctionHash };
17
+ export { resourceSharingHelper as default, getImageDataHash, getTransferFunctionsHash };
@@ -64,7 +64,13 @@ function allocateBuffer(openGLRenderWindow, _ref, filter, wrapping) {
64
64
  });
65
65
  texture.setOpenGLRenderWindow(openGLRenderWindow);
66
66
  texture.setInternalFormat(gl.RGBA32F);
67
- texture.create2DFromRaw(width, height, 4, 'Float32Array', null);
67
+ texture.create2DFromRaw({
68
+ width,
69
+ height,
70
+ numComps: 4,
71
+ dataType: 'Float32Array',
72
+ data: null
73
+ });
68
74
  texture.activate();
69
75
  texture.sendParameters();
70
76
  texture.deactivate();
@@ -206,7 +206,13 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
206
206
  autoParameters: false
207
207
  });
208
208
  texture.setOpenGLRenderWindow(model._openGLRenderWindow);
209
- texture.create2DFromRaw(length, length, 4, 'Float32Array', values);
209
+ texture.create2DFromRaw({
210
+ width: length,
211
+ height: length,
212
+ numComps: 4,
213
+ dataType: 'Float32Array',
214
+ data: values
215
+ });
210
216
  texture.activate();
211
217
  texture.sendParameters();
212
218
  texture.deactivate();
@@ -255,7 +261,13 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
255
261
  });
256
262
  texture.setOpenGLRenderWindow(openGLRenderWindow);
257
263
  texture.setInternalFormat(gl.RGBA32F);
258
- texture.create2DFromRaw(...model.size, 4, 'Float32Array', null);
264
+ texture.create2DFromRaw({
265
+ width: model.size[0],
266
+ height: model.size[1],
267
+ numComps: 4,
268
+ dataType: 'Float32Array',
269
+ data: null
270
+ });
259
271
  texture.activate();
260
272
  texture.sendParameters();
261
273
  texture.deactivate();
@@ -269,7 +281,12 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
269
281
  autoParameters: false
270
282
  });
271
283
  texture.setOpenGLRenderWindow(openGLRenderWindow);
272
- texture.createDepthFromRaw(...model.size, 'Float32Array', null);
284
+ texture.createDepthFromRaw({
285
+ width: model.size[0],
286
+ height: model.size[1],
287
+ dataType: 'Float32Array',
288
+ data: null
289
+ });
273
290
  texture.activate();
274
291
  texture.sendParameters();
275
292
  texture.deactivate();
@@ -199,17 +199,24 @@ export interface vtkOpenGLTexture extends vtkViewNode {
199
199
  * @param numComps The number of components in the texture.
200
200
  * @param dataType The data type of the texture.
201
201
  * @param data The raw data for the texture.
202
- * @param flip Whether to flip the texture vertically.
202
+ * @param flip Whether to flip the texture vertically. Defaults to false.
203
203
  * @returns {boolean} True if the texture was successfully created, false otherwise.
204
204
  */
205
- create2DFromRaw(
206
- width: number,
207
- height: number,
208
- numComps: number,
209
- dataType: VtkDataTypes,
210
- data: any,
211
- flip: boolean
212
- ): boolean;
205
+ create2DFromRaw({
206
+ width,
207
+ height,
208
+ numComps,
209
+ dataType,
210
+ data,
211
+ flip,
212
+ }: {
213
+ width: number;
214
+ height: number;
215
+ numComps: number;
216
+ dataType: VtkDataTypes;
217
+ data: any;
218
+ flip?: boolean;
219
+ }): boolean;
213
220
 
214
221
  /**
215
222
  * Creates a cube texture from raw data.
@@ -218,17 +225,21 @@ export interface vtkOpenGLTexture extends vtkViewNode {
218
225
  * @param numComps The number of components in the texture.
219
226
  * @param dataType The data type of the texture.
220
227
  * @param data The raw data for the texture.
221
- * @param flip Whether to flip the texture vertically.
222
228
  * @returns {boolean} True if the cube texture was successfully created, false otherwise.
223
229
  */
224
- createCubeFromRaw(
225
- width: number,
226
- height: number,
227
- numComps: number,
228
- dataType: VtkDataTypes,
229
- data: any,
230
- flip: boolean
231
- ): boolean;
230
+ createCubeFromRaw({
231
+ width,
232
+ height,
233
+ numComps,
234
+ dataType,
235
+ data,
236
+ }: {
237
+ width: number;
238
+ height: number;
239
+ numComps: number;
240
+ dataType: VtkDataTypes;
241
+ data: any;
242
+ }): boolean;
232
243
 
233
244
  /**
234
245
  * Creates a 2D texture from an image.
@@ -248,15 +259,23 @@ export interface vtkOpenGLTexture extends vtkViewNode {
248
259
  * @param [ranges] The precomputed ranges of the data (optional). Provided to prevent computation of the data ranges.
249
260
  * @returns {boolean} True if the texture was successfully created, false otherwise.
250
261
  */
251
- create2DFilterableFromRaw(
252
- width: number,
253
- height: number,
254
- numComps: number,
255
- dataType: VtkDataTypes,
256
- data: any,
257
- preferSizeOverAccuracy?: boolean,
258
- ranges?: vtkRange[]
259
- ): boolean;
262
+ create2DFilterableFromRaw({
263
+ width,
264
+ height,
265
+ numComps,
266
+ dataType,
267
+ data,
268
+ preferSizeOverAccuracy,
269
+ ranges,
270
+ }: {
271
+ width: number;
272
+ height: number;
273
+ numComps: number;
274
+ dataType: VtkDataTypes;
275
+ data: any;
276
+ preferSizeOverAccuracy?: boolean;
277
+ ranges?: vtkRange[];
278
+ }): boolean;
260
279
 
261
280
  /**
262
281
  * Creates a 2D filterable texture from a data array, with a preference for size over accuracy if necessary.
@@ -266,12 +285,17 @@ export interface vtkOpenGLTexture extends vtkViewNode {
266
285
  * @param preferSizeOverAccuracy Whether to prefer texture size over accuracy.
267
286
  * @returns {boolean} True if the texture was successfully created, false otherwise.
268
287
  */
269
- create2DFilterableFromDataArray(
270
- width: number,
271
- height: number,
272
- dataArray: any,
273
- preferSizeOverAccuracy: boolean
274
- ): boolean;
288
+ create2DFilterableFromDataArray({
289
+ width,
290
+ height,
291
+ dataArray,
292
+ preferSizeOverAccuracy,
293
+ }: {
294
+ width: number;
295
+ height: number;
296
+ dataArray: any;
297
+ preferSizeOverAccuracy?: boolean;
298
+ }): boolean;
275
299
 
276
300
  /**
277
301
  * Creates a 3D texture from raw data.
@@ -287,15 +311,23 @@ export interface vtkOpenGLTexture extends vtkViewNode {
287
311
  * @param updatedExtents Only update the specified extents (default: [])
288
312
  * @returns {boolean} True if the texture was successfully created, false otherwise.
289
313
  */
290
- create3DFromRaw(
291
- width: number,
292
- height: number,
293
- depth: number,
294
- numComps: number,
295
- dataType: VtkDataTypes,
296
- data: any,
297
- updatedExtents?: Extent[]
298
- ): boolean;
314
+ create3DFromRaw({
315
+ width,
316
+ height,
317
+ depth,
318
+ numComps,
319
+ dataType,
320
+ data,
321
+ updatedExtents,
322
+ }: {
323
+ width: number;
324
+ height: number;
325
+ depth: number;
326
+ numComps: number;
327
+ dataType: VtkDataTypes;
328
+ data: any;
329
+ updatedExtents?: Extent[];
330
+ }): boolean;
299
331
 
300
332
  /**
301
333
  * Creates a 3D filterable texture from raw data, with a preference for size over accuracy if necessary.
@@ -307,7 +339,7 @@ export interface vtkOpenGLTexture extends vtkViewNode {
307
339
  * @param depth The depth of the texture.
308
340
  * @param numComps The number of components in the texture.
309
341
  * @param dataType The data type of the texture.
310
- * @param values The raw data for the texture.
342
+ * @param data The raw data for the texture.
311
343
  * @param preferSizeOverAccuracy Whether to prefer texture size over accuracy.
312
344
  * @param [ranges] The precomputed ranges of the data (optional). Provided to
313
345
  * @param updatedExtents Only update the specified extents (default: [])
@@ -315,17 +347,27 @@ export interface vtkOpenGLTexture extends vtkViewNode {
315
347
  * @returns {boolean} True if the texture was successfully created, false
316
348
  * otherwise.
317
349
  */
318
- create3DFilterableFromRaw(
319
- width: number,
320
- height: number,
321
- depth: number,
322
- numComps: number,
323
- dataType: VtkDataTypes,
324
- values: any,
325
- preferSizeOverAccuracy: boolean,
326
- ranges?: vtkRange[],
327
- updatedExtents?: Extent[]
328
- ): boolean;
350
+ create3DFilterableFromRaw({
351
+ width,
352
+ height,
353
+ depth,
354
+ numComps,
355
+ dataType,
356
+ data,
357
+ preferSizeOverAccuracy,
358
+ ranges,
359
+ updatedExtents,
360
+ }: {
361
+ width: number;
362
+ height: number;
363
+ depth: number;
364
+ numComps: number;
365
+ dataType: VtkDataTypes;
366
+ data: any;
367
+ preferSizeOverAccuracy?: boolean;
368
+ ranges?: vtkRange[];
369
+ updatedExtents?: Extent[];
370
+ }): boolean;
329
371
 
330
372
  /**
331
373
  * Creates a 3D filterable texture from a data array, with a preference for size over accuracy if necessary.
@@ -340,14 +382,20 @@ export interface vtkOpenGLTexture extends vtkViewNode {
340
382
  * @param updatedExtents Only update the specified extents (default: [])
341
383
  * @returns {boolean} True if the texture was successfully created, false otherwise.
342
384
  */
343
- create3DFilterableFromDataArray(
344
- width: number,
345
- height: number,
346
- depth: number,
347
- dataArray: any,
348
- preferSizeOverAccuracy: boolean,
349
- updatedExtents?: Extent[]
350
- ): boolean;
385
+ create3DFilterableFromDataArray({
386
+ width,
387
+ height,
388
+ depth,
389
+ dataArray,
390
+ preferSizeOverAccuracy,
391
+ }: {
392
+ width: number;
393
+ height: number;
394
+ depth: number;
395
+ dataArray: any;
396
+ preferSizeOverAccuracy?: boolean;
397
+ updatedExtents?: Extent[];
398
+ }): boolean;
351
399
 
352
400
  /**
353
401
  * Sets the OpenGL render window in which the texture will be used.
@@ -18,7 +18,8 @@ const {
18
18
  const {
19
19
  vtkDebugMacro,
20
20
  vtkErrorMacro,
21
- vtkWarningMacro
21
+ vtkWarningMacro,
22
+ requiredParam
22
23
  } = macro;
23
24
  const {
24
25
  toHalf
@@ -95,7 +96,14 @@ function vtkOpenGLTexture(publicAPI, model) {
95
96
  publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);
96
97
  }
97
98
  const canvas = model.renderable.getCanvas();
98
- publicAPI.create2DFromRaw(canvas.width, canvas.height, 4, VtkDataTypes.UNSIGNED_CHAR, canvas, true);
99
+ publicAPI.create2DFromRaw({
100
+ width: canvas.width,
101
+ height: canvas.height,
102
+ numComps: 4,
103
+ dataType: VtkDataTypes.UNSIGNED_CHAR,
104
+ data: canvas,
105
+ flip: true
106
+ });
99
107
  publicAPI.activate();
100
108
  publicAPI.sendParameters();
101
109
  model.textureBuildTime.modified();
@@ -107,7 +115,14 @@ function vtkOpenGLTexture(publicAPI, model) {
107
115
  model.generateMipmap = true;
108
116
  publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);
109
117
  }
110
- publicAPI.create2DFromRaw(jsid.width, jsid.height, 4, VtkDataTypes.UNSIGNED_CHAR, jsid.data, true);
118
+ publicAPI.create2DFromRaw({
119
+ width: jsid.width,
120
+ height: jsid.height,
121
+ numComps: 4,
122
+ dataType: VtkDataTypes.UNSIGNED_CHAR,
123
+ data: jsid.data,
124
+ flip: true
125
+ });
111
126
  publicAPI.activate();
112
127
  publicAPI.sendParameters();
113
128
  model.textureBuildTime.modified();
@@ -132,9 +147,21 @@ function vtkOpenGLTexture(publicAPI, model) {
132
147
  publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);
133
148
  }
134
149
  if (data.length % 6 === 0) {
135
- publicAPI.createCubeFromRaw(ext[1] - ext[0] + 1, ext[3] - ext[2] + 1, inScalars.getNumberOfComponents(), inScalars.getDataType(), data);
150
+ publicAPI.createCubeFromRaw({
151
+ width: ext[1] - ext[0] + 1,
152
+ height: ext[3] - ext[2] + 1,
153
+ numComps: inScalars.getNumberOfComponents(),
154
+ dataType: inScalars.getDataType(),
155
+ data
156
+ });
136
157
  } else {
137
- publicAPI.create2DFromRaw(ext[1] - ext[0] + 1, ext[3] - ext[2] + 1, inScalars.getNumberOfComponents(), inScalars.getDataType(), inScalars.getData());
158
+ publicAPI.create2DFromRaw({
159
+ width: ext[1] - ext[0] + 1,
160
+ height: ext[3] - ext[2] + 1,
161
+ numComps: inScalars.getNumberOfComponents(),
162
+ dataType: inScalars.getDataType(),
163
+ data: inScalars.getData()
164
+ });
138
165
  }
139
166
  publicAPI.activate();
140
167
  publicAPI.sendParameters();
@@ -786,8 +813,16 @@ function vtkOpenGLTexture(publicAPI, model) {
786
813
  }
787
814
 
788
815
  //----------------------------------------------------------------------------
789
- publicAPI.create2DFromRaw = function (width, height, numComps, dataType, data) {
790
- let flip = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
816
+
817
+ publicAPI.create2DFromRaw = function () {
818
+ let {
819
+ width = requiredParam('width'),
820
+ height = requiredParam('height'),
821
+ numComps = requiredParam('numComps'),
822
+ dataType = requiredParam('dataType'),
823
+ data = requiredParam('data'),
824
+ flip = false
825
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
791
826
  // Now determine the texture parameters using the arguments.
792
827
  publicAPI.getOpenGLDataType(dataType, true);
793
828
  publicAPI.getInternalFormat(dataType, numComps);
@@ -836,7 +871,14 @@ function vtkOpenGLTexture(publicAPI, model) {
836
871
  };
837
872
 
838
873
  //----------------------------------------------------------------------------
839
- publicAPI.createCubeFromRaw = (width, height, numComps, dataType, data) => {
874
+ publicAPI.createCubeFromRaw = function () {
875
+ let {
876
+ width = requiredParam('width'),
877
+ height = requiredParam('height'),
878
+ numComps = requiredParam('numComps'),
879
+ dataType = requiredParam('dataType'),
880
+ data = requiredParam('data')
881
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
840
882
  // Now determine the texture parameters using the arguments.
841
883
  publicAPI.getOpenGLDataType(dataType);
842
884
  publicAPI.getInternalFormat(dataType, numComps);
@@ -917,7 +959,13 @@ function vtkOpenGLTexture(publicAPI, model) {
917
959
  };
918
960
 
919
961
  //----------------------------------------------------------------------------
920
- publicAPI.createDepthFromRaw = (width, height, dataType, data) => {
962
+ publicAPI.createDepthFromRaw = function () {
963
+ let {
964
+ width = requiredParam('width'),
965
+ height = requiredParam('height'),
966
+ dataType = requiredParam('dataType'),
967
+ data = requiredParam('data')
968
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
921
969
  // Now determine the texture parameters using the arguments.
922
970
  publicAPI.getOpenGLDataType(dataType);
923
971
  model.format = model.context.DEPTH_COMPONENT;
@@ -1090,24 +1138,47 @@ function vtkOpenGLTexture(publicAPI, model) {
1090
1138
  scaleOffsets
1091
1139
  };
1092
1140
  }
1093
- publicAPI.create2DFilterableFromRaw = function (width, height, numberOfComponents, dataType, values) {
1094
- let preferSizeOverAccuracy = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
1095
- let ranges = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;
1096
- return publicAPI.create2DFilterableFromDataArray(width, height, vtkDataArray.newInstance({
1097
- numberOfComponents,
1098
- dataType,
1099
- values,
1100
- ranges
1101
- }), preferSizeOverAccuracy);
1141
+ publicAPI.create2DFilterableFromRaw = function () {
1142
+ let {
1143
+ width = requiredParam('width'),
1144
+ height = requiredParam('height'),
1145
+ numComps = requiredParam('numComps'),
1146
+ dataType = requiredParam('dataType'),
1147
+ data = requiredParam('data'),
1148
+ preferSizeOverAccuracy = false,
1149
+ ranges = undefined
1150
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1151
+ return publicAPI.create2DFilterableFromDataArray({
1152
+ width,
1153
+ height,
1154
+ dataArray: vtkDataArray.newInstance({
1155
+ numComps,
1156
+ dataType,
1157
+ values: data,
1158
+ ranges
1159
+ }),
1160
+ preferSizeOverAccuracy
1161
+ });
1102
1162
  };
1103
- publicAPI.create2DFilterableFromDataArray = function (width, height, dataArray) {
1104
- let preferSizeOverAccuracy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
1163
+ publicAPI.create2DFilterableFromDataArray = function () {
1164
+ let {
1165
+ width = requiredParam('width'),
1166
+ height = requiredParam('height'),
1167
+ dataArray = requiredParam('dataArray'),
1168
+ preferSizeOverAccuracy = false
1169
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1105
1170
  const {
1106
1171
  numComps,
1107
1172
  dataType,
1108
1173
  data
1109
1174
  } = processDataArray(dataArray, preferSizeOverAccuracy);
1110
- publicAPI.create2DFromRaw(width, height, numComps, dataType, data);
1175
+ publicAPI.create2DFromRaw({
1176
+ width,
1177
+ height,
1178
+ numComps,
1179
+ dataType,
1180
+ data
1181
+ });
1111
1182
  };
1112
1183
  publicAPI.updateVolumeInfoForGL = (dataType, numComps) => {
1113
1184
  let isScalingApplied = false;
@@ -1162,8 +1233,16 @@ function vtkOpenGLTexture(publicAPI, model) {
1162
1233
  };
1163
1234
 
1164
1235
  //----------------------------------------------------------------------------
1165
- publicAPI.create3DFromRaw = function (width, height, depth, numComps, dataType, data) {
1166
- let updatedExtents = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [];
1236
+ publicAPI.create3DFromRaw = function () {
1237
+ let {
1238
+ width = requiredParam('width'),
1239
+ height = requiredParam('height'),
1240
+ depth = requiredParam('depth'),
1241
+ numComps = requiredParam('numComps'),
1242
+ dataType = requiredParam('dataType'),
1243
+ data = requiredParam('data'),
1244
+ updatedExtents = []
1245
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1167
1246
  let dataTypeToUse = dataType;
1168
1247
  let dataToUse = data;
1169
1248
  if (!publicAPI.updateVolumeInfoForGL(dataTypeToUse, numComps) && dataToUse) {
@@ -1253,23 +1332,44 @@ function vtkOpenGLTexture(publicAPI, model) {
1253
1332
  //----------------------------------------------------------------------------
1254
1333
  // This method simulates a 3D texture using 2D
1255
1334
  // Prefer create3DFilterableFromDataArray to enable caching of min and max values
1256
- publicAPI.create3DFilterableFromRaw = function (width, height, depth, numberOfComponents, dataType, values) {
1257
- let preferSizeOverAccuracy = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
1258
- let ranges = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;
1259
- let updatedExtents = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : [];
1260
- return publicAPI.create3DFilterableFromDataArray(width, height, depth, vtkDataArray.newInstance({
1261
- numberOfComponents,
1262
- dataType,
1263
- values,
1264
- ranges
1265
- }), preferSizeOverAccuracy, updatedExtents);
1335
+ publicAPI.create3DFilterableFromRaw = function () {
1336
+ let {
1337
+ width = requiredParam('width'),
1338
+ height = requiredParam('height'),
1339
+ depth = requiredParam('depth'),
1340
+ numComps = requiredParam('numComps'),
1341
+ dataType = requiredParam('dataType'),
1342
+ data = requiredParam('data'),
1343
+ preferSizeOverAccuracy = false,
1344
+ ranges = undefined,
1345
+ updatedExtents = []
1346
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1347
+ return publicAPI.create3DFilterableFromDataArray({
1348
+ width,
1349
+ height,
1350
+ depth,
1351
+ dataArray: vtkDataArray.newInstance({
1352
+ numComps,
1353
+ dataType,
1354
+ values: data,
1355
+ ranges
1356
+ }),
1357
+ preferSizeOverAccuracy,
1358
+ updatedExtents
1359
+ });
1266
1360
  };
1267
1361
 
1268
1362
  //----------------------------------------------------------------------------
1269
1363
  // This method create a 3D texture from dimensions and a DataArray
1270
- publicAPI.create3DFilterableFromDataArray = function (width, height, depth, dataArray) {
1271
- let preferSizeOverAccuracy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
1272
- let updatedExtents = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
1364
+ publicAPI.create3DFilterableFromDataArray = function () {
1365
+ let {
1366
+ width = requiredParam('width'),
1367
+ height = requiredParam('height'),
1368
+ depth = requiredParam('depth'),
1369
+ dataArray = requiredParam('dataArray'),
1370
+ preferSizeOverAccuracy = false,
1371
+ updatedExtents = []
1372
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1273
1373
  const {
1274
1374
  numComps,
1275
1375
  dataType,
@@ -1304,7 +1404,15 @@ function vtkOpenGLTexture(publicAPI, model) {
1304
1404
 
1305
1405
  // WebGL2 path, we have 3d textures etc
1306
1406
  if (model._openGLRenderWindow.getWebgl2()) {
1307
- return publicAPI.create3DFromRaw(width, height, depth, numComps, dataType, data, updatedExtents);
1407
+ return publicAPI.create3DFromRaw({
1408
+ width,
1409
+ height,
1410
+ depth,
1411
+ numComps,
1412
+ dataType,
1413
+ data,
1414
+ updatedExtents
1415
+ });
1308
1416
  }
1309
1417
  const numPixelsIn = width * height * depth;
1310
1418
  const scaleOffsetsCopy = structuredClone(scaleOffsets);