@kitware/vtk.js 23.4.3 → 24.0.0
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 +33 -0
- package/Common/Core/DataArray.js +4 -0
- package/Common/Core/Math/index.js +2 -2
- package/Common/Core/Math.js +1 -1
- package/Common/DataModel/DataSetAttributes/FieldData.js +9 -5
- package/Common/DataModel/ImageData.d.ts +23 -6
- package/Common/DataModel/ImageData.js +8 -1
- package/Common/DataModel/PolyData.d.ts +8 -1
- package/Common/DataModel/PolyData.js +5 -3
- package/Common/DataModel/Triangle.js +217 -2
- package/Common/Transform/LandmarkTransform.js +1 -1
- package/Filters/General/OBBTree/OBBNode.js +82 -0
- package/Filters/General/OBBTree/helper.js +92 -0
- package/Filters/General/OBBTree.js +1249 -0
- package/Filters/General/WindowedSincPolyDataFilter.js +1 -1
- package/Filters/General.js +2 -0
- package/Filters/Sources/CircleSource.js +1 -1
- package/Filters/Sources/PointSource.js +1 -1
- package/Filters/Texture/TextureMapToPlane.js +1 -1
- package/Interaction/Manipulators/KeyboardCameraManipulator.js +1 -1
- package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +1 -1
- package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +1 -1
- package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +1 -1
- package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +1 -1
- package/Interaction/Style/InteractorStyleImage.js +3 -3
- package/Interaction/Style/InteractorStyleMPRSlice.js +12 -6
- package/Interaction/Style/InteractorStyleManipulator.js +42 -28
- package/Interaction/Style/InteractorStyleRemoteMouse.js +32 -14
- package/Interaction/Style/InteractorStyleTrackballCamera.js +7 -7
- package/Interaction/Widgets/OrientationMarkerWidget.js +18 -13
- package/Interaction/Widgets/PiecewiseGaussianWidget.js +1 -1
- package/Interaction/Widgets.js +1 -35
- package/Proxy/Core/View2DProxy.js +1 -1
- package/Rendering/Core/ColorTransferFunction.js +1 -1
- package/Rendering/Core/Coordinate.js +1 -1
- package/Rendering/Core/CubeAxesActor.js +1 -1
- package/Rendering/Core/Glyph3DMapper.js +1 -1
- package/Rendering/Core/ImageMapper.js +1 -1
- package/Rendering/Core/InteractorObserver.js +11 -10
- package/Rendering/Core/InteractorStyle.js +9 -4
- package/Rendering/Core/Mapper.js +1 -1
- package/Rendering/Core/Prop.js +6 -4
- package/Rendering/Core/Prop3D.js +1 -1
- package/Rendering/Core/RenderWindowInteractor.js +24 -17
- package/Rendering/Core/Renderer.js +24 -19
- package/Rendering/Core/ScalarBarActor.js +1 -1
- package/Rendering/Core/Viewport.js +1 -1
- package/Rendering/Core/VolumeMapper.js +1 -1
- package/Rendering/OpenGL/Actor.js +2 -2
- package/Rendering/OpenGL/Actor2D.js +2 -2
- package/Rendering/OpenGL/BufferObject.js +6 -5
- package/Rendering/OpenGL/Camera.js +3 -3
- package/Rendering/OpenGL/CellArrayBufferObject.js +1 -1
- package/Rendering/OpenGL/Framebuffer.js +13 -12
- package/Rendering/OpenGL/Glyph3DMapper.js +10 -8
- package/Rendering/OpenGL/HardwareSelector.js +35 -25
- package/Rendering/OpenGL/ImageMapper.js +51 -45
- package/Rendering/OpenGL/ImageSlice.js +2 -2
- package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +4 -2
- package/Rendering/OpenGL/PolyDataMapper.js +14 -11
- package/Rendering/OpenGL/PolyDataMapper2D.js +7 -6
- package/Rendering/OpenGL/Renderer.js +11 -7
- package/Rendering/OpenGL/ReplacementShaderMapper.js +1 -1
- package/Rendering/OpenGL/ScalarBarActor.js +2 -2
- package/Rendering/OpenGL/ShaderCache.js +7 -5
- package/Rendering/OpenGL/Skybox.js +11 -9
- package/Rendering/OpenGL/SphereMapper.js +2 -2
- package/Rendering/OpenGL/StickMapper.js +2 -2
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +13 -12
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +11 -9
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +19 -12
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +9 -6
- package/Rendering/OpenGL/Texture.js +44 -31
- package/Rendering/OpenGL/VertexArrayObject.js +7 -7
- package/Rendering/OpenGL/Volume.js +3 -2
- package/Rendering/OpenGL/VolumeMapper.js +30 -26
- package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
- package/Rendering/SceneGraph/ViewNode.js +8 -7
- package/Rendering/WebGPU/Renderer.js +18 -10
- package/Widgets/Core/AbstractWidget.js +5 -4
- package/Widgets/Core/AbstractWidgetFactory.js +2 -1
- package/Widgets/Core/WidgetManager.js +66 -49
- package/Widgets/Manipulators/LineManipulator.js +1 -1
- package/Widgets/Representations/CircleContextRepresentation.js +1 -1
- package/Widgets/Representations/ImplicitPlaneRepresentation.js +5 -5
- package/Widgets/Representations/PolyLineRepresentation.js +1 -1
- package/Widgets/Representations/ResliceCursorContextRepresentation.js +7 -7
- package/Widgets/SVG/SVGLandmarkRepresentation/Constants.js +2 -2
- package/Widgets/SVG/SVGLandmarkRepresentation.js +21 -8
- package/Widgets/SVG/SVGRepresentation.js +1 -1
- package/Widgets/Widgets3D/AngleWidget/behavior.js +14 -6
- package/Widgets/Widgets3D/DistanceWidget/behavior.js +14 -6
- package/Widgets/Widgets3D/EllipseWidget.js +0 -1
- package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +6 -2
- package/Widgets/Widgets3D/ImplicitPlaneWidget.js +4 -2
- package/Widgets/Widgets3D/LabelWidget/behavior.js +138 -0
- package/Widgets/Widgets3D/LabelWidget/state.js +22 -0
- package/Widgets/Widgets3D/LabelWidget.js +79 -0
- package/Widgets/Widgets3D/LineWidget/behavior.js +18 -9
- package/Widgets/Widgets3D/LineWidget/helpers.js +1 -1
- package/Widgets/Widgets3D/LineWidget.js +0 -1
- package/Widgets/Widgets3D/PaintWidget/behavior.js +5 -3
- package/Widgets/Widgets3D/PolyLineWidget/behavior.js +18 -8
- package/Widgets/Widgets3D/RectangleWidget.js +0 -1
- package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +1 -1
- package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +1 -1
- package/Widgets/Widgets3D/ResliceCursorWidget.js +1 -1
- package/Widgets/Widgets3D/ShapeWidget/behavior.js +18 -11
- package/Widgets/Widgets3D/SplineWidget/behavior.js +33 -21
- package/interfaces.d.ts +11 -0
- package/macros.d.ts +26 -1
- package/macros.js +51 -19
- package/package.json +1 -1
- package/types.d.ts +1 -0
- package/Interaction/Widgets/AbstractWidget.js +0 -104
- package/Interaction/Widgets/DistanceRepresentation.js +0 -116
- package/Interaction/Widgets/DistanceWidget.js +0 -77
- package/Interaction/Widgets/HandleRepresentation/Constants.js +0 -12
- package/Interaction/Widgets/HandleRepresentation.js +0 -100
- package/Interaction/Widgets/HandleWidget/Constants.js +0 -9
- package/Interaction/Widgets/HandleWidget.js +0 -194
- package/Interaction/Widgets/ImageCroppingRegionsRepresentation.js +0 -233
- package/Interaction/Widgets/ImageCroppingRegionsWidget/Constants.js +0 -16
- package/Interaction/Widgets/ImageCroppingRegionsWidget.js +0 -573
- package/Interaction/Widgets/LabelRepresentation/Constants.js +0 -17
- package/Interaction/Widgets/LabelRepresentation.js +0 -325
- package/Interaction/Widgets/LabelWidget.js +0 -65
- package/Interaction/Widgets/LineRepresentation/Constants.js +0 -21
- package/Interaction/Widgets/LineRepresentation.js +0 -498
- package/Interaction/Widgets/LineWidget/Constants.js +0 -11
- package/Interaction/Widgets/LineWidget.js +0 -296
- package/Interaction/Widgets/PointPlacer.js +0 -51
- package/Interaction/Widgets/ResliceCursor/ResliceCursor/Constants.js +0 -10
- package/Interaction/Widgets/ResliceCursor/ResliceCursor.js +0 -269
- package/Interaction/Widgets/ResliceCursor/ResliceCursorActor/Constants.js +0 -10
- package/Interaction/Widgets/ResliceCursor/ResliceCursorActor.js +0 -146
- package/Interaction/Widgets/ResliceCursor/ResliceCursorLineRepresentation.js +0 -332
- package/Interaction/Widgets/ResliceCursor/ResliceCursorPolyDataAlgorithm.js +0 -134
- package/Interaction/Widgets/ResliceCursor/ResliceCursorRepresentation/Constants.js +0 -16
- package/Interaction/Widgets/ResliceCursor/ResliceCursorRepresentation.js +0 -371
- package/Interaction/Widgets/ResliceCursor/ResliceCursorWidget/Constants.js +0 -10
- package/Interaction/Widgets/ResliceCursor/ResliceCursorWidget.js +0 -157
- package/Interaction/Widgets/SphereHandleRepresentation.js +0 -370
- package/Interaction/Widgets/WidgetRepresentation.js +0 -121
|
@@ -15,9 +15,9 @@ function vtkOpenGLActor2D(publicAPI, model) {
|
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
model.
|
|
18
|
+
model._openGLRenderWindow = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderWindow');
|
|
19
19
|
model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
20
|
-
model.context = model.
|
|
20
|
+
model.context = model._openGLRenderWindow.getContext();
|
|
21
21
|
publicAPI.prepareNodes();
|
|
22
22
|
publicAPI.addMissingNodes(model.renderable.getTextures());
|
|
23
23
|
publicAPI.addMissingNode(model.renderable.getMapper());
|
|
@@ -115,16 +115,16 @@ function vtkOpenGLBufferObject(publicAPI, model) {
|
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
publicAPI.setOpenGLRenderWindow = function (rw) {
|
|
118
|
-
if (model.
|
|
118
|
+
if (model._openGLRenderWindow === rw) {
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
publicAPI.releaseGraphicsResources();
|
|
123
|
-
model.
|
|
123
|
+
model._openGLRenderWindow = rw;
|
|
124
124
|
model.context = null;
|
|
125
125
|
|
|
126
126
|
if (rw) {
|
|
127
|
-
model.context = model.
|
|
127
|
+
model.context = model._openGLRenderWindow.getContext();
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
130
|
|
|
@@ -138,7 +138,7 @@ function vtkOpenGLBufferObject(publicAPI, model) {
|
|
|
138
138
|
|
|
139
139
|
var DEFAULT_VALUES = {
|
|
140
140
|
objectType: ObjectType.ARRAY_BUFFER,
|
|
141
|
-
|
|
141
|
+
// _openGLRenderWindow: null,
|
|
142
142
|
context: null
|
|
143
143
|
}; // ----------------------------------------------------------------------------
|
|
144
144
|
|
|
@@ -147,7 +147,8 @@ function extend(publicAPI, model) {
|
|
|
147
147
|
Object.assign(model, DEFAULT_VALUES, initialValues); // Object methods
|
|
148
148
|
|
|
149
149
|
macro.obj(publicAPI, model);
|
|
150
|
-
macro.get(publicAPI, model, ['
|
|
150
|
+
macro.get(publicAPI, model, ['_openGLRenderWindow']);
|
|
151
|
+
macro.moveToProtected(publicAPI, model, ['openGLRenderWindow']);
|
|
151
152
|
vtkOpenGLBufferObject(publicAPI, model);
|
|
152
153
|
} // ----------------------------------------------------------------------------
|
|
153
154
|
|
|
@@ -13,8 +13,8 @@ function vtkOpenGLCamera(publicAPI, model) {
|
|
|
13
13
|
publicAPI.buildPass = function (prepass) {
|
|
14
14
|
if (prepass) {
|
|
15
15
|
model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
16
|
-
model.
|
|
17
|
-
model.context = model.
|
|
16
|
+
model._openGLRenderWindow = model.openGLRenderer.getParent();
|
|
17
|
+
model.context = model._openGLRenderWindow.getContext();
|
|
18
18
|
}
|
|
19
19
|
}; // Renders myself
|
|
20
20
|
|
|
@@ -33,7 +33,7 @@ function vtkOpenGLCamera(publicAPI, model) {
|
|
|
33
33
|
|
|
34
34
|
publicAPI.getKeyMatrices = function (ren) {
|
|
35
35
|
// has the camera changed?
|
|
36
|
-
if (ren !== model.lastRenderer || model.
|
|
36
|
+
if (ren !== model.lastRenderer || model._openGLRenderWindow.getMTime() > model.keyMatrixTime.getMTime() || publicAPI.getMTime() > model.keyMatrixTime.getMTime() || ren.getMTime() > model.keyMatrixTime.getMTime() || model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {
|
|
37
37
|
mat4.copy(model.keyMatrices.wcvc, model.renderable.getViewMatrix());
|
|
38
38
|
mat3.fromMat4(model.keyMatrices.normalMatrix, model.keyMatrices.wcvc);
|
|
39
39
|
mat3.invert(model.keyMatrices.normalMatrix, model.keyMatrices.normalMatrix);
|
|
@@ -90,7 +90,7 @@ function vtkOpenGLCellArrayBufferObject(publicAPI, model) {
|
|
|
90
90
|
model.colorBO = vtkBufferObject.newInstance();
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
model.colorBO.setOpenGLRenderWindow(model.
|
|
93
|
+
model.colorBO.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
94
94
|
} else {
|
|
95
95
|
model.colorBO = null;
|
|
96
96
|
}
|
|
@@ -30,7 +30,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
30
30
|
|
|
31
31
|
var gl = model.context;
|
|
32
32
|
model.previousDrawBinding = gl.getParameter(model.context.FRAMEBUFFER_BINDING);
|
|
33
|
-
model.previousActiveFramebuffer = model.
|
|
33
|
+
model.previousActiveFramebuffer = model._openGLRenderWindow.getActiveFramebuffer();
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
publicAPI.saveCurrentBuffers = function (modeIn) {// noop on webgl 1
|
|
@@ -50,7 +50,8 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
50
50
|
|
|
51
51
|
var gl = model.context;
|
|
52
52
|
gl.bindFramebuffer(gl.FRAMEBUFFER, model.previousDrawBinding);
|
|
53
|
-
|
|
53
|
+
|
|
54
|
+
model._openGLRenderWindow.setActiveFramebuffer(model.previousActiveFramebuffer);
|
|
54
55
|
};
|
|
55
56
|
|
|
56
57
|
publicAPI.restorePreviousBuffers = function (modeIn) {// currently a noop on webgl1
|
|
@@ -70,7 +71,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
70
71
|
model.colorBuffers[i].bind();
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
model.
|
|
74
|
+
model._openGLRenderWindow.setActiveFramebuffer(publicAPI);
|
|
74
75
|
};
|
|
75
76
|
|
|
76
77
|
publicAPI.create = function (width, height) {
|
|
@@ -96,7 +97,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
96
97
|
var glAttachment = gl.COLOR_ATTACHMENT0;
|
|
97
98
|
|
|
98
99
|
if (attachment > 0) {
|
|
99
|
-
if (model.
|
|
100
|
+
if (model._openGLRenderWindow.getWebgl2()) {
|
|
100
101
|
glAttachment += attachment;
|
|
101
102
|
} else {
|
|
102
103
|
vtkErrorMacro('Using multiple framebuffer attachments requires WebGL 2');
|
|
@@ -120,7 +121,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
120
121
|
var glAttachment = gl.COLOR_ATTACHMENT0;
|
|
121
122
|
|
|
122
123
|
if (attachment > 0) {
|
|
123
|
-
if (model.
|
|
124
|
+
if (model._openGLRenderWindow.getWebgl2()) {
|
|
124
125
|
glAttachment += attachment;
|
|
125
126
|
} else {
|
|
126
127
|
vtkErrorMacro('Using multiple framebuffer attachments requires WebGL 2');
|
|
@@ -138,7 +139,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
138
139
|
return;
|
|
139
140
|
}
|
|
140
141
|
|
|
141
|
-
if (model.
|
|
142
|
+
if (model._openGLRenderWindow.getWebgl2()) {
|
|
142
143
|
var gl = model.context;
|
|
143
144
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, texture.getHandle(), 0);
|
|
144
145
|
} else {
|
|
@@ -152,7 +153,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
152
153
|
return;
|
|
153
154
|
}
|
|
154
155
|
|
|
155
|
-
if (model.
|
|
156
|
+
if (model._openGLRenderWindow.getWebgl2()) {
|
|
156
157
|
var gl = model.context;
|
|
157
158
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, null, 0);
|
|
158
159
|
} else {
|
|
@@ -165,16 +166,16 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
165
166
|
};
|
|
166
167
|
|
|
167
168
|
publicAPI.setOpenGLRenderWindow = function (rw) {
|
|
168
|
-
if (model.
|
|
169
|
+
if (model._openGLRenderWindow === rw) {
|
|
169
170
|
return;
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
publicAPI.releaseGraphicsResources();
|
|
173
|
-
model.
|
|
174
|
+
model._openGLRenderWindow = rw;
|
|
174
175
|
model.context = null;
|
|
175
176
|
|
|
176
177
|
if (rw) {
|
|
177
|
-
model.context = model.
|
|
178
|
+
model.context = model._openGLRenderWindow.getContext();
|
|
178
179
|
}
|
|
179
180
|
};
|
|
180
181
|
|
|
@@ -204,7 +205,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
204
205
|
publicAPI.bind();
|
|
205
206
|
var gl = model.context;
|
|
206
207
|
var texture = vtkOpenGLTexture.newInstance();
|
|
207
|
-
texture.setOpenGLRenderWindow(model.
|
|
208
|
+
texture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
208
209
|
texture.setMinificationFilter(Filter.LINEAR);
|
|
209
210
|
texture.setMagnificationFilter(Filter.LINEAR);
|
|
210
211
|
texture.create2DFromRaw(model.glFramebuffer.width, model.glFramebuffer.height, 4, VtkDataTypes.UNSIGNED_CHAR, null);
|
|
@@ -227,7 +228,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
227
228
|
|
|
228
229
|
|
|
229
230
|
var DEFAULT_VALUES = {
|
|
230
|
-
|
|
231
|
+
// _openGLRenderWindow: null,
|
|
231
232
|
glFramebuffer: null,
|
|
232
233
|
colorBuffers: null,
|
|
233
234
|
depthTexture: null,
|
|
@@ -53,7 +53,7 @@ function vtkOpenGLGlyph3DMapper(publicAPI, model) {
|
|
|
53
53
|
|
|
54
54
|
var gl = model.context;
|
|
55
55
|
|
|
56
|
-
if (model.
|
|
56
|
+
if (model._openGLRenderWindow.getWebgl2()) {
|
|
57
57
|
model.hardwareSupport = true;
|
|
58
58
|
model.extension = null;
|
|
59
59
|
} else if (!model.extension) {
|
|
@@ -68,12 +68,14 @@ function vtkOpenGLGlyph3DMapper(publicAPI, model) {
|
|
|
68
68
|
var frontfaceCulling = actor.getProperty().getFrontfaceCulling();
|
|
69
69
|
|
|
70
70
|
if (!backfaceCulling && !frontfaceCulling) {
|
|
71
|
-
model.
|
|
71
|
+
model._openGLRenderWindow.disableCullFace();
|
|
72
72
|
} else if (frontfaceCulling) {
|
|
73
|
-
model.
|
|
73
|
+
model._openGLRenderWindow.enableCullFace();
|
|
74
|
+
|
|
74
75
|
gl.cullFace(gl.FRONT);
|
|
75
76
|
} else {
|
|
76
|
-
model.
|
|
77
|
+
model._openGLRenderWindow.enableCullFace();
|
|
78
|
+
|
|
77
79
|
gl.cullFace(gl.BACK);
|
|
78
80
|
}
|
|
79
81
|
|
|
@@ -420,13 +422,13 @@ function vtkOpenGLGlyph3DMapper(publicAPI, model) {
|
|
|
420
422
|
|
|
421
423
|
if (!model.matrixBuffer) {
|
|
422
424
|
model.matrixBuffer = vtkBufferObject.newInstance();
|
|
423
|
-
model.matrixBuffer.setOpenGLRenderWindow(model.
|
|
425
|
+
model.matrixBuffer.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
424
426
|
model.normalBuffer = vtkBufferObject.newInstance();
|
|
425
|
-
model.normalBuffer.setOpenGLRenderWindow(model.
|
|
427
|
+
model.normalBuffer.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
426
428
|
model.colorBuffer = vtkBufferObject.newInstance();
|
|
427
|
-
model.colorBuffer.setOpenGLRenderWindow(model.
|
|
429
|
+
model.colorBuffer.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
428
430
|
model.pickBuffer = vtkBufferObject.newInstance();
|
|
429
|
-
model.pickBuffer.setOpenGLRenderWindow(model.
|
|
431
|
+
model.pickBuffer.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
430
432
|
}
|
|
431
433
|
|
|
432
434
|
if (model.renderable.getBuildTime().getMTime() > model.glyphBOBuildTime.getMTime()) {
|
|
@@ -239,19 +239,20 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
239
239
|
|
|
240
240
|
|
|
241
241
|
publicAPI.beginSelection = function () {
|
|
242
|
-
model.
|
|
242
|
+
model._openGLRenderer = model._openGLRenderWindow.getViewNodeFor(model.renderer);
|
|
243
243
|
model.maxAttributeId = 0;
|
|
244
|
-
|
|
244
|
+
|
|
245
|
+
var size = model._openGLRenderWindow.getSize();
|
|
245
246
|
|
|
246
247
|
if (!model.framebuffer) {
|
|
247
248
|
model.framebuffer = vtkOpenGLFramebuffer.newInstance();
|
|
248
|
-
model.framebuffer.setOpenGLRenderWindow(model.
|
|
249
|
+
model.framebuffer.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
249
250
|
model.framebuffer.saveCurrentBindingsAndBuffers();
|
|
250
251
|
model.framebuffer.create(size[0], size[1]); // this calls model.framebuffer.bind()
|
|
251
252
|
|
|
252
253
|
model.framebuffer.populateFramebuffer();
|
|
253
254
|
} else {
|
|
254
|
-
model.framebuffer.setOpenGLRenderWindow(model.
|
|
255
|
+
model.framebuffer.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
255
256
|
model.framebuffer.saveCurrentBindingsAndBuffers();
|
|
256
257
|
var fbSize = model.framebuffer.getSize();
|
|
257
258
|
|
|
@@ -264,8 +265,10 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
264
265
|
}
|
|
265
266
|
}
|
|
266
267
|
|
|
267
|
-
model.
|
|
268
|
-
|
|
268
|
+
model._openGLRenderer.clear();
|
|
269
|
+
|
|
270
|
+
model._openGLRenderer.setSelector(publicAPI);
|
|
271
|
+
|
|
269
272
|
model.hitProps = {};
|
|
270
273
|
model.props = [];
|
|
271
274
|
publicAPI.releasePixBuffers();
|
|
@@ -274,7 +277,9 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
274
277
|
|
|
275
278
|
publicAPI.endSelection = function () {
|
|
276
279
|
model.hitProps = {};
|
|
277
|
-
|
|
280
|
+
|
|
281
|
+
model._openGLRenderer.setSelector(null);
|
|
282
|
+
|
|
278
283
|
model.framebuffer.restorePreviousBindingsAndBuffers();
|
|
279
284
|
};
|
|
280
285
|
|
|
@@ -305,7 +310,7 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
305
310
|
model.renderer = renderer; // set area to all if no arguments provided
|
|
306
311
|
|
|
307
312
|
if (fx1 === undefined) {
|
|
308
|
-
size = model.
|
|
313
|
+
size = model._openGLRenderWindow.getSize();
|
|
309
314
|
publicAPI.setArea(0, 0, size[0] - 1, size[1] - 1);
|
|
310
315
|
} else {
|
|
311
316
|
publicAPI.setArea(fx1, fy1, fx2, fy2);
|
|
@@ -328,7 +333,7 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
328
333
|
props: _toConsumableArray(model.props),
|
|
329
334
|
fieldAssociation: model.fieldAssociation,
|
|
330
335
|
renderer: renderer,
|
|
331
|
-
openGLRenderWindow: model.
|
|
336
|
+
openGLRenderWindow: model._openGLRenderWindow
|
|
332
337
|
};
|
|
333
338
|
|
|
334
339
|
result.generateSelection = function () {
|
|
@@ -356,15 +361,15 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
356
361
|
|
|
357
362
|
|
|
358
363
|
publicAPI.captureBuffers = function () {
|
|
359
|
-
if (!model.renderer || !model.
|
|
364
|
+
if (!model.renderer || !model._openGLRenderWindow) {
|
|
360
365
|
vtkErrorMacro('Renderer and view must be set before calling Select.');
|
|
361
366
|
return false;
|
|
362
367
|
}
|
|
363
368
|
|
|
364
|
-
model.
|
|
369
|
+
model._openGLRenderer = model._openGLRenderWindow.getViewNodeFor(model.renderer); // todo revisit making selection part of core
|
|
365
370
|
// then we can do this in core
|
|
366
371
|
|
|
367
|
-
model.
|
|
372
|
+
model._openGLRenderWindow.getRenderable().preRender(); // int rgba[4];
|
|
368
373
|
// rwin.getColorBufferSizes(rgba);
|
|
369
374
|
// if (rgba[0] < 8 || rgba[1] < 8 || rgba[2] < 8) {
|
|
370
375
|
// vtkErrorMacro("Color buffer depth must be at least 8 bit. "
|
|
@@ -372,6 +377,7 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
372
377
|
// return false;
|
|
373
378
|
// }
|
|
374
379
|
|
|
380
|
+
|
|
375
381
|
publicAPI.invokeEvent({
|
|
376
382
|
type: 'StartEvent'
|
|
377
383
|
}); // Initialize renderer for selection.
|
|
@@ -379,7 +385,9 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
379
385
|
|
|
380
386
|
model.originalBackground = model.renderer.getBackgroundByReference();
|
|
381
387
|
model.renderer.setBackground(0.0, 0.0, 0.0);
|
|
382
|
-
|
|
388
|
+
|
|
389
|
+
var rpasses = model._openGLRenderWindow.getRenderPasses();
|
|
390
|
+
|
|
383
391
|
publicAPI.beginSelection();
|
|
384
392
|
|
|
385
393
|
for (model.currentPass = PassTypes.MIN_KNOWN_PASS; model.currentPass <= PassTypes.COMPOSITE_INDEX_PASS; model.currentPass++) {
|
|
@@ -388,9 +396,10 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
388
396
|
|
|
389
397
|
if (model.captureZValues && model.currentPass === PassTypes.ACTOR_PASS && typeof rpasses[0].requestDepth === 'function' && typeof rpasses[0].getFramebuffer === 'function') {
|
|
390
398
|
rpasses[0].requestDepth();
|
|
391
|
-
|
|
399
|
+
|
|
400
|
+
model._openGLRenderWindow.traverseAllPasses();
|
|
392
401
|
} else {
|
|
393
|
-
model.
|
|
402
|
+
model._openGLRenderWindow.traverseAllPasses();
|
|
394
403
|
}
|
|
395
404
|
|
|
396
405
|
publicAPI.postCapturePass(model.currentPass);
|
|
@@ -404,7 +413,7 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
404
413
|
publicAPI.invokeEvent({
|
|
405
414
|
type: 'EndEvent'
|
|
406
415
|
}); // restore image, not needed?
|
|
407
|
-
// model.
|
|
416
|
+
// model._openGLRenderWindow.traverseAllPasses();
|
|
408
417
|
|
|
409
418
|
return true;
|
|
410
419
|
}; //----------------------------------------------------------------------------
|
|
@@ -416,17 +425,17 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
416
425
|
|
|
417
426
|
|
|
418
427
|
publicAPI.savePixelBuffer = function (passNo) {
|
|
419
|
-
model.pixBuffer[passNo] = model.
|
|
428
|
+
model.pixBuffer[passNo] = model._openGLRenderWindow.getPixelData(model.area[0], model.area[1], model.area[2], model.area[3]);
|
|
420
429
|
|
|
421
430
|
if (passNo === PassTypes.ACTOR_PASS) {
|
|
422
431
|
if (model.captureZValues) {
|
|
423
|
-
var rpasses = model.
|
|
432
|
+
var rpasses = model._openGLRenderWindow.getRenderPasses();
|
|
424
433
|
|
|
425
434
|
if (typeof rpasses[0].requestDepth === 'function' && typeof rpasses[0].getFramebuffer === 'function') {
|
|
426
435
|
var fb = rpasses[0].getFramebuffer();
|
|
427
436
|
fb.saveCurrentBindingsAndBuffers();
|
|
428
437
|
fb.bind();
|
|
429
|
-
model.zBuffer = model.
|
|
438
|
+
model.zBuffer = model._openGLRenderWindow.getPixelData(model.area[0], model.area[1], model.area[2], model.area[3]);
|
|
430
439
|
fb.restorePreviousBindingsAndBuffers();
|
|
431
440
|
}
|
|
432
441
|
}
|
|
@@ -647,12 +656,12 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
647
656
|
}
|
|
648
657
|
}
|
|
649
658
|
|
|
650
|
-
return convertSelection(model.fieldAssociation, dataMap, model.captureZValues, model.renderer, model.
|
|
659
|
+
return convertSelection(model.fieldAssociation, dataMap, model.captureZValues, model.renderer, model._openGLRenderWindow);
|
|
651
660
|
}; //----------------------------------------------------------------------------
|
|
652
661
|
|
|
653
662
|
|
|
654
663
|
publicAPI.attach = function (w, r) {
|
|
655
|
-
model.
|
|
664
|
+
model._openGLRenderWindow = w;
|
|
656
665
|
model.renderer = r;
|
|
657
666
|
}; // override
|
|
658
667
|
|
|
@@ -677,9 +686,9 @@ function vtkOpenGLHardwareSelector(publicAPI, model) {
|
|
|
677
686
|
|
|
678
687
|
var DEFAULT_VALUES = {
|
|
679
688
|
area: undefined,
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
689
|
+
// _renderer: null,
|
|
690
|
+
// _openGLRenderWindow: null,
|
|
691
|
+
// _openGLRenderer: null,
|
|
683
692
|
currentPass: -1,
|
|
684
693
|
propColorValue: null,
|
|
685
694
|
props: null,
|
|
@@ -699,8 +708,9 @@ function extend(publicAPI, model) {
|
|
|
699
708
|
}
|
|
700
709
|
|
|
701
710
|
macro.setGetArray(publicAPI, model, ['area'], 4);
|
|
702
|
-
macro.setGet(publicAPI, model, ['
|
|
711
|
+
macro.setGet(publicAPI, model, ['_renderer', 'currentPass', '_openGLRenderWindow']);
|
|
703
712
|
macro.setGetArray(publicAPI, model, ['propColorValue'], 3);
|
|
713
|
+
macro.moveToProtected(publicAPI, model, ['renderer', 'openGLRenderWindow']);
|
|
704
714
|
macro.event(publicAPI, model, 'event'); // Object methods
|
|
705
715
|
|
|
706
716
|
vtkOpenGLHardwareSelector(publicAPI, model);
|
|
@@ -44,12 +44,12 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
44
44
|
model.currentRenderPass = null;
|
|
45
45
|
model.openGLImageSlice = publicAPI.getFirstAncestorOfType('vtkOpenGLImageSlice');
|
|
46
46
|
model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
47
|
-
model.
|
|
48
|
-
model.context = model.
|
|
49
|
-
model.tris.setOpenGLRenderWindow(model.
|
|
50
|
-
model.openGLTexture.setOpenGLRenderWindow(model.
|
|
51
|
-
model.colorTexture.setOpenGLRenderWindow(model.
|
|
52
|
-
model.pwfTexture.setOpenGLRenderWindow(model.
|
|
47
|
+
model._openGLRenderWindow = model.openGLRenderer.getParent();
|
|
48
|
+
model.context = model._openGLRenderWindow.getContext();
|
|
49
|
+
model.tris.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
50
|
+
model.openGLTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
51
|
+
model.colorTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
52
|
+
model.pwfTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
53
53
|
var ren = model.openGLRenderer.getRenderable();
|
|
54
54
|
model.openGLCamera = model.openGLRenderer.getViewNodeFor(ren.getActiveCamera()); // is slice set by the camera
|
|
55
55
|
|
|
@@ -282,7 +282,8 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
282
282
|
};
|
|
283
283
|
publicAPI.buildShaders(shaders, ren, actor); // compile and bind the program if needed
|
|
284
284
|
|
|
285
|
-
var newShader = model.
|
|
285
|
+
var newShader = model._openGLRenderWindow.getShaderCache().readyShaderProgramArray(shaders.Vertex, shaders.Fragment, shaders.Geometry); // if the shader changed reinitialize the VAO
|
|
286
|
+
|
|
286
287
|
|
|
287
288
|
if (newShader !== cellBO.getProgram()) {
|
|
288
289
|
cellBO.setProgram(newShader); // reset the VAO as the shader has changed
|
|
@@ -292,7 +293,7 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
292
293
|
|
|
293
294
|
cellBO.getShaderSourceTime().modified();
|
|
294
295
|
} else {
|
|
295
|
-
model.
|
|
296
|
+
model._openGLRenderWindow.getShaderCache().readyShaderProgram(cellBO.getProgram());
|
|
296
297
|
}
|
|
297
298
|
|
|
298
299
|
cellBO.getVAO().bind();
|
|
@@ -721,8 +722,13 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
721
722
|
for (var _i8 = 0; _i8 < 4; _i8++) {
|
|
722
723
|
tcoordArray[_i8 * 2] = _i8 % 2 ? 1.0 : 0.0;
|
|
723
724
|
tcoordArray[_i8 * 2 + 1] = _i8 > 1 ? 1.0 : 0.0;
|
|
724
|
-
}
|
|
725
|
+
} // Determine depth position of the slicing plane in the scene.
|
|
726
|
+
// Slicing modes X, Y, and Z use a continuous axis position, whereas
|
|
727
|
+
// slicing modes I, J, and K should use discrete positions.
|
|
728
|
+
|
|
725
729
|
|
|
730
|
+
var sliceDepth = [SlicingMode.X, SlicingMode.Y, SlicingMode.Z].includes(model.renderable.getSlicingMode()) ? slice : nSlice;
|
|
731
|
+
var spatialExt = image.getSpatialExtent();
|
|
726
732
|
var basicScalars = imgScalars.getData();
|
|
727
733
|
var scalars = null; // Get right scalars according to slicing mode
|
|
728
734
|
|
|
@@ -740,18 +746,18 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
740
746
|
|
|
741
747
|
dims[0] = dims[1];
|
|
742
748
|
dims[1] = dims[2];
|
|
743
|
-
ptsArray[0] =
|
|
744
|
-
ptsArray[1] =
|
|
745
|
-
ptsArray[2] =
|
|
746
|
-
ptsArray[3] =
|
|
747
|
-
ptsArray[4] =
|
|
748
|
-
ptsArray[5] =
|
|
749
|
-
ptsArray[6] =
|
|
750
|
-
ptsArray[7] =
|
|
751
|
-
ptsArray[8] =
|
|
752
|
-
ptsArray[9] =
|
|
753
|
-
ptsArray[10] =
|
|
754
|
-
ptsArray[11] =
|
|
749
|
+
ptsArray[0] = sliceDepth;
|
|
750
|
+
ptsArray[1] = spatialExt[2];
|
|
751
|
+
ptsArray[2] = spatialExt[4];
|
|
752
|
+
ptsArray[3] = sliceDepth;
|
|
753
|
+
ptsArray[4] = spatialExt[3];
|
|
754
|
+
ptsArray[5] = spatialExt[4];
|
|
755
|
+
ptsArray[6] = sliceDepth;
|
|
756
|
+
ptsArray[7] = spatialExt[2];
|
|
757
|
+
ptsArray[8] = spatialExt[5];
|
|
758
|
+
ptsArray[9] = sliceDepth;
|
|
759
|
+
ptsArray[10] = spatialExt[3];
|
|
760
|
+
ptsArray[11] = spatialExt[5];
|
|
755
761
|
} else if (ijkMode === SlicingMode.J) {
|
|
756
762
|
scalars = new basicScalars.constructor(dims[2] * dims[0] * numComp);
|
|
757
763
|
var _id = 0;
|
|
@@ -766,32 +772,32 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
766
772
|
}
|
|
767
773
|
|
|
768
774
|
dims[1] = dims[2];
|
|
769
|
-
ptsArray[0] =
|
|
770
|
-
ptsArray[1] =
|
|
771
|
-
ptsArray[2] =
|
|
772
|
-
ptsArray[3] =
|
|
773
|
-
ptsArray[4] =
|
|
774
|
-
ptsArray[5] =
|
|
775
|
-
ptsArray[6] =
|
|
776
|
-
ptsArray[7] =
|
|
777
|
-
ptsArray[8] =
|
|
778
|
-
ptsArray[9] =
|
|
779
|
-
ptsArray[10] =
|
|
780
|
-
ptsArray[11] =
|
|
775
|
+
ptsArray[0] = spatialExt[0];
|
|
776
|
+
ptsArray[1] = sliceDepth;
|
|
777
|
+
ptsArray[2] = spatialExt[4];
|
|
778
|
+
ptsArray[3] = spatialExt[1];
|
|
779
|
+
ptsArray[4] = sliceDepth;
|
|
780
|
+
ptsArray[5] = spatialExt[4];
|
|
781
|
+
ptsArray[6] = spatialExt[0];
|
|
782
|
+
ptsArray[7] = sliceDepth;
|
|
783
|
+
ptsArray[8] = spatialExt[5];
|
|
784
|
+
ptsArray[9] = spatialExt[1];
|
|
785
|
+
ptsArray[10] = sliceDepth;
|
|
786
|
+
ptsArray[11] = spatialExt[5];
|
|
781
787
|
} else if (ijkMode === SlicingMode.K || ijkMode === SlicingMode.NONE) {
|
|
782
788
|
scalars = basicScalars.subarray(sliceOffset * sliceSize, (sliceOffset + 1) * sliceSize);
|
|
783
|
-
ptsArray[0] =
|
|
784
|
-
ptsArray[1] =
|
|
785
|
-
ptsArray[2] =
|
|
786
|
-
ptsArray[3] =
|
|
787
|
-
ptsArray[4] =
|
|
788
|
-
ptsArray[5] =
|
|
789
|
-
ptsArray[6] =
|
|
790
|
-
ptsArray[7] =
|
|
791
|
-
ptsArray[8] =
|
|
792
|
-
ptsArray[9] =
|
|
793
|
-
ptsArray[10] =
|
|
794
|
-
ptsArray[11] =
|
|
789
|
+
ptsArray[0] = spatialExt[0];
|
|
790
|
+
ptsArray[1] = spatialExt[2];
|
|
791
|
+
ptsArray[2] = sliceDepth;
|
|
792
|
+
ptsArray[3] = spatialExt[1];
|
|
793
|
+
ptsArray[4] = spatialExt[2];
|
|
794
|
+
ptsArray[5] = sliceDepth;
|
|
795
|
+
ptsArray[6] = spatialExt[0];
|
|
796
|
+
ptsArray[7] = spatialExt[3];
|
|
797
|
+
ptsArray[8] = sliceDepth;
|
|
798
|
+
ptsArray[9] = spatialExt[1];
|
|
799
|
+
ptsArray[10] = spatialExt[3];
|
|
800
|
+
ptsArray[11] = sliceDepth;
|
|
795
801
|
} else {
|
|
796
802
|
vtkErrorMacro('Reformat slicing not yet supported.');
|
|
797
803
|
}
|
|
@@ -20,9 +20,9 @@ function vtkOpenGLImageSlice(publicAPI, model) {
|
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
model.
|
|
23
|
+
model._openGLRenderWindow = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderWindow');
|
|
24
24
|
model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
25
|
-
model.context = model.
|
|
25
|
+
model.context = model._openGLRenderWindow.getContext();
|
|
26
26
|
publicAPI.prepareNodes();
|
|
27
27
|
publicAPI.addMissingNode(model.renderable.getMapper());
|
|
28
28
|
publicAPI.removeUnusedNodes();
|
|
@@ -12,7 +12,7 @@ function vtkOpenGLPixelSpaceCallbackMapper(publicAPI, model) {
|
|
|
12
12
|
|
|
13
13
|
publicAPI.opaquePass = function (prepass, renderPass) {
|
|
14
14
|
model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
15
|
-
model.
|
|
15
|
+
model._openGLRenderWindow = model.openGLRenderer.getParent();
|
|
16
16
|
var aspectRatio = model.openGLRenderer.getAspectRatio();
|
|
17
17
|
var camera = model.openGLRenderer ? model.openGLRenderer.getRenderable().getActiveCamera() : null;
|
|
18
18
|
var tsize = model.openGLRenderer.getTiledSizeAndOrigin();
|
|
@@ -22,7 +22,9 @@ function vtkOpenGLPixelSpaceCallbackMapper(publicAPI, model) {
|
|
|
22
22
|
var zbt = renderPass.getZBufferTexture();
|
|
23
23
|
var width = Math.floor(zbt.getWidth());
|
|
24
24
|
var height = Math.floor(zbt.getHeight());
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
var gl = model._openGLRenderWindow.getContext();
|
|
27
|
+
|
|
26
28
|
zbt.bind(); // Here we need to use vtkFramebuffer to save current settings (bindings/buffers)
|
|
27
29
|
|
|
28
30
|
var fb = renderPass.getFramebuffer();
|
|
@@ -49,7 +49,7 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
49
49
|
model.currentRenderPass = null;
|
|
50
50
|
model.openGLActor = publicAPI.getFirstAncestorOfType('vtkOpenGLActor');
|
|
51
51
|
model.openGLRenderer = model.openGLActor.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
52
|
-
model.
|
|
52
|
+
model._openGLRenderWindow = model.openGLRenderer.getParent();
|
|
53
53
|
model.openGLCamera = model.openGLRenderer.getViewNodeFor(model.openGLRenderer.getRenderable().getActiveCamera());
|
|
54
54
|
}
|
|
55
55
|
}; // Renders myself
|
|
@@ -78,13 +78,13 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
publicAPI.render = function () {
|
|
81
|
-
var ctx = model.
|
|
81
|
+
var ctx = model._openGLRenderWindow.getContext();
|
|
82
82
|
|
|
83
83
|
if (model.context !== ctx) {
|
|
84
84
|
model.context = ctx;
|
|
85
85
|
|
|
86
86
|
for (var i = primTypes.Start; i < primTypes.End; i++) {
|
|
87
|
-
model.primitives[i].setOpenGLRenderWindow(model.
|
|
87
|
+
model.primitives[i].setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -647,7 +647,8 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
647
647
|
};
|
|
648
648
|
publicAPI.buildShaders(shaders, ren, actor); // compile and bind the program if needed
|
|
649
649
|
|
|
650
|
-
var newShader = model.
|
|
650
|
+
var newShader = model._openGLRenderWindow.getShaderCache().readyShaderProgramArray(shaders.Vertex, shaders.Fragment, shaders.Geometry); // if the shader changed reinitialize the VAO
|
|
651
|
+
|
|
651
652
|
|
|
652
653
|
if (newShader !== cellBO.getProgram()) {
|
|
653
654
|
cellBO.setProgram(newShader); // reset the VAO as the shader has changed
|
|
@@ -657,7 +658,7 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
657
658
|
|
|
658
659
|
cellBO.getShaderSourceTime().modified();
|
|
659
660
|
} else {
|
|
660
|
-
model.
|
|
661
|
+
model._openGLRenderWindow.getShaderCache().readyShaderProgram(cellBO.getProgram());
|
|
661
662
|
}
|
|
662
663
|
|
|
663
664
|
cellBO.getVAO().bind();
|
|
@@ -1075,12 +1076,14 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
1075
1076
|
var frontfaceCulling = actor.getProperty().getFrontfaceCulling();
|
|
1076
1077
|
|
|
1077
1078
|
if (!backfaceCulling && !frontfaceCulling) {
|
|
1078
|
-
model.
|
|
1079
|
+
model._openGLRenderWindow.disableCullFace();
|
|
1079
1080
|
} else if (frontfaceCulling) {
|
|
1080
|
-
model.
|
|
1081
|
+
model._openGLRenderWindow.enableCullFace();
|
|
1082
|
+
|
|
1081
1083
|
gl.cullFace(gl.FRONT);
|
|
1082
1084
|
} else {
|
|
1083
|
-
model.
|
|
1085
|
+
model._openGLRenderWindow.enableCullFace();
|
|
1086
|
+
|
|
1084
1087
|
gl.cullFace(gl.BACK);
|
|
1085
1088
|
}
|
|
1086
1089
|
|
|
@@ -1170,7 +1173,7 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
1170
1173
|
tex.setMagnificationFilter(Filter.NEAREST);
|
|
1171
1174
|
tex.setWrapS(Wrap.CLAMP_TO_EDGE);
|
|
1172
1175
|
tex.setWrapT(Wrap.CLAMP_TO_EDGE);
|
|
1173
|
-
tex.setOpenGLRenderWindow(model.
|
|
1176
|
+
tex.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
1174
1177
|
var input = model.renderable.getColorTextureMap();
|
|
1175
1178
|
var ext = input.getExtent();
|
|
1176
1179
|
var inScalars = input.getPointData().getScalars();
|
|
@@ -1224,8 +1227,8 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
1224
1227
|
});
|
|
1225
1228
|
} else {
|
|
1226
1229
|
// otherwise free them
|
|
1227
|
-
model.primitives[primTypes.TrisEdges].releaseGraphicsResources(model.
|
|
1228
|
-
model.primitives[primTypes.TriStripsEdges].releaseGraphicsResources(model.
|
|
1230
|
+
model.primitives[primTypes.TrisEdges].releaseGraphicsResources(model._openGLRenderWindow);
|
|
1231
|
+
model.primitives[primTypes.TriStripsEdges].releaseGraphicsResources(model._openGLRenderWindow);
|
|
1229
1232
|
}
|
|
1230
1233
|
|
|
1231
1234
|
model.VBOBuildTime.modified();
|