@kitware/vtk.js 28.10.2 → 28.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/Common/Core/Base64.js +53 -82
  2. package/Common/Core/CellArray.js +52 -60
  3. package/Common/Core/ClassHierarchy.js +8 -36
  4. package/Common/Core/DataArray/Constants.js +6 -6
  5. package/Common/Core/DataArray.js +193 -277
  6. package/Common/Core/Endian.js +14 -17
  7. package/Common/Core/HalfFloat.js +17 -34
  8. package/Common/Core/ImageHelper.js +17 -25
  9. package/Common/Core/LookupTable.js +131 -144
  10. package/Common/Core/Math/Constants.js +8 -8
  11. package/Common/Core/Math/index.js +754 -942
  12. package/Common/Core/Math.js +2 -4
  13. package/Common/Core/MatrixBuilder.js +99 -151
  14. package/Common/Core/Points.js +43 -43
  15. package/Common/Core/PriorityQueue.js +30 -28
  16. package/Common/Core/ProgressHandler.js +31 -32
  17. package/Common/Core/ScalarsToColors/Constants.js +4 -4
  18. package/Common/Core/ScalarsToColors.js +196 -253
  19. package/Common/Core/StringArray.js +48 -73
  20. package/Common/Core/URLExtract.js +10 -29
  21. package/Common/Core/VariantArray.js +48 -73
  22. package/Common/Core.js +11 -11
  23. package/Common/DataModel/AbstractPointLocator.js +19 -17
  24. package/Common/DataModel/BoundingBox.js +322 -490
  25. package/Common/DataModel/Box.js +46 -63
  26. package/Common/DataModel/CardinalSpline1D.js +92 -102
  27. package/Common/DataModel/Cell.js +41 -61
  28. package/Common/DataModel/CellLinks.js +91 -127
  29. package/Common/DataModel/CellTypes/Constants.js +7 -6
  30. package/Common/DataModel/CellTypes.js +55 -74
  31. package/Common/DataModel/Collection.js +45 -61
  32. package/Common/DataModel/Cone.js +28 -20
  33. package/Common/DataModel/Cylinder.js +41 -35
  34. package/Common/DataModel/DataSet/Constants.js +11 -5
  35. package/Common/DataModel/DataSet.js +37 -25
  36. package/Common/DataModel/DataSetAttributes/Constants.js +18 -18
  37. package/Common/DataModel/DataSetAttributes/FieldData.js +103 -194
  38. package/Common/DataModel/DataSetAttributes.js +96 -138
  39. package/Common/DataModel/EdgeLocator.js +45 -70
  40. package/Common/DataModel/ITKHelper.js +67 -137
  41. package/Common/DataModel/ImageData.js +115 -172
  42. package/Common/DataModel/ImplicitBoolean/Constants.js +2 -2
  43. package/Common/DataModel/ImplicitBoolean.js +66 -96
  44. package/Common/DataModel/IncrementalOctreeNode.js +201 -231
  45. package/Common/DataModel/IncrementalOctreePointLocator.js +160 -198
  46. package/Common/DataModel/KochanekSpline1D.js +78 -81
  47. package/Common/DataModel/Line/Constants.js +2 -2
  48. package/Common/DataModel/Line.js +82 -105
  49. package/Common/DataModel/Locator.js +17 -10
  50. package/Common/DataModel/Molecule.js +26 -17
  51. package/Common/DataModel/PiecewiseFunction.js +218 -239
  52. package/Common/DataModel/Plane.js +90 -113
  53. package/Common/DataModel/PointSet.js +30 -26
  54. package/Common/DataModel/PolyData/Constants.js +2 -2
  55. package/Common/DataModel/PolyData.js +95 -120
  56. package/Common/DataModel/PolyLine.js +44 -61
  57. package/Common/DataModel/Polygon/Constants.js +4 -4
  58. package/Common/DataModel/Polygon.js +128 -169
  59. package/Common/DataModel/Quad/Constants.js +2 -2
  60. package/Common/DataModel/Quad.js +61 -100
  61. package/Common/DataModel/SelectionNode/Constants.js +5 -4
  62. package/Common/DataModel/SelectionNode.js +25 -21
  63. package/Common/DataModel/Sphere.js +40 -35
  64. package/Common/DataModel/Spline1D/Constants.js +3 -2
  65. package/Common/DataModel/Spline1D.js +34 -18
  66. package/Common/DataModel/Spline3D/Constants.js +2 -2
  67. package/Common/DataModel/Spline3D.js +46 -41
  68. package/Common/DataModel/StructuredData/Constants.js +2 -2
  69. package/Common/DataModel/StructuredData.js +9 -20
  70. package/Common/DataModel/Triangle.js +207 -250
  71. package/Common/DataModel.js +19 -19
  72. package/Common/System/MobileVR.js +56 -61
  73. package/Common/System/TimerLog.js +1 -1
  74. package/Common/System.js +2 -2
  75. package/Common/Transform/LandmarkTransform/Constants.js +2 -2
  76. package/Common/Transform/LandmarkTransform.js +133 -117
  77. package/Common/Transform/Transform.js +42 -57
  78. package/Common/Transform.js +2 -2
  79. package/Common/index.js +4 -4
  80. package/Filters/Core/Cutter.js +134 -146
  81. package/Filters/Core/PolyDataNormals.js +44 -50
  82. package/Filters/Core.js +2 -2
  83. package/Filters/Cornerstone/ImageDataToCornerstoneImage.js +45 -33
  84. package/Filters/Cornerstone.js +1 -1
  85. package/Filters/General/AppendPolyData.js +84 -100
  86. package/Filters/General/Calculator.js +95 -163
  87. package/Filters/General/ClipClosedSurface/Constants.js +2 -2
  88. package/Filters/General/ClipClosedSurface.js +341 -416
  89. package/Filters/General/ClosedPolyLineToSurfaceFilter.js +141 -156
  90. package/Filters/General/ContourTriangulator/Constants.js +2 -2
  91. package/Filters/General/ContourTriangulator/helper.js +684 -812
  92. package/Filters/General/ContourTriangulator.js +92 -89
  93. package/Filters/General/ImageCropFilter.js +77 -78
  94. package/Filters/General/ImageDataOutlineFilter.js +42 -36
  95. package/Filters/General/ImageMarchingCubes/caseTable.js +9 -521
  96. package/Filters/General/ImageMarchingCubes.js +99 -112
  97. package/Filters/General/ImageMarchingSquares/caseTable.js +9 -41
  98. package/Filters/General/ImageMarchingSquares.js +93 -118
  99. package/Filters/General/ImageOutlineFilter.js +53 -54
  100. package/Filters/General/ImageSliceFilter.js +39 -30
  101. package/Filters/General/ImageStreamline.js +107 -124
  102. package/Filters/General/LineFilter.js +26 -15
  103. package/Filters/General/MoleculeToRepresentation.js +136 -149
  104. package/Filters/General/OBBTree/OBBNode.js +36 -34
  105. package/Filters/General/OBBTree/helper.js +19 -24
  106. package/Filters/General/OBBTree.js +396 -488
  107. package/Filters/General/OutlineFilter.js +52 -34
  108. package/Filters/General/PaintFilter/PaintFilter.worker.js +93 -130
  109. package/Filters/General/PaintFilter.js +150 -162
  110. package/Filters/General/ScalarToRGBA.js +38 -33
  111. package/Filters/General/TriangleFilter.js +65 -62
  112. package/Filters/General/TubeFilter/Constants.js +4 -4
  113. package/Filters/General/TubeFilter.js +376 -496
  114. package/Filters/General/WarpScalar.js +58 -60
  115. package/Filters/General/WindowedSincPolyDataFilter.js +258 -330
  116. package/Filters/General.js +21 -21
  117. package/Filters/Sources/Arrow2DSource/Constants.js +2 -2
  118. package/Filters/Sources/Arrow2DSource.js +56 -56
  119. package/Filters/Sources/ArrowSource.js +39 -29
  120. package/Filters/Sources/CircleSource.js +43 -43
  121. package/Filters/Sources/ConcentricCylinderSource.js +151 -174
  122. package/Filters/Sources/ConeSource.js +51 -42
  123. package/Filters/Sources/CubeSource.js +75 -96
  124. package/Filters/Sources/Cursor3D.js +94 -109
  125. package/Filters/Sources/CylinderSource.js +90 -90
  126. package/Filters/Sources/ImageGridSource.js +43 -43
  127. package/Filters/Sources/LineSource.js +49 -39
  128. package/Filters/Sources/PlaneSource.js +97 -104
  129. package/Filters/Sources/PointSource.js +46 -37
  130. package/Filters/Sources/RTAnalyticSource.js +50 -48
  131. package/Filters/Sources/SLICSource.js +63 -73
  132. package/Filters/Sources/SphereSource.js +88 -78
  133. package/Filters/Sources/ViewFinderSource.js +26 -23
  134. package/Filters/Sources.js +14 -14
  135. package/Filters/Texture/TextureMapToPlane.js +95 -97
  136. package/Filters/Texture/TextureMapToSphere.js +46 -54
  137. package/Filters/Texture.js +2 -2
  138. package/Filters/index.js +5 -5
  139. package/IO/Core/BinaryHelper.js +12 -18
  140. package/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js +43 -59
  141. package/IO/Core/DataAccessHelper/HttpDataAccessHelper.js +76 -113
  142. package/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js +62 -112
  143. package/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js +76 -113
  144. package/IO/Core/DataAccessHelper.js +6 -6
  145. package/IO/Core/HttpDataSetReader.js +136 -139
  146. package/IO/Core/HttpDataSetSeriesReader.js +64 -75
  147. package/IO/Core/HttpSceneLoader.js +130 -179
  148. package/IO/Core/ImageStream/DefaultProtocol.js +29 -43
  149. package/IO/Core/ImageStream/ViewStream.js +100 -103
  150. package/IO/Core/ImageStream.js +62 -54
  151. package/IO/Core/ResourceLoader.js +10 -9
  152. package/IO/Core/Serializer/ArraySerializer.js +40 -40
  153. package/IO/Core/Serializer/FieldDataSerializer.js +18 -28
  154. package/IO/Core/Serializer/ImageDataSerializer.js +22 -23
  155. package/IO/Core/Serializer/PolyDataSerializer.js +17 -21
  156. package/IO/Core/Serializer.js +6 -13
  157. package/IO/Core/WSLinkClient.js +90 -76
  158. package/IO/Core/ZipMultiDataSetReader.js +46 -44
  159. package/IO/Core/ZipMultiDataSetWriter.js +43 -34
  160. package/IO/Core.js +7 -7
  161. package/IO/Geometry/DracoReader.js +118 -121
  162. package/IO/Geometry/PLYReader.js +163 -223
  163. package/IO/Geometry/PLYWriter/Constants.js +5 -5
  164. package/IO/Geometry/PLYWriter.js +139 -154
  165. package/IO/Geometry/STLReader.js +123 -146
  166. package/IO/Geometry/STLWriter/Constants.js +2 -2
  167. package/IO/Geometry/STLWriter.js +83 -82
  168. package/IO/Geometry.js +5 -5
  169. package/IO/Legacy/LegacyAsciiParser.js +78 -139
  170. package/IO/Legacy/PolyDataReader.js +48 -36
  171. package/IO/Legacy.js +2 -2
  172. package/IO/Misc/ElevationReader.js +67 -60
  173. package/IO/Misc/HttpDataSetLODsLoader.js +41 -38
  174. package/IO/Misc/ITKImageReader.js +58 -45
  175. package/IO/Misc/ITKPolyDataReader.js +50 -38
  176. package/IO/Misc/JSONNucleoReader.js +49 -42
  177. package/IO/Misc/JSONReader.js +38 -33
  178. package/IO/Misc/MTLReader.js +74 -119
  179. package/IO/Misc/OBJReader.js +153 -206
  180. package/IO/Misc/PDBReader.js +70 -68
  181. package/IO/Misc/SkyboxReader.js +77 -82
  182. package/IO/Misc.js +9 -9
  183. package/IO/XML/XMLImageDataReader.js +36 -38
  184. package/IO/XML/XMLImageDataWriter.js +28 -21
  185. package/IO/XML/XMLPolyDataReader.js +49 -46
  186. package/IO/XML/XMLPolyDataWriter.js +43 -42
  187. package/IO/XML/XMLReader.js +262 -304
  188. package/IO/XML/XMLWriter/Constants.js +3 -3
  189. package/IO/XML/XMLWriter.js +70 -84
  190. package/IO/XML.js +6 -6
  191. package/IO/index.js +5 -5
  192. package/Imaging/Core/AbstractImageInterpolator/Constants.js +4 -4
  193. package/Imaging/Core/AbstractImageInterpolator/InterpolationInfo.js +30 -27
  194. package/Imaging/Core/AbstractImageInterpolator.js +74 -87
  195. package/Imaging/Core/ImageInterpolator.js +201 -252
  196. package/Imaging/Core/ImagePointDataIterator.js +96 -122
  197. package/Imaging/Core/ImageReslice/Constants.js +2 -2
  198. package/Imaging/Core/ImageReslice.js +327 -464
  199. package/Imaging/Core.js +4 -4
  200. package/Imaging/Hybrid/SampleFunction.js +58 -51
  201. package/Imaging/Hybrid.js +1 -1
  202. package/Imaging/index.js +2 -2
  203. package/Interaction/Animations/TimeStepBasedAnimationHandler.js +39 -54
  204. package/Interaction/Manipulators/CompositeCameraManipulator.js +22 -13
  205. package/Interaction/Manipulators/CompositeGestureManipulator.js +31 -43
  206. package/Interaction/Manipulators/CompositeKeyboardManipulator.js +15 -11
  207. package/Interaction/Manipulators/CompositeMouseManipulator.js +27 -33
  208. package/Interaction/Manipulators/CompositeVRManipulator.js +22 -15
  209. package/Interaction/Manipulators/GestureCameraManipulator.js +54 -36
  210. package/Interaction/Manipulators/KeyboardCameraManipulator.js +95 -97
  211. package/Interaction/Manipulators/MouseBoxSelectorManipulator.js +70 -89
  212. package/Interaction/Manipulators/MouseCameraAxisRotateManipulator.js +67 -54
  213. package/Interaction/Manipulators/MouseCameraSliceManipulator.js +40 -38
  214. package/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator.js +83 -68
  215. package/Interaction/Manipulators/MouseCameraTrackballMultiRotateManipulator.js +32 -28
  216. package/Interaction/Manipulators/MouseCameraTrackballPanManipulator.js +47 -40
  217. package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +55 -43
  218. package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +56 -46
  219. package/Interaction/Manipulators/MouseCameraTrackballZoomManipulator.js +41 -46
  220. package/Interaction/Manipulators/MouseCameraTrackballZoomToMouseManipulator.js +29 -27
  221. package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +123 -146
  222. package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +144 -166
  223. package/Interaction/Manipulators/MouseRangeManipulator.js +127 -132
  224. package/Interaction/Manipulators/VRButtonPanManipulator.js +33 -23
  225. package/Interaction/Manipulators.js +21 -21
  226. package/Interaction/Misc/DeviceOrientationToCamera.js +25 -47
  227. package/Interaction/Misc.js +1 -1
  228. package/Interaction/Style/InteractorStyleImage.js +101 -121
  229. package/Interaction/Style/InteractorStyleMPRSlice.js +111 -128
  230. package/Interaction/Style/InteractorStyleManipulator/Presets.js +9 -17
  231. package/Interaction/Style/InteractorStyleManipulator.js +254 -329
  232. package/Interaction/Style/InteractorStyleRemoteMouse.js +195 -180
  233. package/Interaction/Style/InteractorStyleTrackballCamera.js +154 -157
  234. package/Interaction/Style/InteractorStyleUnicam.js +30 -38
  235. package/Interaction/Style.js +5 -5
  236. package/Interaction/UI/CornerAnnotation/CornerAnnotation.module.css.js +1 -1
  237. package/Interaction/UI/CornerAnnotation.js +65 -48
  238. package/Interaction/UI/FPSMonitor.js +104 -105
  239. package/Interaction/UI/Icons.js +1 -1
  240. package/Interaction/UI/Slider/Constants.js +2 -2
  241. package/Interaction/UI/Slider.js +78 -95
  242. package/Interaction/UI/VolumeController.js +104 -97
  243. package/Interaction/UI.js +5 -5
  244. package/Interaction/Widgets/OrientationMarkerWidget/Constants.js +2 -2
  245. package/Interaction/Widgets/OrientationMarkerWidget.js +90 -135
  246. package/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
  247. package/Interaction/Widgets/PiecewiseGaussianWidget.js +381 -498
  248. package/Interaction/Widgets.js +2 -2
  249. package/Interaction/index.js +5 -5
  250. package/Proxy/Animation/AbstractAnimationProxy.js +22 -15
  251. package/Proxy/Animation/AnimationProxyManager.js +43 -51
  252. package/Proxy/Animation/TimeStepBasedAnimationHandlerProxy.js +26 -19
  253. package/Proxy/Core/AbstractRepresentationProxy.js +97 -151
  254. package/Proxy/Core/LookupTableProxy/Constants.js +4 -4
  255. package/Proxy/Core/LookupTableProxy.js +49 -52
  256. package/Proxy/Core/PiecewiseFunctionProxy/Constants.js +4 -4
  257. package/Proxy/Core/PiecewiseFunctionProxy.js +63 -72
  258. package/Proxy/Core/ProxyManager/core.js +83 -106
  259. package/Proxy/Core/ProxyManager/properties.js +53 -76
  260. package/Proxy/Core/ProxyManager/state.js +100 -110
  261. package/Proxy/Core/ProxyManager/view.js +45 -55
  262. package/Proxy/Core/ProxyManager.js +16 -8
  263. package/Proxy/Core/SourceProxy.js +41 -38
  264. package/Proxy/Core/View2DProxy.js +143 -199
  265. package/Proxy/Core/ViewProxy.js +223 -269
  266. package/Proxy/Core.js +7 -7
  267. package/Proxy/Representations/GeometryRepresentationProxy.js +34 -20
  268. package/Proxy/Representations/GlyphRepresentationProxy.js +42 -41
  269. package/Proxy/Representations/MoleculeRepresentationProxy.js +32 -22
  270. package/Proxy/Representations/ResliceRepresentationProxy.js +48 -32
  271. package/Proxy/Representations/SkyboxRepresentationProxy.js +30 -29
  272. package/Proxy/Representations/SliceRepresentationProxy.js +93 -112
  273. package/Proxy/Representations/SlicedGeometryRepresentationProxy.js +46 -42
  274. package/Proxy/Representations/VolumeRepresentationProxy.js +108 -133
  275. package/Proxy/Representations.js +7 -7
  276. package/Proxy/index.js +2 -2
  277. package/README.md +1 -1
  278. package/Rendering/Core/AbstractImageMapper/helper.js +44 -49
  279. package/Rendering/Core/AbstractImageMapper.js +18 -19
  280. package/Rendering/Core/AbstractMapper.js +39 -55
  281. package/Rendering/Core/AbstractMapper3D.js +26 -31
  282. package/Rendering/Core/AbstractPicker.js +25 -21
  283. package/Rendering/Core/Actor.js +71 -93
  284. package/Rendering/Core/Actor2D.js +64 -78
  285. package/Rendering/Core/AnnotatedCubeActor/Presets.js +5 -11
  286. package/Rendering/Core/AnnotatedCubeActor.js +94 -79
  287. package/Rendering/Core/AxesActor.js +65 -87
  288. package/Rendering/Core/Camera.js +246 -271
  289. package/Rendering/Core/CellPicker.js +125 -148
  290. package/Rendering/Core/ColorTransferFunction/ColorMaps.js +20 -21
  291. package/Rendering/Core/ColorTransferFunction/ColorMapsLite.js +20 -21
  292. package/Rendering/Core/ColorTransferFunction/Constants.js +4 -4
  293. package/Rendering/Core/ColorTransferFunction.js +460 -546
  294. package/Rendering/Core/Coordinate/Constants.js +2 -2
  295. package/Rendering/Core/Coordinate.js +119 -198
  296. package/Rendering/Core/CubeAxesActor.js +294 -320
  297. package/Rendering/Core/Follower.js +46 -45
  298. package/Rendering/Core/Glyph3DMapper/Constants.js +4 -4
  299. package/Rendering/Core/Glyph3DMapper.js +96 -148
  300. package/Rendering/Core/HardwareSelector.js +36 -69
  301. package/Rendering/Core/ImageArrayMapper.js +87 -126
  302. package/Rendering/Core/ImageCPRMapper.js +134 -209
  303. package/Rendering/Core/ImageMapper/Constants.js +2 -2
  304. package/Rendering/Core/ImageMapper.js +85 -144
  305. package/Rendering/Core/ImageProperty/Constants.js +2 -2
  306. package/Rendering/Core/ImageProperty.js +66 -81
  307. package/Rendering/Core/ImageResliceMapper/Constants.js +2 -2
  308. package/Rendering/Core/ImageResliceMapper.js +36 -29
  309. package/Rendering/Core/ImageSlice.js +85 -127
  310. package/Rendering/Core/InteractorObserver.js +82 -73
  311. package/Rendering/Core/InteractorStyle/Constants.js +2 -2
  312. package/Rendering/Core/InteractorStyle.js +56 -58
  313. package/Rendering/Core/Light.js +43 -49
  314. package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +37 -48
  315. package/Rendering/Core/Mapper/Constants.js +6 -6
  316. package/Rendering/Core/Mapper/Static.js +15 -12
  317. package/Rendering/Core/Mapper.js +194 -259
  318. package/Rendering/Core/Mapper2D.js +61 -100
  319. package/Rendering/Core/Picker.js +124 -143
  320. package/Rendering/Core/PixelSpaceCallbackMapper.js +40 -37
  321. package/Rendering/Core/PointPicker.js +68 -79
  322. package/Rendering/Core/Prop/Constants.js +2 -2
  323. package/Rendering/Core/Prop.js +58 -106
  324. package/Rendering/Core/Prop3D.js +54 -83
  325. package/Rendering/Core/Property/Constants.js +6 -6
  326. package/Rendering/Core/Property.js +45 -74
  327. package/Rendering/Core/Property2D/Constants.js +2 -2
  328. package/Rendering/Core/Property2D.js +33 -42
  329. package/Rendering/Core/RenderWindow.js +70 -82
  330. package/Rendering/Core/RenderWindowInteractor/Constants.js +7 -7
  331. package/Rendering/Core/RenderWindowInteractor.js +324 -439
  332. package/Rendering/Core/Renderer.js +192 -256
  333. package/Rendering/Core/ScalarBarActor.js +267 -272
  334. package/Rendering/Core/Skybox.js +26 -24
  335. package/Rendering/Core/SphereMapper.js +22 -12
  336. package/Rendering/Core/StickMapper.js +22 -12
  337. package/Rendering/Core/SurfaceLICInterface/Constants.js +6 -6
  338. package/Rendering/Core/SurfaceLICInterface.js +13 -9
  339. package/Rendering/Core/SurfaceLICMapper.js +23 -15
  340. package/Rendering/Core/Texture.js +99 -141
  341. package/Rendering/Core/Viewport.js +60 -88
  342. package/Rendering/Core/Volume.js +55 -77
  343. package/Rendering/Core/VolumeMapper/Constants.js +4 -4
  344. package/Rendering/Core/VolumeMapper.js +59 -91
  345. package/Rendering/Core/VolumeProperty/Constants.js +4 -4
  346. package/Rendering/Core/VolumeProperty.js +78 -115
  347. package/Rendering/Core.js +47 -49
  348. package/Rendering/Misc/CanvasView.js +62 -61
  349. package/Rendering/Misc/FullScreenRenderWindow.js +60 -62
  350. package/Rendering/Misc/GenericRenderWindow.js +48 -37
  351. package/Rendering/Misc/RemoteView.js +86 -80
  352. package/Rendering/Misc/RenderWindowWithControlBar.js +54 -48
  353. package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager/CameraSynchronizer.js +43 -51
  354. package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager.js +52 -82
  355. package/Rendering/Misc/SynchronizableRenderWindow/ObjectManager.js +258 -308
  356. package/Rendering/Misc/SynchronizableRenderWindow.js +133 -163
  357. package/Rendering/Misc/TextureLODsDownloader.js +72 -74
  358. package/Rendering/Misc.js +7 -7
  359. package/Rendering/OpenGL/Actor.js +57 -68
  360. package/Rendering/OpenGL/Actor2D.js +56 -56
  361. package/Rendering/OpenGL/BufferObject/Constants.js +2 -2
  362. package/Rendering/OpenGL/BufferObject.js +50 -65
  363. package/Rendering/OpenGL/Camera.js +35 -29
  364. package/Rendering/OpenGL/CellArrayBufferObject.js +119 -149
  365. package/Rendering/OpenGL/Convolution2DPass.js +87 -81
  366. package/Rendering/OpenGL/CubeAxesActor.js +28 -21
  367. package/Rendering/OpenGL/ForwardPass.js +53 -64
  368. package/Rendering/OpenGL/Framebuffer.js +61 -101
  369. package/Rendering/OpenGL/Glyph3DMapper.js +165 -196
  370. package/Rendering/OpenGL/HardwareSelector/Constants.js +2 -2
  371. package/Rendering/OpenGL/HardwareSelector.js +272 -397
  372. package/Rendering/OpenGL/Helper.js +58 -73
  373. package/Rendering/OpenGL/ImageCPRMapper.js +339 -421
  374. package/Rendering/OpenGL/ImageMapper.js +268 -361
  375. package/Rendering/OpenGL/ImageResliceMapper.js +306 -438
  376. package/Rendering/OpenGL/ImageSlice.js +48 -54
  377. package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +102 -84
  378. package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +43 -42
  379. package/Rendering/OpenGL/PolyDataMapper.js +358 -492
  380. package/Rendering/OpenGL/PolyDataMapper2D.js +153 -205
  381. package/Rendering/OpenGL/RadialDistortionPass.js +86 -89
  382. package/Rendering/OpenGL/RenderWindow/Constants.js +2 -2
  383. package/Rendering/OpenGL/RenderWindow/ContextProxy.js +20 -29
  384. package/Rendering/OpenGL/RenderWindow.js +356 -510
  385. package/Rendering/OpenGL/Renderer.js +77 -89
  386. package/Rendering/OpenGL/ReplacementShaderMapper.js +28 -46
  387. package/Rendering/OpenGL/ScalarBarActor.js +28 -21
  388. package/Rendering/OpenGL/Shader.js +37 -31
  389. package/Rendering/OpenGL/ShaderCache.js +67 -74
  390. package/Rendering/OpenGL/ShaderProgram.js +136 -248
  391. package/Rendering/OpenGL/Skybox.js +99 -60
  392. package/Rendering/OpenGL/SphereMapper.js +94 -108
  393. package/Rendering/OpenGL/StickMapper.js +110 -114
  394. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +91 -157
  395. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +142 -151
  396. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +142 -216
  397. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +79 -100
  398. package/Rendering/OpenGL/SurfaceLIC.js +2 -2
  399. package/Rendering/OpenGL/Texture/Constants.js +4 -4
  400. package/Rendering/OpenGL/Texture.js +443 -608
  401. package/Rendering/OpenGL/TextureUnitManager.js +47 -43
  402. package/Rendering/OpenGL/VertexArrayObject.js +92 -131
  403. package/Rendering/OpenGL/ViewNodeFactory.js +25 -13
  404. package/Rendering/OpenGL/Volume.js +38 -34
  405. package/Rendering/OpenGL/VolumeMapper.js +437 -547
  406. package/Rendering/OpenGL.js +28 -28
  407. package/Rendering/SceneGraph/RenderPass.js +34 -31
  408. package/Rendering/SceneGraph/RenderWindowViewNode.js +68 -94
  409. package/Rendering/SceneGraph/ViewNode.js +82 -111
  410. package/Rendering/SceneGraph/ViewNodeFactory.js +31 -26
  411. package/Rendering/SceneGraph.js +4 -4
  412. package/Rendering/WebGPU/Actor.js +49 -49
  413. package/Rendering/WebGPU/Actor2D.js +45 -44
  414. package/Rendering/WebGPU/BindGroup.js +43 -50
  415. package/Rendering/WebGPU/Buffer.js +41 -50
  416. package/Rendering/WebGPU/BufferManager/Constants.js +4 -4
  417. package/Rendering/WebGPU/BufferManager.js +111 -141
  418. package/Rendering/WebGPU/Camera.js +65 -67
  419. package/Rendering/WebGPU/CellArrayMapper.js +621 -388
  420. package/Rendering/WebGPU/CubeAxesActor.js +28 -19
  421. package/Rendering/WebGPU/Device.js +78 -133
  422. package/Rendering/WebGPU/ForwardPass.js +75 -72
  423. package/Rendering/WebGPU/FullScreenQuad.js +25 -18
  424. package/Rendering/WebGPU/Glyph3DMapper.js +62 -74
  425. package/Rendering/WebGPU/HardwareSelectionPass.js +45 -38
  426. package/Rendering/WebGPU/HardwareSelector.js +200 -276
  427. package/Rendering/WebGPU/ImageMapper.js +180 -171
  428. package/Rendering/WebGPU/ImageSlice.js +45 -44
  429. package/Rendering/WebGPU/IndexBuffer.js +166 -200
  430. package/Rendering/WebGPU/OpaquePass.js +37 -36
  431. package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +72 -45
  432. package/Rendering/WebGPU/Pipeline.js +37 -51
  433. package/Rendering/WebGPU/PixelSpaceCallbackMapper.js +27 -19
  434. package/Rendering/WebGPU/PolyDataMapper.js +50 -53
  435. package/Rendering/WebGPU/PolyDataMapper2D.js +39 -39
  436. package/Rendering/WebGPU/RenderEncoder.js +68 -88
  437. package/Rendering/WebGPU/RenderWindow.js +262 -376
  438. package/Rendering/WebGPU/Renderer.js +224 -208
  439. package/Rendering/WebGPU/Sampler.js +27 -21
  440. package/Rendering/WebGPU/ScalarBarActor.js +28 -19
  441. package/Rendering/WebGPU/ShaderCache.js +43 -41
  442. package/Rendering/WebGPU/ShaderDescription.js +52 -59
  443. package/Rendering/WebGPU/ShaderModule.js +26 -17
  444. package/Rendering/WebGPU/SimpleMapper.js +185 -121
  445. package/Rendering/WebGPU/SphereMapper.js +200 -130
  446. package/Rendering/WebGPU/StickMapper.js +289 -152
  447. package/Rendering/WebGPU/StorageBuffer.js +100 -115
  448. package/Rendering/WebGPU/Texture.js +79 -99
  449. package/Rendering/WebGPU/TextureManager.js +52 -54
  450. package/Rendering/WebGPU/TextureView.js +40 -43
  451. package/Rendering/WebGPU/Types.js +53 -70
  452. package/Rendering/WebGPU/UniformBuffer.js +158 -184
  453. package/Rendering/WebGPU/VertexInput.js +64 -90
  454. package/Rendering/WebGPU/ViewNodeFactory.js +25 -13
  455. package/Rendering/WebGPU/Volume.js +52 -51
  456. package/Rendering/WebGPU/VolumePass.js +218 -239
  457. package/Rendering/WebGPU/VolumePassFSQ.js +625 -306
  458. package/Rendering/WebGPU.js +1 -1
  459. package/Rendering/index.js +5 -5
  460. package/Widgets/Core/AbstractWidget/Constants.js +2 -2
  461. package/Widgets/Core/AbstractWidget.js +49 -58
  462. package/Widgets/Core/AbstractWidgetFactory.js +101 -122
  463. package/Widgets/Core/StateBuilder/boundsMixin.js +23 -28
  464. package/Widgets/Core/StateBuilder/color3Mixin.js +10 -7
  465. package/Widgets/Core/StateBuilder/colorMixin.js +10 -6
  466. package/Widgets/Core/StateBuilder/cornerMixin.js +16 -15
  467. package/Widgets/Core/StateBuilder/directionMixin.js +20 -18
  468. package/Widgets/Core/StateBuilder/manipulatorMixin.js +26 -18
  469. package/Widgets/Core/StateBuilder/nameMixin.js +10 -6
  470. package/Widgets/Core/StateBuilder/orientationMixin.js +19 -16
  471. package/Widgets/Core/StateBuilder/originMixin.js +25 -32
  472. package/Widgets/Core/StateBuilder/scale1Mixin.js +10 -6
  473. package/Widgets/Core/StateBuilder/scale3Mixin.js +10 -6
  474. package/Widgets/Core/StateBuilder/shapeMixin.js +12 -6
  475. package/Widgets/Core/StateBuilder/textMixin.js +10 -6
  476. package/Widgets/Core/StateBuilder/visibleMixin.js +10 -6
  477. package/Widgets/Core/StateBuilder.js +120 -149
  478. package/Widgets/Core/WidgetManager/Constants.js +7 -7
  479. package/Widgets/Core/WidgetManager.js +249 -421
  480. package/Widgets/Core/WidgetState.js +48 -57
  481. package/Widgets/Core.js +5 -5
  482. package/Widgets/Manipulators/AbstractManipulator.js +20 -14
  483. package/Widgets/Manipulators/CPRManipulator.js +55 -71
  484. package/Widgets/Manipulators/LineManipulator.js +31 -28
  485. package/Widgets/Manipulators/PickerManipulator.d.ts +48 -0
  486. package/Widgets/Manipulators/PickerManipulator.js +65 -0
  487. package/Widgets/Manipulators/PlaneManipulator.js +26 -23
  488. package/Widgets/Manipulators/TrackballManipulator.js +39 -35
  489. package/Widgets/Manipulators.js +4 -2
  490. package/Widgets/Representations/ArrowHandleRepresentation.js +148 -162
  491. package/Widgets/Representations/CircleContextRepresentation.js +44 -38
  492. package/Widgets/Representations/ContextRepresentation.js +17 -14
  493. package/Widgets/Representations/ConvexFaceContextRepresentation.js +50 -47
  494. package/Widgets/Representations/CroppingOutlineRepresentation.js +38 -27
  495. package/Widgets/Representations/CubeHandleRepresentation.js +21 -18
  496. package/Widgets/Representations/GlyphRepresentation.js +107 -152
  497. package/Widgets/Representations/HandleRepresentation.js +17 -14
  498. package/Widgets/Representations/ImplicitPlaneRepresentation.js +97 -91
  499. package/Widgets/Representations/LineHandleRepresentation.js +44 -41
  500. package/Widgets/Representations/OutlineContextRepresentation.js +42 -36
  501. package/Widgets/Representations/PolyLineRepresentation.js +60 -75
  502. package/Widgets/Representations/RectangleContextRepresentation.js +42 -37
  503. package/Widgets/Representations/SphereContextRepresentation.js +19 -27
  504. package/Widgets/Representations/SphereHandleRepresentation.js +31 -27
  505. package/Widgets/Representations/SplineContextRepresentation.js +46 -70
  506. package/Widgets/Representations/WidgetRepresentation/Constants.js +2 -2
  507. package/Widgets/Representations/WidgetRepresentation.js +99 -134
  508. package/Widgets/Representations.js +13 -13
  509. package/Widgets/Widgets3D/AngleWidget/behavior.js +41 -63
  510. package/Widgets/Widgets3D/AngleWidget.js +40 -38
  511. package/Widgets/Widgets3D/DistanceWidget/behavior.js +40 -61
  512. package/Widgets/Widgets3D/DistanceWidget.js +38 -36
  513. package/Widgets/Widgets3D/EllipseWidget/behavior.js +14 -19
  514. package/Widgets/Widgets3D/EllipseWidget/state.js +4 -2
  515. package/Widgets/Widgets3D/EllipseWidget.js +37 -26
  516. package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +26 -56
  517. package/Widgets/Widgets3D/ImageCroppingWidget/helpers.js +14 -17
  518. package/Widgets/Widgets3D/ImageCroppingWidget/state.js +20 -16
  519. package/Widgets/Widgets3D/ImageCroppingWidget.js +80 -98
  520. package/Widgets/Widgets3D/ImplicitPlaneWidget.js +55 -77
  521. package/Widgets/Widgets3D/InteractiveOrientationWidget/behavior.js +17 -18
  522. package/Widgets/Widgets3D/InteractiveOrientationWidget/state.js +15 -7
  523. package/Widgets/Widgets3D/InteractiveOrientationWidget.js +30 -29
  524. package/Widgets/Widgets3D/LabelWidget/behavior.js +37 -62
  525. package/Widgets/Widgets3D/LabelWidget.js +31 -25
  526. package/Widgets/Widgets3D/LineWidget/Constants.js +8 -8
  527. package/Widgets/Widgets3D/LineWidget/behavior.js +77 -114
  528. package/Widgets/Widgets3D/LineWidget/helpers.js +13 -20
  529. package/Widgets/Widgets3D/LineWidget/state.js +2 -1
  530. package/Widgets/Widgets3D/LineWidget.js +39 -35
  531. package/Widgets/Widgets3D/PaintWidget/behavior.js +24 -59
  532. package/Widgets/Widgets3D/PaintWidget.js +39 -37
  533. package/Widgets/Widgets3D/PolyLineWidget/behavior.js +44 -68
  534. package/Widgets/Widgets3D/PolyLineWidget.js +36 -31
  535. package/Widgets/Widgets3D/RectangleWidget/behavior.js +6 -11
  536. package/Widgets/Widgets3D/RectangleWidget/state.js +4 -2
  537. package/Widgets/Widgets3D/RectangleWidget.js +37 -25
  538. package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +35 -21
  539. package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +133 -209
  540. package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
  541. package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +89 -116
  542. package/Widgets/Widgets3D/ResliceCursorWidget/state.js +33 -40
  543. package/Widgets/Widgets3D/ResliceCursorWidget.js +186 -227
  544. package/Widgets/Widgets3D/SeedWidget/behavior.js +82 -0
  545. package/Widgets/Widgets3D/SeedWidget/state.js +18 -0
  546. package/Widgets/Widgets3D/SeedWidget.d.ts +44 -0
  547. package/Widgets/Widgets3D/SeedWidget.js +43 -0
  548. package/Widgets/Widgets3D/ShapeWidget/Constants.js +19 -19
  549. package/Widgets/Widgets3D/ShapeWidget/behavior.js +150 -252
  550. package/Widgets/Widgets3D/ShapeWidget.js +24 -27
  551. package/Widgets/Widgets3D/SphereWidget/behavior.js +35 -69
  552. package/Widgets/Widgets3D/SphereWidget/state.js +9 -5
  553. package/Widgets/Widgets3D/SphereWidget.js +34 -44
  554. package/Widgets/Widgets3D/SplineWidget/behavior.js +85 -120
  555. package/Widgets/Widgets3D/SplineWidget.js +43 -39
  556. package/Widgets/Widgets3D.js +15 -15
  557. package/Widgets/index.js +4 -4
  558. package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +95 -207
  559. package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
  560. package/favicon.js +5 -6
  561. package/index.d.ts +4 -2
  562. package/index.js +4 -3
  563. package/macros.js +4 -1931
  564. package/macros2.js +1684 -0
  565. package/package.json +6 -6
  566. package/vtk.js +18 -31
@@ -1,5 +1,4 @@
1
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
2
- import macro from '../../macros.js';
1
+ import { m as macro } from '../../macros2.js';
3
2
  import vtkPolyData from '../../Common/DataModel/PolyData.js';
4
3
  import vtkProperty from '../Core/Property.js';
5
4
  import vtkRenderPass from '../SceneGraph/RenderPass.js';
@@ -13,14 +12,21 @@ import vtkWebGPUFullScreenQuad from './FullScreenQuad.js';
13
12
  import vtkWebGPUVolumePassFSQ from './VolumePassFSQ.js';
14
13
  import { e as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
15
14
 
16
- var Representation = vtkProperty.Representation;
17
- var BufferUsage = vtkWebGPUBufferManager.BufferUsage,
18
- PrimitiveTypes = vtkWebGPUBufferManager.PrimitiveTypes; // The volume rendering pass consists of two sub passes. The first
15
+ const {
16
+ Representation
17
+ } = vtkProperty;
18
+ const {
19
+ BufferUsage,
20
+ PrimitiveTypes
21
+ } = vtkWebGPUBufferManager;
22
+
23
+ // The volume rendering pass consists of two sub passes. The first
19
24
  // (depthRange) renders polygonal cubes for the volumes to compute min and
20
25
  // max bounds in depth for the image. This is then fed into the second pass
21
26
  // (final) which actually does the raycasting between those bounds sampling
22
27
  // the volumes along the way. So the first pass tends to be very fast whicle
23
28
  // the second is where most of the work is done.
29
+
24
30
  // given x then y then z ordering
25
31
  //
26
32
  // 2-----3
@@ -31,111 +37,161 @@ var BufferUsage = vtkWebGPUBufferManager.BufferUsage,
31
37
  // |/ |/
32
38
  // 4-----5
33
39
  //
40
+ const cubeFaceTriangles = [[0, 4, 6], [0, 6, 2], [1, 3, 7], [1, 7, 5], [0, 5, 4], [0, 1, 5], [2, 6, 7], [2, 7, 3], [0, 3, 1], [0, 2, 3], [4, 5, 7], [4, 7, 6]];
41
+ const DepthBoundsFS = `
42
+ //VTK::Renderer::Dec
34
43
 
35
- var cubeFaceTriangles = [[0, 4, 6], [0, 6, 2], [1, 3, 7], [1, 7, 5], [0, 5, 4], [0, 1, 5], [2, 6, 7], [2, 7, 3], [0, 3, 1], [0, 2, 3], [4, 5, 7], [4, 7, 6]];
36
- var DepthBoundsFS = "\n//VTK::Renderer::Dec\n\n//VTK::Select::Dec\n\n//VTK::VolumePass::Dec\n\n//VTK::TCoord::Dec\n\n//VTK::RenderEncoder::Dec\n\n//VTK::Mapper::Dec\n\n//VTK::IOStructs::Dec\n\n@fragment\nfn main(\n//VTK::IOStructs::Input\n)\n//VTK::IOStructs::Output\n{\n var output : fragmentOutput;\n\n //VTK::Select::Impl\n\n //VTK::TCoord::Impl\n\n //VTK::VolumePass::Impl\n\n // use the maximum (closest) of the current value and the zbuffer\n // the blend func will then take the min to find the farthest stop value\n var stopval: f32 = max(input.fragPos.z, textureLoad(opaquePassDepthTexture, vec2<i32>(i32(input.fragPos.x), i32(input.fragPos.y)), 0));\n\n //VTK::RenderEncoder::Impl\n return output;\n}\n";
37
- var volumeCopyFragTemplate = "\n//VTK::Renderer::Dec\n\n//VTK::Mapper::Dec\n\n//VTK::TCoord::Dec\n\n//VTK::RenderEncoder::Dec\n\n//VTK::IOStructs::Dec\n\n@fragment\nfn main(\n//VTK::IOStructs::Input\n)\n//VTK::IOStructs::Output\n{\n var output: fragmentOutput;\n\n var computedColor: vec4<f32> = textureSample(volumePassColorTexture,\n volumePassColorTextureSampler, mapperUBO.tscale*input.tcoordVS);\n\n //VTK::RenderEncoder::Impl\n return output;\n}\n";
38
- /* eslint-disable no-undef */
44
+ //VTK::Select::Dec
45
+
46
+ //VTK::VolumePass::Dec
47
+
48
+ //VTK::TCoord::Dec
49
+
50
+ //VTK::RenderEncoder::Dec
51
+
52
+ //VTK::Mapper::Dec
53
+
54
+ //VTK::IOStructs::Dec
55
+
56
+ @fragment
57
+ fn main(
58
+ //VTK::IOStructs::Input
59
+ )
60
+ //VTK::IOStructs::Output
61
+ {
62
+ var output : fragmentOutput;
63
+
64
+ //VTK::Select::Impl
65
+
66
+ //VTK::TCoord::Impl
67
+
68
+ //VTK::VolumePass::Impl
69
+
70
+ // use the maximum (closest) of the current value and the zbuffer
71
+ // the blend func will then take the min to find the farthest stop value
72
+ var stopval: f32 = max(input.fragPos.z, textureLoad(opaquePassDepthTexture, vec2<i32>(i32(input.fragPos.x), i32(input.fragPos.y)), 0));
73
+
74
+ //VTK::RenderEncoder::Impl
75
+ return output;
76
+ }
77
+ `;
78
+ const volumeCopyFragTemplate = `
79
+ //VTK::Renderer::Dec
80
+
81
+ //VTK::Mapper::Dec
82
+
83
+ //VTK::TCoord::Dec
84
+
85
+ //VTK::RenderEncoder::Dec
86
+
87
+ //VTK::IOStructs::Dec
88
+
89
+ @fragment
90
+ fn main(
91
+ //VTK::IOStructs::Input
92
+ )
93
+ //VTK::IOStructs::Output
94
+ {
95
+ var output: fragmentOutput;
96
+
97
+ var computedColor: vec4<f32> = textureSample(volumePassColorTexture,
98
+ volumePassColorTextureSampler, mapperUBO.tscale*input.tcoordVS);
99
+
100
+ //VTK::RenderEncoder::Impl
101
+ return output;
102
+ }
103
+ `;
39
104
 
105
+ /* eslint-disable no-undef */
40
106
  /* eslint-disable no-bitwise */
107
+
41
108
  // ----------------------------------------------------------------------------
42
109
 
43
110
  function vtkWebGPUVolumePass(publicAPI, model) {
44
111
  // Set our className
45
- model.classHierarchy.push('vtkWebGPUVolumePass'); // create the required textures, encoders, FSQ etc
112
+ model.classHierarchy.push('vtkWebGPUVolumePass');
46
113
 
47
- publicAPI.initialize = function (viewNode) {
114
+ // create the required textures, encoders, FSQ etc
115
+ publicAPI.initialize = viewNode => {
48
116
  if (!model._clearEncoder) {
49
117
  publicAPI.createClearEncoder(viewNode);
50
118
  }
51
-
52
119
  if (!model._mergeEncoder) {
53
120
  publicAPI.createMergeEncoder(viewNode);
54
121
  }
55
-
56
122
  if (!model._copyEncoder) {
57
123
  publicAPI.createCopyEncoder(viewNode);
58
124
  }
59
-
60
125
  if (!model._depthRangeEncoder) {
61
126
  publicAPI.createDepthRangeEncoder(viewNode);
62
127
  }
63
-
64
128
  if (!model.fullScreenQuad) {
65
129
  model.fullScreenQuad = vtkWebGPUVolumePassFSQ.newInstance();
66
130
  model.fullScreenQuad.setDevice(viewNode.getDevice());
67
- model.fullScreenQuad.setTextureViews(_toConsumableArray(model._depthRangeEncoder.getColorTextureViews()));
131
+ model.fullScreenQuad.setTextureViews([...model._depthRangeEncoder.getColorTextureViews()]);
68
132
  }
69
-
70
133
  if (!model._volumeCopyQuad) {
71
134
  model._volumeCopyQuad = vtkWebGPUFullScreenQuad.newInstance();
72
-
73
135
  model._volumeCopyQuad.setPipelineHash('volpassfsq');
74
-
75
136
  model._volumeCopyQuad.setDevice(viewNode.getDevice());
76
-
77
137
  model._volumeCopyQuad.setFragmentShaderTemplate(volumeCopyFragTemplate);
78
-
79
138
  model._copyUBO = vtkWebGPUUniformBuffer.newInstance({
80
139
  label: 'mapperUBO'
81
140
  });
82
-
83
141
  model._copyUBO.addEntry('tscale', 'vec2<f32>');
84
-
85
142
  model._volumeCopyQuad.setUBO(model._copyUBO);
86
-
87
143
  model._volumeCopyQuad.setTextureViews([model._colorTextureView]);
88
144
  }
89
145
  };
90
-
91
- publicAPI.traverse = function (renNode, viewNode) {
146
+ publicAPI.traverse = (renNode, viewNode) => {
92
147
  if (model.deleted) {
93
148
  return;
94
- } // we just render our delegates in order
149
+ }
95
150
 
151
+ // we just render our delegates in order
152
+ model._currentParent = viewNode;
96
153
 
97
- model._currentParent = viewNode; // create stuff we need
154
+ // create stuff we need
155
+ publicAPI.initialize(viewNode);
98
156
 
99
- publicAPI.initialize(viewNode); // determine if we are rendering a small size
157
+ // determine if we are rendering a small size
158
+ publicAPI.computeTiming(viewNode);
100
159
 
101
- publicAPI.computeTiming(viewNode); // first render the boxes to generate a min max depth
160
+ // first render the boxes to generate a min max depth
102
161
  // map for all the volumes
162
+ publicAPI.renderDepthBounds(renNode, viewNode);
103
163
 
104
- publicAPI.renderDepthBounds(renNode, viewNode); // always mark true
105
-
164
+ // always mark true
106
165
  model._firstGroup = true;
107
- var device = viewNode.getDevice(); // determine how many volumes we can render at a time. We subtract
166
+ const device = viewNode.getDevice();
167
+
168
+ // determine how many volumes we can render at a time. We subtract
108
169
  // 4 because we use know we use textures for min, max, ofun and tfun
170
+ const maxVolumes = device.getHandle().limits.maxSampledTexturesPerShaderStage - 4;
109
171
 
110
- var maxVolumes = device.getHandle().limits.maxSampledTexturesPerShaderStage - 4; // if we have to make multiple passes then break the volumes up into groups
172
+ // if we have to make multiple passes then break the volumes up into groups
111
173
  // rendered from farthest to closest
112
-
113
174
  if (model.volumes.length > maxVolumes) {
114
- var cameraPos = renNode.getRenderable().getActiveCamera().getPosition(); // sort from back to front based on volume centroid
115
-
116
- var distances = [];
117
-
118
- for (var v = 0; v < model.volumes.length; v++) {
119
- var bounds = model.volumes[v].getRenderable().getBounds();
120
- var centroid = [0.5 * (bounds[1] + bounds[0]), 0.5 * (bounds[3] + bounds[2]), 0.5 * (bounds[5] + bounds[4])];
175
+ const cameraPos = renNode.getRenderable().getActiveCamera().getPosition();
176
+ // sort from back to front based on volume centroid
177
+ const distances = [];
178
+ for (let v = 0; v < model.volumes.length; v++) {
179
+ const bounds = model.volumes[v].getRenderable().getBounds();
180
+ const centroid = [0.5 * (bounds[1] + bounds[0]), 0.5 * (bounds[3] + bounds[2]), 0.5 * (bounds[5] + bounds[4])];
121
181
  distances[v] = distance2BetweenPoints(centroid, cameraPos);
122
- } // sort by distance
123
-
124
-
125
- var volumeOrder = _toConsumableArray(Array(model.volumes.length).keys());
182
+ }
126
183
 
127
- volumeOrder.sort(function (a, b) {
128
- return distances[b] - distances[a];
129
- }); // render in chunks back to front
184
+ // sort by distance
185
+ const volumeOrder = [...Array(model.volumes.length).keys()];
186
+ volumeOrder.sort((a, b) => distances[b] - distances[a]);
130
187
 
131
- var volumesToRender = []; // start with smallest chunk so that the last (closest) chunk
188
+ // render in chunks back to front
189
+ let volumesToRender = [];
190
+ // start with smallest chunk so that the last (closest) chunk
132
191
  // has a full maxVolumes;
133
-
134
- var chunkSize = volumeOrder.length % maxVolumes;
135
-
136
- for (var _v = 0; _v < volumeOrder.length; _v++) {
137
- volumesToRender.push(model.volumes[volumeOrder[_v]]);
138
-
192
+ let chunkSize = volumeOrder.length % maxVolumes;
193
+ for (let v = 0; v < volumeOrder.length; v++) {
194
+ volumesToRender.push(model.volumes[volumeOrder[v]]);
139
195
  if (volumesToRender.length >= chunkSize) {
140
196
  publicAPI.rayCastPass(viewNode, renNode, volumesToRender);
141
197
  volumesToRender = [];
@@ -146,252 +202,201 @@ function vtkWebGPUVolumePass(publicAPI, model) {
146
202
  } else {
147
203
  // if not rendering in chunks then just draw all of them at once
148
204
  publicAPI.rayCastPass(viewNode, renNode, model.volumes);
149
- } // copy back to the original color buffer
150
- // final composite
205
+ }
151
206
 
207
+ // copy back to the original color buffer
152
208
 
209
+ // final composite
153
210
  model._volumeCopyQuad.setWebGPURenderer(renNode);
154
-
155
211
  if (model._useSmallViewport) {
156
- var width = model._colorTextureView.getTexture().getWidth();
157
-
158
- var height = model._colorTextureView.getTexture().getHeight();
159
-
212
+ const width = model._colorTextureView.getTexture().getWidth();
213
+ const height = model._colorTextureView.getTexture().getHeight();
160
214
  model._copyUBO.setArray('tscale', [model._smallViewportWidth / width, model._smallViewportHeight / height]);
161
215
  } else {
162
216
  model._copyUBO.setArray('tscale', [1.0, 1.0]);
163
217
  }
164
-
165
218
  model._copyUBO.sendIfNeeded(device);
166
-
167
219
  model._copyEncoder.setColorTextureView(0, model.colorTextureView);
168
-
169
220
  model._copyEncoder.attachTextureViews();
170
-
171
221
  model._copyEncoder.begin(viewNode.getCommandEncoder());
172
-
173
222
  renNode.scissorAndViewport(model._copyEncoder);
174
-
175
223
  model._volumeCopyQuad.prepareAndDraw(model._copyEncoder);
176
-
177
224
  model._copyEncoder.end();
178
- }; // unsubscribe from our listeners
179
-
225
+ };
180
226
 
181
- publicAPI.delete = macro.chain(function () {
227
+ // unsubscribe from our listeners
228
+ publicAPI.delete = macro.chain(() => {
182
229
  if (model._animationRateSubscription) {
183
230
  model._animationRateSubscription.unsubscribe();
184
-
185
231
  model._animationRateSubscription = null;
186
232
  }
187
233
  }, publicAPI.delete);
188
-
189
- publicAPI.computeTiming = function (viewNode) {
190
- var rwi = viewNode.getRenderable().getInteractor();
191
-
234
+ publicAPI.computeTiming = viewNode => {
235
+ const rwi = viewNode.getRenderable().getInteractor();
192
236
  if (model._lastScale == null) {
193
- var firstMapper = model.volumes[0].getRenderable().getMapper();
237
+ const firstMapper = model.volumes[0].getRenderable().getMapper();
194
238
  model._lastScale = firstMapper.getInitialInteractionScale() || 1.0;
195
239
  }
196
-
197
240
  model._useSmallViewport = false;
198
-
199
241
  if (rwi.isAnimating() && model._lastScale > 1.5) {
200
242
  model._useSmallViewport = true;
201
243
  }
202
-
203
244
  model._colorTexture.resize(viewNode.getCanvas().width, viewNode.getCanvas().height);
204
-
205
245
  if (!model._animationRateSubscription) {
206
246
  // when the animation frame rate changes recompute the scale factor
207
- model._animationRateSubscription = rwi.onAnimationFrameRateUpdate(function () {
208
- var firstMapper = model.volumes[0].getRenderable().getMapper();
209
-
247
+ model._animationRateSubscription = rwi.onAnimationFrameRateUpdate(() => {
248
+ const firstMapper = model.volumes[0].getRenderable().getMapper();
210
249
  if (firstMapper.getAutoAdjustSampleDistances()) {
211
- var frate = rwi.getRecentAnimationFrameRate();
212
- var targetScale = model._lastScale * rwi.getDesiredUpdateRate() / frate;
213
- model._lastScale = targetScale; // clamp scale to some reasonable values.
250
+ const frate = rwi.getRecentAnimationFrameRate();
251
+ const targetScale = model._lastScale * rwi.getDesiredUpdateRate() / frate;
252
+ model._lastScale = targetScale;
253
+ // clamp scale to some reasonable values.
214
254
  // Below 1.5 we will just be using full resolution as that is close enough
215
255
  // Above 400 seems like a lot so we limit to that 1/20th per axis
216
-
217
256
  if (model._lastScale > 400) {
218
257
  model._lastScale = 400;
219
258
  }
220
259
  } else {
221
260
  model._lastScale = firstMapper.getImageSampleDistance() * firstMapper.getImageSampleDistance();
222
261
  }
223
-
224
262
  if (model._lastScale < 1.5) {
225
263
  model._lastScale = 1.5;
226
264
  }
227
265
  });
228
266
  }
229
267
  };
230
-
231
- publicAPI.rayCastPass = function (viewNode, renNode, volumes) {
232
- var encoder = model._firstGroup ? model._clearEncoder : model._mergeEncoder;
268
+ publicAPI.rayCastPass = (viewNode, renNode, volumes) => {
269
+ const encoder = model._firstGroup ? model._clearEncoder : model._mergeEncoder;
233
270
  encoder.attachTextureViews();
234
271
  encoder.begin(viewNode.getCommandEncoder());
235
-
236
- var width = model._colorTextureView.getTexture().getWidth();
237
-
238
- var height = model._colorTextureView.getTexture().getHeight();
239
-
272
+ let width = model._colorTextureView.getTexture().getWidth();
273
+ let height = model._colorTextureView.getTexture().getHeight();
240
274
  if (model._useSmallViewport) {
241
- var canvas = viewNode.getCanvas();
242
- var scaleFactor = 1 / Math.sqrt(model._lastScale);
275
+ const canvas = viewNode.getCanvas();
276
+ const scaleFactor = 1 / Math.sqrt(model._lastScale);
243
277
  model._smallViewportWidth = Math.ceil(scaleFactor * canvas.width);
244
278
  model._smallViewportHeight = Math.ceil(scaleFactor * canvas.height);
245
279
  width = model._smallViewportWidth;
246
280
  height = model._smallViewportHeight;
247
281
  }
248
-
249
- encoder.getHandle().setViewport(0, 0, width, height, 0.0, 1.0); // set scissor
250
-
282
+ encoder.getHandle().setViewport(0, 0, width, height, 0.0, 1.0);
283
+ // set scissor
251
284
  encoder.getHandle().setScissorRect(0, 0, width, height);
252
285
  model.fullScreenQuad.setWebGPURenderer(renNode);
253
286
  model.fullScreenQuad.setVolumes(volumes);
254
287
  model.fullScreenQuad.prepareAndDraw(encoder);
255
288
  encoder.end();
256
289
  };
257
-
258
- publicAPI.renderDepthBounds = function (renNode, viewNode) {
290
+ publicAPI.renderDepthBounds = (renNode, viewNode) => {
259
291
  publicAPI.updateDepthPolyData(renNode);
260
- var pd = model._boundsPoly;
261
- var points = pd.getPoints();
262
- var cells = pd.getPolys();
263
- var buffRequest = {
264
- hash: "vp".concat(cells.getMTime()),
292
+ const pd = model._boundsPoly;
293
+ const points = pd.getPoints();
294
+ const cells = pd.getPolys();
295
+ let buffRequest = {
296
+ hash: `vp${cells.getMTime()}`,
265
297
  usage: BufferUsage.Index,
266
- cells: cells,
298
+ cells,
267
299
  numberOfPoints: points.getNumberOfPoints(),
268
300
  primitiveType: PrimitiveTypes.Triangles,
269
301
  representation: Representation.SURFACE
270
302
  };
271
- var indexBuffer = viewNode.getDevice().getBufferManager().getBuffer(buffRequest);
272
-
273
- model._mapper.getVertexInput().setIndexBuffer(indexBuffer); // points
274
-
303
+ const indexBuffer = viewNode.getDevice().getBufferManager().getBuffer(buffRequest);
304
+ model._mapper.getVertexInput().setIndexBuffer(indexBuffer);
275
305
 
306
+ // points
276
307
  buffRequest = {
277
308
  usage: BufferUsage.PointArray,
278
309
  format: 'float32x4',
279
- hash: "vp".concat(points.getMTime()).concat(cells.getMTime()),
310
+ hash: `vp${points.getMTime()}${cells.getMTime()}`,
280
311
  dataArray: points,
281
- indexBuffer: indexBuffer,
312
+ indexBuffer,
282
313
  packExtra: true
283
314
  };
284
- var buff = viewNode.getDevice().getBufferManager().getBuffer(buffRequest);
285
-
315
+ const buff = viewNode.getDevice().getBufferManager().getBuffer(buffRequest);
286
316
  model._mapper.getVertexInput().addBuffer(buff, ['vertexBC']);
287
-
288
317
  model._mapper.setNumberOfVertices(buff.getSizeInBytes() / buff.getStrideInBytes());
289
-
290
318
  publicAPI.drawDepthRange(renNode, viewNode);
291
319
  };
292
-
293
- publicAPI.updateDepthPolyData = function (renNode) {
320
+ publicAPI.updateDepthPolyData = renNode => {
294
321
  // check mtimes first
295
- var update = false;
296
-
297
- for (var i = 0; i < model.volumes.length; i++) {
298
- var mtime = model.volumes[i].getMTime();
299
-
322
+ let update = false;
323
+ for (let i = 0; i < model.volumes.length; i++) {
324
+ const mtime = model.volumes[i].getMTime();
300
325
  if (!model._lastMTimes[i] || mtime !== model._lastMTimes[i]) {
301
326
  update = true;
302
327
  model._lastMTimes[i] = mtime;
303
328
  }
304
- } // also check stabilized time
305
-
306
-
307
- var stime = renNode.getStabilizedTime();
329
+ }
308
330
 
331
+ // also check stabilized time
332
+ const stime = renNode.getStabilizedTime();
309
333
  if (model._lastMTimes.length <= model.volumes.length || stime !== model._lastMTimes[model.volumes.length]) {
310
334
  update = true;
311
335
  model._lastMTimes[model.volumes.length] = stime;
312
- } // if no need to update then return
313
-
336
+ }
314
337
 
338
+ // if no need to update then return
315
339
  if (!update) {
316
340
  return;
317
- } // rebuild
318
-
319
-
320
- var center = renNode.getStabilizedCenterByReference();
321
- var numPts = model.volumes.length * 8;
322
- var points = new Float64Array(numPts * 3);
323
- var numTris = model.volumes.length * 12;
324
- var polys = new Uint16Array(numTris * 4); // add points and cells
325
-
326
- for (var _i = 0; _i < model.volumes.length; _i++) {
327
- model.volumes[_i].getBoundingCubePoints(points, _i * 24);
328
-
329
- var cellIdx = _i * 12 * 4;
330
- var offset = _i * 8;
341
+ }
331
342
 
332
- for (var t = 0; t < 12; t++) {
343
+ // rebuild
344
+ const center = renNode.getStabilizedCenterByReference();
345
+ const numPts = model.volumes.length * 8;
346
+ const points = new Float64Array(numPts * 3);
347
+ const numTris = model.volumes.length * 12;
348
+ const polys = new Uint16Array(numTris * 4);
349
+
350
+ // add points and cells
351
+ for (let i = 0; i < model.volumes.length; i++) {
352
+ model.volumes[i].getBoundingCubePoints(points, i * 24);
353
+ let cellIdx = i * 12 * 4;
354
+ const offset = i * 8;
355
+ for (let t = 0; t < 12; t++) {
333
356
  polys[cellIdx++] = 3;
334
357
  polys[cellIdx++] = offset + cubeFaceTriangles[t][0];
335
358
  polys[cellIdx++] = offset + cubeFaceTriangles[t][1];
336
359
  polys[cellIdx++] = offset + cubeFaceTriangles[t][2];
337
360
  }
338
361
  }
339
-
340
- for (var p = 0; p < points.length; p += 3) {
362
+ for (let p = 0; p < points.length; p += 3) {
341
363
  points[p] -= center[0];
342
364
  points[p + 1] -= center[1];
343
365
  points[p + 2] -= center[2];
344
366
  }
345
-
346
367
  model._boundsPoly.getPoints().setData(points, 3);
347
-
348
368
  model._boundsPoly.getPoints().modified();
349
-
350
369
  model._boundsPoly.getPolys().setData(polys, 1);
351
-
352
370
  model._boundsPoly.getPolys().modified();
353
-
354
371
  model._boundsPoly.modified();
355
372
  };
356
-
357
- publicAPI.drawDepthRange = function (renNode, viewNode) {
373
+ publicAPI.drawDepthRange = (renNode, viewNode) => {
358
374
  // copy current depth buffer to
359
375
  model._depthRangeTexture.resizeToMatch(model.colorTextureView.getTexture());
360
-
361
376
  model._depthRangeTexture2.resizeToMatch(model.colorTextureView.getTexture());
362
-
363
377
  model._depthRangeEncoder.attachTextureViews();
364
-
365
378
  publicAPI.setCurrentOperation('volumeDepthRangePass');
366
379
  renNode.setRenderEncoder(model._depthRangeEncoder);
367
380
  renNode.volumeDepthRangePass(true);
368
-
369
381
  model._mapper.setWebGPURenderer(renNode);
370
-
371
382
  model._mapper.prepareToDraw(model._depthRangeEncoder);
372
-
373
383
  model._mapper.registerDrawCallback(model._depthRangeEncoder);
374
-
375
384
  renNode.volumeDepthRangePass(false);
376
385
  };
377
-
378
- publicAPI.createDepthRangeEncoder = function (viewNode) {
379
- var device = viewNode.getDevice();
386
+ publicAPI.createDepthRangeEncoder = viewNode => {
387
+ const device = viewNode.getDevice();
380
388
  model._depthRangeEncoder = vtkWebGPURenderEncoder.newInstance({
381
389
  label: 'VolumePass DepthRange'
382
390
  });
383
-
384
391
  model._depthRangeEncoder.setPipelineHash('volr');
385
-
386
- model._depthRangeEncoder.setReplaceShaderCodeFunction(function (pipeline) {
387
- var fDesc = pipeline.getShaderDescription('fragment');
392
+ model._depthRangeEncoder.setReplaceShaderCodeFunction(pipeline => {
393
+ const fDesc = pipeline.getShaderDescription('fragment');
388
394
  fDesc.addOutput('vec4<f32>', 'outColor1');
389
395
  fDesc.addOutput('vec4<f32>', 'outColor2');
390
- var code = fDesc.getCode();
396
+ let code = fDesc.getCode();
391
397
  code = vtkWebGPUShaderCache.substitute(code, '//VTK::RenderEncoder::Impl', ['output.outColor1 = vec4<f32>(input.fragPos.z, 0.0, 0.0, 0.0);', 'output.outColor2 = vec4<f32>(stopval, 0.0, 0.0, 0.0);']).result;
392
398
  fDesc.setCode(code);
393
399
  });
394
-
395
400
  model._depthRangeEncoder.setDescription({
396
401
  colorAttachments: [{
397
402
  view: null,
@@ -405,7 +410,6 @@ function vtkWebGPUVolumePass(publicAPI, model) {
405
410
  storeOp: 'store'
406
411
  }]
407
412
  });
408
-
409
413
  model._depthRangeEncoder.setPipelineSettings({
410
414
  primitive: {
411
415
  cullMode: 'none'
@@ -441,73 +445,55 @@ function vtkWebGPUVolumePass(publicAPI, model) {
441
445
  }
442
446
  }]
443
447
  }
444
- }); // and the textures it needs
445
-
448
+ });
446
449
 
450
+ // and the textures it needs
447
451
  model._depthRangeTexture = vtkWebGPUTexture.newInstance({
448
452
  label: 'volumePassMaxDepth'
449
453
  });
450
-
451
454
  model._depthRangeTexture.create(device, {
452
455
  width: viewNode.getCanvas().width,
453
456
  height: viewNode.getCanvas().height,
454
457
  format: 'r16float',
455
458
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
456
459
  });
457
-
458
- var maxView = model._depthRangeTexture.createView('maxTexture');
459
-
460
+ const maxView = model._depthRangeTexture.createView('maxTexture');
460
461
  model._depthRangeEncoder.setColorTextureView(0, maxView);
461
-
462
462
  model._depthRangeTexture2 = vtkWebGPUTexture.newInstance({
463
463
  label: 'volumePassDepthMin'
464
464
  });
465
-
466
465
  model._depthRangeTexture2.create(device, {
467
466
  width: viewNode.getCanvas().width,
468
467
  height: viewNode.getCanvas().height,
469
468
  format: 'r16float',
470
469
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
471
470
  });
472
-
473
- var minView = model._depthRangeTexture2.createView('minTexture');
474
-
471
+ const minView = model._depthRangeTexture2.createView('minTexture');
475
472
  model._depthRangeEncoder.setColorTextureView(1, minView);
476
-
477
473
  model._mapper.setDevice(viewNode.getDevice());
478
-
479
474
  model._mapper.setTextureViews([model.depthTextureView]);
480
475
  };
481
-
482
- publicAPI.createClearEncoder = function (viewNode) {
476
+ publicAPI.createClearEncoder = viewNode => {
483
477
  model._colorTexture = vtkWebGPUTexture.newInstance({
484
478
  label: 'volumePassColor'
485
479
  });
486
-
487
480
  model._colorTexture.create(viewNode.getDevice(), {
488
481
  width: viewNode.getCanvas().width,
489
482
  height: viewNode.getCanvas().height,
490
483
  format: 'bgra8unorm',
491
-
492
484
  /* eslint-disable no-undef */
493
-
494
485
  /* eslint-disable no-bitwise */
495
486
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC
496
487
  });
497
-
498
488
  model._colorTextureView = model._colorTexture.createView('volumePassColorTexture');
499
-
500
489
  model._colorTextureView.addSampler(viewNode.getDevice(), {
501
490
  minFilter: 'linear',
502
491
  magFilter: 'linear'
503
492
  });
504
-
505
493
  model._clearEncoder = vtkWebGPURenderEncoder.newInstance({
506
494
  label: 'VolumePass Clear'
507
495
  });
508
-
509
496
  model._clearEncoder.setColorTextureView(0, model._colorTextureView);
510
-
511
497
  model._clearEncoder.setDescription({
512
498
  colorAttachments: [{
513
499
  view: null,
@@ -516,9 +502,7 @@ function vtkWebGPUVolumePass(publicAPI, model) {
516
502
  storeOp: 'store'
517
503
  }]
518
504
  });
519
-
520
505
  model._clearEncoder.setPipelineHash('volpf');
521
-
522
506
  model._clearEncoder.setPipelineSettings({
523
507
  primitive: {
524
508
  cullMode: 'none'
@@ -540,12 +524,10 @@ function vtkWebGPUVolumePass(publicAPI, model) {
540
524
  }
541
525
  });
542
526
  };
543
-
544
- publicAPI.createCopyEncoder = function (viewNode) {
527
+ publicAPI.createCopyEncoder = viewNode => {
545
528
  model._copyEncoder = vtkWebGPURenderEncoder.newInstance({
546
529
  label: 'volumePassCopy'
547
530
  });
548
-
549
531
  model._copyEncoder.setDescription({
550
532
  colorAttachments: [{
551
533
  view: null,
@@ -553,9 +535,7 @@ function vtkWebGPUVolumePass(publicAPI, model) {
553
535
  storeOp: 'store'
554
536
  }]
555
537
  });
556
-
557
538
  model._copyEncoder.setPipelineHash('volcopypf');
558
-
559
539
  model._copyEncoder.setPipelineSettings({
560
540
  primitive: {
561
541
  cullMode: 'none'
@@ -577,14 +557,11 @@ function vtkWebGPUVolumePass(publicAPI, model) {
577
557
  }
578
558
  });
579
559
  };
580
-
581
- publicAPI.createMergeEncoder = function (viewNode) {
560
+ publicAPI.createMergeEncoder = viewNode => {
582
561
  model._mergeEncoder = vtkWebGPURenderEncoder.newInstance({
583
562
  label: 'volumePassMerge'
584
563
  });
585
-
586
564
  model._mergeEncoder.setColorTextureView(0, model._colorTextureView);
587
-
588
565
  model._mergeEncoder.setDescription({
589
566
  colorAttachments: [{
590
567
  view: null,
@@ -592,17 +569,14 @@ function vtkWebGPUVolumePass(publicAPI, model) {
592
569
  storeOp: 'store'
593
570
  }]
594
571
  });
595
-
596
- model._mergeEncoder.setReplaceShaderCodeFunction(function (pipeline) {
597
- var fDesc = pipeline.getShaderDescription('fragment');
572
+ model._mergeEncoder.setReplaceShaderCodeFunction(pipeline => {
573
+ const fDesc = pipeline.getShaderDescription('fragment');
598
574
  fDesc.addOutput('vec4<f32>', 'outColor');
599
- var code = fDesc.getCode();
575
+ let code = fDesc.getCode();
600
576
  code = vtkWebGPUShaderCache.substitute(code, '//VTK::RenderEncoder::Impl', ['output.outColor = vec4<f32>(computedColor.rgb, computedColor.a);']).result;
601
577
  fDesc.setCode(code);
602
578
  });
603
-
604
579
  model._mergeEncoder.setPipelineHash('volpf');
605
-
606
580
  model._mergeEncoder.setPipelineSettings({
607
581
  primitive: {
608
582
  cullMode: 'none'
@@ -623,61 +597,66 @@ function vtkWebGPUVolumePass(publicAPI, model) {
623
597
  }]
624
598
  }
625
599
  });
626
- }; // marks modified when needed
627
-
600
+ };
628
601
 
629
- publicAPI.setVolumes = function (val) {
602
+ // marks modified when needed
603
+ publicAPI.setVolumes = val => {
630
604
  if (!model.volumes || model.volumes.length !== val.length) {
631
- model.volumes = _toConsumableArray(val);
605
+ model.volumes = [...val];
632
606
  publicAPI.modified();
633
607
  return;
634
608
  }
635
-
636
- for (var i = 0; i < val.length; i++) {
609
+ for (let i = 0; i < val.length; i++) {
637
610
  if (val[i] !== model.volumes[i]) {
638
- model.volumes = _toConsumableArray(val);
611
+ model.volumes = [...val];
639
612
  publicAPI.modified();
640
613
  return;
641
614
  }
642
615
  }
643
616
  };
644
- } // ----------------------------------------------------------------------------
617
+ }
618
+
619
+ // ----------------------------------------------------------------------------
645
620
  // Object factory
646
621
  // ----------------------------------------------------------------------------
647
622
 
648
-
649
- var DEFAULT_VALUES = {
623
+ const DEFAULT_VALUES = {
650
624
  colorTextureView: null,
651
625
  depthTextureView: null,
652
626
  volumes: null
653
- }; // ----------------------------------------------------------------------------
627
+ };
628
+
629
+ // ----------------------------------------------------------------------------
654
630
 
655
631
  function extend(publicAPI, model) {
656
- var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
657
- Object.assign(model, DEFAULT_VALUES, initialValues); // Build VTK API
632
+ let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
633
+ Object.assign(model, DEFAULT_VALUES, initialValues);
658
634
 
635
+ // Build VTK API
659
636
  vtkRenderPass.extend(publicAPI, model, initialValues);
660
637
  model._mapper = vtkWebGPUSimpleMapper.newInstance();
661
-
662
638
  model._mapper.setFragmentShaderTemplate(DepthBoundsFS);
663
-
664
- model._mapper.getShaderReplacements().set('replaceShaderVolumePass', function (hash, pipeline, vertexInput) {
665
- var fDesc = pipeline.getShaderDescription('fragment');
639
+ model._mapper.getShaderReplacements().set('replaceShaderVolumePass', (hash, pipeline, vertexInput) => {
640
+ const fDesc = pipeline.getShaderDescription('fragment');
666
641
  fDesc.addBuiltinInput('vec4<f32>', '@builtin(position) fragPos');
667
642
  });
668
-
669
643
  model._boundsPoly = vtkPolyData.newInstance();
670
644
  model._lastMTimes = [];
671
- macro.setGet(publicAPI, model, ['colorTextureView', 'depthTextureView']); // Object methods
645
+ macro.setGet(publicAPI, model, ['colorTextureView', 'depthTextureView']);
672
646
 
647
+ // Object methods
673
648
  vtkWebGPUVolumePass(publicAPI, model);
674
- } // ----------------------------------------------------------------------------
649
+ }
650
+
651
+ // ----------------------------------------------------------------------------
675
652
 
676
- var newInstance = macro.newInstance(extend, 'vtkWebGPUVolumePass'); // ----------------------------------------------------------------------------
653
+ const newInstance = macro.newInstance(extend, 'vtkWebGPUVolumePass');
654
+
655
+ // ----------------------------------------------------------------------------
677
656
 
678
657
  var vtkWebGPUVolumePass$1 = {
679
- newInstance: newInstance,
680
- extend: extend
658
+ newInstance,
659
+ extend
681
660
  };
682
661
 
683
662
  export { vtkWebGPUVolumePass$1 as default, extend, newInstance };