@kitware/vtk.js 24.5.0 → 24.5.3
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/Common/Core/Base64.d.ts +4 -2
- package/Common/Core/CellArray.d.ts +2 -2
- package/Common/Core/DataArray.d.ts +2 -2
- package/Common/Core/Endian.d.ts +1 -1
- package/Common/Core/ImageHelper.d.ts +1 -1
- package/Common/Core/LookupTable.d.ts +1 -1
- package/Common/Core/Math.d.ts +1 -1
- package/Common/Core/MatrixBuilder.d.ts +1 -1
- package/Common/Core/Points.d.ts +2 -2
- package/Common/Core/PriorityQueue.d.ts +1 -1
- package/Common/Core/ProgressHandler.d.ts +1 -1
- package/Common/Core/ScalarsToColors.d.ts +3 -3
- package/Common/Core/StringArray.d.ts +1 -1
- package/Common/Core/VariantArray.d.ts +1 -1
- package/Common/DataModel/Box.d.ts +2 -2
- package/Common/DataModel/CardinalSpline1D.d.ts +1 -1
- package/Common/DataModel/Cell.d.ts +3 -3
- package/Common/DataModel/Cone.d.ts +2 -2
- package/Common/DataModel/Cylinder.d.ts +2 -2
- package/Common/DataModel/DataSet.d.ts +1 -1
- package/Common/DataModel/DataSetAttributes/FieldData.d.ts +4 -2
- package/Common/DataModel/DataSetAttributes.d.ts +3 -3
- package/Common/DataModel/ImageData.d.ts +1 -1
- package/Common/DataModel/Line.d.ts +1 -1
- package/Common/DataModel/PiecewiseFunction.d.ts +2 -2
- package/Common/DataModel/Plane.d.ts +2 -2
- package/Common/DataModel/PointSet.d.ts +2 -2
- package/Common/DataModel/PolyData.d.ts +2 -2
- package/Common/DataModel/Polygon.d.ts +2 -2
- package/Common/DataModel/SelectionNode.d.ts +2 -2
- package/Common/DataModel/Sphere.d.ts +2 -2
- package/Common/DataModel/Spline1D.d.ts +1 -1
- package/Common/DataModel/Spline3D.d.ts +1 -1
- package/Common/DataModel/Triangle.d.ts +1 -1
- package/Common/Transform/LandmarkTransform.d.ts +2 -2
- package/Filters/General/AppendPolyData.d.ts +1 -1
- package/Filters/General/ImageCropFilter.d.ts +1 -1
- package/Filters/General/ImageOutlineFilter.d.ts +1 -1
- package/Filters/General/ImageSliceFilter.d.ts +1 -1
- package/Filters/General/ImageStreamline.d.ts +3 -3
- package/Filters/General/LineFilter.d.ts +1 -1
- package/Filters/General/OutlineFilter.d.ts +1 -1
- package/Filters/General/TriangleFilter.d.ts +1 -1
- package/Filters/General/TubeFilter.d.ts +2 -2
- package/Filters/Sources/Arrow2DSource.d.ts +2 -2
- package/Filters/Sources/ArrowSource.d.ts +2 -2
- package/Filters/Sources/CircleSource.d.ts +2 -2
- package/Filters/Sources/ConeSource.d.ts +2 -2
- package/Filters/Sources/CubeSource.d.ts +2 -2
- package/Filters/Sources/Cursor3D.d.ts +3 -3
- package/Filters/Sources/CylinderSource.d.ts +2 -2
- package/Filters/Sources/LineSource.d.ts +2 -2
- package/Filters/Sources/PlaneSource.d.ts +2 -2
- package/Filters/Sources/PointSource.d.ts +2 -2
- package/Filters/Sources/SphereSource.d.ts +2 -2
- package/Filters/Texture/TextureMapToPlane.d.ts +1 -1
- package/Filters/Texture/TextureMapToSphere.d.ts +1 -1
- package/IO/Core/DataAccessHelper.d.ts +4 -4
- package/IO/Core/HttpDataSetReader.d.ts +1 -1
- package/IO/Core/HttpSceneLoader.d.ts +5 -5
- package/IO/Core/ImageStream/DefaultProtocol.d.ts +1 -1
- package/IO/Core/ImageStream/ViewStream.d.ts +4 -4
- package/IO/Core/ImageStream.d.ts +3 -3
- package/IO/Core/WSLinkClient.d.ts +1 -1
- package/IO/Geometry/DracoReader.d.ts +5 -5
- package/IO/Geometry/PLYReader.d.ts +5 -5
- package/IO/Geometry/PLYWriter.d.ts +2 -2
- package/IO/Geometry/STLReader.d.ts +5 -5
- package/IO/Geometry/STLWriter.d.ts +2 -2
- package/IO/Misc/ElevationReader.d.ts +5 -5
- package/IO/Misc/ITKImageReader.d.ts +1 -1
- package/IO/Misc/ITKPolyDataReader.d.ts +1 -1
- package/IO/Misc/JSONNucleoReader.d.ts +5 -5
- package/IO/Misc/JSONReader.d.ts +1 -1
- package/IO/Misc/MTLReader.d.ts +6 -6
- package/IO/Misc/OBJReader.d.ts +5 -5
- package/IO/Misc/PDBReader.d.ts +5 -5
- package/IO/XML/XMLReader.d.ts +5 -5
- package/Interaction/Widgets/OrientationMarkerWidget.d.ts +6 -6
- package/Rendering/Core/AbstractMapper.d.ts +2 -2
- package/Rendering/Core/AbstractMapper3D.d.ts +1 -1
- package/Rendering/Core/AbstractPicker.d.ts +2 -2
- package/Rendering/Core/Actor.d.ts +1 -1
- package/Rendering/Core/Actor2D.d.ts +1 -1
- package/Rendering/Core/Camera.d.ts +2 -2
- package/Rendering/Core/CellPicker.d.ts +2 -2
- package/Rendering/Core/ColorTransferFunction.d.ts +1 -1
- package/Rendering/Core/Coordinate.d.ts +1 -1
- package/Rendering/Core/Glyph3DMapper.d.ts +1 -1
- package/Rendering/Core/ImageMapper.d.ts +1 -1
- package/Rendering/Core/ImageProperty.d.ts +1 -1
- package/Rendering/Core/ImageSlice.d.ts +1 -1
- package/Rendering/Core/Light.d.ts +2 -2
- package/Rendering/Core/Mapper.d.ts +1 -1
- package/Rendering/Core/Mapper2D.d.ts +1 -1
- package/Rendering/Core/Picker.d.ts +1 -1
- package/Rendering/Core/PointPicker.d.ts +1 -1
- package/Rendering/Core/Prop.d.ts +1 -1
- package/Rendering/Core/Prop3D.d.ts +1 -1
- package/Rendering/Core/Property.d.ts +2 -2
- package/Rendering/Core/Property2D.d.ts +2 -2
- package/Rendering/Core/RenderWindow.d.ts +2 -2
- package/Rendering/Core/RenderWindowInteractor.d.ts +123 -109
- package/Rendering/Core/Renderer.d.ts +1 -1
- package/Rendering/Core/ScalarBarActor.d.ts +2 -2
- package/Rendering/Core/ScalarBarActor.js +2 -2
- package/Rendering/Core/Texture.d.ts +1 -1
- package/Rendering/Core/Viewport.d.ts +2 -2
- package/Rendering/Core/Volume.d.ts +1 -1
- package/Rendering/Core/VolumeMapper.d.ts +1 -1
- package/Rendering/Core/VolumeProperty.d.ts +1 -1
- package/Rendering/Misc/CanvasView.d.ts +2 -2
- package/Rendering/Misc/FullScreenRenderWindow.d.ts +8 -8
- package/Rendering/Misc/GenericRenderWindow.d.ts +6 -6
- package/Rendering/Misc/RemoteView.d.ts +2 -2
- package/Rendering/Misc/RenderWindowWithControlBar.d.ts +1 -1
- package/Rendering/Misc/SynchronizableRenderWindow.d.ts +2 -2
- package/Rendering/Misc/TextureLODsDownloader.d.ts +3 -3
- package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +5 -1
- package/Rendering/OpenGL/RenderWindow.d.ts +7 -7
- package/Rendering/SceneGraph/RenderPass.d.ts +1 -1
- package/Rendering/SceneGraph/ViewNode.d.ts +1 -1
- package/Rendering/SceneGraph/ViewNode.js +28 -2
- package/Rendering/SceneGraph/ViewNodeFactory.d.ts +1 -1
- package/Rendering/WebGPU/CellArrayMapper.js +629 -0
- package/Rendering/WebGPU/FullScreenQuad.js +4 -6
- package/Rendering/WebGPU/Glyph3DMapper.js +60 -27
- package/Rendering/WebGPU/ImageMapper.js +23 -60
- package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +4 -6
- package/Rendering/WebGPU/Pipeline.js +12 -0
- package/Rendering/WebGPU/PolyDataMapper.js +49 -623
- package/Rendering/WebGPU/RenderEncoder.js +34 -0
- package/Rendering/WebGPU/Renderer.js +4 -62
- package/Rendering/WebGPU/ShaderDescription.js +6 -6
- package/Rendering/WebGPU/{MapperHelper.js → SimpleMapper.js} +64 -38
- package/Rendering/WebGPU/SphereMapper.js +41 -37
- package/Rendering/WebGPU/StickMapper.js +35 -30
- package/Rendering/WebGPU/StorageBuffer.js +2 -2
- package/Rendering/WebGPU/UniformBuffer.js +1 -1
- package/Rendering/WebGPU/Volume.js +1 -14
- package/Rendering/WebGPU/VolumePass.js +15 -19
- package/Rendering/WebGPU/VolumePassFSQ.js +19 -25
- package/Widgets/Manipulators/LineManipulator.d.ts +1 -1
- package/Widgets/Manipulators/PlaneManipulator.d.ts +1 -1
- package/Widgets/Manipulators/TrackballManipulator.d.ts +1 -1
- package/Widgets/Representations/WidgetRepresentation.d.ts +1 -1
- package/Widgets/Widgets3D/SphereWidget.d.ts +2 -2
- package/_virtual/rollup-plugin-web-worker-loader__helper__funcToSource.js +8 -8
- package/interfaces.d.ts +2 -2
- package/macros.d.ts +1 -1
- package/package.json +1 -1
- package/types.d.ts +1 -1
- package/tsconfig.json +0 -8
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { newInstance as newInstance$1, obj } from '../../macros.js';
|
|
3
|
+
import vtkWebGPUCellArrayMapper from './CellArrayMapper.js';
|
|
3
4
|
import vtkWebGPUPolyDataMapper from './PolyDataMapper.js';
|
|
4
5
|
import vtkWebGPUStorageBuffer from './StorageBuffer.js';
|
|
5
6
|
import vtkWebGPUShaderCache from './ShaderCache.js';
|
|
6
|
-
import vtkWebGPUBufferManager from './BufferManager.js';
|
|
7
7
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
8
8
|
|
|
9
9
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
10
10
|
|
|
11
11
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
12
|
-
var PrimitiveTypes = vtkWebGPUBufferManager.PrimitiveTypes; // ----------------------------------------------------------------------------
|
|
13
|
-
// vtkWebGPUSphereMapper methods
|
|
14
|
-
// ----------------------------------------------------------------------------
|
|
15
12
|
|
|
16
|
-
function
|
|
13
|
+
function vtkWebGPUGlyph3DCellArrayMapper(publicAPI, model) {
|
|
17
14
|
// Set our className
|
|
18
|
-
model.classHierarchy.push('
|
|
15
|
+
model.classHierarchy.push('vtkWebGPUGlyph3DCellArrayMapper');
|
|
19
16
|
|
|
20
17
|
var superClass = _objectSpread({}, publicAPI);
|
|
21
18
|
|
|
@@ -28,6 +25,8 @@ function vtkWebGPUGlyph3DMapper(publicAPI, model) {
|
|
|
28
25
|
vDesc.setCode(code);
|
|
29
26
|
};
|
|
30
27
|
|
|
28
|
+
model.shaderReplacements.set('replaceShaderPosition', publicAPI.replaceShaderPosition);
|
|
29
|
+
|
|
31
30
|
publicAPI.replaceShaderNormal = function (hash, pipeline, vertexInput) {
|
|
32
31
|
if (vertexInput.hasAttribute('normalMC')) {
|
|
33
32
|
var vDesc = pipeline.getShaderDescription('vertex');
|
|
@@ -39,8 +38,10 @@ function vtkWebGPUGlyph3DMapper(publicAPI, model) {
|
|
|
39
38
|
superClass.replaceShaderNormal(hash, pipeline, vertexInput);
|
|
40
39
|
};
|
|
41
40
|
|
|
41
|
+
model.shaderReplacements.set('replaceShaderNormal', publicAPI.replaceShaderNormal);
|
|
42
|
+
|
|
42
43
|
publicAPI.replaceShaderColor = function (hash, pipeline, vertexInput) {
|
|
43
|
-
if (!model.
|
|
44
|
+
if (!model.renderable.getColorArray()) {
|
|
44
45
|
superClass.replaceShaderColor(hash, pipeline, vertexInput);
|
|
45
46
|
return;
|
|
46
47
|
}
|
|
@@ -56,6 +57,8 @@ function vtkWebGPUGlyph3DMapper(publicAPI, model) {
|
|
|
56
57
|
fDesc.setCode(code);
|
|
57
58
|
};
|
|
58
59
|
|
|
60
|
+
model.shaderReplacements.set('replaceShaderColor', publicAPI.replaceShaderColor);
|
|
61
|
+
|
|
59
62
|
publicAPI.replaceShaderSelect = function (hash, pipeline, vertexInput) {
|
|
60
63
|
if (hash.includes('sel')) {
|
|
61
64
|
var vDesc = pipeline.getShaderDescription('vertex');
|
|
@@ -70,21 +73,67 @@ function vtkWebGPUGlyph3DMapper(publicAPI, model) {
|
|
|
70
73
|
}
|
|
71
74
|
};
|
|
72
75
|
|
|
73
|
-
publicAPI.
|
|
76
|
+
model.shaderReplacements.set('replaceShaderSelect', publicAPI.replaceShaderSelect);
|
|
77
|
+
} // ----------------------------------------------------------------------------
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
function caExtend(publicAPI, model) {
|
|
81
|
+
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
82
|
+
Object.assign(model, {}, initialValues); // Inheritance
|
|
83
|
+
|
|
84
|
+
vtkWebGPUCellArrayMapper.extend(publicAPI, model, initialValues); // Object methods
|
|
85
|
+
|
|
86
|
+
vtkWebGPUGlyph3DCellArrayMapper(publicAPI, model);
|
|
87
|
+
}
|
|
88
|
+
var caNewInstance = newInstance$1(caExtend, 'vtkWebGPUGlyph3DCellArrayMapper'); // ----------------------------------------------------------------------------
|
|
89
|
+
// vtkWebGPUSphereMapper methods
|
|
90
|
+
// ----------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
function vtkWebGPUGlyph3DMapper(publicAPI, model) {
|
|
93
|
+
// Set our className
|
|
94
|
+
model.classHierarchy.push('vtkWebGPUGlyph3DMapper');
|
|
95
|
+
|
|
96
|
+
publicAPI.createCellArrayMapper = function () {
|
|
97
|
+
var mpr = caNewInstance();
|
|
98
|
+
mpr.setSSBO(model.SSBO);
|
|
99
|
+
mpr.setRenderable(model.renderable);
|
|
100
|
+
return mpr;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
publicAPI.buildPass = function (prepass) {
|
|
104
|
+
if (prepass) {
|
|
105
|
+
if (!model.renderable.getStatic()) {
|
|
106
|
+
model.renderable.update();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
var gpoly = model.renderable.getInputData(1);
|
|
110
|
+
model.renderable.mapScalars(gpoly, 1.0);
|
|
111
|
+
publicAPI.updateSSBO();
|
|
112
|
+
publicAPI.updateCellArrayMappers(gpoly);
|
|
113
|
+
|
|
114
|
+
for (var i = 0; i < model.children.length; i++) {
|
|
115
|
+
var cellMapper = model.children[i];
|
|
116
|
+
cellMapper.setNumberOfInstances(model.numInstances);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
publicAPI.updateSSBO = function () {
|
|
74
122
|
model.currentInput = model.renderable.getInputData(1);
|
|
75
123
|
model.renderable.buildArrays(); // update the buffer objects if needed
|
|
76
124
|
|
|
77
125
|
var garray = model.renderable.getMatrixArray();
|
|
78
126
|
var narray = model.renderable.getNormalArray();
|
|
79
127
|
model.carray = model.renderable.getColorArray();
|
|
80
|
-
|
|
128
|
+
model.numInstances = garray.length / 16;
|
|
81
129
|
|
|
82
130
|
if (model.renderable.getBuildTime().getMTime() > model.glyphBOBuildTime.getMTime()) {
|
|
83
131
|
// In Core class all arrays are rebuilt when this happens
|
|
84
132
|
// but these arrays can be shared between all primType
|
|
133
|
+
model.WebGPURenderWindow = publicAPI.getFirstAncestorOfType('vtkWebGPURenderWindow');
|
|
85
134
|
var device = model.WebGPURenderWindow.getDevice();
|
|
86
135
|
model.SSBO.clearData();
|
|
87
|
-
model.SSBO.setNumberOfInstances(numInstances);
|
|
136
|
+
model.SSBO.setNumberOfInstances(model.numInstances);
|
|
88
137
|
model.SSBO.addEntry('matrix', 'mat4x4<f32>');
|
|
89
138
|
model.SSBO.addEntry('normal', 'mat4x4<f32>');
|
|
90
139
|
|
|
@@ -102,13 +151,6 @@ function vtkWebGPUGlyph3DMapper(publicAPI, model) {
|
|
|
102
151
|
model.SSBO.send(device);
|
|
103
152
|
model.glyphBOBuildTime.modified();
|
|
104
153
|
}
|
|
105
|
-
|
|
106
|
-
superClass.buildPrimitives();
|
|
107
|
-
|
|
108
|
-
for (var i = 0; i < model.primitives.length; i++) {
|
|
109
|
-
var primHelper = model.primitives[i];
|
|
110
|
-
primHelper.setNumberOfInstances(numInstances);
|
|
111
|
-
}
|
|
112
154
|
};
|
|
113
155
|
} // ----------------------------------------------------------------------------
|
|
114
156
|
// Object factory
|
|
@@ -131,15 +173,6 @@ function extend(publicAPI, model) {
|
|
|
131
173
|
}); // Object methods
|
|
132
174
|
|
|
133
175
|
vtkWebGPUGlyph3DMapper(publicAPI, model);
|
|
134
|
-
|
|
135
|
-
for (var i = PrimitiveTypes.Start; i < PrimitiveTypes.End; i++) {
|
|
136
|
-
model.primitives[i].setSSBO(model.SSBO);
|
|
137
|
-
var sr = model.primitives[i].getShaderReplacements();
|
|
138
|
-
sr.set('replaceShaderPosition', publicAPI.replaceShaderPosition);
|
|
139
|
-
sr.set('replaceShaderNormal', publicAPI.replaceShaderNormal);
|
|
140
|
-
sr.set('replaceShaderSelect', publicAPI.replaceShaderSelect);
|
|
141
|
-
sr.set('replaceShaderColor', publicAPI.replaceShaderColor);
|
|
142
|
-
}
|
|
143
176
|
} // ----------------------------------------------------------------------------
|
|
144
177
|
|
|
145
178
|
var newInstance = newInstance$1(extend, 'vtkWebGPUGlyph3DMapper'); // ----------------------------------------------------------------------------
|
|
@@ -151,4 +184,4 @@ var index = {
|
|
|
151
184
|
|
|
152
185
|
registerOverride('vtkGlyph3DMapper', newInstance);
|
|
153
186
|
|
|
154
|
-
export { index as default, extend, newInstance };
|
|
187
|
+
export { caExtend, index as default, extend, newInstance };
|
|
@@ -2,11 +2,9 @@ import { mat4, vec4 } from 'gl-matrix';
|
|
|
2
2
|
import Constants from '../Core/ImageMapper/Constants.js';
|
|
3
3
|
import { newInstance as newInstance$1, obj } from '../../macros.js';
|
|
4
4
|
import vtkWebGPUShaderCache from './ShaderCache.js';
|
|
5
|
-
import vtkWebGPUStorageBuffer from './StorageBuffer.js';
|
|
6
5
|
import vtkWebGPUFullScreenQuad from './FullScreenQuad.js';
|
|
7
6
|
import vtkWebGPUUniformBuffer from './UniformBuffer.js';
|
|
8
7
|
import vtkWebGPUSampler from './Sampler.js';
|
|
9
|
-
import vtkViewNode from '../SceneGraph/ViewNode.js';
|
|
10
8
|
import { InterpolationType } from '../Core/ImageProperty/Constants.js';
|
|
11
9
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
12
10
|
|
|
@@ -69,10 +67,8 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
69
67
|
publicAPI.render = function () {
|
|
70
68
|
model.renderable.update();
|
|
71
69
|
model.currentInput = model.renderable.getInputData();
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
publicAPI.updateUBO(model.device);
|
|
70
|
+
publicAPI.prepareToDraw(model.WebGPURenderer.getRenderEncoder());
|
|
71
|
+
model.renderEncoder.registerDrawCallback(model.pipeline, publicAPI.draw);
|
|
76
72
|
};
|
|
77
73
|
|
|
78
74
|
publicAPI.computePipelineHash = function () {
|
|
@@ -87,7 +83,7 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
87
83
|
}
|
|
88
84
|
};
|
|
89
85
|
|
|
90
|
-
publicAPI.updateUBO = function (
|
|
86
|
+
publicAPI.updateUBO = function () {
|
|
91
87
|
var utime = model.UBO.getSendTime();
|
|
92
88
|
var actor = model.WebGPUImageSlice.getRenderable();
|
|
93
89
|
var volMapr = actor.getMapper();
|
|
@@ -172,7 +168,7 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
172
168
|
|
|
173
169
|
var cScale = [1, 1, 1, 1];
|
|
174
170
|
var cShift = [0, 0, 0, 0];
|
|
175
|
-
var tView = model.
|
|
171
|
+
var tView = model.textureViews[0];
|
|
176
172
|
var tScale = tView.getTexture().getScale();
|
|
177
173
|
var numComp = tView.getTexture().getNumberOfComponents();
|
|
178
174
|
var iComps = false; // todo handle independent?
|
|
@@ -195,13 +191,13 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
195
191
|
|
|
196
192
|
model.UBO.setArray('cScale', cScale);
|
|
197
193
|
model.UBO.setArray('cShift', cShift);
|
|
198
|
-
model.UBO.sendIfNeeded(device);
|
|
194
|
+
model.UBO.sendIfNeeded(model.device);
|
|
199
195
|
}
|
|
200
196
|
};
|
|
201
197
|
|
|
202
|
-
publicAPI.updateLUTImage = function (
|
|
198
|
+
publicAPI.updateLUTImage = function () {
|
|
203
199
|
var actorProperty = model.WebGPUImageSlice.getRenderable().getProperty();
|
|
204
|
-
var tView =
|
|
200
|
+
var tView = publicAPI.getTextureViews()[0];
|
|
205
201
|
tView.getTexture().getNumberOfComponents();
|
|
206
202
|
|
|
207
203
|
var numIComps = 1;
|
|
@@ -257,35 +253,32 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
257
253
|
depth: 1,
|
|
258
254
|
format: 'rgba8unorm'
|
|
259
255
|
};
|
|
260
|
-
var newTex = device.getTextureManager().getTexture(treq);
|
|
256
|
+
var newTex = model.device.getTextureManager().getTexture(treq);
|
|
261
257
|
var tview = newTex.createView('tfunTexture');
|
|
262
|
-
|
|
263
|
-
tViews[1] = tview;
|
|
258
|
+
model.textureViews[1] = tview;
|
|
264
259
|
}
|
|
265
260
|
model.colorTextureString = cfunToString;
|
|
266
261
|
}
|
|
267
262
|
};
|
|
268
263
|
|
|
269
|
-
publicAPI.updateBuffers
|
|
264
|
+
var superClassUpdateBuffers = publicAPI.updateBuffers;
|
|
265
|
+
|
|
266
|
+
publicAPI.updateBuffers = function () {
|
|
267
|
+
superClassUpdateBuffers();
|
|
270
268
|
var treq = {
|
|
271
269
|
imageData: model.currentInput,
|
|
272
270
|
owner: model.currentInput.getPointData().getScalars()
|
|
273
271
|
};
|
|
274
|
-
var newTex = device.getTextureManager().getTexture(treq);
|
|
275
|
-
var tViews = model.
|
|
272
|
+
var newTex = model.device.getTextureManager().getTexture(treq);
|
|
273
|
+
var tViews = model.textureViews;
|
|
276
274
|
|
|
277
275
|
if (!tViews[0] || tViews[0].getTexture() !== newTex) {
|
|
278
276
|
var tview = newTex.createView('imgTexture');
|
|
279
277
|
tViews[0] = tview;
|
|
280
278
|
}
|
|
281
279
|
|
|
282
|
-
publicAPI.updateLUTImage(
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
publicAPI.build = function (renderEncoder, device) {
|
|
286
|
-
publicAPI.computePipelineHash();
|
|
287
|
-
model.helper.setPipelineHash(model.pipelineHash);
|
|
288
|
-
publicAPI.updateBuffers(device); // set interpolation on the texture based on property setting
|
|
280
|
+
publicAPI.updateLUTImage();
|
|
281
|
+
publicAPI.updateUBO(); // set interpolation on the texture based on property setting
|
|
289
282
|
|
|
290
283
|
var actorProperty = model.WebGPUImageSlice.getRenderable().getProperty();
|
|
291
284
|
var iType = actorProperty.getInterpolationType() === InterpolationType.NEAREST ? 'nearest' : 'linear';
|
|
@@ -294,26 +287,15 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
294
287
|
model.clampSampler = vtkWebGPUSampler.newInstance({
|
|
295
288
|
label: 'clampSampler'
|
|
296
289
|
});
|
|
297
|
-
model.clampSampler.create(device, {
|
|
290
|
+
model.clampSampler.create(model.device, {
|
|
298
291
|
minFilter: iType,
|
|
299
292
|
magFilter: iType
|
|
300
293
|
});
|
|
294
|
+
model.additionalBindables = [model.clampSampler];
|
|
301
295
|
}
|
|
302
|
-
|
|
303
|
-
model.helper.setAdditionalBindables(publicAPI.getBindables());
|
|
304
|
-
model.helper.setWebGPURenderer(model.WebGPURenderer);
|
|
305
|
-
model.helper.build(renderEncoder, device);
|
|
306
|
-
model.helper.registerToDraw();
|
|
307
296
|
};
|
|
308
297
|
|
|
309
|
-
|
|
310
|
-
var bindables = []; // bindables.push(model.componentSSBO);
|
|
311
|
-
|
|
312
|
-
bindables.push(model.clampSampler);
|
|
313
|
-
return bindables;
|
|
314
|
-
};
|
|
315
|
-
|
|
316
|
-
var sr = model.helper.getShaderReplacements();
|
|
298
|
+
var sr = publicAPI.getShaderReplacements();
|
|
317
299
|
|
|
318
300
|
publicAPI.replaceShaderPosition = function (hash, pipeline, vertexInput) {
|
|
319
301
|
var vDesc = pipeline.getShaderDescription('vertex');
|
|
@@ -367,27 +349,15 @@ function vtkWebGPUImageMapper(publicAPI, model) {
|
|
|
367
349
|
|
|
368
350
|
|
|
369
351
|
var DEFAULT_VALUES = {
|
|
370
|
-
rowLength: 1024
|
|
371
|
-
// VBOBuildString: null,
|
|
372
|
-
// webGPUTexture: null,
|
|
373
|
-
// tris: null,
|
|
374
|
-
// imagemat: null,
|
|
375
|
-
// imagematinv: null,
|
|
376
|
-
// colorTexture: null,
|
|
377
|
-
// pwfTexture: null,
|
|
378
|
-
// lastHaveSeenDepthRequest: false,
|
|
379
|
-
// haveSeenDepthRequest: false,
|
|
380
|
-
// lastTextureComponents: 0,
|
|
381
|
-
|
|
352
|
+
rowLength: 1024
|
|
382
353
|
}; // ----------------------------------------------------------------------------
|
|
383
354
|
|
|
384
355
|
function extend(publicAPI, model) {
|
|
385
356
|
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
386
357
|
Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance
|
|
387
358
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
model.helper.setFragmentShaderTemplate(imgFragTemplate);
|
|
359
|
+
vtkWebGPUFullScreenQuad.extend(publicAPI, model, initialValues);
|
|
360
|
+
publicAPI.setFragmentShaderTemplate(imgFragTemplate);
|
|
391
361
|
model.UBO = vtkWebGPUUniformBuffer.newInstance({
|
|
392
362
|
label: 'mapperUBO'
|
|
393
363
|
});
|
|
@@ -397,13 +367,6 @@ function extend(publicAPI, model) {
|
|
|
397
367
|
model.UBO.addEntry('Axis1', 'vec4<f32>');
|
|
398
368
|
model.UBO.addEntry('cScale', 'vec4<f32>');
|
|
399
369
|
model.UBO.addEntry('cShift', 'vec4<f32>');
|
|
400
|
-
model.helper.setUBO(model.UBO);
|
|
401
|
-
model.SSBO = vtkWebGPUStorageBuffer.newInstance({
|
|
402
|
-
label: 'volumeSSBO'
|
|
403
|
-
});
|
|
404
|
-
model.componentSSBO = vtkWebGPUStorageBuffer.newInstance({
|
|
405
|
-
label: 'componentSSBO'
|
|
406
|
-
});
|
|
407
370
|
model.lutBuildTime = {};
|
|
408
371
|
obj(model.lutBuildTime, {
|
|
409
372
|
mtime: 0
|
|
@@ -77,11 +77,9 @@ function vtkWebGPUOrderIndependentTranslucentPass(publicAPI, model) {
|
|
|
77
77
|
publicAPI.finalPass = function (viewNode, renNode) {
|
|
78
78
|
model.translucentFinalEncoder.setColorTextureView(0, model.colorTextureView);
|
|
79
79
|
model.translucentFinalEncoder.attachTextureViews();
|
|
80
|
-
|
|
81
|
-
model.translucentFinalEncoder.begin(viewNode.getCommandEncoder()); // set viewport
|
|
82
|
-
|
|
80
|
+
model.translucentFinalEncoder.begin(viewNode.getCommandEncoder());
|
|
83
81
|
renNode.scissorAndViewport(model.translucentFinalEncoder);
|
|
84
|
-
model.fullScreenQuad.
|
|
82
|
+
model.fullScreenQuad.prepareAndDraw(model.translucentFinalEncoder);
|
|
85
83
|
model.translucentFinalEncoder.end();
|
|
86
84
|
};
|
|
87
85
|
|
|
@@ -116,8 +114,8 @@ function vtkWebGPUOrderIndependentTranslucentPass(publicAPI, model) {
|
|
|
116
114
|
fDesc.addOutput('f32', 'outAccum');
|
|
117
115
|
fDesc.addBuiltinInput('vec4<f32>', '@builtin(position) fragPos');
|
|
118
116
|
var code = fDesc.getCode();
|
|
119
|
-
code = vtkWebGPUShaderCache.substitute(code, '//VTK::RenderEncoder::Impl', [// very simple depth weighting in w
|
|
120
|
-
'var w: f32 =
|
|
117
|
+
code = vtkWebGPUShaderCache.substitute(code, '//VTK::RenderEncoder::Impl', [// very simple depth weighting in w z ranges from 1.0 near to 0.0
|
|
118
|
+
'var w: f32 = computedColor.a * pow(0.1 + input.fragPos.z, 2.0);', 'output.outColor = vec4<f32>(computedColor.rgb*w, w);', 'output.outAccum = computedColor.a;']).result;
|
|
121
119
|
fDesc.setCode(code);
|
|
122
120
|
});
|
|
123
121
|
model.translucentRenderEncoder.setPipelineHash('oitpr');
|
|
@@ -83,6 +83,17 @@ function vtkWebGPUPipeline(publicAPI, model) {
|
|
|
83
83
|
publicAPI.bindVertexInput = function (renderEncoder, vInput) {
|
|
84
84
|
vInput.bindBuffers(renderEncoder);
|
|
85
85
|
};
|
|
86
|
+
|
|
87
|
+
publicAPI.addDrawCallback = function (cb) {
|
|
88
|
+
model._drawCallbacks.push(cb);
|
|
89
|
+
}; // handle anything that needs to be done when drawing
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
publicAPI.draw = function (encoder) {
|
|
93
|
+
for (var cb = 0; cb < model._drawCallbacks.length; cb++) {
|
|
94
|
+
model._drawCallbacks[cb](encoder, publicAPI);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
86
97
|
} // ----------------------------------------------------------------------------
|
|
87
98
|
// Object factory
|
|
88
99
|
// ----------------------------------------------------------------------------
|
|
@@ -105,6 +116,7 @@ function extend(publicAPI, model) {
|
|
|
105
116
|
obj(publicAPI, model);
|
|
106
117
|
model.layouts = [];
|
|
107
118
|
model.shaderDescriptions = [];
|
|
119
|
+
model._drawCallbacks = [];
|
|
108
120
|
get(publicAPI, model, ['handle', 'pipelineDescription']);
|
|
109
121
|
setGet(publicAPI, model, ['device', 'renderEncoder', 'topology', 'vertexState']); // For more macro methods, see "Sources/macros.js"
|
|
110
122
|
// Object specific methods
|