@kitware/vtk.js 23.0.0 → 23.2.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/Common/Core/CellArray.d.ts +2 -2
- package/Common/Core/DataArray.d.ts +2 -2
- package/Common/Core/Endian.d.ts +3 -1
- package/Common/Core/ImageHelper.d.ts +1 -1
- package/Common/Core/LookupTable.d.ts +2 -2
- 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 +2 -2
- 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 +2 -2
- package/Common/DataModel/DataSetAttributes/FieldData.d.ts +1 -1
- package/Common/DataModel/DataSetAttributes.d.ts +3 -3
- package/Common/DataModel/ImageData.d.ts +2 -2
- package/Common/DataModel/KochanekSpline1D.d.ts +1 -1
- package/Common/DataModel/Line.d.ts +2 -2
- package/Common/DataModel/PiecewiseFunction.d.ts +2 -2
- package/Common/DataModel/Plane.d.ts +2 -2
- package/Common/DataModel/PointSet.d.ts +3 -3
- package/Common/DataModel/PolyData.d.ts +3 -3
- 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 +2 -2
- 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 +5 -5
- 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/XMLImageDataReader.d.ts +1 -1
- package/IO/XML/XMLPolyDataReader.d.ts +1 -1
- package/IO/XML/XMLReader.d.ts +5 -5
- package/Interaction/Manipulators/MouseRangeManipulator.js +55 -1
- package/Interaction/Widgets/OrientationMarkerWidget.d.ts +12 -10
- package/Rendering/Core/AbstractMapper.d.ts +2 -2
- package/Rendering/Core/AbstractMapper3D.d.ts +2 -2
- package/Rendering/Core/AbstractPicker.d.ts +4 -4
- package/Rendering/Core/Actor.d.ts +4 -4
- package/Rendering/Core/Actor2D.d.ts +5 -5
- package/Rendering/Core/AnnotatedCubeActor.d.ts +1 -1
- package/Rendering/Core/AxesActor.d.ts +1 -1
- package/Rendering/Core/Camera.d.ts +2 -2
- package/Rendering/Core/CellPicker.d.ts +5 -5
- package/Rendering/Core/ColorTransferFunction.d.ts +1 -1
- package/Rendering/Core/Coordinate.d.ts +2 -2
- package/Rendering/Core/Follower.d.ts +2 -2
- package/Rendering/Core/Glyph3DMapper.d.ts +2 -2
- package/Rendering/Core/ImageMapper.d.ts +3 -3
- package/Rendering/Core/ImageProperty.d.ts +2 -2
- package/Rendering/Core/ImageSlice.d.ts +4 -4
- package/Rendering/Core/Light.d.ts +2 -2
- package/Rendering/Core/Mapper.d.ts +5 -5
- package/Rendering/Core/Mapper2D.d.ts +4 -3
- package/Rendering/Core/Picker.d.ts +5 -5
- package/Rendering/Core/PixelSpaceCallbackMapper.d.ts +2 -2
- package/Rendering/Core/PointPicker.d.ts +3 -3
- package/Rendering/Core/Prop.d.ts +5 -5
- package/Rendering/Core/Prop3D.d.ts +2 -2
- package/Rendering/Core/Property.d.ts +2 -2
- package/Rendering/Core/Property2D.d.ts +2 -2
- package/Rendering/Core/RenderWindow.d.ts +4 -4
- package/Rendering/Core/RenderWindowInteractor.d.ts +2 -2
- package/Rendering/Core/Renderer.d.ts +12 -11
- package/Rendering/Core/ScalarBarActor.d.ts +3 -3
- package/Rendering/Core/Skybox.d.ts +1 -1
- package/Rendering/Core/SphereMapper.d.ts +1 -1
- package/Rendering/Core/StickMapper.d.ts +1 -1
- package/Rendering/Core/Texture.d.ts +1 -1
- package/Rendering/Core/Viewport.d.ts +4 -4
- package/Rendering/Core/Volume.d.ts +4 -4
- package/Rendering/Core/VolumeMapper.d.ts +2 -2
- 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 +3 -3
- package/Rendering/Misc/RenderWindowWithControlBar.d.ts +2 -2
- package/Rendering/Misc/SynchronizableRenderWindow.d.ts +4 -3
- package/Rendering/Misc/TextureLODsDownloader.d.ts +4 -4
- package/Rendering/OpenGL/ForwardPass.js +7 -3
- package/Rendering/OpenGL/Framebuffer.js +68 -11
- package/Rendering/OpenGL/ImageMapper.js +23 -4
- package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +293 -0
- package/Rendering/OpenGL/PolyDataMapper.js +20 -2
- package/Rendering/OpenGL/RenderWindow.d.ts +18 -18
- package/Rendering/OpenGL/ShaderCache.js +10 -2
- package/Rendering/OpenGL/Texture.js +32 -16
- package/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl.js +1 -1
- package/Rendering/SceneGraph/RenderPass.d.ts +2 -2
- package/Rendering/SceneGraph/ViewNode.d.ts +2 -2
- package/Rendering/SceneGraph/ViewNodeFactory.d.ts +1 -1
- package/Rendering/WebGPU/HardwareSelectionPass.js +0 -1
- package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +1 -3
- package/Rendering/WebGPU/RenderEncoder.js +1 -4
- 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/ResliceCursorContextRepresentation.d.ts +1 -1
- package/Widgets/Representations/WidgetRepresentation.d.ts +1 -1
- package/interfaces.d.ts +4 -4
- package/macros.d.ts +1 -1
- package/package.json +1 -1
- package/types.d.ts +22 -1
- package/vtk.d.ts +7 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { vtkObject, vtkSubscription } from '
|
|
2
|
-
import vtkRenderer from '
|
|
3
|
-
import vtkRenderWindowInteractor from '
|
|
4
|
-
// import vtkOpenGLRenderWindow from '
|
|
1
|
+
import { vtkObject, vtkSubscription } from '../../interfaces';
|
|
2
|
+
import vtkRenderer from './Renderer';
|
|
3
|
+
import vtkRenderWindowInteractor from './RenderWindowInteractor';
|
|
4
|
+
// import vtkOpenGLRenderWindow from '../../OpenGL/RenderWindow';
|
|
5
5
|
|
|
6
6
|
export interface IRenderWindowInitialValues {
|
|
7
7
|
renderers?: vtkRenderer[],
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Bounds } from '
|
|
1
|
+
import { Bounds, Nullable } from '../../types';
|
|
2
2
|
|
|
3
|
-
import vtkCamera from '
|
|
4
|
-
import vtkLight from '
|
|
5
|
-
import vtkRenderWindow from '
|
|
6
|
-
import vtkProp3D from '
|
|
7
|
-
import vtkViewport, { IViewportInitialValues } from '
|
|
8
|
-
import vtkVolume from '
|
|
9
|
-
import vtkTexture from '
|
|
10
|
-
import vtkActor from '
|
|
3
|
+
import vtkCamera from './Camera';
|
|
4
|
+
import vtkLight from './Light';
|
|
5
|
+
import vtkRenderWindow from './RenderWindow';
|
|
6
|
+
import vtkProp3D from './Prop3D';
|
|
7
|
+
import vtkViewport, { IViewportInitialValues } from './Viewport';
|
|
8
|
+
import vtkVolume from './Volume';
|
|
9
|
+
import vtkTexture from './Texture';
|
|
10
|
+
import vtkActor from './Actor';
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
export interface IRendererInitialValues extends IViewportInitialValues {
|
|
@@ -128,6 +128,7 @@ export interface vtkRenderer extends vtkViewport {
|
|
|
128
128
|
*
|
|
129
129
|
*/
|
|
130
130
|
getClippingRangeExpansion(): number;
|
|
131
|
+
|
|
131
132
|
/**
|
|
132
133
|
*
|
|
133
134
|
* @default null
|
|
@@ -226,7 +227,7 @@ export interface vtkRenderer extends vtkViewport {
|
|
|
226
227
|
*
|
|
227
228
|
* @default null
|
|
228
229
|
*/
|
|
229
|
-
getRenderWindow(): vtkRenderWindow
|
|
230
|
+
getRenderWindow(): Nullable<vtkRenderWindow>;
|
|
230
231
|
|
|
231
232
|
/**
|
|
232
233
|
*
|
|
@@ -337,7 +338,7 @@ export interface vtkRenderer extends vtkViewport {
|
|
|
337
338
|
* Specify the camera to use for this renderer.
|
|
338
339
|
* @param {vtkCamera} camera The camera object to use.
|
|
339
340
|
*/
|
|
340
|
-
setActiveCamera(camera: vtkCamera
|
|
341
|
+
setActiveCamera(camera: vtkCamera): boolean;
|
|
341
342
|
|
|
342
343
|
/**
|
|
343
344
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import vtkScalarsToColors from '
|
|
2
|
-
import { Size, Vector2, Vector3 } from '
|
|
3
|
-
import vtkActor, { IActorInitialValues } from '
|
|
1
|
+
import vtkScalarsToColors from '../../Common/Core/ScalarsToColors';
|
|
2
|
+
import { Size, Vector2, Vector3 } from '../../types';
|
|
3
|
+
import vtkActor, { IActorInitialValues } from './Actor';
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
export interface ITextSizes {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
import { vtkObject } from '
|
|
3
|
-
import { RGBColor } from '
|
|
4
|
-
import vtkActor2D from '
|
|
5
|
-
import vtkProp from '
|
|
2
|
+
import { vtkObject } from '../../interfaces';
|
|
3
|
+
import { RGBColor } from '../../types';
|
|
4
|
+
import vtkActor2D from './Actor2D';
|
|
5
|
+
import vtkProp from './Prop';
|
|
6
6
|
|
|
7
7
|
export interface IViewportInitialValues {
|
|
8
8
|
background?: RGBColor;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Bounds } from '
|
|
2
|
-
import vtkProp3D, { IProp3DInitialValues } from '
|
|
3
|
-
import vtkVolumeMapper from '
|
|
4
|
-
import vtkVolumeProperty from '
|
|
1
|
+
import { Bounds } from '../../types';
|
|
2
|
+
import vtkProp3D, { IProp3DInitialValues } from './Prop3D';
|
|
3
|
+
import vtkVolumeMapper from './VolumeMapper';
|
|
4
|
+
import vtkVolumeProperty from './VolumeProperty';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Bounds, Range } from '
|
|
2
|
-
import vtkAbstractMapper, { IAbstractMapperInitialValues } from '
|
|
1
|
+
import { Bounds, Range } from '../../types';
|
|
2
|
+
import vtkAbstractMapper, { IAbstractMapperInitialValues } from './AbstractMapper';
|
|
3
3
|
|
|
4
4
|
export enum BlendMode {
|
|
5
5
|
COMPOSITE_BLEND,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { vtkObject } from '
|
|
2
|
-
import { RGBColor } from '
|
|
3
|
-
import vtkRenderer from '
|
|
4
|
-
import vtkRenderWindow from '
|
|
5
|
-
import vtkRenderWindowInteractor from '
|
|
6
|
-
|
|
7
|
-
// import vtkOpenGLRenderWindow from '
|
|
8
|
-
// import vtkWebGPURenderWindow from '
|
|
1
|
+
import { vtkObject } from '../../interfaces';
|
|
2
|
+
import { RGBColor } from '../../types';
|
|
3
|
+
import vtkRenderer from '../Core/Renderer';
|
|
4
|
+
import vtkRenderWindow from '../Core/RenderWindow';
|
|
5
|
+
import vtkRenderWindowInteractor from '../Core/RenderWindowInteractor';
|
|
6
|
+
|
|
7
|
+
// import vtkOpenGLRenderWindow from '../../OpenGL/RenderWindow';
|
|
8
|
+
// import vtkWebGPURenderWindow from '../../WebGPU/RenderWindow';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { vtkObject, vtkSubscription } from '
|
|
2
|
-
import { RGBColor } from '
|
|
3
|
-
import vtkRenderer from '
|
|
4
|
-
import vtkRenderWindow from '
|
|
5
|
-
import vtkRenderWindowInteractor from '
|
|
6
|
-
import vtkOpenGLRenderWindow from '
|
|
1
|
+
import { vtkObject, vtkSubscription } from '../../interfaces';
|
|
2
|
+
import { RGBColor } from '../../types';
|
|
3
|
+
import vtkRenderer from '../Core/Renderer';
|
|
4
|
+
import vtkRenderWindow from '../Core/RenderWindow';
|
|
5
|
+
import vtkRenderWindowInteractor from '../Core/RenderWindowInteractor';
|
|
6
|
+
import vtkOpenGLRenderWindow from '../OpenGL/RenderWindow';
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { vtkObject } from '
|
|
2
|
-
import vtkCanvasView from '
|
|
3
|
-
import vtkViewStream from '
|
|
1
|
+
import { vtkObject } from '../../interfaces';
|
|
2
|
+
import vtkCanvasView from './CanvasView';
|
|
3
|
+
import vtkViewStream from '../../IO/Core/ImageStream/ViewStream';
|
|
4
4
|
|
|
5
5
|
interface IRemoteViewInitialValues {
|
|
6
6
|
viewId?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import { Placement } from '
|
|
3
|
-
import vtkGenericRenderWindow, { IGenericRenderWindowInitialValues } from '
|
|
2
|
+
import { Placement } from '../../types';
|
|
3
|
+
import vtkGenericRenderWindow, { IGenericRenderWindowInitialValues } from './GenericRenderWindow';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Nullable } from '../../types';
|
|
2
|
+
import vtkRenderWindow, { IRenderWindowInitialValues } from '../Core/RenderWindow';
|
|
2
3
|
|
|
3
4
|
// Keeps state for client / server scene synchronization.
|
|
4
5
|
export interface ISynchronizerContext {
|
|
@@ -27,8 +28,8 @@ export interface ISynchronizerContext {
|
|
|
27
28
|
|
|
28
29
|
export interface ISynchronizableRenderWindowInitialValues extends IRenderWindowInitialValues {
|
|
29
30
|
synchronizerContextName?: string; // default: 'default':
|
|
30
|
-
synchronizerContext?: ISynchronizerContext
|
|
31
|
-
synchronizedViewId?: string
|
|
31
|
+
synchronizerContext?: Nullable<ISynchronizerContext>;
|
|
32
|
+
synchronizedViewId?: Nullable<string>;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
// Server-side view state.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { vtkObject } from '
|
|
2
|
-
import { CrossOrigin } from '
|
|
3
|
-
import vtkTexture from '
|
|
1
|
+
import { vtkObject } from '../../interfaces';
|
|
2
|
+
import { CrossOrigin, Nullable } from '../../types';
|
|
3
|
+
import vtkTexture from '../Core/Texture';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
@@ -27,7 +27,7 @@ export interface vtkTextureLODsDownloader extends vtkObject {
|
|
|
27
27
|
/**
|
|
28
28
|
* Get the crossorigin attribute
|
|
29
29
|
*/
|
|
30
|
-
getCrossOrigin(): CrossOrigin
|
|
30
|
+
getCrossOrigin(): Nullable<CrossOrigin>;
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Get the list of files to download
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import macro from '../../macros.js';
|
|
2
2
|
import vtkOpenGLFramebuffer from './Framebuffer.js';
|
|
3
3
|
import vtkRenderPass from '../SceneGraph/RenderPass.js';
|
|
4
|
+
import vtkOpenGLOrderIndependentTranslucentPass from './OrderIndependentTranslucentPass.js';
|
|
4
5
|
|
|
5
6
|
function vtkForwardPass(publicAPI, model) {
|
|
6
7
|
// Set our className
|
|
@@ -72,8 +73,11 @@ function vtkForwardPass(publicAPI, model) {
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
if (model.translucentActorCount > 0) {
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
if (!model.translucentPass) {
|
|
77
|
+
model.translucentPass = vtkOpenGLOrderIndependentTranslucentPass.newInstance();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
model.translucentPass.traverse(viewNode, renNode, publicAPI);
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
if (model.volumeCount > 0) {
|
|
@@ -136,7 +140,7 @@ function extend(publicAPI, model) {
|
|
|
136
140
|
Object.assign(model, DEFAULT_VALUES, initialValues); // Build VTK API
|
|
137
141
|
|
|
138
142
|
vtkRenderPass.extend(publicAPI, model, initialValues);
|
|
139
|
-
macro.get(publicAPI, model, ['framebuffer']); // Object methods
|
|
143
|
+
macro.get(publicAPI, model, ['framebuffer', 'opaqueActorCount', 'translucentActorCount', 'volumeCount']); // Object methods
|
|
140
144
|
|
|
141
145
|
vtkForwardPass(publicAPI, model);
|
|
142
146
|
} // ----------------------------------------------------------------------------
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { newInstance as newInstance$1, obj,
|
|
1
|
+
import { newInstance as newInstance$1, obj, vtkErrorMacro, getArray } from '../../macros.js';
|
|
2
2
|
import vtkOpenGLTexture from './Texture.js';
|
|
3
3
|
import { VtkDataTypes } from '../../Common/Core/DataArray/Constants.js';
|
|
4
4
|
import { Filter } from './Texture/Constants.js';
|
|
@@ -23,6 +23,11 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
publicAPI.saveCurrentBindings = function (modeIn) {
|
|
26
|
+
if (!model.context) {
|
|
27
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling saveCurrentBindings');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
26
31
|
var gl = model.context;
|
|
27
32
|
model.previousDrawBinding = gl.getParameter(model.context.FRAMEBUFFER_BINDING);
|
|
28
33
|
model.previousActiveFramebuffer = model.openGLRenderWindow.getActiveFramebuffer();
|
|
@@ -38,6 +43,11 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
38
43
|
};
|
|
39
44
|
|
|
40
45
|
publicAPI.restorePreviousBindings = function (modeIn) {
|
|
46
|
+
if (!model.context) {
|
|
47
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling restorePreviousBindings');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
41
51
|
var gl = model.context;
|
|
42
52
|
gl.bindFramebuffer(gl.FRAMEBUFFER, model.previousDrawBinding);
|
|
43
53
|
model.openGLRenderWindow.setActiveFramebuffer(model.previousActiveFramebuffer);
|
|
@@ -47,16 +57,28 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
47
57
|
};
|
|
48
58
|
|
|
49
59
|
publicAPI.bind = function () {
|
|
50
|
-
|
|
60
|
+
var modeArg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
61
|
+
var mode = modeArg;
|
|
62
|
+
|
|
63
|
+
if (mode === null) {
|
|
64
|
+
mode = model.context.FRAMEBUFFER;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
model.context.bindFramebuffer(mode, model.glFramebuffer);
|
|
51
68
|
|
|
52
|
-
|
|
53
|
-
model.
|
|
69
|
+
for (var i = 0; i < model.colorBuffers.length; i++) {
|
|
70
|
+
model.colorBuffers[i].bind();
|
|
54
71
|
}
|
|
55
72
|
|
|
56
73
|
model.openGLRenderWindow.setActiveFramebuffer(publicAPI);
|
|
57
74
|
};
|
|
58
75
|
|
|
59
76
|
publicAPI.create = function (width, height) {
|
|
77
|
+
if (!model.context) {
|
|
78
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling create');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
60
82
|
model.glFramebuffer = model.context.createFramebuffer();
|
|
61
83
|
model.glFramebuffer.width = width;
|
|
62
84
|
model.glFramebuffer.height = height;
|
|
@@ -65,6 +87,12 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
65
87
|
publicAPI.setColorBuffer = function (texture) {
|
|
66
88
|
var attachment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
67
89
|
var gl = model.context;
|
|
90
|
+
|
|
91
|
+
if (!gl) {
|
|
92
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling setColorBuffer');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
68
96
|
var glAttachment = gl.COLOR_ATTACHMENT0;
|
|
69
97
|
|
|
70
98
|
if (attachment > 0) {
|
|
@@ -76,13 +104,19 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
76
104
|
}
|
|
77
105
|
}
|
|
78
106
|
|
|
79
|
-
model.
|
|
107
|
+
model.colorBuffers[attachment] = texture;
|
|
80
108
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment, gl.TEXTURE_2D, texture.getHandle(), 0);
|
|
81
109
|
};
|
|
82
110
|
|
|
83
111
|
publicAPI.removeColorBuffer = function () {
|
|
84
112
|
var attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
85
113
|
var gl = model.context;
|
|
114
|
+
|
|
115
|
+
if (!gl) {
|
|
116
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling removeColorBuffer');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
86
120
|
var glAttachment = gl.COLOR_ATTACHMENT0;
|
|
87
121
|
|
|
88
122
|
if (attachment > 0) {
|
|
@@ -95,9 +129,15 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
95
129
|
}
|
|
96
130
|
|
|
97
131
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment, gl.TEXTURE_2D, null, 0);
|
|
132
|
+
model.colorBuffers = model.colorBuffers.splice(attachment, 1);
|
|
98
133
|
};
|
|
99
134
|
|
|
100
135
|
publicAPI.setDepthBuffer = function (texture) {
|
|
136
|
+
if (!model.context) {
|
|
137
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling setDepthBuffer');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
101
141
|
if (model.openGLRenderWindow.getWebgl2()) {
|
|
102
142
|
var gl = model.context;
|
|
103
143
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, texture.getHandle(), 0);
|
|
@@ -107,6 +147,11 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
107
147
|
};
|
|
108
148
|
|
|
109
149
|
publicAPI.removeDepthBuffer = function () {
|
|
150
|
+
if (!model.context) {
|
|
151
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling removeDepthBuffer');
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
110
155
|
if (model.openGLRenderWindow.getWebgl2()) {
|
|
111
156
|
var gl = model.context;
|
|
112
157
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, null, 0);
|
|
@@ -137,10 +182,6 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
137
182
|
if (model.glFramebuffer) {
|
|
138
183
|
model.context.deleteFramebuffer(model.glFramebuffer);
|
|
139
184
|
}
|
|
140
|
-
|
|
141
|
-
if (model.colorTexture) {
|
|
142
|
-
model.colorTexture.releaseGraphicsResources();
|
|
143
|
-
}
|
|
144
185
|
};
|
|
145
186
|
|
|
146
187
|
publicAPI.getSize = function () {
|
|
@@ -155,6 +196,11 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
155
196
|
};
|
|
156
197
|
|
|
157
198
|
publicAPI.populateFramebuffer = function () {
|
|
199
|
+
if (!model.context) {
|
|
200
|
+
vtkErrorMacro('you must set the OpenGLRenderWindow before calling populateFrameBuffer');
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
|
|
158
204
|
publicAPI.bind();
|
|
159
205
|
var gl = model.context;
|
|
160
206
|
var texture = vtkOpenGLTexture.newInstance();
|
|
@@ -169,6 +215,11 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
169
215
|
gl.bindRenderbuffer(gl.RENDERBUFFER, model.depthTexture);
|
|
170
216
|
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, model.glFramebuffer.width, model.glFramebuffer.height);
|
|
171
217
|
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, model.depthTexture);
|
|
218
|
+
}; // For backwards compatibility. Use getColorBuffers()[0] going forward.
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
publicAPI.getColorTexture = function () {
|
|
222
|
+
return model.colorBuffers[0];
|
|
172
223
|
};
|
|
173
224
|
} // ----------------------------------------------------------------------------
|
|
174
225
|
// Object factory
|
|
@@ -178,7 +229,7 @@ function vtkFramebuffer(publicAPI, model) {
|
|
|
178
229
|
var DEFAULT_VALUES = {
|
|
179
230
|
openGLRenderWindow: null,
|
|
180
231
|
glFramebuffer: null,
|
|
181
|
-
|
|
232
|
+
colorBuffers: null,
|
|
182
233
|
depthTexture: null,
|
|
183
234
|
previousDrawBinding: 0,
|
|
184
235
|
previousReadBinding: 0,
|
|
@@ -192,7 +243,13 @@ function extend(publicAPI, model) {
|
|
|
192
243
|
Object.assign(model, DEFAULT_VALUES, initialValues); // Build VTK API
|
|
193
244
|
|
|
194
245
|
obj(publicAPI, model);
|
|
195
|
-
|
|
246
|
+
|
|
247
|
+
if (model.colorBuffers) {
|
|
248
|
+
vtkErrorMacro('you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead.');
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
model.colorBuffers = [];
|
|
252
|
+
getArray(publicAPI, model, ['colorBuffers']); // For more macro methods, see "Sources/macros.js"
|
|
196
253
|
// Object specific methods
|
|
197
254
|
|
|
198
255
|
vtkFramebuffer(publicAPI, model);
|
|
@@ -41,6 +41,7 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
41
41
|
|
|
42
42
|
publicAPI.buildPass = function (prepass) {
|
|
43
43
|
if (prepass) {
|
|
44
|
+
model.currentRenderPass = null;
|
|
44
45
|
model.openGLImageSlice = publicAPI.getFirstAncestorOfType('vtkOpenGLImageSlice');
|
|
45
46
|
model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
|
|
46
47
|
model.openGLRenderWindow = model.openGLRenderer.getParent();
|
|
@@ -58,8 +59,9 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
58
59
|
}
|
|
59
60
|
};
|
|
60
61
|
|
|
61
|
-
publicAPI.translucentPass = function (prepass) {
|
|
62
|
+
publicAPI.translucentPass = function (prepass, renderPass) {
|
|
62
63
|
if (prepass) {
|
|
64
|
+
model.currentRenderPass = renderPass;
|
|
63
65
|
publicAPI.render();
|
|
64
66
|
}
|
|
65
67
|
};
|
|
@@ -95,7 +97,12 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
95
97
|
};
|
|
96
98
|
|
|
97
99
|
publicAPI.buildShaders = function (shaders, ren, actor) {
|
|
98
|
-
publicAPI.getShaderTemplate(shaders, ren, actor);
|
|
100
|
+
publicAPI.getShaderTemplate(shaders, ren, actor); // apply any renderPassReplacements
|
|
101
|
+
|
|
102
|
+
if (model.lastRenderPassShaderReplacement) {
|
|
103
|
+
model.lastRenderPassShaderReplacement(shaders);
|
|
104
|
+
}
|
|
105
|
+
|
|
99
106
|
publicAPI.replaceShaderValues(shaders, ren, actor);
|
|
100
107
|
};
|
|
101
108
|
|
|
@@ -240,9 +247,21 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
240
247
|
// input modified
|
|
241
248
|
// light complexity changed
|
|
242
249
|
var tNumComp = model.openGLTexture.getComponents();
|
|
243
|
-
var iComp = actor.getProperty().getIndependentComponents();
|
|
250
|
+
var iComp = actor.getProperty().getIndependentComponents(); // has the render pass shader replacement changed? Two options
|
|
251
|
+
|
|
252
|
+
var needRebuild = false;
|
|
253
|
+
|
|
254
|
+
if (!model.currentRenderPass && model.lastRenderPassShaderReplacement) {
|
|
255
|
+
needRebuild = true;
|
|
256
|
+
model.lastRenderPassShaderReplacement = null;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
if (model.currentRenderPass && model.currentRenderPass.getShaderReplacement() !== model.lastRenderPassShaderReplacement) {
|
|
260
|
+
model.lastRenderPassShaderReplacement = model.currentRenderPass.getShaderReplacement();
|
|
261
|
+
needRebuild = true;
|
|
262
|
+
}
|
|
244
263
|
|
|
245
|
-
if (model.lastHaveSeenDepthRequest !== model.haveSeenDepthRequest || cellBO.getProgram() === 0 || model.lastTextureComponents !== tNumComp || model.lastIndependentComponents !== iComp) {
|
|
264
|
+
if (needRebuild || model.lastHaveSeenDepthRequest !== model.haveSeenDepthRequest || cellBO.getProgram() === 0 || model.lastTextureComponents !== tNumComp || model.lastIndependentComponents !== iComp) {
|
|
246
265
|
model.lastHaveSeenDepthRequest = model.haveSeenDepthRequest;
|
|
247
266
|
model.lastTextureComponents = tNumComp;
|
|
248
267
|
model.lastIndependentComponents = iComp;
|