File tree Expand file tree Collapse file tree 5 files changed +30
-7
lines changed Expand file tree Collapse file tree 5 files changed +30
-7
lines changed Original file line number Diff line number Diff line change @@ -12,7 +12,10 @@ import vtkReplacementShaderMapper from 'vtk.js/Sources/Rendering/OpenGL/Replacem
12
12
import vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram' ;
13
13
import vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode' ;
14
14
15
- import { getTransferFunctionHash } from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow/resourceSharingHelper' ;
15
+ import {
16
+ getTransferFunctionHash ,
17
+ getImageDataHash ,
18
+ } from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow/resourceSharingHelper' ;
16
19
17
20
import vtkPolyDataVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl' ;
18
21
import vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl' ;
@@ -192,7 +195,7 @@ function vtkOpenGLImageCPRMapper(publicAPI, model) {
192
195
}
193
196
const cachedScalarsEntry =
194
197
model . _openGLRenderWindow . getGraphicsResourceForObject ( scalars ) ;
195
- const volumeTextureHash = ` ${ image . getMTime ( ) } A ${ scalars . getMTime ( ) } ` ;
198
+ const volumeTextureHash = getImageDataHash ( image , scalars ) ;
196
199
const reBuildTex =
197
200
! cachedScalarsEntry ?. oglObject ?. getHandle ( ) ||
198
201
cachedScalarsEntry ?. hash !== volumeTextureHash ;
Original file line number Diff line number Diff line change @@ -16,7 +16,10 @@ import vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';
16
16
import vtkTransform from 'vtk.js/Sources/Common/Transform/Transform' ;
17
17
import vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode' ;
18
18
19
- import { getTransferFunctionHash } from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow/resourceSharingHelper' ;
19
+ import {
20
+ getTransferFunctionHash ,
21
+ getImageDataHash ,
22
+ } from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow/resourceSharingHelper' ;
20
23
21
24
import vtkImageResliceMapperVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkImageResliceMapperVS.glsl' ;
22
25
import vtkImageResliceMapperFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkImageResliceMapperFS.glsl' ;
@@ -225,7 +228,7 @@ function vtkOpenGLImageResliceMapper(publicAPI, model) {
225
228
}
226
229
227
230
const numComp = scalars . getNumberOfComponents ( ) ;
228
- let toString = ` ${ image . getMTime ( ) } A ${ scalars . getMTime ( ) } ` ;
231
+ let toString = getImageDataHash ( image , scalars ) ;
229
232
230
233
const tex = model . _openGLRenderWindow . getGraphicsResourceForObject ( scalars ) ;
231
234
const reBuildTex = ! tex ?. oglObject ?. getHandle ( ) || tex ?. hash !== toString ;
Original file line number Diff line number Diff line change
1
+ import vtkImageData from '../../../Common/DataModel/ImageData' ;
2
+ import vtkDataArray from '../../../Common/Core/DataArray' ;
1
3
import { vtkObject } from "../../../interfaces" ;
2
4
3
5
/**
@@ -9,6 +11,14 @@ import { vtkObject } from "../../../interfaces";
9
11
*/
10
12
export function getTransferFunctionHash ( transferFunction : vtkObject | undefined , useIndependentComponents : boolean , numberOfComponents : number ) : string ;
11
13
14
+ /**
15
+ * Compute and return a hash than can be used for caching resources
16
+ *
17
+ * @param image The image data that contains the scalars
18
+ * @param scalars The scalars used for rendering
19
+ */
20
+ export function getImageDataHash ( image : vtkImageData , scalars : vtkDataArray ) : string ;
21
+
12
22
declare const defaultExport : {
13
23
getTransferFunctionHash : typeof getTransferFunctionHash ;
14
24
} ;
Original file line number Diff line number Diff line change @@ -10,4 +10,8 @@ export function getTransferFunctionHash(
10
10
: '0' ;
11
11
}
12
12
13
- export default { getTransferFunctionHash } ;
13
+ export function getImageDataHash ( image , scalars ) {
14
+ return `${ image . getMTime ( ) } A${ scalars . getMTime ( ) } ` ;
15
+ }
16
+
17
+ export default { getTransferFunctionHash, getImageDataHash } ;
Original file line number Diff line number Diff line change @@ -24,7 +24,10 @@ import {
24
24
} from 'vtk.js/Sources/Rendering/Core/VolumeProperty/Constants' ;
25
25
import { BlendMode } from 'vtk.js/Sources/Rendering/Core/VolumeMapper/Constants' ;
26
26
27
- import { getTransferFunctionHash } from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow/resourceSharingHelper' ;
27
+ import {
28
+ getTransferFunctionHash ,
29
+ getImageDataHash ,
30
+ } from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow/resourceSharingHelper' ;
28
31
29
32
import vtkVolumeVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl' ;
30
33
import vtkVolumeFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl' ;
@@ -1704,7 +1707,7 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
1704
1707
1705
1708
const tex = model . _openGLRenderWindow . getGraphicsResourceForObject ( scalars ) ;
1706
1709
// rebuild the scalarTexture if the data has changed
1707
- toString = ` ${ image . getMTime ( ) } A ${ scalars . getMTime ( ) } ` ;
1710
+ toString = getImageDataHash ( image , scalars ) ;
1708
1711
const reBuildTex = ! tex ?. oglObject ?. getHandle ( ) || tex ?. hash !== toString ;
1709
1712
if ( reBuildTex ) {
1710
1713
model . scalarTexture = vtkOpenGLTexture . newInstance ( ) ;
You can’t perform that action at this time.
0 commit comments