@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.
- package/BREAKING_CHANGES.md +10 -0
- package/IO/Geometry/GLTFImporter/Decoder.js +21 -35
- package/IO/Geometry/GLTFImporter/ORMTexture.worker.js +42 -0
- package/IO/Geometry/GLTFImporter/Parser.js +6 -15
- package/IO/Geometry/GLTFImporter/Reader.js +10 -7
- package/IO/Geometry/GLTFImporter/Utils.js +27 -9
- package/Interaction/Manipulators/KeyboardCameraManipulator.d.ts +113 -0
- package/Rendering/Core/Actor.d.ts +5 -20
- package/Rendering/Core/Actor.js +5 -68
- package/Rendering/Core/ImageCPRMapper.d.ts +1 -20
- package/Rendering/Core/ImageCPRMapper.js +1 -2
- package/Rendering/Core/ImageProperty.d.ts +20 -1
- package/Rendering/Core/ImageProperty.js +7 -5
- package/Rendering/Core/ImageResliceMapper.d.ts +1 -20
- package/Rendering/Core/ImageResliceMapper.js +1 -2
- package/Rendering/Core/ImageSlice.d.ts +7 -23
- package/Rendering/Core/ImageSlice.js +9 -68
- package/Rendering/Core/Prop3D.d.ts +39 -2
- package/Rendering/Core/Prop3D.js +81 -2
- package/Rendering/Core/RenderWindowInteractor.d.ts +6 -0
- package/Rendering/Core/RenderWindowInteractor.js +7 -5
- package/Rendering/Core/Volume.d.ts +5 -20
- package/Rendering/Core/Volume.js +2 -70
- package/Rendering/Core/VolumeMapper/Constants.d.ts +0 -7
- package/Rendering/Core/VolumeMapper/Constants.js +2 -8
- package/Rendering/Core/VolumeMapper.d.ts +16 -173
- package/Rendering/Core/VolumeMapper.js +16 -51
- package/Rendering/Core/VolumeProperty/Constants.d.ts +12 -3
- package/Rendering/Core/VolumeProperty/Constants.js +11 -4
- package/Rendering/Core/VolumeProperty.d.ts +140 -5
- package/Rendering/Core/VolumeProperty.js +54 -7
- package/Rendering/OpenGL/Framebuffer.js +7 -1
- package/Rendering/OpenGL/ImageCPRMapper.js +72 -27
- package/Rendering/OpenGL/ImageMapper.js +71 -33
- package/Rendering/OpenGL/ImageResliceMapper.js +306 -183
- package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +20 -3
- package/Rendering/OpenGL/PolyDataMapper.js +8 -9
- package/Rendering/OpenGL/RenderWindow/resourceSharingHelper.d.ts +3 -3
- package/Rendering/OpenGL/RenderWindow/resourceSharingHelper.js +8 -5
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +7 -1
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +20 -3
- package/Rendering/OpenGL/Texture.d.ts +110 -62
- package/Rendering/OpenGL/Texture.js +145 -37
- package/Rendering/OpenGL/VolumeMapper.js +763 -783
- package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
- package/Rendering/WebGPU/CellArrayMapper.js +17 -17
- package/Rendering/WebGPU/PolyDataMapper.js +15 -35
- package/Rendering/WebGPU/Renderer.js +1 -1
- package/Rendering/WebGPU/Texture.js +12 -13
- package/Rendering/WebGPU/TextureManager.js +7 -12
- package/Rendering/WebGPU/VolumePassFSQ.js +2 -2
- package/_virtual/rollup-plugin-worker-loader__module_Sources/IO/Geometry/GLTFImporter/ORMTexture.worker.js +296 -0
- package/index.d.ts +1 -0
- package/macros.js +1 -1
- package/macros2.js +8 -3
- 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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
13
|
-
|
|
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
|
-
|
|
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
|
|
4
|
-
return
|
|
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
|
-
|
|
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
|
-
|
|
13
|
+
getTransferFunctionsHash,
|
|
11
14
|
getImageDataHash
|
|
12
15
|
};
|
|
13
16
|
|
|
14
|
-
export { resourceSharingHelper as default, getImageDataHash,
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
207
|
-
height
|
|
208
|
-
numComps
|
|
209
|
-
dataType
|
|
210
|
-
data
|
|
211
|
-
flip
|
|
212
|
-
|
|
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
|
|
226
|
-
height
|
|
227
|
-
numComps
|
|
228
|
-
dataType
|
|
229
|
-
data
|
|
230
|
-
|
|
231
|
-
|
|
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
|
|
253
|
-
height
|
|
254
|
-
numComps
|
|
255
|
-
dataType
|
|
256
|
-
data
|
|
257
|
-
preferSizeOverAccuracy
|
|
258
|
-
ranges
|
|
259
|
-
|
|
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
|
|
271
|
-
height
|
|
272
|
-
dataArray
|
|
273
|
-
preferSizeOverAccuracy
|
|
274
|
-
|
|
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
|
|
292
|
-
height
|
|
293
|
-
depth
|
|
294
|
-
numComps
|
|
295
|
-
dataType
|
|
296
|
-
data
|
|
297
|
-
updatedExtents
|
|
298
|
-
|
|
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
|
|
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
|
|
320
|
-
height
|
|
321
|
-
depth
|
|
322
|
-
numComps
|
|
323
|
-
dataType
|
|
324
|
-
|
|
325
|
-
preferSizeOverAccuracy
|
|
326
|
-
ranges
|
|
327
|
-
updatedExtents
|
|
328
|
-
|
|
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
|
|
345
|
-
height
|
|
346
|
-
depth
|
|
347
|
-
dataArray
|
|
348
|
-
preferSizeOverAccuracy
|
|
349
|
-
|
|
350
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
790
|
-
|
|
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 = (
|
|
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 = (
|
|
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 (
|
|
1094
|
-
let
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
dataType,
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
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 (
|
|
1104
|
-
let
|
|
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(
|
|
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 (
|
|
1166
|
-
let
|
|
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 (
|
|
1257
|
-
let
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
dataType,
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
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 (
|
|
1271
|
-
let
|
|
1272
|
-
|
|
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(
|
|
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);
|